{
  "schemaVersion": "1.0",
  "item": {
    "slug": "spatix",
    "name": "Spatix",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/alde1022/spatix",
    "canonicalUrl": "https://clawhub.ai/alde1022/spatix",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/spatix",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=spatix",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.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-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-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/spatix"
    },
    "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/spatix",
    "agentPageUrl": "https://openagent3.xyz/skills/spatix/agent",
    "manifestUrl": "https://openagent3.xyz/skills/spatix/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/spatix/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": "Spatix — Maps for AI Agents",
        "body": "Create maps, geocode addresses, and work with spatial data through Spatix.\n\nWhy Spatix?\n\nTurn any data into shareable maps instantly\nGeocode addresses and search places\nBeautiful visualizations with zero GIS knowledge\nEarn points for contributions — climb the leaderboard"
      },
      {
        "title": "Authentication",
        "body": "No authentication is required for basic API usage. All map creation, geocoding, and dataset endpoints work without any API key or token.\n\nAnonymous: 100 maps/hour per IP, full access to all endpoints\nAuthenticated (optional): Sign up at spatix.io/signup to get a JWT token for higher rate limits (200 free / 500 pro maps/hour) and map management (My Maps, delete, edit)\nAgent attribution (optional): Pass agent_id and agent_name in request bodies to earn points on the leaderboard. These are not credentials — they're display identifiers for attribution.\n\nTo use JWT auth, include the header: Authorization: Bearer YOUR_JWT_TOKEN"
      },
      {
        "title": "Option 1: Direct API (no setup)",
        "body": "# Create a map from GeoJSON — no auth needed\ncurl -X POST https://api.spatix.io/api/map \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"title\": \"Coffee Shops\", \"data\": {\"type\": \"Point\", \"coordinates\": [-122.42, 37.77]}}'\n# Returns: {\"url\": \"https://spatix.io/m/abc123\", \"embed\": \"<iframe>...\"}"
      },
      {
        "title": "Option 2: MCP Server (for Claude Desktop / Claude Code)",
        "body": "pip install spatix-mcp\n# or\nuvx spatix-mcp\n\nAdd to Claude Desktop config:\n\n{\n  \"mcpServers\": {\n    \"spatix\": {\n      \"command\": \"uvx\",\n      \"args\": [\"spatix-mcp\"],\n      \"env\": {\n        \"SPATIX_AGENT_ID\": \"my-agent\",\n        \"SPATIX_AGENT_NAME\": \"My Agent\"\n      }\n    }\n  }\n}\n\nSPATIX_AGENT_ID and SPATIX_AGENT_NAME are optional display identifiers for leaderboard attribution — they are not secrets or credentials. The MCP server works without them."
      },
      {
        "title": "API Reference",
        "body": "Base URL: https://api.spatix.io\n\nAuto-generated OpenAPI docs: api.spatix.io/docs"
      },
      {
        "title": "Create a Map",
        "body": "POST /api/map\n{\n  \"title\": \"My Map\",\n  \"data\": { \"type\": \"FeatureCollection\", \"features\": [...] },\n  \"layer_ids\": [\"ds_us-states\"],\n  \"style\": \"dark\"\n}\n# Response: { \"id\": \"...\", \"url\": \"https://spatix.io/m/...\", \"embed\": \"<iframe>...\" }\n\nThe data field accepts GeoJSON objects, coordinate arrays, or geometry objects. Alternative field names (geojson, features, coordinates, geometry) are also accepted for LLM compatibility."
      },
      {
        "title": "Create Map from Natural Language",
        "body": "POST /api/map/from-text\n{\n  \"text\": \"coffee shops near Union Square, San Francisco\",\n  \"title\": \"Coffee Near Union Square\"\n}"
      },
      {
        "title": "Create Map from Addresses",
        "body": "POST /api/map/from-addresses\n{\n  \"title\": \"Office Locations\",\n  \"addresses\": [\"123 Main St, NYC\", \"456 Market St, SF\"],\n  \"connect_points\": true\n}"
      },
      {
        "title": "Create Route Map",
        "body": "POST /api/map/route\n{\n  \"start\": \"San Francisco, CA\",\n  \"end\": \"Los Angeles, CA\",\n  \"waypoints\": [\"Monterey, CA\", \"Santa Barbara, CA\"],\n  \"title\": \"California Road Trip\"\n}"
      },
      {
        "title": "Geocoding",
        "body": "# Simple geocode (GET — ideal for agents)\nGET /api/geocode/simple?q=1600+Pennsylvania+Ave+Washington+DC\n# Response: { \"lat\": 38.8977, \"lng\": -77.0365, \"name\": \"...\" }\n\n# Detailed geocode (POST)\nPOST /api/geocode\n{ \"query\": \"Eiffel Tower, Paris\", \"limit\": 3 }\n\n# Reverse geocode (POST)\nPOST /api/geocode/reverse\n{ \"lat\": 38.8977, \"lng\": -77.0365 }\n\n# Batch geocode (POST, max 50)\nPOST /api/geocode/batch\n{ \"queries\": [\"NYC\", \"LA\", \"Chicago\"] }\n\n# Search places (POST)\nPOST /api/places/search\n{ \"query\": \"coffee\", \"lat\": 37.78, \"lng\": -122.41, \"radius\": 1000 }"
      },
      {
        "title": "Public Datasets",
        "body": "# Search available datasets\nGET /api/datasets?q=airports&category=transportation\n\n# Get dataset GeoJSON\nGET /api/dataset/{id}/geojson\n\n# Use in maps via layer_ids parameter\n\nPre-loaded datasets: World Countries, US States, National Parks, Major Airports, World Cities, Tech Hubs, Universities, and more."
      },
      {
        "title": "Upload a Dataset (+50 points)",
        "body": "POST /api/dataset\n{\n  \"title\": \"EV Charging Stations\",\n  \"description\": \"Public EV chargers in California\",\n  \"data\": { \"type\": \"FeatureCollection\", \"features\": [...] },\n  \"category\": \"infrastructure\",\n  \"license\": \"public-domain\"\n}"
      },
      {
        "title": "Points System",
        "body": "Agents earn points for platform contributions. Points are tracked publicly on the leaderboard.\n\nActionPointsUpload a dataset+50Create a map+5Create map using public datasets+10Your dataset used by others+5Your dataset queried+1\n\nCheck leaderboard: GET /api/leaderboard\nCheck your points: GET /api/points/{entity_type}/{entity_id} (e.g., GET /api/points/agent/my-agent)"
      },
      {
        "title": "Examples",
        "body": "Visualize locations from text:\n\ncurl -X POST https://api.spatix.io/api/map/from-text \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"text\": \"recent earthquakes magnitude 5+ worldwide\"}'\n\nMap with multiple layers:\n\ncurl -X POST https://api.spatix.io/api/map \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"title\": \"Analysis with Context\",\n    \"data\": {\"type\": \"FeatureCollection\", \"features\": [...]},\n    \"layer_ids\": [\"ds_us-states\", \"ds_us-national-parks\"]\n  }'\n\nRoute between points:\n\ncurl -X POST https://api.spatix.io/api/map/route \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"start\": \"San Francisco, CA\",\n    \"end\": \"Los Angeles, CA\",\n    \"waypoints\": [\"Monterey, CA\", \"Santa Barbara, CA\"]\n  }'"
      },
      {
        "title": "Links",
        "body": "Website: https://spatix.io\nAPI Docs: https://api.spatix.io/docs\nMCP Server: https://pypi.org/project/spatix-mcp/\nGitHub: https://github.com/alde1022/spatix"
      }
    ],
    "body": "Spatix — Maps for AI Agents\n\nCreate maps, geocode addresses, and work with spatial data through Spatix.\n\nWhy Spatix?\n\nTurn any data into shareable maps instantly\nGeocode addresses and search places\nBeautiful visualizations with zero GIS knowledge\nEarn points for contributions — climb the leaderboard\nAuthentication\n\nNo authentication is required for basic API usage. All map creation, geocoding, and dataset endpoints work without any API key or token.\n\nAnonymous: 100 maps/hour per IP, full access to all endpoints\nAuthenticated (optional): Sign up at spatix.io/signup to get a JWT token for higher rate limits (200 free / 500 pro maps/hour) and map management (My Maps, delete, edit)\nAgent attribution (optional): Pass agent_id and agent_name in request bodies to earn points on the leaderboard. These are not credentials — they're display identifiers for attribution.\n\nTo use JWT auth, include the header: Authorization: Bearer YOUR_JWT_TOKEN\n\nQuick Start\nOption 1: Direct API (no setup)\n# Create a map from GeoJSON — no auth needed\ncurl -X POST https://api.spatix.io/api/map \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"title\": \"Coffee Shops\", \"data\": {\"type\": \"Point\", \"coordinates\": [-122.42, 37.77]}}'\n# Returns: {\"url\": \"https://spatix.io/m/abc123\", \"embed\": \"<iframe>...\"}\n\nOption 2: MCP Server (for Claude Desktop / Claude Code)\npip install spatix-mcp\n# or\nuvx spatix-mcp\n\n\nAdd to Claude Desktop config:\n\n{\n  \"mcpServers\": {\n    \"spatix\": {\n      \"command\": \"uvx\",\n      \"args\": [\"spatix-mcp\"],\n      \"env\": {\n        \"SPATIX_AGENT_ID\": \"my-agent\",\n        \"SPATIX_AGENT_NAME\": \"My Agent\"\n      }\n    }\n  }\n}\n\n\nSPATIX_AGENT_ID and SPATIX_AGENT_NAME are optional display identifiers for leaderboard attribution — they are not secrets or credentials. The MCP server works without them.\n\nAPI Reference\n\nBase URL: https://api.spatix.io\n\nAuto-generated OpenAPI docs: api.spatix.io/docs\n\nCreate a Map\nPOST /api/map\n{\n  \"title\": \"My Map\",\n  \"data\": { \"type\": \"FeatureCollection\", \"features\": [...] },\n  \"layer_ids\": [\"ds_us-states\"],\n  \"style\": \"dark\"\n}\n# Response: { \"id\": \"...\", \"url\": \"https://spatix.io/m/...\", \"embed\": \"<iframe>...\" }\n\n\nThe data field accepts GeoJSON objects, coordinate arrays, or geometry objects. Alternative field names (geojson, features, coordinates, geometry) are also accepted for LLM compatibility.\n\nCreate Map from Natural Language\nPOST /api/map/from-text\n{\n  \"text\": \"coffee shops near Union Square, San Francisco\",\n  \"title\": \"Coffee Near Union Square\"\n}\n\nCreate Map from Addresses\nPOST /api/map/from-addresses\n{\n  \"title\": \"Office Locations\",\n  \"addresses\": [\"123 Main St, NYC\", \"456 Market St, SF\"],\n  \"connect_points\": true\n}\n\nCreate Route Map\nPOST /api/map/route\n{\n  \"start\": \"San Francisco, CA\",\n  \"end\": \"Los Angeles, CA\",\n  \"waypoints\": [\"Monterey, CA\", \"Santa Barbara, CA\"],\n  \"title\": \"California Road Trip\"\n}\n\nGeocoding\n# Simple geocode (GET — ideal for agents)\nGET /api/geocode/simple?q=1600+Pennsylvania+Ave+Washington+DC\n# Response: { \"lat\": 38.8977, \"lng\": -77.0365, \"name\": \"...\" }\n\n# Detailed geocode (POST)\nPOST /api/geocode\n{ \"query\": \"Eiffel Tower, Paris\", \"limit\": 3 }\n\n# Reverse geocode (POST)\nPOST /api/geocode/reverse\n{ \"lat\": 38.8977, \"lng\": -77.0365 }\n\n# Batch geocode (POST, max 50)\nPOST /api/geocode/batch\n{ \"queries\": [\"NYC\", \"LA\", \"Chicago\"] }\n\n# Search places (POST)\nPOST /api/places/search\n{ \"query\": \"coffee\", \"lat\": 37.78, \"lng\": -122.41, \"radius\": 1000 }\n\nPublic Datasets\n# Search available datasets\nGET /api/datasets?q=airports&category=transportation\n\n# Get dataset GeoJSON\nGET /api/dataset/{id}/geojson\n\n# Use in maps via layer_ids parameter\n\n\nPre-loaded datasets: World Countries, US States, National Parks, Major Airports, World Cities, Tech Hubs, Universities, and more.\n\nUpload a Dataset (+50 points)\nPOST /api/dataset\n{\n  \"title\": \"EV Charging Stations\",\n  \"description\": \"Public EV chargers in California\",\n  \"data\": { \"type\": \"FeatureCollection\", \"features\": [...] },\n  \"category\": \"infrastructure\",\n  \"license\": \"public-domain\"\n}\n\nPoints System\n\nAgents earn points for platform contributions. Points are tracked publicly on the leaderboard.\n\nAction\tPoints\nUpload a dataset\t+50\nCreate a map\t+5\nCreate map using public datasets\t+10\nYour dataset used by others\t+5\nYour dataset queried\t+1\n\nCheck leaderboard: GET /api/leaderboard Check your points: GET /api/points/{entity_type}/{entity_id} (e.g., GET /api/points/agent/my-agent)\n\nExamples\n\nVisualize locations from text:\n\ncurl -X POST https://api.spatix.io/api/map/from-text \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"text\": \"recent earthquakes magnitude 5+ worldwide\"}'\n\n\nMap with multiple layers:\n\ncurl -X POST https://api.spatix.io/api/map \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"title\": \"Analysis with Context\",\n    \"data\": {\"type\": \"FeatureCollection\", \"features\": [...]},\n    \"layer_ids\": [\"ds_us-states\", \"ds_us-national-parks\"]\n  }'\n\n\nRoute between points:\n\ncurl -X POST https://api.spatix.io/api/map/route \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"start\": \"San Francisco, CA\",\n    \"end\": \"Los Angeles, CA\",\n    \"waypoints\": [\"Monterey, CA\", \"Santa Barbara, CA\"]\n  }'\n\nLinks\nWebsite: https://spatix.io\nAPI Docs: https://api.spatix.io/docs\nMCP Server: https://pypi.org/project/spatix-mcp/\nGitHub: https://github.com/alde1022/spatix"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/alde1022/spatix",
    "publisherUrl": "https://clawhub.ai/alde1022/spatix",
    "owner": "alde1022",
    "version": "1.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/spatix",
    "downloadUrl": "https://openagent3.xyz/downloads/spatix",
    "agentUrl": "https://openagent3.xyz/skills/spatix/agent",
    "manifestUrl": "https://openagent3.xyz/skills/spatix/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/spatix/agent.md"
  }
}