{"id":83762,"plugin_id":"plugin_asdk_app_6adfad7793908191ae6e8c689980c3f9","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-06T00:16:24.463Z","digest":"414b2c36e010080da7913d12945638d732e8a732890faaf1aed9795209710833","against":null,"payload":{"description":"Look up administrative boundaries anywhere in the world with Geocode AI and work with their polygons - find a country, state, county, city, district or postcode by name, get its polygon as GeoJSON, find every boundary containing a coordinate (reverse), list what is inside a boundary (children), check which zone each of many points falls in (contains), and merge several boundaries into one shape (union). Use for \"get the boundary/polygon/shape of X\", \"which county is this point in\", \"list the counties of Y\", \"is this address inside Z\", service areas built from named places, and map data for a page or a notebook; do not use for a described area that is not one named place (geocode-areas) or for writing code against the API (geocode-api).","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":258}],"name":"geocode-boundaries","skill_md_contents":"---\nname: geocode-boundaries\ndescription: Look up administrative boundaries anywhere in the world with Geocode AI and work with their polygons - find a country, state, county, city, district or postcode by name, get its polygon as GeoJSON, find every boundary containing a coordinate (reverse), list what is inside a boundary (children), check which zone each of many points falls in (contains), and merge several boundaries into one shape (union). Use for \"get the boundary/polygon/shape of X\", \"which county is this point in\", \"list the counties of Y\", \"is this address inside Z\", service areas built from named places, and map data for a page or a notebook; do not use for a described area that is not one named place (geocode-areas) or for writing code against the API (geocode-api).\n---\n\n# Geocode AI: boundaries\n\nTools come from the `geocode` MCP server (or the `geocode` CLI). Boundaries are\nOpenStreetMap administrative areas, cached by Geocode AI, so repeat lookups are\ninstant.\n\n## Workflow\n\n1. **Named place → search, then get.** Call `search_boundaries` with the name.\n   Add the country or a parent to the query when the name is ambiguous\n   (\"Alameda County, California\", \"Paris, France\"). Pick the result whose admin\n   level and parents match what the human meant, then call `get_boundary` with\n   its `id` for the polygon. Never guess or construct an id.\n2. **A coordinate → reverse.** `reverse_boundaries` with `lat` and `lon`\n   returns every boundary containing the point, from country down to\n   neighbourhood. Use it for \"which city/county/state is this in\".\n3. **Inside a boundary → children.** `list_children` with the parent's id\n   (states of a country, counties of a state, districts of a city).\n4. **Many points → contains.** `contains_points` takes a batch of points in one\n   call. Never loop one call per point.\n5. **Several boundaries as one shape → union.** `union_boundaries` with the ids\n   you got from search or children.\n6. **Files.** `export_boundary` (or `get_boundary` with a `format`) returns other\n   formats when the human wants a file.\n\n## Ids\n\nIds are `r<OSM relation id>` (`r396499`) or `w<way id>`. `R62422`,\n`relation/62422`, `-62422` and osm.org URLs are accepted; the canonical form\ncomes back. Reuse ids already in the conversation instead of searching again.\n\n## Costs and limits\n\nSearching and browsing (search, children) are free. A polygon, a reverse lookup\nor a point batch costs one unit. Use the connected account’s existing entitlements; do not display plans or pricing. Without a key only public tools work. If a call\nreturns `unauthorized`, tell the human to connect their account (the MCP\nserver's sign-in, or `npx @meterapp/geocode login`). On `quota_exceeded` stop\nand tell the human. Do not create checkout links, promote upgrades, or initiate subscriptions.\n\n## Presenting results\n\n- Say which boundary you used: name, admin level and parent (\"Alameda County,\n  California, United States, admin level 6\"), so the human can catch a wrong\n  match before using it.\n- GeoJSON is WGS84 in lon/lat order. Do not paste a huge polygon into chat\n  unless asked; save it to a file (`alameda.geojson`) or summarize it (bbox,\n  area, number of parts).\n- If no result matches, say so and show the closest candidates. Never\n  substitute a different place silently.\n\n## When the API falls short\n\nIf the human needs something the tools cannot do, or a call fails in a way\nthat looks like our bug (a 5xx, a boundary that is wrong or missing), use the\npublic feedback board. `list_feedback` first; if a matching item exists,\n`upvote_feedback` it and add the use case with `comment_on_feedback`.\nOtherwise, with the human's go-ahead, `request_feature` or `report_issue`\n(pass the failing call's `request_id` and `op`). All free; the board is\npublic, so never include keys, personal or customer data.\n\n## CLI equivalents\n\n```bash\nnpx @meterapp/geocode search \"Alameda County\"\nnpx @meterapp/geocode get r396499 --format geojson > alameda.geojson\nnpx @meterapp/geocode reverse 37.8 -122.27\nnpx @meterapp/geocode children r396499\nnpx @meterapp/geocode feedback --kind feature --q postcode\nnpx @meterapp/geocode upvote 12\nnpx @meterapp/geocode request \"Export as Shapefile\" --details \"ArcGIS import\"\nnpx @meterapp/geocode report \"get_boundary 500 for r62422\" --request-id req_… --op get_boundary\n```\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}