mapsi-mcp
mapsi-mcp
MCP server for Mapsi — 18 geospatial tools for AI coding assistants. Connect Claude Code, Cursor, Windsurf, or any MCP-compatible IDE directly to Mapsi APIs.
OpenStreetMap-based · Self-hosted infrastructure · No Google Maps vendor lock-in
Quick Start
1. Get your API key at mapsi.dev/console/api-keys (free tier: 1,000 calls/day, no credit card)
2. Add the config to your IDE:
Claude Code / Claude Desktop
Add to ~/.claude.json (or .mcp.json in your project root):
{
"mcpServers": {
"mapsi": {
"command": "npx",
"args": ["-y", "mapsi-mcp"],
"env": { "MAPSI_API_KEY": "msk_your_key_here" }
}
}
}Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"mapsi": {
"command": "npx",
"args": ["-y", "mapsi-mcp"],
"env": { "MAPSI_API_KEY": "msk_your_key_here" }
}
}
}Windsurf
Add to ~/.codeium/windsurf/mcp_config.json — same JSON format as Cursor above.
VS Code + Cline
Open Cline settings → MCP Servers → Add server → paste:
{
"mapsi": {
"command": "npx",
"args": ["-y", "mapsi-mcp"],
"env": { "MAPSI_API_KEY": "msk_your_key_here" }
}
}Zed
Add to your Zed settings under "context_servers":
{
"mapsi-mcp": {
"command": { "path": "npx", "args": ["-y", "mapsi-mcp"] },
"env": { "MAPSI_API_KEY": "msk_your_key_here" }
}
}3. Restart your IDE — then ask your AI in plain English.
Related MCP server: Mapbox MCP Server
What You Can Ask Your AI
Geocode all addresses in my CSV and add lat/lon columns
Build an address autocomplete input for this React form using Mapsi
Draw a 20-minute drive isochrone from our warehouse at this coordinate
Find the 5 nearest hospitals to this coordinate
Migrate this Google Maps geocoding call to Mapsi
Add a MapLibre map with Mapsi light tiles and drop markers from this array
Calculate a distance matrix between 10 warehouses and 50 delivery stops
Snap this GPS trace to the road network and calculate total distanceAvailable Tools (18)
Geocoding
Tool | Description |
| Address or place name → lat/lon. Returns confidence score (0–1); treat scores below 0.6 as ambiguous. |
| lat/lon → formatted address, street, city, postcode, country. |
| Real-time address suggestions as user types (min 2 chars). For UI input fields. |
| Standardize messy/inconsistent addresses. Returns structured fields + coordinates. |
| IANA timezone name + UTC offset + DST status for any coordinate. |
| Altitude in metres for any coordinate (~30m resolution globally). |
Routing
Tool | Description |
| Turn-by-turn directions. Modes: auto, truck, bicycle, pedestrian, motor_scooter. |
| Reachability polygon within N minutes or N metres. Returns GeoJSON for MapLibre/Leaflet. |
| Travel time + distance matrix for up to 50×50 origin-destination pairs in one call. |
| Snap a GPS trace to the road network. Coordinates are [lon, lat] order (GeoJSON). |
| Find nearest routable road point. Call this if |
Places
Tool | Description |
| Find nearby POIs by category (restaurant, hospital, pharmacy, ATM…). Returns name, coords, categories. |
Spatial
Tool | Description |
| Admin hierarchy for a coordinate: country, region, city, neighbourhood. |
| Convert coordinate to H3 hexagonal grid cell at resolution 0–15. |
Batch
Tool | Description |
| Geocode up to 30,000 addresses in a single call. Never loop |
| Reverse geocode multiple coordinates in one call. |
Tiles
Tool | Description |
| MapLibre GL style URL. Styles: light, dark, streets, topo, grayscale, black, white, liberty. |
| Static PNG map URL for use in |
Auth
API calls:
X-API-Keyheader (handled automatically by the MCP server)Tile URLs:
?key=query param (browser-safe; returned byget_tile_style_url)
Common Patterns for Agents
Geocode once, reuse the result:
Don't re-geocode the same address twice within a session. Cache the lat/lon and pass it directly to route, isochrone, and places_search.Bulk data → batch tools:
For more than 1 address or coordinate pair, always use batch_geocode / batch_reverse_geocode.Route fails → nearest_road first:
If route returns an error near the origin or destination, call nearest_road to snap the point to a routable road, then retry route with the snapped coordinates.Isochrone — time vs distance:
Use contours_minutes for time-based reachability (delivery ETAs, commute zones).
Use contours_meters for fixed-radius circles on the road network.
Provide only one, not both.Pricing
Plan | Calls/day | Batch size |
Free | 1,000 | 10 |
Growth | 50,000 | 5,000 |
Business | Unlimited | 30,000 |
Full pricing at mapsi.dev/pricing
Links
Website: mapsi.dev
API docs: mapsi.dev/docs
AI prompts: mapsi.dev/prompts-for-ai
GitHub: github.com/algolayer/mapsi-mcp
Support: support@mapsi.dev
License
MIT — algolayer.com
Available Tools
18 toolsautocompleteA
Get real-time address suggestions as a user types in an input field.
Returns: array of suggestions each with { text, label, lat, lon }.
WHEN TO USE: ONLY for powering a live address input field in a UI. Minimum 2 characters. DO NOT USE IN AGENTS: Agents should call geocode directly with a complete address. Autocomplete is a UI tool, not an agent tool — it returns partial matches, not reliable coordinates.
FOCUS: Always pass focus.lat/focus.lon when user location is available — returns local results first.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Partial address or place name as the user types. Minimum 2 characters. | |
| countries | No | ISO country codes to restrict suggestions. Example: "US,CA". | |
| limit | No | Max suggestions to return. Default 5, max 10. | |
| focus.lat | No | Latitude to bias suggestions toward user's location. | |
| focus.lon | No | Longitude to bias suggestions toward user's location. | |
| layers | No | Filter suggestions by type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool returns partial matches not reliable coordinates, specifies the return format, and emphasizes it is a UI tool—all beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (WHEN TO USE, DO NOT USE, FOCUS), front-loaded purpose, and no unnecessary sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers usage, return structure, and exclusions comprehensively, despite no output schema. Agent can confidently decide when to invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds value by emphasizing focus parameters and distinguishing from geocode, but doesn't significantly augment parameter details beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get real-time address suggestions as a user types in an input field' and distinguishes from siblings like 'geocode' by specifying it is a UI tool for live input.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('ONLY for powering a live address input field') and when not to use ('DO NOT USE IN AGENTS'), and advises to pass focus.lat/focus.lon when location is available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_geocodeA
Geocode multiple addresses in a single API request.
Returns: { results: [{ input, formatted_address, lat, lon, confidence, status }] }. Results are in the same order as the input array. status is "ok" or "not_found".
PERFORMANCE: Always use batch_geocode for 2+ addresses. Never loop geocode calls — batch is far faster and uses fewer API credits. CACHING: Deduplicate your address list before calling — identical strings waste quota. PLAN LIMITS: Max addresses per call — Free: 10, Growth: 5000, Business: 30000. COUNTRIES: Pass countries when all addresses are in the same country — significantly improves accuracy.
USE FOR: Importing customer lists, processing address CSV files, bulk ETL pipelines.
| Name | Required | Description | Default |
|---|---|---|---|
| addresses | Yes | Array of address strings to geocode. Deduplicate before sending. See plan limits above. | |
| countries | No | ISO country codes applied to all addresses. Use when addresses share a country. Example: "IN" or "US,CA". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description fully bears the transparency burden. It discloses the return format, field meanings, ordering, status values ('ok' or 'not_found'), caching benefits, plan limits, and country accuracy tip. No behavioral surprises remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact but rich, using clear section headings (PERFORMANCE, CACHING, PLAN LIMITS, COUNTRIES, USE FOR). Every sentence adds unique value. No redundant or filler language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 2 parameters, no output schema, and moderate complexity. The description covers inputs, output structure, performance, caching, plan constraints, accuracy tips, and appropriate use cases. It fully equips the agent to use the tool correctly and efficiently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds crucial semantics: addresses parameter explicitly warns 'Deduplicate before sending' and refers to plan limits; countries parameter provides ISO examples and usage guidance ('Pass countries when all addresses are in the same country'). This goes well beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Geocode multiple addresses in a single API request.' It specifically contrasts with the sibling 'geocode' (single address) and 'batch_reverse_geocode' (reverse geocoding), making the tool's exclusive purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Always use batch_geocode for 2+ addresses. Never loop geocode calls — batch is far faster and uses fewer API credits.' Also lists specific use cases ('Importing customer lists, processing address CSV files, bulk ETL pipelines'), leaving no doubt about when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_reverse_geocodeA
Reverse geocode multiple coordinates in a single API request.
Returns: { results: [{ lat, lon, formatted_address, street, city, postcode, country, country_code }] }. Results are in the same order as the input array.
PERFORMANCE: Always use batch_reverse_geocode for 2+ coordinates. Never loop reverse_geocode calls. USE FOR: Enriching GPS log exports, converting coordinate datasets to readable addresses, fleet reports.
| Name | Required | Description | Default |
|---|---|---|---|
| coordinates | Yes | Array of {lat, lon} coordinate objects to reverse geocode. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that results are in the same order as input, which is important behavioral information. No annotations are provided, so the description bears full burden. It could mention error handling or rate limits, but the disclosed behavior is sufficient for most use cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: three sentences, a sample return line, and use cases. No unnecessary words. Front-loaded with action and context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description provides complete context: purpose, usage guidelines, return format, and examples. The sibling tools are clearly differentiated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds no extra meaning beyond what the schema already provides. The description repeats the structure but does not clarify edge cases or formatting requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs reverse geocoding for multiple coordinates in a single API request. It distinguishes from the sibling tool 'reverse_geocode' by explicitly noting its batch capability, and from 'batch_geocode' by specifying reverse geocoding.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Always use batch_reverse_geocode for 2+ coordinates. Never loop reverse_geocode calls.' Also lists specific use cases (enriching GPS exports, converting datasets).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
elevationA
Get the elevation (altitude above sea level in metres) for a geographic coordinate.
Returns: { elevation_m (number) }.
WHEN TO USE: Fitness/hiking apps, drone routing (terrain clearance), flood risk analysis, gradient calculation for cycling routes.
NOTE: Elevation data has ~30m horizontal resolution globally; higher resolution available in some regions.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude. Range: -90 to 90. | |
| lon | Yes | Longitude. Range: -180 to 180. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses resolution limitation (~30m global, higher in some regions) and return format. No annotations, so description carries the burden well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact three-paragraph structure with front-loaded purpose. No fluff; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with 2 params and no output schema. Description covers purpose, usage, return, and a key limitation. Adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema describes both params (lat, lon) with ranges (100% coverage). Description adds no extra parameter detail, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States 'Get the elevation (altitude above sea level in metres) for a geographic coordinate' – a specific verb and resource. Clearly distinguishes from sibling tools (geocoding, routing, maps).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'WHEN TO USE' section with concrete use cases (hiking, drone routing, flood risk). Lacks explicit when-not-to-use or alternatives, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
geocodeA
Convert an address or place name into WGS84 coordinates (lat/lon).
Returns: formatted_address (string), coordinates {lat, lon}, city, country, confidence (0–1).
WHEN TO USE: When you have a human-readable address and need lat/lon. DO NOT USE: For coordinates-to-address (use reverse_geocode). For real-time user typing (use autocomplete).
CONFIDENCE: Score below 0.6 means the result is ambiguous — ask the user to clarify the address before proceeding. Score above 0.85 is reliable.
CACHING: Within an agent session, never re-geocode the same address string. Cache the result and reuse it.
COUNTRY BIAS: Always pass countries when the user's region is known — dramatically improves accuracy for short or ambiguous addresses (e.g. "Springfield" returns the right one).
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Full address or place name to geocode. | |
| countries | No | ISO 3166-1 alpha-2 country codes to bias results. Comma-separated, max 4. Pass this whenever the user's country is known. | |
| limit | No | Max results to return. Default 5, max 25. Use 1 when you need a single best match. | |
| lang | No | Response language code (BCP 47). Default: en. | |
| focus.lat | No | Latitude to bias results toward (e.g. user's current location). Range: -90 to 90. | |
| focus.lon | No | Longitude to bias results toward. Range: -180 to 180. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: return format, confidence interpretation, caching policy, and country bias. No hidden side effects; geocoding is read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections. Every sentence adds value; no waste. Front-loaded with the core purpose and return format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description covers return format, confidence interpretation, caching, and bias. For a geocoding tool, this is comprehensive and actionable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good descriptions. The description adds usage context (e.g., 'Always pass countries when the user's region is known') and explains parameter roles, but schema already covers basic semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Convert an address or place name into WGS84 coordinates (lat/lon).' It distinguishes from reverse_geocode and autocomplete, providing a precise verb-resource pairing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'WHEN TO USE' and 'DO NOT USE' sections with references to sibling tools. Additional guidance on confidence thresholds, caching, and country bias provides clear decision-support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_static_map_urlA
Build a URL for a static PNG map image centered on a location.
Returns: { url, auth_note, html_example }.
USE FOR: Email templates, PDF reports, social sharing previews, server-side image generation. No JavaScript needed.
ZOOM GUIDE:
1–4: Country/continent
6–8: Region/state
10–11: City
12–13: Neighbourhood
14–16: Street level (most common)
17–19: Building/parcel
AUTH: For server-side use, send X-API-Key header. For direct browser/img use, append &api_key=YOUR_KEY to the URL.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Map center latitude. Range: -90 to 90. | |
| lon | Yes | Map center longitude. Range: -180 to 180. | |
| zoom | Yes | Zoom level 1–20. 14–16 for street level, 12 for neighbourhood, 10 for city overview. | |
| width | No | Image width in pixels. Default 600. | |
| height | No | Image height in pixels. Default 400. | |
| api_key | Yes | Mapsi API key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses authentication methods (X-API-Key header for server-side, &api_key for URL), the return format (url, auth_note, html_example), and that no JavaScript is needed. It does not mention any side effects or permissions, but as a URL generation tool, it is inherently non-destructive and read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise and well-structured. It has clear sections: purpose, return format, use cases, zoom guide, and authentication instructions. Each sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters (4 required), no output schema, no annotations, and sibling tools that are distinct, the description covers most aspects: purpose, usage context, authentication, and zoom guidance. It could be more complete by explicitly mentioning that the map is in PNG format and that the URL is for the Mapsi API, but overall it is sufficient for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, baseline 3. The description adds a detailed zoom guide that explains how zoom levels correspond to map scales (e.g., 14-16 street level), which goes beyond the schema's brief description. For other parameters like width, height, and API key, the description does not add extra meaning beyond the schema, but the zoom guide is a significant addition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool builds a URL for a static PNG map image centered on a location. It provides the return format and distinguishes itself from siblings like geocode, route, and map_match by focusing on static map URL generation. The verb 'build' and resource 'URL for a static PNG map image' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists use cases: email templates, PDF reports, social sharing previews, server-side image generation, with note that no JavaScript is needed. The zoom guide provides contextual advice on zoom levels for different map scales. However, it does not mention when not to use this tool or explicitly contrast with sibling tools like get_tile_style_url.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tile_style_urlA
Get the MapLibre GL style URL for Mapsi map tiles.
Returns: { style_url, usage_note, maplibre_example }.
AUTH NOTE: Tile auth uses ?key= query param in the URL, NOT the X-API-Key header. This is intentional — tile URLs must be usable in browser tags and MapLibre without exposing headers.
STYLES:
light: Minimal, pale, ideal for data overlays (default)
dark: Dark mode, high contrast for dashboards
streets: Full street detail, labels, transit
topo: Terrain/elevation shading, ideal for outdoor apps
grayscale: Monochrome, for color-coded data layers
white/black: Blank canvas for custom styling
liberty: Colorful OSM-inspired style
USE FOR: Initializing MapLibre GL JS, React Map GL, Mapbox-compatible libraries.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Map visual style. Default: light. | |
| api_key | Yes | Mapsi API key. Will be embedded in the returned URL as a ?key= param. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses auth mechanism (key in URL, not header), return structure, and style options. No annotations provided, making description the sole source. Covers read-only nature implicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with sections for returns, auth, styles, and usage. Every sentence adds value without redundancies.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete given no output schema: explains return fields, all style variants, and auth. No significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds context beyond schema: explains api_key embedding as ?key= param and describes each style briefly. Schema coverage is 100%, but description enhances understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool retrieves a MapLibre GL style URL for Mapsi tiles, listing return fields and style options. Distinct from sibling get_static_map_url.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states use case 'for initializing MapLibre GL JS, React Map GL' and lists styles. Lacks direct when-not-to-use guidance but is specific enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
h3_indexA
Convert a coordinate to an H3 hexagonal grid cell index at a given resolution.
Returns: { h3_index (string), resolution, center_lat, center_lon }.
Resolution guide (area per cell):
5: ~250 km² — country/large region level
7: ~5 km² — city neighbourhood level (most common for analytics)
9: ~0.1 km² — city block level
12: ~0.003 km² — building level
USE FOR: Spatial aggregation, density heat maps, geospatial indexing, joining datasets by grid cell. NOTE: For bulk H3 indexing of many coordinates, call individually — do not attempt to derive adjacent cells manually.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude. Range: -90 to 90. | |
| lon | Yes | Longitude. Range: -180 to 180. | |
| resolution | Yes | H3 resolution 0–15. Use 7 for neighbourhood-level aggregation, 9 for block-level. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description fully bears the burden. It discloses the return fields (h3_index, resolution, center_lat, center_lon) and behavior (simple conversion, no adjacent cell derivation). It could mention idempotency or statelessness, but the current detail is adequate for safe agent invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: purpose, return values, resolution table, and usage notes in three concise paragraphs. Every sentence adds value, and key information is front-loaded. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explicitly lists return fields. It covers purpose, all parameters (with resolution guidance), usage scenarios, and a behavioral constraint (no manual cell derivation). This is complete for a straightforward coordinate conversion tool, leaving no ambiguity for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed field descriptions. The description adds significant value beyond the schema by providing a resolution guide with area estimates (e.g., resolution 7 for neighbourhood-level) and practical usage notes for bulk indexing, which helps the agent choose appropriate resolution values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a clear verb-resource statement: 'Convert a coordinate to an H3 hexagonal grid cell index at a given resolution.' This explicitly distinguishes it from sibling geocoding, routing, and mapping tools, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'USE FOR' section lists common applications (spatial aggregation, heat maps, geospatial indexing, joining datasets), and the NOTE advises against manually deriving adjacent cells. While it does not explicitly state when not to use, the guidance is sufficient given no direct sibling tool with similar functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
isochroneA
Generate a reachability polygon — the geographic area reachable from a point within a given time or distance.
Returns: GeoJSON FeatureCollection with one Polygon per contour. Each polygon is the boundary of the reachable area.
CONTOURS — you must provide EITHER contours_minutes OR contours_meters, not both and not neither:
contours_minutes: [5, 10, 15] returns 3 nested polygons for 5, 10, 15 min reach (max 4 values, max 60 min each)
contours_meters: [500, 1000, 2000] returns polygons for 500m, 1km, 2km reach (max 4 values)
OUTPUT: Pass GeoJSON directly to MapLibre addSource/addLayer, Leaflet geoJSON(), or Turf.js. USE FOR: Delivery zone visualization, service area planning, "show restaurants within 15 min walk".
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Origin latitude. Range: -90 to 90. | |
| lon | Yes | Origin longitude. Range: -180 to 180. | |
| contours_minutes | No | Time-based contours in minutes. Provide this OR contours_meters, not both. Example: [5, 10, 15]. Max 4 values, max 60 each. | |
| contours_meters | No | Distance-based contours in metres. Provide this OR contours_minutes, not both. Example: [500, 1000, 2000]. Max 4 values. | |
| mode | No | Travel mode. Default: auto. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses the return format ('GeoJSON FeatureCollection with one Polygon per contour') and explains how to use the output with mapping libraries. It also notes constraints like max values and mutual exclusivity, ensuring transparent behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (purpose, output, contours, use cases) and uses bold for emphasis. Every sentence is informative without redundancy, achieving conciseness and clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (mutual exclusivity, multiple parameter types, GeoJSON output), the description covers all necessary information: purpose, parameter rules, output format, and integration examples. No output schema exists, but the description compensates adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although input schema coverage is 100%, the description adds significant value by reinforcing mutual exclusivity, providing example values, stating the default mode ('auto'), and explaining the output format. This goes beyond the schema's bare definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Generate a reachability polygon' and specifies the geographic area reachable from a point within a given time or distance. It distinguishes itself from sibling tools by mentioning specific use cases like delivery zone visualization and service area planning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use the tool (e.g., 'show restaurants within 15 min walk') and includes clear instructions for the contours parameters: 'you must provide EITHER contours_minutes OR contours_meters, not both and not neither', with examples and constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
map_matchA
Snap a raw GPS trace to the road network to correct GPS drift and determine the actual route taken.
Returns: { matched_points: [{lat,lon}], confidence (0–1), geometry (GeoJSON LineString of matched route) }.
COORDINATE FORMAT — CRITICAL: The coordinates array uses [longitude, latitude] order (GeoJSON convention), NOT [latitude, longitude]. Correct: [[-0.1276, 51.5074], [-0.1279, 51.5078]] ← [lon, lat] Wrong: [[51.5074, -0.1276], [51.5078, -0.1279]] ← [lat, lon] — will match wrong roads
MINIMUM: At least 2 coordinate pairs required. For best accuracy, use GPS points sampled every 5–30 seconds. USE FOR: Fleet tracking post-processing, trip analysis, mileage calculation, delivery verification.
| Name | Required | Description | Default |
|---|---|---|---|
| coordinates | Yes | GPS trace as array of [longitude, latitude] pairs. LONGITUDE COMES FIRST (GeoJSON order). Example: [[-0.1276, 51.5074], [-0.1279, 51.5078]]. | |
| mode | No | Travel mode used for this trip — affects which road types are considered. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses key behaviors: output structure (matched_points, confidence, geometry), coordinate ordering criticality, minimum points, and recommended sampling rate. It does not cover side effects or authentication needs, but the disclosed details are substantial for a map-matching tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: purpose first, then return details, then a clearly marked coordinate warning, followed by requirements and use cases. It is slightly verbose but remains focused and easy to parse. All sections serve a function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description provides the full return shape and useful context about coordinate ordering and usage. It could clarify the 'confidence' scale or mode effects, but overall it covers the essential aspects for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the schema already documents both parameters. The description adds value by emphasizing the coordinate order with a critical warning, examples, and explanations of correct vs. wrong usage. For the 'mode' parameter, it does not add beyond the schema, but the coordinates enrichment justifies a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence clearly states the tool's function: 'Snap a raw GPS trace to the road network to correct GPS drift and determine the actual route taken.' This provides a specific verb and resource, effectively differentiating from siblings like nearest_road (which handles single points) or route (which computes optimal paths).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes 'USE FOR: Fleet tracking post-processing, trip analysis, mileage calculation, delivery verification' and gives minimum point requirements, but does not explicitly compare to sibling tools or state when not to use. Usage context is implied rather than directly contrasted with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matrixA
Calculate travel times and distances between multiple origins and destinations in a single request.
Returns: { sources: [{lat,lon}], targets: [{lat,lon}], durations: [[sec,...]], distances: [[km,...]] } durations[i][j] = travel time in seconds from origin i to destination j. distances[i][j] = distance in km from origin i to destination j.
PERFORMANCE: Always prefer matrix over calling route in a loop. One matrix call replaces N×M individual route calls. LIMITS: Up to 50 origins × 50 destinations (2500 pairs) per call. USE FOR: Nearest-store finder, multi-stop delivery planning, logistics optimization.
| Name | Required | Description | Default |
|---|---|---|---|
| origins | Yes | Array of origin {lat, lon} objects. Max 50. | |
| destinations | Yes | Array of destination {lat, lon} objects. Max 50. | |
| mode | No | Travel mode. Default: auto. | |
| units | No | Distance units. Default: km. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the return format (sources, targets, durations, distances), explains the matrix indexing, and specifies limits and performance benefits. However, it does not explicitly state whether the operation is read-only or if any side effects occur, which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a clear opening statement, followed by output format, performance advice, limits, and use cases. Every sentence is informative without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, no output schema), the description provides a complete picture: how to call it, what the output looks like, how to interpret indices, and why to prefer it over alternatives. No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and parameters are well-documented in the schema. The description adds value by explaining how to interpret the output arrays (durations[i][j] = travel time from origin i to destination j) and emphasizes defaults (auto, km). This enhances the agent's understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Calculate travel times and distances between multiple origins and destinations in a single request.' It differentiates from the sibling 'route' tool by explicitly stating to prefer matrix over calling route in a loop, establishing its unique purpose for multi-pair computations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'Always prefer matrix over calling route in a loop' and 'One matrix call replaces N×M individual route calls.' It also lists specific use cases (nearest-store finder, multi-stop delivery planning) and limits (50x50), enabling clear decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nearest_roadA
Find the nearest point on the road network to a given coordinate.
Returns: { lat, lon, distance_m (distance from input to snapped point), road_name }.
WHEN TO USE: Snap waypoints to routable roads before calling route. Also call this if route returns "no route found" — the waypoint may be in a park, building, or off-road area. RECOVERY: If route fails, call nearest_road on origin and destination, then retry route with snapped coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude. Range: -90 to 90. | |
| lon | Yes | Longitude. Range: -180 to 180. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It transparently describes the output fields (lat, lon, distance_m, road_name) and the snapping behavior. It could mention error cases but overall is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loads the purpose, then provides output format and usage guidelines. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 simple parameters and no output schema, the description compensates by listing return fields and providing recovery steps. It is complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds context by explaining that the lat/lon are used as an input coordinate to snap to the nearest road, which adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Find the nearest point on the road network to a given coordinate,' specifying the verb (find), resource (nearest point on road network), and input (coordinate). It distinguishes from siblings like geocode and route.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides 'WHEN TO USE' and 'RECOVERY' guidance, stating to snap waypoints before route and to use if route fails. This offers clear context and alternative usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
normalize_addressA
Normalize and standardize a messy or inconsistently formatted address string.
Returns: { formatted_address, street, housenumber, city, postcode, country, country_code, lat, lon }.
WHEN TO USE: When cleaning user-submitted data, deduplicating a CRM, or standardizing addresses before batch processing. Also geocodes the address as a side-effect (lat/lon included).
DO NOT USE: If you just need coordinates — use geocode instead. normalize_address is for data quality, not navigation.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Raw address string to normalize. Can be incomplete, abbreviated, or poorly formatted. | |
| countries | No | ISO country codes to bias normalization. Strongly recommended for ambiguous inputs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses a key side-effect: geocoding returns lat/lon. However, it does not mention any potential destructive actions, authorization needs, rate limits, or data persistence. Still, the main behavioral impact is well communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, using three short paragraphs: purpose and return format, when to use, and when not to use. Every sentence adds value with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description covers the essential: purpose, return fields, usage guidance, and side-effect. It could mention limitations (e.g., supported address formats) but is still quite complete for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described (q with examples, countries with purpose). The description adds no additional semantic context for the parameters beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it normalizes and standardizes messy address strings, and explicitly distinguishes from geocode by stating 'DO NOT USE if you just need coordinates'. The verb 'normalize' is specific and the resource is address data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'WHEN TO USE' scenarios (cleaning data, deduplicating CRM, standardizing for batch) and a clear 'DO NOT USE' alternative (geocode for coordinates). Also notes that geocoding is a side-effect, guiding appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
places_searchA
Find points of interest, businesses, and landmarks near a geographic coordinate.
Returns: array of { name, lat, lon, categories: [string], address, distance_m }.
QUERY: Use category keywords (restaurant, pharmacy, hospital, supermarket, ATM, petrol station, parking) or specific names ("Starbucks", "IKEA"). RADIUS: Default 1000m (1km). Increase for rural areas, decrease for dense urban. Max ~50000m. RESULT ORDER: Sorted by distance from the search center, nearest first.
USE FOR: "Find nearest X", store locators, POI search, route stop suggestions. DO NOT USE: For address lookups — use geocode instead. For administrative boundaries — use point_in_polygon.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Category or name to search for. | |
| lat | Yes | Search center latitude. Range: -90 to 90. | |
| lon | Yes | Search center longitude. Range: -180 to 180. | |
| radius | No | Search radius in metres. Default: 1000. Increase for rural areas. Max ~50000. | |
| limit | No | Max results to return. Default 10, max 20. | |
| countries | No | Optional ISO country codes to restrict search. Example: "DE,AT". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses return format, default/max radius, result ordering, and query hints. Lacks mention of authentication or rate limits but is transparent enough for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (QUERY, RADIUS, RESULT ORDER, USE FOR, DO NOT USE). Every sentence is informative with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters and no output schema, the description covers all key aspects: purpose, parameters, expected output format, and usage boundaries. Examples further enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description adds value beyond the schema: default radius with usage context (rural vs urban), max radius, query examples, and country format example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Find points of interest, businesses, and landmarks near a geographic coordinate.' It specifies the return format and distinguishes from siblings like geocode and point_in_polygon in the DO NOT USE section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance: 'USE FOR' lists common tasks, 'DO NOT USE' gives alternatives (geocode, point_in_polygon). Also provides tips for query and radius adjustments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
point_in_polygonA
Get the full administrative hierarchy for a geographic coordinate.
Returns: { country, country_code (ISO 3166-1 alpha-2), region (state/province), county, city, suburb, neighbourhood }. Not all levels are present for every location — rural coordinates may return only country and region.
USE FOR: Territory assignment, tax region detection, locale/language inference, delivery zone validation, "what country is this coordinate in?". DO NOT USE: For reverse geocoding a street address — use reverse_geocode instead.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude. Range: -90 to 90. | |
| lon | Yes | Longitude. Range: -180 to 180. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the return structure (object with fields like country, region) and notes that not all levels are present, adding value beyond the schema. However, it does not explicitly state this is a read-only operation, though it's implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and concise: a clear first sentence, a list of return fields, notes on variability, and grouped use cases. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema, no annotations), the description fully covers purpose, return format, usage scenarios, and exclusions, making it complete for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with lat/lon ranges fully documented. The description does not add new parameter-level semantics beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the full administrative hierarchy for a geographic coordinate,' which is a specific verb+resource. It explicitly distinguishes from the sibling tool reverse_geocode by advising against using it for street addresses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'USE FOR' and 'DO NOT USE' sections, listing concrete scenarios like territory assignment and tax region detection, and directing users to reverse_geocode for street addresses.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reverse_geocodeA
Convert geographic coordinates (lat/lon) into a human-readable address.
Returns: formatted_address, street, housenumber, city, postcode, country, country_code.
WHEN TO USE: When you have coordinates and need a readable address (e.g. from GPS, user map click, or API response). DO NOT USE: When you already have a formatted_address — no need to reverse geocode it.
GRANULARITY: Use the layers parameter to control detail level. "address" returns street-level. "locality" returns city/suburb. "street" returns road name without housenumber.
NOTE: Results may be approximate for remote areas with sparse address data.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude. Range: -90 to 90. | |
| lon | Yes | Longitude. Range: -180 to 180. | |
| limit | No | Max results. Default 1, max 10. | |
| layers | No | Filter by granularity. Options: address (street-level), venue (named place), street (road only), locality (neighbourhood/suburb/city). Default: address. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that results may be approximate for remote areas. This adds valuable behavioral context beyond the schema. However, it does not mention other traits like rate limits or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, then lists returns, usage guidelines, granularity, and a note. Every sentence is necessary and well-organized, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (4 parameters, 2 required, no output schema), the description covers return fields, use cases, and granularity options. It is complete enough for an agent to understand when and how to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters, so the baseline is 3. The description adds value by explaining the layers parameter's granularity (address, locality, street) and listing the return fields (formatted_address, street, housenumber, etc.), which are not in the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Convert geographic coordinates (lat/lon) into a human-readable address' with a specific verb and resource. It also lists the return fields. However, it does not explicitly distinguish from sibling tools like geocode or batch_reverse_geocode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit WHEN TO USE and DO NOT USE sections, providing clear context for when this tool is appropriate (when you have coordinates) and when to avoid it (when you already have a formatted_address). It also advises on granularity options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
routeA
Get turn-by-turn directions between two or more waypoints.
Returns: { distance_km, duration_sec, legs: [{ steps: [{ instruction, distance_km, duration_sec }] }], geometry (GeoJSON LineString) }.
WAYPOINT ORDER: First element = origin, last = destination. Intermediate elements are via-points in order. TRAVEL MODES: auto (car), truck (HGV — applies weight/height/hazmat restrictions), bicycle, pedestrian, motor_scooter. ETA: duration_sec is road-network travel time under normal conditions. Does not account for live traffic. MULTI-STOP: Add intermediate waypoints for optimized stop sequences.
| Name | Required | Description | Default |
|---|---|---|---|
| waypoints | Yes | Array of {lat, lon} waypoints. First = origin, last = destination. Min 2, max 50. | |
| mode | No | Travel mode. Default: auto (car). Use truck for commercial vehicles with size/weight restrictions. | |
| units | No | Distance units for the response. Default: km. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description fully discloses the return format (distance_km, duration_sec, legs, steps, geometry), explains that duration_sec is under normal conditions without live traffic, and clarifies waypoint order and travel mode effects (e.g., truck restrictions).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a single sentence for purpose, structured return format, and bullet-point notes for key aspects like waypoint order and travel modes. Every sentence provides essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (routing with waypoints, modes, units), the description covers critical behavioral aspects (order, modes, ETA, multi-stop). Missing details like optimization criteria (time vs. distance) and lack of output schema slightly reduce completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions, so baseline is 3. The description adds value by reinforcing waypoint order, explaining travel mode enum semantics (e.g., truck applies restrictions), and noting multi-stop optimization, earning a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get turn-by-turn directions between two or more waypoints,' specifying a unique verb and resource. It distinguishes the tool from siblings like 'matrix' and 'isochrone' by focusing on detailed route generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: waypoint ordering, travel modes, and ETA limitations (no live traffic). However, it does not explicitly state when not to use this tool (e.g., for simple distance queries where 'matrix' might be better), leaving room for improvement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timezoneA
Get the IANA timezone for a geographic coordinate.
Returns: { timezone (IANA name), utc_offset_hours, utc_offset_seconds, dst_active }.
Examples of IANA timezone names: "Europe/Paris", "America/New_York", "Asia/Kolkata".
WHEN TO USE: Scheduling delivery ETAs, converting server timestamps to local time, detecting user timezone from coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude. Range: -90 to 90. | |
| lon | Yes | Longitude. Range: -180 to 180. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It does not disclose any behavioral traits such as data source, accuracy, error handling, or rate limits. Only return format is mentioned, which is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise: three sentences covering purpose, return format, examples, and usage context. No redundant information; each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two params, the description explains return fields and gives usage examples. Could mention error handling, but schema already constrains ranges. Fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions including ranges. Description does not add new semantic meaning beyond what schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get the IANA timezone for a geographic coordinate' with a specific verb and resource. It also lists the return fields and provides examples of IANA names, distinguishing it from sibling geospatial tools like geocode or elevation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides use cases in 'WHEN TO USE' section (scheduling ETAs, time conversion, detecting timezone). No explicit 'when not to use' but given sibling tools are different, it's clear this is for timezone lookup only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
18 tool updates
v1.0.0- First observed
autocomplete - First observed
batch_geocode - First observed
batch_reverse_geocode - First observed
elevation - First observed
geocode - First observed
get_static_map_url - First observed
get_tile_style_url - First observed
h3_index - First observed
isochrone - First observed
map_match - First observed
matrix - First observed
nearest_road - First observed
normalize_address - First observed
places_search - First observed
point_in_polygon - First observed
reverse_geocode - First observed
route - First observed
timezone
TDQS
Each tool has a clearly distinct purpose: autocomplete for UI, geocode for forward, reverse_geocode for reverse, batch variants for bulk, elevation, static/tile URLs, H3 indexing, isochrone, map matching, matrix, nearest road, normalization, places search, point-in-polygon, routing, and timezone. Even geocode and normalize_address differ in goal (coordinates vs. data quality). No overlap.
Most tools follow verb_noun or noun patterns (e.g., batch_geocode, get_static_map_url, reverse_geocode, timezone). A few are single words (elevation, route, matrix), which is acceptable. No mixing of camelCase or snake_case (all lower_snake). Minor inconsistency but still predictable.
18 tools is slightly above the typical 3-15 range but justified by the broad geospatial domain. Each tool covers a distinct operation (forward/reverse/bulk geocoding, routing, matrix, isochrone, map matching, etc.). No redundant or trivial tools.
The tool set covers the full lifecycle of geospatial operations: geocoding (forward, reverse, batch), routing (with multiple travel modes), matrix calculations, isochrones, map matching, place search, elevation, H3 indexing, point-in-polygon, timezone, tile/static map generation, and address normalization. No obvious gaps; it handles both common and advanced use cases.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Maps built for agents: routing incl. truck/ADR, geocoding, matrices, isochrones — 34 tools.
Address validation & geocoding for AI agents: 240+ countries, UK PAF, free US/CA enrichment
Geospatial intelligence with Mapbox APIs like geocoding, POI search, directions, isochrones, etc.
GIS tools for AI agents: 65 free tools + 8 paid (hazard/site-scouting/GeoJSON export)
Related MCP Servers
AlicenseAqualityCmaintenanceLocation & routing intelligence for AI agents — geocoding, truck routing, traffic, weather, and place search.3019681MIT
Mapbox MCP Serverofficial
AlicenseAqualityAmaintenanceProvides geospatial intelligence to AI agents through Mapbox APIs, enabling geocoding, routing, POI search, map images, and offline spatial calculations.281,375353MIT- AlicenseNot gradedqualityCmaintenanceFree geospatial MCP server for AI agents, providing geocoding, reverse geocoding, POI search, and route planning using OpenStreetMap data via Nominatim, Overpass, and OSRM.1GPL 3.0

Magic Lane MCP Serverofficial
AlicenseBqualityBmaintenanceEnables AI agents to become geospatially intelligent assistants with tools for location search, smart routing, round trip planning, reverse geocoding, isochrone analysis, route visualization, geofence management, and interactive map display.8297Apache 2.0
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/algolayertechnologies/mapsi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server