{
  "schemaVersion": "1.0",
  "item": {
    "slug": "ikuzo",
    "name": "Ikuzo - The Map Editor",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/jordymeow/ikuzo",
    "canonicalUrl": "https://clawhub.ai/jordymeow/ikuzo",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/ikuzo",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=ikuzo",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/schema.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/ikuzo"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/ikuzo",
    "agentPageUrl": "https://openagent3.xyz/skills/ikuzo/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ikuzo/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ikuzo/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Ikuzo",
        "body": "Ikuzo is a map & travel planning app. Access via MCP (JSON-RPC 2.0 over HTTP POST)."
      },
      {
        "title": "Connection",
        "body": "Endpoint: https://ikuzo.app/api/mcp\nAuth: Bearer token (from TOOLS.md or user config)\nProtocol: JSON-RPC 2.0 — POST with {\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"<tool>\",\"arguments\":{...}}}"
      },
      {
        "title": "Maps",
        "body": "maps_list — list all maps (owned + shared)\nmaps_get(mapId) — get map details\nmaps_create(title) — create a new empty map, returns map with ID"
      },
      {
        "title": "Spots",
        "body": "spots_list(mapId, ...) — list/filter spots in a map. Filters: status[], type[], period[], momentFrom/To, text, limit, offset, fields[]\nspots_get(spotId) — get spot details\nspots_create(mapId, title, gps{lat,lng}, ...) — create spot. Optional: description, type, status, period[], moment{date, repeat, reminder[]}\nspots_update(spotId, ...) — update any field (including moment, rating)\nspots_delete(spotId) — soft delete (recoverable)\nspots_nearby(lat, lng, ...) — find spots near a point across ALL accessible maps. Optional: radius (km, default 10, max 500), mapIds[], all spot filters. Returns sorted by distance.\nspots_box(north, south, east, west, ...) — find spots in bounding box. Same filters as nearby."
      },
      {
        "title": "Travel Plans",
        "body": "travels_list — list all travel plans\ntravels_get(travelId) — get plan with steps\ntravels_create(title) — create plan\ntravels_update(travelId, title) — rename plan\ntravels_delete(travelId) — delete plan"
      },
      {
        "title": "Steps (within a travel plan)",
        "body": "steps_add(travelId, type, ...) — add step. type=\"spot\" requires spotId, type=\"day\" requires title. Optional: orderKey\nsteps_update(stepId, ...) — update position or title\nsteps_delete(stepId) — remove step"
      },
      {
        "title": "Utility",
        "body": "ping — test connection\nschema — get valid values for type, status, period\nquota — check API usage (doesn't count against quota)"
      },
      {
        "title": "Schema Reference",
        "body": "See references/schema.md for valid spot types, statuses, and periods. Call schema tool at runtime if unsure."
      },
      {
        "title": "Find spots to visit nearby",
        "body": "spots_nearby(lat, lng, radius=20, status=[\"a\",\"b\"])\n\nStatus a = \"Ikuzo!\" (priority), b = \"To Visit\""
      },
      {
        "title": "Seasonal spots with upcoming moments",
        "body": "spots_list(mapId, momentFrom=\"2026-03-01\", momentTo=\"2026-04-30\")"
      },
      {
        "title": "Create a trip itinerary",
        "body": "travels_create(title) → get travelId\nsteps_add(travelId, type=\"day\", title=\"Day 1 - Arrival\")\nsteps_add(travelId, type=\"spot\", spotId=\"...\") for each spot\nRepeat day dividers + spots for each day"
      },
      {
        "title": "Efficient listing (reduce tokens)",
        "body": "Use fields to request only what you need:\n\nspots_list(mapId, fields=[\"_id\",\"title\",\"gps\",\"status\",\"type\"])"
      },
      {
        "title": "Image URLs",
        "body": "Spot images use Ikuzo's CDN:\n\nhttps://ik.offbeatjapan.org/ikuzo/{imageId}.{ext}?tr=h-{height},w-{width}\n\nWhere imageId and ext come from the spot's image[] array."
      }
    ],
    "body": "Ikuzo\n\nIkuzo is a map & travel planning app. Access via MCP (JSON-RPC 2.0 over HTTP POST).\n\nConnection\nEndpoint: https://ikuzo.app/api/mcp\nAuth: Bearer token (from TOOLS.md or user config)\nProtocol: JSON-RPC 2.0 — POST with {\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"<tool>\",\"arguments\":{...}}}\n\nTools\nMaps\nmaps_list — list all maps (owned + shared)\nmaps_get(mapId) — get map details\nmaps_create(title) — create a new empty map, returns map with ID\nSpots\nspots_list(mapId, ...) — list/filter spots in a map. Filters: status[], type[], period[], momentFrom/To, text, limit, offset, fields[]\nspots_get(spotId) — get spot details\nspots_create(mapId, title, gps{lat,lng}, ...) — create spot. Optional: description, type, status, period[], moment{date, repeat, reminder[]}\nspots_update(spotId, ...) — update any field (including moment, rating)\nspots_delete(spotId) — soft delete (recoverable)\nspots_nearby(lat, lng, ...) — find spots near a point across ALL accessible maps. Optional: radius (km, default 10, max 500), mapIds[], all spot filters. Returns sorted by distance.\nspots_box(north, south, east, west, ...) — find spots in bounding box. Same filters as nearby.\nTravel Plans\ntravels_list — list all travel plans\ntravels_get(travelId) — get plan with steps\ntravels_create(title) — create plan\ntravels_update(travelId, title) — rename plan\ntravels_delete(travelId) — delete plan\nSteps (within a travel plan)\nsteps_add(travelId, type, ...) — add step. type=\"spot\" requires spotId, type=\"day\" requires title. Optional: orderKey\nsteps_update(stepId, ...) — update position or title\nsteps_delete(stepId) — remove step\nUtility\nping — test connection\nschema — get valid values for type, status, period\nquota — check API usage (doesn't count against quota)\nSchema Reference\n\nSee references/schema.md for valid spot types, statuses, and periods. Call schema tool at runtime if unsure.\n\nKey Patterns\nFind spots to visit nearby\nspots_nearby(lat, lng, radius=20, status=[\"a\",\"b\"])\n\n\nStatus a = \"Ikuzo!\" (priority), b = \"To Visit\"\n\nSeasonal spots with upcoming moments\nspots_list(mapId, momentFrom=\"2026-03-01\", momentTo=\"2026-04-30\")\n\nCreate a trip itinerary\ntravels_create(title) → get travelId\nsteps_add(travelId, type=\"day\", title=\"Day 1 - Arrival\")\nsteps_add(travelId, type=\"spot\", spotId=\"...\") for each spot\nRepeat day dividers + spots for each day\nEfficient listing (reduce tokens)\n\nUse fields to request only what you need:\n\nspots_list(mapId, fields=[\"_id\",\"title\",\"gps\",\"status\",\"type\"])\n\nImage URLs\n\nSpot images use Ikuzo's CDN:\n\nhttps://ik.offbeatjapan.org/ikuzo/{imageId}.{ext}?tr=h-{height},w-{width}\n\n\nWhere imageId and ext come from the spot's image[] array."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/jordymeow/ikuzo",
    "publisherUrl": "https://clawhub.ai/jordymeow/ikuzo",
    "owner": "jordymeow",
    "version": "2.1.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/ikuzo",
    "downloadUrl": "https://openagent3.xyz/downloads/ikuzo",
    "agentUrl": "https://openagent3.xyz/skills/ikuzo/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ikuzo/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ikuzo/agent.md"
  }
}