Skip to main content
Glama

locate

Read-onlyIdempotent

Snap one coordinate to the road network and return the matched road's context: name, road class, speed limit, bearing, snap distance, side of street, truck legality, and toll/ferry/highway/bridge/tunnel flags — plus the IANA timezone. Use to answer 'what road is this point on and what are its rules?' for fleet/telematics snapping, geofence edge checks, or enriching a GPS fix. Set include_elevation for terrain-sourced point elevation_m; grade_pct is a forward-compatible field that stays null for now. Read road_status, not matched alone: matched — a road was found and road is filled; no_road_nearby — a real answer: no routable road is near the point for this travel profile; unavailable — the road lookup could not be answered right now, so matched:false / road:null say nothing about the point, retryable is true, and the timezone and any requested elevation are still looked up separately (see timezone_status and warnings). Never a guess.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
latYesLatitude
lonYesLongitude
unitsNoUnit system for the human summary — auto-detected (US/UK → imperial) when omitted.
costingNoTravel profile scoping edge access/legality. Default 'auto'.
include_elevationNoOpt-in to point elevation — populates elevation_m/elevation_ft from terrain data (null with an 'elevation_unavailable' warning only where terrain isn't covered). grade_pct is a forward-compatible field that stays null for now (reserved for an elevation-enhanced road network).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
metaNo
roadNo
itemsNo
geojsonNo
matchedNo
metricsNo
summaryNo
locationNo
timezoneNoIANA timezone for the point, or null unless timezone_status is resolved. Contains information from timezone-boundary-builder, which is made available under the Open Database License (ODbL) v1.0. Timezone boundaries © OpenStreetMap contributors. US legal-zone cross-check: U.S. Department of Transportation, Bureau of Transportation Statistics (public domain).
warningsNo
grade_pctNo
retryableNoPresent and true only when `road_status` is `unavailable`: the same call may succeed shortly.
elevation_mNo
road_statusNoWhy `road` is what it is. `matched`: a routable road was found. `no_road_nearby`: the lookup answered and found no routable road near the point for this travel profile. `unavailable`: the road lookup could not be answered right now; this says nothing about the point, `retryable` is true, and the timezone and any requested elevation are still looked up separately.
display_hintNo
elevation_ftNo
timezone_statusNo
timezone_artifact_versionNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedOutput schema / properties / meta / additionalProperties
      Previous value: -{}New value: +true
    • addedOutput schema / properties / meta / properties
      Added value: +{
      +  "degraded": {
      +    "description": "Present and true only when `road_status` is `unavailable`: the road part of the answer is missing; the rest is real.",
      +    "type": "boolean"
      +  }
      +}
    • addedOutput schema / properties / retryable
      Added value: +{
      +  "description": "Present and true only when `road_status` is `unavailable`: the same call may succeed shortly.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / road_status
      Added value: +{
      +  "description": "Why `road` is what it is. `matched`: a routable road was found. `no_road_nearby`: the lookup answered and found no routable road near the point for this travel profile. `unavailable`: the road lookup could not be answered right now; this says nothing about the point, `retryable` is true, and the timezone and any requested elevation are still looked up separately.",
      +  "enum": [
      +    "matched",
      +    "no_road_nearby",
      +    "unavailable"
      +  ],
      +  "type": "string"
      +}
  2. Changed3 schema fields changed
    • addedOutput schema / properties / timezone / description
      Added value: +"IANA timezone for the point, or null unless timezone_status is resolved. Contains information from timezone-boundary-builder, which is made available under the Open Database License (ODbL) v1.0. Timezone boundaries © OpenStreetMap contributors. US legal-zone cross-check: U.S. Department of Transportation, Bureau of Transportation Statistics (public domain)."
    • addedOutput schema / properties / timezone_artifact_version
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / timezone_status
      Added value: +{
      +  "enum": [
      +    "resolved",
      +    "boundary_ambiguous",
      +    "source_conflict",
      +    "not_covered",
      +    "unavailable"
      +  ],
      +  "type": "string"
      +}
  3. Added

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/open-world, yet the description adds substantial behavior: the three-valued road_status contract, the warning that 'unavailable' makes matched:false meaningless about the point, that retryable is set, and that timezone/elevation are still looked up independently. This is exactly the beyond-annotations context the bar is meant to reward.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, then usage, then a well-structured status-contract paragraph. It is long and mildly redundant, restating the elevation/grade_pct caveat that the schema already carries, but nearly every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not enumerate return values, yet it fully explains the road_status state machine, the nullability caveats, and retry semantics — the precise gaps an agent would otherwise misread. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so lat/lon/units/costing/include_elevation are already documented; baseline 3 applies. The description re-explains include_elevation and the forward-compatible grade_pct but adds no new syntax or constraints (units auto-detection and costing profiles live only in the schema).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: 'Snap one coordinate to the road network and return the matched road's context.' Enumerates the returned fields (name, road class, speed limit, bearing, side of street, truck legality, flags, timezone), which separates it cleanly from siblings like map_match, reverse_geocode, and trace_attributes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit use contexts — fleet/telematics snapping, geofence edge checks, enriching a GPS fix — and frames the question it answers. However, it never names an alternative sibling (e.g., reverse_geocode or map_match) or states when-not to use it, so routing between near-neighbors is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources