Skip to main content
Glama

Mapsource OpenStreetMap & Geospatial APIs

Server Details

OpenStreetMap queries, maps/styles, search, routing, terrain, analysis, pipelines, and rendering.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
98.9% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.5/5.0

Scored across 13 tools

Disambiguation2/5

geo_data aggregates service status, basemap catalog, and elevation, duplicating service_status, basemap_catalog, and elevation. geo_search's discover overlaps with find_features, and geo_navigate contains route and isochrone operations that duplicate standalone route and isochrone tools.

Naming Consistency2/5

Names mix verb phrases (find_features, overpass_query), nouns (elevation, isochrone, route), and a geo_ prefix applied inconsistently (geo_data, geo_search, geo_style, but not basemap_catalog or service_status). No clear verb_noun or resource-based pattern emerges.

Tool Count4/5

13 tools is within a reasonable range for a geospatial API, but some tools are redundant given geo_data consolidates several others. Consolidation could reduce the count without losing functionality.

Completeness4/5

The API covers search, geocoding, routing, isochrones, elevation, geometry analysis, rendering, styles, and Overpass queries. Minor gaps exist, such as no direct tile-fetch tool, but core geospatial workflows are supported without dead ends.

Available Tools

13 tools
basemap_catalogA
Read-only
Inspect

List raster and vector tile templates, source zoom ranges, dataset snapshots, and attribution. The catalog is public; tile requests require a subscription key.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely new context beyond that: the catalog itself is public while tile requests require a subscription key, which is an auth/access behavior an agent cannot infer from the annotations or empty schema.

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

Conciseness5/5

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

Two sentences, zero waste, and the enumeration of return contents is front-loaded ahead of the access caveat. Nothing could be cut without losing information.

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

Completeness4/5

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

With no params and no output schema, the description carries the burden of conveying what comes back, which it does by listing the catalog's fields. It could add a note on catalog stability, scope, or pagination, but for a zero-parameter read tool it is largely complete.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. Nothing in the schema needs compensating for, and the description correctly offers no parameter discussion.

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

Purpose4/5

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

The description pairs the verb 'List' with a specific resource and enumerates the catalog's contents (raster/vector tile templates, zoom ranges, dataset snapshots, attribution), making the purpose unambiguous. It does not explicitly contrast itself with siblings like geo_style or geo_render, so it stops short of a 5.

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

Usage Guidelines3/5

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

The line 'The catalog is public; tile requests require a subscription key' gives a useful access condition, but it is an auth note rather than when-to-use-this-vs-alternatives guidance. No sibling tool is named and no exclusion condition is stated, so usage is only weakly implied.

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

elevationA
Read-only
Inspect

Sample terrain at lat/lon. elevationMeters is clamped to zero; sampledMeters retains the raw model elevation. belowSeaLevel identifies negative samples and bathymetryTile references the source raster. Requires a subscription key. Not survey-grade.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude in decimal degrees.
lonYesLongitude in decimal degrees.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover the read-only/non-destructive profile, so credit goes to the added context: it discloses a subscription-key auth requirement, an accuracy caveat ("not survey-grade"), and semantics for returned fields (clamped vs raw elevation, bathymetry source). These are meaningful behavioral traits not present in the annotations or schema.

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?

The purpose is front-loaded, followed by output-field semantics and then caveats. It is dense but each sentence carries information; the field-list sentence is slightly terse and would read better as structured output documentation, but nothing is wasted.

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

Completeness4/5

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

With no output schema, the description appropriately explains the return fields, auth requirement, and accuracy limitation, which is nearly complete for a simple 2-parameter sampler. Only the lack of usage context keeps it from being fully complete.

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%, with both lat and lon fully documented including bounds, so the schema carries this dimension. The description references lat/lon only in passing and adds no format or usage detail beyond the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

"Sample terrain at lat/lon" gives a specific verb (sample) and resource (terrain) with the required inputs, which is easy to distinguish from sibling tools like route, isochrone, or geo_analyze. However, it never explicitly contrasts itself against any sibling, so an agent must infer the boundary.

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

Usage Guidelines2/5

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

The description states what the tool does but gives no guidance on when to use it versus alternatives, and no exclusions or prerequisites beyond the auth note. The agent gets no routing help.

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

find_featuresAInspect

Find cafes, restaurants, buildings, parks, schools, hospitals, transit stops, drinking water, or trails within a bounding box up to 0.5 degrees per axis. Returns OSM geometry and tags, subject to the output limit. Requires a subscription key or authorized x402 payment.

ParametersJSON Schema
NameRequiredDescriptionDefault
eastYes
westYes
limitNoMaximum returned OSM objects, not a pagination guarantee.
northYes
southYes
categoryYesMapped feature category; use overpass_query for arbitrary OSM tags.
responseModeNocompact: inline when small, a result handle when large. handle: always a handle. raw: always the full body, however large.compact

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does reasonably well: it discloses the 0.5-degree-per-axis bbox cap, that results are OSM geometry and tags, that output is subject to a limit, and that a subscription key or x402 payment is required. It omits rate limits and explicit read-only framing, but auth and constraint disclosure are solid.

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?

Three sentences, front-loaded with the resource categories and scope, then return content, then prerequisites. The long category enumeration is slightly list-heavy but every sentence carries information.

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

Completeness4/5

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

With no output schema and no annotations, the description covers return content, scope limits, and auth requirements. It is close to complete for a read-style search tool; missing only finer points like failure behavior and rate limits.

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 coverage is only 43%; south/west/north/east are undocumented (though self-evident), while category, limit, and responseMode are described in the schema. The description adds genuinely useful meaning beyond the schema by stating the real 0.5-degree bbox cap, which is stricter than the schema's ±180/±85 bounds.

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

Purpose4/5

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

States a specific verb ('Find') and enumerates the exact resource categories, plus the geographic scope (bounding box). An agent can tell this is a bounded POI/feature search. It does not explicitly differentiate itself from siblings like geo_search or geo_data, though the schema's category note points to overpass_query.

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

Usage Guidelines3/5

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

Implies usage via the category list and the bbox constraint, and states the auth prerequisite, but never says when to choose this over alternatives. The only alternative-routing hint ('use overpass_query for arbitrary OSM tags') lives in the schema, not the description.

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

geo_analyzeA
Read-only
Inspect

Measure or transform geometry using buffer, centroid, bbox, area, length, distance, intersect, union, difference, contains, intersects, nearest, simplify, or convex. Inputs accept GeoJSON, coordinate pairs, Overpass results, and result handles. Polygon overlay operations require areas. Use operation pipeline for up to 12 ordered steps and estimateOnly for cost estimation. Requires a subscription key.

ParametersJSON Schema
NameRequiredDescriptionDefault
aNoGeoJSON, a [lon, lat] pair, an Overpass result, a places result, or a result handle such as rh_ followed by 32 hex characters. Required for every operation except pipeline.
bNoThe second operand, in the same forms as a.
unitsNometers
returnsNopipeline only: which step to return, as $stepId. Defaults to the last.
distanceNoBuffer radius or simplify tolerance.
pipelineNopipeline only: ordered steps. Any argument may be $anEarlierStepId.
operationYesbuffer and simplify take distance. distance, intersect, union, difference, contains, intersects and nearest take a second geometry in b. pipeline runs several steps server-side and takes pipeline instead of a.
estimateOnlyNopipeline: calculate estimated cost without execution.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description is consistent with that (compute/transform, no persistence claims). Beyond the annotations it adds real context: the subscription-key auth requirement, the 12-step pipeline cap, the estimateOnly cost-estimation mode, and the constraint that overlay ops need polygon areas. It does not disclose rate limits or what a successful response contains.

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?

Dense but front-loaded: the operation enumeration and accepted input forms lead, followed by the pipeline/estimateOnly note and the auth prerequisite. Nearly every clause carries information, though the long operation list partially duplicates the enum in the schema.

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

Completeness3/5

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

For a complex 8-parameter tool with a nested pipeline and no output schema, the description covers inputs, the pipeline cap, and auth but says nothing about what comes back (result handles, geometry payloads, units of numeric results) or failure behavior. The mention of 'result handle such as rh_...' in the schema hints outputs are handles, but the description never closes that loop.

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 coverage is 88%, so the schema already documents a, b, distance, units, pipeline, returns, and estimateOnly, including which operations take b vs. distance. The description mostly restates this (operation list, input forms, 'polygon overlay operations require areas'), adding only marginal meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb pair ('measure or transform') plus the resource ('geometry') and enumerates all 15 operations, so an agent can tell this is a geometry-computation tool rather than a search or routing tool. It never names a sibling to route away from, so differentiation from geo_search/find_features/route is only implicit.

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

Usage Guidelines3/5

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

Gives conditional guidance for the pipeline path ('Use operation pipeline for up to 12 ordered steps and estimateOnly for cost estimation') and a prerequisite ('Polygon overlay operations require areas', 'Requires a subscription key'). It does not say when to prefer this tool over siblings such as geo_search, find_features, or route for spatial questions, so usage is only partially implied.

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

geo_dataA
Read-only
Inspect

Read service status, basemap catalog, point elevation, contours, usage, and metrics. Status includes subsystem availability and replication lag. Elevation returns surface and raw model heights. Metrics report request rates, success rates, latency percentiles, and dataset ages. Status and basemaps are public; other operations require a subscription key.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNoelevation and contours: latitude.
lonNoelevation and contours: longitude.
zoomNocontours only: detail level, 6 to 13. Defaults to 9.
bandsNocontours only: how many elevation bands, 4 to 24. Defaults to 14.
windowNometrics only: minutes to measure over. Defaults to 60.
operationYesstatus: service state and dataset freshness. basemaps: tile catalogue. elevation: ground height at a point. contours: banded topographic contours. usage: this key's consumption. metrics: request rates, latency percentiles and how old each dataset is.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds substantial context beyond that: status reports subsystem availability and replication lag, elevation returns surface and raw model heights, metrics report rates/latencies/dataset ages, and the public-vs-subscription-key auth requirement is disclosed. This is genuinely useful behavioral detail not available in the structured fields.

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?

Four sentences, front-loaded with the operation list followed by per-operation output detail and the auth constraint. Each sentence carries information, though the output-detail sentence could be trimmed and the structure does not group constraints as cleanly as it could.

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

Completeness4/5

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

With no output schema, the description does describe what several operations return (subsystem availability, replication lag, surface/raw model heights, request rates, latency percentiles, dataset ages) and covers the auth requirement, which is enough for a dispatcher tool. The notable gap is sibling differentiation against basemap_catalog/elevation/service_status, plus no disclosure of defaulting behavior for zoom/bands/window (left to the schema).

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%, and every parameter (lat, lon, zoom, bands, window, operation) is already documented with type bounds and per-operation applicability in the schema. The description reinforces operation-level semantics but adds no new parameter detail, so the baseline 3 for high coverage is appropriate.

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

Purpose4/5

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

The description uses a concrete verb (Read) and enumerates the six resources it covers (service status, basemap catalog, point elevation, contours, usage, metrics), giving a clear picture of the tool's scope. However, it draws no distinction from siblings like basemap_catalog, elevation, and service_status, which appear to overlap heavily with the 'basemaps', 'elevation', and 'status' operations, leaving the agent unable to tell which tool owns that functionality.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no statement of when a sibling should be preferred, and no conditions selecting among the six operations beyond the auth note. The auth sentence ('Status and basemaps are public; other operations require a subscription key') is a prerequisite but not routing guidance.

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

geo_navigateA
Read-only
Inspect

Navigation operations: route, matrix, isochrone, map_match, snap, and optimize. Route accepts 2–10 waypoints and optional elevation profiles. Matrix supports up to 625 pairs. Map matching accepts up to 1,000 trace points; optimization accepts 3–20 stops. Results include geometry or travel costs and source metadata. Requires a subscription key. Unroutable requests return an error and require revised inputs.

ParametersJSON Schema
NameRequiredDescriptionDefault
costingNoTravel mode used to weight the road graph.auto
sourcesNomatrix only: the origins.
targetsNomatrix only: the destinations. Omit for a square matrix of sources against themselves.
contoursNoisochrone only: travel-time bands in minutes.
elevationNoroute only: also return a sampled terrain profile with total gain and loss.
locationsNoWaypoints for route and optimize, points for snap, or the ordered trace for map_match. For isochrone, the single origin.
operationYesroute: turn-by-turn between waypoints. matrix: many-to-many times and distances. isochrone: reachable-area polygons. map_match: fit a GPS trace to the road network. snap: nearest network point. optimize: best visit order.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish the safe read-only profile (readOnlyHint=true, destructiveHint=false). The description adds meaningful context beyond that: it discloses the subscription-key auth requirement, describes what results contain (geometry or travel costs plus source metadata), and states that unroutable requests fail with an error requiring revised inputs. This is useful operational disclosure the annotations do not carry.

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 operation list, then capacity limits, then auth and error behavior in three compact sentences. Every clause carries information and nothing is padded, though the dense run-on listing without formatting slightly reduces scannability.

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

Completeness4/5

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

For a six-operation tool with no output schema, the description covers operation inventory, per-operation size limits, auth, error handling, and a summary of return content. The main remaining gap is the unresolved overlap with the sibling `route` and `isochrone` tools, which an agent must be told how to disambiguate.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description genuinely adds constraints absent from the schema: the 2-10 route waypoint range, the 3-20 optimize stop range, the 625-pair matrix cap, and the 1,000-point map_match trace limit. It also clarifies that elevation is optional for route, tying the boolean parameter to a concrete behavior.

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

Purpose4/5

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

The description opens with a specific resource and enumerates all six operations (route, matrix, isochrone, map_match, snap, optimize), so an agent knows exactly what capability is behind the name. However, it never differentiates from the sibling tools `route`, `isochrone`, and `elevation`, whose names overlap directly with operations and parameters this tool exposes, leaving genuine ambiguity about which tool to pick.

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

Usage Guidelines3/5

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

Per-operation constraints (2-10 waypoints, 625 pairs, 1,000 trace points, 3-20 stops) implicitly guide which operation suits a given workload, and the schema supplies per-operation parameter notes. But there is no explicit when-to-use-this-vs-`route`/`isochrone` guidance and no stated exclusions, so selection against siblings 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.

geo_renderA
Read-only
Inspect

Render a static PNG map from a center and zoom or bounding box. Supports GeoJSON overlays, result handles, and up to 50 labeled markers. Dark and light styles use raster rendering; other preset or profile names use vector rendering. Requires a subscription key.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
bboxNo[west, south, east, north]. Fits the viewport to this instead of using lat/lon/zoom.
zoomNo
pitchNoVector renders only.
styleNodark or light composites the raster basemaps. Any other value names a style preset or one of your saved basemap profiles and is rendered as vector against that compiled style.dark
widthNo
heightNo
bearingNoVector renders only.
geojsonNoGeoJSON to draw, or a result handle such as rh_ followed by 32 hex characters.
markersNo
styleRevisionNoSaved profile revision to use for rendering.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely new context: the style-dependent rendering mode (dark/light = raster, any other name = vector) and the subscription-key auth requirement, both of which an agent needs to call it successfully.

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?

Four tight sentences, front-loaded with the core purpose before capabilities, rendering behavior, and the auth requirement. No filler; each sentence carries a distinct fact.

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

Completeness4/5

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

With no output schema and 12 parameters at 50% coverage, the description covers purpose, capabilities, render modes, and auth well. Minor gaps remain on default dimensions and how overlays interact with the center/bbox inputs, but nothing essential to invoking 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 50%, and much of what the description says about parameters (GeoJSON, result handles, up to 50 markers, style modes) is already present in the schema. It adds little syntax or format detail for the undocumented parameters (width, height, lat/lon, zoom), so baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ('Render a static PNG map') plus the two input modes (center/zoom or bounding box), so the agent knows exactly what it produces. It is clearly distinct from siblings like geo_analyze or route, but it never names or contrasts an alternative explicitly, keeping it short of a 5.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: the description explains the raster-vs-vector rendering rule and the subscription-key prerequisite, which helps an agent know when the tool behaves differently. However, there is no explicit when-to-use vs when-to-pick-another-sibling guidance, so it lands at minimum-viable.

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

geo_styleAInspect

Configure semantic basemap styles. Operations: explain and schema retrieve public definitions; intent generates a proposal; preview compiles changes; save, list, revisions, diff, and delete manage profiles. Submit semantic manifests or preset patches, not raw MapLibre JSON. Authenticated operations affect the current key's profiles.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNodiff only: the later revision. Defaults to the current one.
baseNoBase preset for the patch. Available presets are listed at /api/styles.dark
fromNodiff only: the earlier revision. Defaults to the one before `to`.
nameNosave only: a human name for the profile.
saveNointent only: also save the proposal as a profile revision on this key.
slugNosave and delete: the profile's stable URL id. Defaults to a slug of the name on save.
patchNoSemantic overrides: {"tokens":{...},"typography":{...},"layers":{"roads.motorway":{"color":"#f2a900"}}}. Layer keys come from the explain operation.
intentNointent: text description of the desired basemap. Returns an editable manifest and a summary of applied changes.
operationNoexplain: layer definitions. schema: manifest JSON Schema. intent: generate a style proposal. preview: compile without saving. save: store a profile. list: available presets and profiles. revisions: saved versions. diff: revision comparison. delete: remove a profile.preview
descriptionNosave: profile description.
includeStyleNoInclude the compiled MapLibre style in addition to the hash, diff, and validation issues. Defaults to false.

TDQS

A3.9/5.0
Behavior4/5

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

Beyond the annotations, the description discloses the auth scope ('Authenticated operations affect the current key's profiles'), that preview does not persist, that delete removes a profile, and the accepted input format versus raw MapLibre JSON. Note the tension with destructiveHint=false, which sits awkwardly next to a delete operation, though the description itself is explicit rather than misleading.

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?

Purpose is front-loaded in the first sentence, followed by operations, an input constraint, and an auth caveat — a logical order with no filler. It loses a point because the operation list largely restates the schema's enum descriptions verbatim, which is redundant for an agent that can read the schema.

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

Completeness4/5

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

For an 11-parameter, multi-mode tool with nested patch objects and no output schema, the description covers the operational model, the auth scoping, and the payload format expectation. It stops short of describing return payloads for the read-style operations (explain, schema, list, diff), which an agent would have to infer.

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% across 11 parameters, so the schema already carries per-parameter meaning and the operation-to-parameter mapping. The description reinforces the input-format expectation for the patch/manifest payload but adds no new syntax or per-parameter semantics, so baseline 3 applies.

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

Purpose4/5

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

The opening sentence gives a specific verb and resource ('Configure semantic basemap styles'), and the operation enumeration (explain, schema, intent, preview, save, list, revisions, diff, delete) makes the tool's scope unmistakable against catalogue/render siblings. However, it never names or contrasts a sibling tool, so differentiation is implied by scope rather than stated.

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?

Each operation is annotated with its purpose (e.g., 'preview: compile without saving', 'intent: generate a style proposal'), which tells the agent which mode fits a given goal. It also gives a concrete input constraint ('Submit semantic manifests or preset patches, not raw MapLibre JSON'), but provides no explicit when-not-to-use guidance or routing to alternatives like basemap_catalog.

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

isochroneA
Read-only
Inspect

Calculate reachable-area polygons from a coordinate for up to four travel-time bands. Returns GeoJSON for catchment, coverage, and accessibility analysis. Requires a subscription key.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude of the centre point.
lonYesLongitude of the centre point.
costingNoTravel mode used to weight the road graph.auto
contoursNoTravel-time bands in minutes, at most four.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the read-only, non-destructive profile, and the description adds genuinely useful behavioral context beyond them: an auth requirement (subscription key) and the return format (GeoJSON). It omits rate limits or precision caveats, so it falls short of 5.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core purpose and progressing to output format and prerequisite. No filler or repetition.

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

Completeness4/5

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

With no output schema, the description helpfully discloses the GeoJSON return type, covers the auth precondition, and the fully-described parameters leave little else needed. Minor gaps such as error behavior or band-ordering semantics keep it from 5.

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 coverage is 100%, so lat, lon, costing, and contours are already fully documented in the schema. The description only restates the coordinate input and the four-band limit, adding no syntax or default details beyond the structured fields.

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?

States a specific verb-and-resource ('Calculate reachable-area polygons from a coordinate') plus the scope limit ('up to four travel-time bands'), which lets an agent distinguish it from the sibling route tool that returns paths rather than polygons.

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 clear use contexts ('catchment, coverage, and accessibility analysis') and a prerequisite ('Requires a subscription key'), but names no alternative tool or when-not-to-use condition.

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

overpass_queryAInspect

Execute bounded Overpass QL over OSM nodes, ways, relations, tags, geometry, areas, metadata, and spatial selectors. Historical attic queries are unsupported. Requires a subscription key or authorized x402 payment. Use service_status to retrieve the dataset timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesA complete bounded Overpass QL query, with explicit timeout and output limit.
responseModeNocompact: inline when small, a result handle when large. handle: always a handle. raw: always the full body, however large.compact

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose key traits: the query must be bounded, historical attic queries are rejected, auth is required (subscription key or x402 payment), and the dataset timestamp lives behind service_status. It omits rate limits, error semantics, and cost/credit implications of large queries.

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-loads the capability, then tacks on the exclusions, auth requirement, and cross-reference in three tight sentences with no filler. It is appropriately sized for a two-parameter tool, though slightly clipped at the end.

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

Completeness4/5

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

For a tool with no output schema and no annotations, it covers the essential call-time facts (bounded input, auth, unsupported query class, where to get dataset recency). It leaves the shape/size of the returned results only partially implied by the responseMode enum in the schema.

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 the schema already documents 'query' (bounded QL with explicit timeout and output limit) and 'responseMode' (compact/handle/raw). The description adds no syntax, format, or default details beyond that, so it meets the baseline but adds no marginal meaning.

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

Purpose4/5

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

States a specific verb (Execute) and resource (bounded Overpass QL over OSM nodes/ways/relations/tags/geometry/areas), which makes the tool's nature clear. It doesn't explicitly contrast itself with nearby siblings like find_features or geo_search, so the agent must infer when raw QL is preferable.

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?

Provides concrete usage constraints: historical attic queries are unsupported, and a subscription key or authorized x402 payment is required. It also routes the agent to service_status for the dataset timestamp, but never states when to prefer this tool over find_features/geo_search for the same task.

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

routeA
Read-only
Inspect

Calculate a turn-by-turn route between 2–10 waypoints. Supported costing: auto, bicycle, pedestrian, truck, motor_scooter, and bus. Returns GeoJSON, distance, duration, and maneuvers. Set elevation to true for a terrain profile with gain and loss. Requires a subscription key.

ParametersJSON Schema
NameRequiredDescriptionDefault
costingNoTravel mode used to weight the road graph.auto
elevationNoSample a terrain profile along the route and report total gain and loss in metres.
locationsYesOrdered waypoints, 2 to 10; first is the origin and last is the destination.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare this as a safe read (readOnlyHint=true, destructiveHint=false), and the description adds meaningful context beyond that: the subscription-key auth requirement, the returned payload fields (GeoJSON, distance, duration, maneuvers), and the side effect of elevation=true producing gain/loss. Rate limits and error behavior are not covered.

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?

Four short sentences, front-loaded with the core action and waypoint bounds, then options and the auth caveat. Efficient, though the enumerated costing list partially duplicates the schema enum.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden and does so (GeoJSON, distance, duration, maneuvers, elevation profile). The auth requirement is disclosed. Only minor gaps remain, such as behavior on invalid/duplicate waypoints.

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 the schema already documents costing, elevation, and the ordered 2–10 waypoint array. The description largely restates these (mode list, elevation gain/loss, waypoint count) without adding syntax or format details, so the baseline 3 applies.

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

Purpose4/5

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

The description gives a specific verb and resource ('Calculate a turn-by-turn route between 2–10 waypoints'), so an agent knows exactly what it produces. It does not name or distinguish itself from siblings like isochrone or geo_navigate, which also deal with routing/reachability, leaving some ambiguity in a crowded namespace.

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

Usage Guidelines2/5

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

There is no when-to-use / when-not-to-use guidance and no alternatives are named. The agent is told what modes are supported and that a subscription key is required, but it must infer the conditions under which this tool beats isochrone or geo_navigate.

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

service_statusAInspect

Read Overpass engine readiness, dataset timestamp, billing state, and x402 payment mode. Public. Use geo_data with operation status for the full subsystem report.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden but does disclose that the tool is 'Public', implying no authentication is required, and 'Read' implies a non-mutating operation. It does not state side effects, rate limits, or failure behavior, though for a zero-parameter status probe the risk surface is small.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core capability and followed by access level and the sibling alternative. No filler or redundancy.

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

Completeness4/5

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

There is no output schema, so the description usefully enumerates the return fields (readiness, dataset timestamp, billing state, payment mode), which is the key omitted structured data. A zero-parameter read tool with this field list is adequately covered, though response shape beyond the field names remains unspecified.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The listed fields add context about scope but no parameter meaning is needed.

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?

States a specific verb (Read) and enumerates the exact resources returned: Overpass engine readiness, dataset timestamp, billing state, and x402 payment mode. This is precise enough to distinguish it from the broad geo_data sibling, which it explicitly names.

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?

Names the alternative directly ('Use geo_data with operation status for the full subsystem report'), giving a clear selection condition: this tool for a quick status read, geo_data for the fuller report. No explicit when-not or prerequisite guidance, but the routing to the sibling is unambiguous.

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.

  1. 1 tool update
    • Changedgeo_search4 fields changed
      • changedInput schema / properties / bbox / description
        Previous value: -"lookup: west,south,east,north; soft focus unless bounded is true."New value: +"west,south,east,north. lookup: soft focus unless bounded is true. discover: required region boundary unless region or minutes is supplied."
      • changedInput schema / properties / category / description
        Previous value: -"nearby: feature category, such as cafe, restaurant, hospital, or park."New value: +"lookup/discover: business or POI category, such as coffee, pharmacy or restaurants. nearby: feature category, such as cafe, restaurant, hospital or park."
      • changedInput schema / properties / operation / description
        Previous value: -"resolve: name to entity ID. entity: entity lookup. search: place-name search. autocomplete: prefix search. nearby: radius search. reverse: coordinate lookup. details: OSM type and ID lookup. geocode: address lookup."New value: +"lookup: local address, business and brand suggestions with soft map-focus bias. discover: businesses in a viewport, polygon or isochrone, optionally ranked by travel time. resolve: name to entity ID. entity: entity lookup. search: populated-place names. autocomplete: populated-place prefixes. nearby: radius search. reverse: coordinate lookup. details: OSM type and ID lookup. geocode: compatibility provider; use lookup for new integrations."
      • changedInput schema / properties / q / description
        Previous value: -"search, autocomplete and geocode: the text to look up."New value: +"lookup: address/name text, 1–120 characters. discover: optional name/brand filter. search/autocomplete: populated-place name. geocode: compatibility provider query."
  2. 1 tool update
    • Changedgeo_search11 fields changed
      • addedInput schema / properties / bbox
        Added value: +{
        +  "description": "lookup: west,south,east,north; soft focus unless bounded is true.",
        +  "maxLength": 120,
        +  "type": "string"
        +}
      • addedInput schema / properties / bounded
        Added value: +{
        +  "description": "lookup: explicitly restrict results to bbox.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / costing
        Added value: +{
        +  "enum": [
        +    "auto",
        +    "bicycle",
        +    "pedestrian",
        +    "truck"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / countrycodes
        Added value: +{
        +  "description": "lookup: comma-separated two-letter country filters.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
      • addedInput schema / properties / language
        Added value: +{
        +  "description": "lookup: preferred language, default en.",
        +  "maxLength": 12,
        +  "type": "string"
        +}
      • addedInput schema / properties / minutes
        Added value: +{
        +  "description": "discover: generate an isochrone from lat/lon.",
        +  "maximum": 30,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "discover: result page offset.",
        +  "maximum": 2000,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • changedInput schema / properties / operation / enum
        Previous value: -[
        -  "search",
        -  "autocomplete",
        -  "nearby",
        -  "reverse",
        -  "details",
        -  "geocode",
        -  "resolve",
        -  "entity"
        -]New value: +[
        +  "search",
        +  "autocomplete",
        +  "nearby",
        +  "reverse",
        +  "details",
        +  "geocode",
        +  "resolve",
        +  "entity",
        +  "lookup",
        +  "discover"
        +]
      • addedInput schema / properties / rankBy
        Added value: +{
        +  "description": "discover: travel_time compares the nearest 25 candidates.",
        +  "enum": [
        +    "distance",
        +    "travel_time"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / region
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 120,
        +      "type": "string"
        +    },
        +    {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    }
        +  ],
        +  "description": "discover: polygon GeoJSON or owned result handle; alternatively supply bbox or minutes."
        +}
      • addedInput schema / properties / types
        Added value: +{
        +  "description": "lookup: comma-separated address,business,landmark,street,place.",
        +  "maxLength": 100,
        +  "type": "string"
        +}
  3. 4 tool updates
    • Changedgeo_analyze1 field changed
      • changedInput schema / properties / estimateOnly / description
        Previous value: -"pipeline only: report what it would cost without running it."New value: +"pipeline: calculate estimated cost without execution."
    • Changedgeo_render1 field changed
      • changedInput schema / properties / styleRevision / description
        Previous value: -"Pin the render to an immutable revision of a saved profile, so the same call renders the same image after the profile is edited."New value: +"Saved profile revision to use for rendering."
    • Changedgeo_search2 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"nearby only. Read the list from the error message if you send an unknown one."New value: +"nearby: feature category, such as cafe, restaurant, hospital, or park."
      • changedInput schema / properties / operation / description
        Previous value: -"resolve: turn a name into a stable entity id you can pass to routing, isochrones and analysis instead of carrying coordinates. entity: read one back by its id. search: find a place by name anywhere on Earth. autocomplete: the same, prefix-matched while typing. nearby: named features or a category within a radius. reverse: what is at this coordinate. details: one feature by OSM type and id. geocode: address lookup through the external geocoder."New value: +"resolve: name to entity ID. entity: entity lookup. search: place-name search. autocomplete: prefix search. nearby: radius search. reverse: coordinate lookup. details: OSM type and ID lookup. geocode: address lookup."
    • Changedgeo_style5 fields changed
      • changedInput schema / properties / base / description
        Previous value: -"Preset the patch applies to. Read /api/styles for what each one is."New value: +"Base preset for the patch. Available presets are listed at /api/styles."
      • changedInput schema / properties / description / description
        Previous value: -"save only: what this basemap is for."New value: +"save: profile description."
      • changedInput schema / properties / includeStyle / description
        Previous value: -"Include the full compiled MapLibre style. Off by default because it is large; the hash, diff and issues are usually what you need."New value: +"Include the compiled MapLibre style in addition to the hash, diff, and validation issues. Defaults to false."
      • changedInput schema / properties / intent / description
        Previous value: -"intent only: what the basemap is for, in plain language. The proposal comes back as an editable semantic manifest with the terms it understood and why; the prompt is provenance, not the style."New value: +"intent: text description of the desired basemap. Returns an editable manifest and a summary of applied changes."
      • changedInput schema / properties / operation / description
        Previous value: -"explain: read the semantic layer namespace, free and unauthenticated. schema: the JSON Schema a manifest must satisfy, also free. intent: describe what the basemap is for and get a semantic proposal back. preview: compile a patch and return the hash, diff and issues without saving. save: store the result as a named basemap profile on this key. list: the presets plus profiles saved on this key. revisions: the immutable versions of one profile. diff: what changed between two revisions, in semantic terms. delete: remove a saved profile."New value: +"explain: layer definitions. schema: manifest JSON Schema. intent: generate a style proposal. preview: compile without saving. save: store a profile. list: available presets and profiles. revisions: saved versions. diff: revision comparison. delete: remove a profile."
  4. 1 tool update
    • Changedgeo_data3 fields changed
      • changedInput schema / properties / operation / description
        Previous value: -"status: service state and dataset freshness. basemaps: tile catalogue. elevation: ground height at a point. contours: banded topographic contours. usage: this key's consumption."New value: +"status: service state and dataset freshness. basemaps: tile catalogue. elevation: ground height at a point. contours: banded topographic contours. usage: this key's consumption. metrics: request rates, latency percentiles and how old each dataset is."
      • changedInput schema / properties / operation / enum
        Previous value: -[
        -  "status",
        -  "basemaps",
        -  "elevation",
        -  "contours",
        -  "usage"
        -]New value: +[
        +  "status",
        +  "basemaps",
        +  "elevation",
        +  "contours",
        +  "usage",
        +  "metrics"
        +]
      • addedInput schema / properties / window
        Added value: +{
        +  "description": "metrics only: minutes to measure over. Defaults to 60.",
        +  "maximum": 1440,
        +  "minimum": 1,
        +  "type": "integer"
        +}
  5. 1 tool update
    • Changedgeo_render1 field changed
      • addedInput schema / properties / styleRevision
        Added value: +{
        +  "description": "Pin the render to an immutable revision of a saved profile, so the same call renders the same image after the profile is edited.",
        +  "maximum": 9007199254740991,
        +  "minimum": 1,
        +  "type": "integer"
        +}
  6. 2 tool updates
    • Changedgeo_search3 fields changed
      • addedInput schema / properties / entityId
        Added value: +{
        +  "description": "entity only: an id from resolve, beginning geo_.",
        +  "maxLength": 300,
        +  "minLength": 4,
        +  "type": "string"
        +}
      • changedInput schema / properties / operation / description
        Previous value: -"search: find a place by name anywhere on Earth. autocomplete: the same, prefix-matched while typing. nearby: named features or a category within a radius. reverse: what is at this coordinate. details: one feature by OSM type and id. geocode: address lookup through the external geocoder."New value: +"resolve: turn a name into a stable entity id you can pass to routing, isochrones and analysis instead of carrying coordinates. entity: read one back by its id. search: find a place by name anywhere on Earth. autocomplete: the same, prefix-matched while typing. nearby: named features or a category within a radius. reverse: what is at this coordinate. details: one feature by OSM type and id. geocode: address lookup through the external geocoder."
      • changedInput schema / properties / operation / enum
        Previous value: -[
        -  "search",
        -  "autocomplete",
        -  "nearby",
        -  "reverse",
        -  "details",
        -  "geocode"
        -]New value: +[
        +  "search",
        +  "autocomplete",
        +  "nearby",
        +  "reverse",
        +  "details",
        +  "geocode",
        +  "resolve",
        +  "entity"
        +]
    • Changedgeo_style6 fields changed
      • addedInput schema / properties / from
        Added value: +{
        +  "description": "diff only: the earlier revision. Defaults to the one before `to`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / intent
        Added value: +{
        +  "description": "intent only: what the basemap is for, in plain language. The proposal comes back as an editable semantic manifest with the terms it understood and why; the prompt is provenance, not the style.",
        +  "maxLength": 2000,
        +  "minLength": 3,
        +  "type": "string"
        +}
      • changedInput schema / properties / operation / description
        Previous value: -"explain: read the semantic layer namespace, free and unauthenticated. preview: compile a patch and return the hash, diff and issues without saving. save: store the result as a named basemap profile on this key. list: the presets plus profiles saved on this key. delete: remove a saved profile."New value: +"explain: read the semantic layer namespace, free and unauthenticated. schema: the JSON Schema a manifest must satisfy, also free. intent: describe what the basemap is for and get a semantic proposal back. preview: compile a patch and return the hash, diff and issues without saving. save: store the result as a named basemap profile on this key. list: the presets plus profiles saved on this key. revisions: the immutable versions of one profile. diff: what changed between two revisions, in semantic terms. delete: remove a saved profile."
      • changedInput schema / properties / operation / enum
        Previous value: -[
        -  "explain",
        -  "preview",
        -  "save",
        -  "list",
        -  "delete"
        -]New value: +[
        +  "explain",
        +  "schema",
        +  "intent",
        +  "preview",
        +  "save",
        +  "list",
        +  "revisions",
        +  "diff",
        +  "delete"
        +]
      • addedInput schema / properties / save
        Added value: +{
        +  "default": false,
        +  "description": "intent only: also save the proposal as a profile revision on this key.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / to
        Added value: +{
        +  "description": "diff only: the later revision. Defaults to the current one.",
        +  "maximum": 9007199254740991,
        +  "minimum": 1,
        +  "type": "integer"
        +}
  7. 1 tool update
    • Addedgeo_data
  8. 2 tool updates
    • Changedgeo_analyze1 field changed
      • changedInput schema / properties / a / description
        Previous value: -"GeoJSON, a [lon, lat] pair, an Overpass result, a places result, or a result handle such as res_abc123. Required for every operation except pipeline."New value: +"GeoJSON, a [lon, lat] pair, an Overpass result, a places result, or a result handle such as rh_ followed by 32 hex characters. Required for every operation except pipeline."
    • Changedgeo_render1 field changed
      • changedInput schema / properties / geojson / description
        Previous value: -"GeoJSON to draw, or a result handle such as res_abc123."New value: +"GeoJSON to draw, or a result handle such as rh_ followed by 32 hex characters."
  9. 1 tool update
    • Changedgeo_search5 fields changed
      • changedInput schema / properties / operation / description
        Previous value: -"nearby: named features or a category within a radius. reverse: what is at this coordinate. details: one feature by OSM type and id. geocode: look up a place by name."New value: +"search: find a place by name anywhere on Earth. autocomplete: the same, prefix-matched while typing. nearby: named features or a category within a radius. reverse: what is at this coordinate. details: one feature by OSM type and id. geocode: address lookup through the external geocoder."
      • changedInput schema / properties / operation / enum
        Previous value: -[
        -  "nearby",
        -  "reverse",
        -  "details",
        -  "geocode"
        -]New value: +[
        +  "search",
        +  "autocomplete",
        +  "nearby",
        +  "reverse",
        +  "details",
        +  "geocode"
        +]
      • addedInput schema / properties / placeClass
        Added value: +{
        +  "description": "search and autocomplete: restrict to one class of populated place.",
        +  "enum": [
        +    "city",
        +    "town",
        +    "village",
        +    "suburb",
        +    "neighbourhood",
        +    "hamlet"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / q / description
        Previous value: -"geocode only: the place or address text."New value: +"search, autocomplete and geocode: the text to look up."
      • changedInput schema / properties / q / minLength
        Previous value: -2New value: +1
  10. 1 tool update
    • Changedgeo_render6 fields changed
      • addedInput schema / properties / bearing
        Added value: +{
        +  "default": 0,
        +  "description": "Vector renders only.",
        +  "maximum": 180,
        +  "minimum": -180,
        +  "type": "number"
        +}
      • addedInput schema / properties / pitch
        Added value: +{
        +  "default": 0,
        +  "description": "Vector renders only.",
        +  "maximum": 60,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / style / description
        Added value: +"dark or light composites the raster basemaps. Any other value names a style preset or one of your saved basemap profiles and is rendered as vector against that compiled style."
      • removedInput schema / properties / style / enum
        Removed value: -[
        -  "dark",
        -  "light"
        -]
      • addedInput schema / properties / style / maxLength
        Added value: +64
      • addedInput schema / properties / style / minLength
        Added value: +1
  11. 2 tool updates
    • Changedgeo_analyze7 fields changed
      • changedInput schema / properties / a / description
        Previous value: -"GeoJSON, a [lon, lat] pair, an Overpass result, or a result handle such as res_abc123."New value: +"GeoJSON, a [lon, lat] pair, an Overpass result, a places result, or a result handle such as res_abc123. Required for every operation except pipeline."
      • addedInput schema / properties / estimateOnly
        Added value: +{
        +  "default": false,
        +  "description": "pipeline only: report what it would cost without running it.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / operation / description
        Previous value: -"buffer and simplify take distance. distance, intersect, union, difference, contains, intersects and nearest take a second geometry in b."New value: +"buffer and simplify take distance. distance, intersect, union, difference, contains, intersects and nearest take a second geometry in b. pipeline runs several steps server-side and takes pipeline instead of a."
      • changedInput schema / properties / operation / enum
        Previous value: -[
        -  "buffer",
        -  "centroid",
        -  "bbox",
        -  "area",
        -  "length",
        -  "distance",
        -  "intersect",
        -  "union",
        -  "difference",
        -  "contains",
        -  "intersects",
        -  "nearest",
        -  "simplify",
        -  "convex"
        -]New value: +[
        +  "buffer",
        +  "centroid",
        +  "bbox",
        +  "area",
        +  "length",
        +  "distance",
        +  "intersect",
        +  "union",
        +  "difference",
        +  "contains",
        +  "intersects",
        +  "nearest",
        +  "simplify",
        +  "convex",
        +  "pipeline"
        +]
      • addedInput schema / properties / pipeline
        Added value: +{
        +  "description": "pipeline only: ordered steps. Any argument may be $anEarlierStepId.",
        +  "items": {
        +    "properties": {
        +      "args": {
        +        "additionalProperties": {},
        +        "default": {},
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "id": {
        +        "description": "Referenced by later steps as $id.",
        +        "type": "string"
        +      },
        +      "op": {
        +        "enum": [
        +          "search",
        +          "nearby",
        +          "route",
        +          "isochrone",
        +          "matrix",
        +          "analyze",
        +          "filter",
        +          "sort",
        +          "limit"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "op"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 12,
        +  "type": "array"
        +}
      • addedInput schema / properties / returns
        Added value: +{
        +  "description": "pipeline only: which step to return, as $stepId. Defaults to the last.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "operation",
        -  "a"
        -]New value: +[
        +  "operation"
        +]
    • Addedgeo_render
  12. 4 tool updates
    • Changedfind_features1 field changed
      • addedInput schema / properties / responseMode
        Added value: +{
        +  "default": "compact",
        +  "description": "compact: inline when small, a result handle when large. handle: always a handle. raw: always the full body, however large.",
        +  "enum": [
        +    "compact",
        +    "handle",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
    • Addedgeo_analyze
    • Addedgeo_search
    • Changedoverpass_query1 field changed
      • addedInput schema / properties / responseMode
        Added value: +{
        +  "default": "compact",
        +  "description": "compact: inline when small, a result handle when large. handle: always a handle. raw: always the full body, however large.",
        +  "enum": [
        +    "compact",
        +    "handle",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
  13. 2 tool updates
    • Addedgeo_navigate
    • Changedgeo_style6 fields changed
      • addedInput schema / properties / description
        Added value: +{
        +  "description": "save only: what this basemap is for.",
        +  "maxLength": 400,
        +  "type": "string"
        +}
      • removedInput schema / properties / explain
        Removed value: -{
        -  "default": false,
        -  "description": "Return the semantic layer namespace and the properties each key accepts, instead of compiling. Use this first when you do not know the keys.",
        -  "type": "boolean"
        -}
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "save only: a human name for the profile.",
        +  "maxLength": 120,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / operation
        Added value: +{
        +  "default": "preview",
        +  "description": "explain: read the semantic layer namespace, free and unauthenticated. preview: compile a patch and return the hash, diff and issues without saving. save: store the result as a named basemap profile on this key. list: the presets plus profiles saved on this key. delete: remove a saved profile.",
        +  "enum": [
        +    "explain",
        +    "preview",
        +    "save",
        +    "list",
        +    "delete"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / patch / description
        Previous value: -"Semantic overrides: {\"tokens\":{...},\"typography\":{...},\"layers\":{\"roads.motorway\":{\"color\":\"#f2a900\"}}}. Layer keys come from /api/basemap/contract."New value: +"Semantic overrides: {\"tokens\":{...},\"typography\":{...},\"layers\":{\"roads.motorway\":{\"color\":\"#f2a900\"}}}. Layer keys come from the explain operation."
      • addedInput schema / properties / slug
        Added value: +{
        +  "description": "save and delete: the profile's stable URL id. Defaults to a slug of the name on save.",
        +  "maxLength": 48,
        +  "minLength": 2,
        +  "type": "string"
        +}
  14. 1 tool update
    • Addedgeo_style
  15. 1 tool update
    • Changedroute1 field changed
      • addedInput schema / properties / elevation
        Added value: +{
        +  "default": false,
        +  "description": "Sample a terrain profile along the route and report total gain and loss in metres.",
        +  "type": "boolean"
        +}
  16. 2 tool updates
    • Addedisochrone
    • Addedroute

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides forward/reverse geocoding, bounding box extraction, nearby places discovery, batch geocoding, route waypoints, and administrative boundary lookup using OpenStreetMap data.
    10
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Enables LLMs to geocode and reverse geocode places, find nearby points of interest, search categories within an area, get turn-by-turn routing, suggest meeting points, and analyze neighborhoods, commutes, schools, EV charging, and parking through OpenStreetMap data services. It also serves place and map tile resources over stdio, SSE, or Streamable HTTP transports.
    12
    MIT
  • F
    license
    B
    quality
    B
    maintenance
    Provides read-only query tools over OpenStreetMap data in PostGIS, enabling natural language queries for features, categories, and spatial analysis.
    7
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources