# Mapsource Geospatial API (remote · mapsource.io)

OSM queries, raster tiles, elevation. Check status: queries currently use fixtures; x402 is testnet.

- Trust score: 63/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- remote · `mapsource.io`: 63/100 (this document), [markdown](https://verifymcp.io/servers/robit-man-mapsource/mapsource.md), [page](https://verifymcp.io/servers/robit-man-mapsource/mapsource)

## Channel facts

- Endpoint: `https://mapsource.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.2.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 3 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 64/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2578 tokens (~198/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 50/100
  - Stability observed for 15 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 94/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 82% of tool parameters carry a description.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "overpass_query" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.
  - An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Mapsource Geospatial API MCP server?

Mapsource Geospatial API is a hosted endpoint at https://mapsource.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http robit-man-mapsource 'https://mapsource.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "robit-man-mapsource": {
      "url": "https://mapsource.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "robit-man-mapsource": {
      "type": "http",
      "url": "https://mapsource.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.robit-man-mapsource]
url = "https://mapsource.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "robit-man-mapsource": {
      "type": "remote",
      "url": "https://mapsource.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add robit-man-mapsource --url 'https://mapsource.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  robit-man-mapsource:
    url: "https://mapsource.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "robit-man-mapsource": {
      "Transport": "http",
      "Url": "https://mapsource.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add robit-man-mapsource -t streamable-http -u 'https://mapsource.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "robit-man-mapsource": {
      "type": "http",
      "url": "https://mapsource.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-19 (score 63, +1)

No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-17 (score 62, +1)

No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-15 (score 61, 0)

- [security] Tool “geo_search” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 177 → 198
- [cosmetic] “geo_search” added an optional parameter “bbox”
- [cosmetic] “geo_search” added an optional parameter “bounded”
- [cosmetic] “geo_search” added an optional parameter “costing”
- [cosmetic] “geo_search” added an optional parameter “countrycodes”
- [cosmetic] “geo_search” added an optional parameter “language”
- [cosmetic] “geo_search” added an optional parameter “minutes”
- [cosmetic] “geo_search” added an optional parameter “offset”
- [cosmetic] “geo_search” added an optional parameter “rankBy”
- [cosmetic] “geo_search” added an optional parameter “region”
- [cosmetic] “geo_search” added an optional parameter “types”
- [cosmetic] “geo_search” reworded the description of “category”
- [cosmetic] “geo_search” reworded the description of “operation”
- [cosmetic] “geo_search” reworded the description of “q”

### 2026-09-14 (score 61, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-12 (score 60, +2)

- [security] Tool “basemap_catalog” rewrote its description, which is the text the model reads
- [security] Tool “elevation” rewrote its description, which is the text the model reads
- [security] Tool “find_features” rewrote its description, which is the text the model reads
- [security] Tool “geo_analyze” rewrote its description, which is the text the model reads
- [security] Tool “geo_data” rewrote its description, which is the text the model reads
- [security] Tool “geo_navigate” rewrote its description, which is the text the model reads
- [security] Tool “geo_render” rewrote its description, which is the text the model reads
- [security] Tool “geo_search” rewrote its description, which is the text the model reads
- [security] Tool “geo_style” rewrote its description, which is the text the model reads
- [security] Tool “isochrone” rewrote its description, which is the text the model reads
- [security] Tool “overpass_query” rewrote its description, which is the text the model reads
- [security] Tool “route” rewrote its description, which is the text the model reads
- [security] Tool “service_status” rewrote its description, which is the text the model reads
- [functional improvement] Schema quality: 276 → 177
- [cosmetic] “geo_analyze” reworded the description of “estimateOnly”
- [cosmetic] “geo_render” reworded the description of “styleRevision”
- [cosmetic] “geo_search” reworded the description of “category”
- [cosmetic] “geo_search” reworded the description of “operation”
- [cosmetic] “geo_style” reworded the description of “base”
- [cosmetic] “geo_style” reworded the description of “description”
- [cosmetic] “geo_style” reworded the description of “includeStyle”
- [cosmetic] “geo_style” reworded the description of “intent”
- [cosmetic] “geo_style” reworded the description of “operation”

### 2026-09-11 (score 58, 0)

- [security] Tool “geo_search” rewrote its description, which is the text the model reads
- [security] Tool “geo_style” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 231 → 276
- [functional] New tool “geo_data”
- [cosmetic] “geo_render” added an optional parameter “styleRevision”
- [cosmetic] “geo_search” added an optional parameter “entityId”
- [cosmetic] “geo_style” added an optional parameter “from”
- [cosmetic] “geo_style” added an optional parameter “intent”
- [cosmetic] “geo_style” added an optional parameter “save”
- [cosmetic] “geo_style” added an optional parameter “to”
- [cosmetic] “geo_analyze” reworded the description of “a”
- [cosmetic] “geo_render” reworded the description of “geojson”
- [cosmetic] “geo_search” reworded the description of “operation”
- [cosmetic] “geo_style” reworded the description of “operation”

### 2026-09-10 (score 58, −2)

- [functional regression] Schema quality: pass → fail
- [functional] Schema quality: good → excellent
- [functional] New tool “geo_analyze”
- [functional] New tool “geo_navigate”
- [functional] New tool “geo_render”
- [functional] New tool “geo_search”
- [functional] New tool “geo_style”
- [cosmetic] “find_features” added an optional parameter “responseMode”
- [cosmetic] “overpass_query” added an optional parameter “responseMode”

### 2026-09-09 (score 60, +1)

- [security] Tool “elevation” rewrote its description, which is the text the model reads
- [security] Tool “find_features” rewrote its description, which is the text the model reads
- [security] Tool “overpass_query” rewrote its description, which is the text the model reads
- [security] Tool “route” rewrote its description, which is the text the model reads
- [security] Tool “service_status” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 88 → 108
- [cosmetic] “route” added an optional parameter “elevation”

## MCP tools (13)

### `service_status` (~40 tokens)

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

### `basemap_catalog` (~38 tokens)

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

### `elevation` (~77 tokens)

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.

Input parameters:

- `lat` (number, required): Latitude in decimal degrees.
- `lon` (number, required): Longitude in decimal degrees.

### `geo_data` (~224 tokens)

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.

Input parameters:

- `bands` (integer): contours only: how many elevation bands, 4 to 24. Defaults to 14.
- `lat` (number): elevation and contours: latitude.
- `lon` (number): elevation and contours: longitude.
- `operation` (string, required): 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 rate…
- `window` (integer): metrics only: minutes to measure over. Defaults to 60.
- `zoom` (integer): contours only: detail level, 6 to 13. Defaults to 9.

### `geo_style` (~364 tokens)

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.

Input parameters:

- `base` (string): Base preset for the patch. Available presets are listed at /api/styles.
- `description` (string): save: profile description.
- `from` (integer): diff only: the earlier revision. Defaults to the one before `to`.
- `includeStyle` (boolean): Include the compiled MapLibre style in addition to the hash, diff, and validation issues. Defaults to false.
- `intent` (string): intent: text description of the desired basemap. Returns an editable manifest and a summary of applied changes.
- `name` (string): save only: a human name for the profile.
- `operation` (string): 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: s…
- `patch` (object): Semantic overrides: {"tokens":{...},"typography":{...},"layers":{"roads.motorway":{"color":"#f2a900"}}}. Layer keys come from the explain operation.
- `save` (boolean): intent only: also save the proposal as a profile revision on this key.
- `slug` (string): save and delete: the profile's stable URL id. Defaults to a slug of the name on save.
- `to` (integer): diff only: the later revision. Defaults to the current one.

### `geo_render` (~232 tokens)

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.

Input parameters:

- `bbox` (array): [west, south, east, north]. Fits the viewport to this instead of using lat/lon/zoom.
- `bearing` (number): Vector renders only.
- `geojson`: GeoJSON to draw, or a result handle such as rh_ followed by 32 hex characters.
- `height` (integer)
- `lat` (number)
- `lon` (number)
- `markers` (array)
- `pitch` (number): Vector renders only.
- `style` (string): 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.
- `styleRevision` (integer): Saved profile revision to use for rendering.
- `width` (integer)
- `zoom` (number)

### `geo_analyze` (~273 tokens)

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.

Input parameters:

- `a`: 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.
- `b`: The second operand, in the same forms as a.
- `distance` (number): Buffer radius or simplify tolerance.
- `estimateOnly` (boolean): pipeline: calculate estimated cost without execution.
- `operation` (string, required): 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 ins…
- `pipeline` (array): pipeline only: ordered steps. Any argument may be $anEarlierStepId.
- `returns` (string): pipeline only: which step to return, as $stepId. Defaults to the last.
- `units` (string)

### `geo_search` (~539 tokens)

Search places and retrieve geographic entities. Use lookup for local address, business, brand and landmark search with soft map-focus bias, strict house numbers, source IDs and ambiguity reporting. Use discover for POIs in a viewport, polygon or isochrone, optionally ranked by travel time. Other operations: search, autocomplete, nearby, reverse, details, geocode, resolve, entity. Requires a subscription key.

Input parameters:

- `bbox` (string): west,south,east,north. lookup: soft focus unless bounded is true. discover: required region boundary unless region or minutes is supplied.
- `bounded` (boolean): lookup: explicitly restrict results to bbox.
- `category` (string): lookup/discover: business or POI category, such as coffee, pharmacy or restaurants. nearby: feature category, such as cafe, restaurant, hospital or park.
- `costing` (string)
- `countrycodes` (string): lookup: comma-separated two-letter country filters.
- `entityId` (string): entity only: an id from resolve, beginning geo_.
- `language` (string): lookup: preferred language, default en.
- `lat` (number)
- `limit` (integer)
- `lon` (number)
- `minutes` (integer): discover: generate an isochrone from lat/lon.
- `offset` (integer): discover: result page offset.
- `operation` (string, required): 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.…
- `osmId` (integer): details only.
- `osmType` (string): details only.
- `placeClass` (string): search and autocomplete: restrict to one class of populated place.
- `q` (string): lookup: address/name text, 1–120 characters. discover: optional name/brand filter. search/autocomplete: populated-place name. geocode: compatibility provider query.
- `radius` (integer): Metres. Defaults to 500 for nearby and 150 for reverse.
- `rankBy` (string): discover: travel_time compares the nearest 25 candidates.
- `region`: discover: polygon GeoJSON or owned result handle; alternatively supply bbox or minutes.
- `types` (string): lookup: comma-separated address,business,landmark,street,place.

### `geo_navigate` (~275 tokens)

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.

Input parameters:

- `contours` (array): isochrone only: travel-time bands in minutes.
- `costing` (string): Travel mode used to weight the road graph.
- `elevation` (boolean): route only: also return a sampled terrain profile with total gain and loss.
- `locations` (array): Waypoints for route and optimize, points for snap, or the ordered trace for map_match. For isochrone, the single origin.
- `operation` (string, required): route: 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. optim…
- `sources` (array): matrix only: the origins.
- `targets` (array): matrix only: the destinations. Omit for a square matrix of sources against themselves.

### `route` (~134 tokens)

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.

Input parameters:

- `costing` (string): Travel mode used to weight the road graph.
- `elevation` (boolean): Sample a terrain profile along the route and report total gain and loss in metres.
- `locations` (array, required): Ordered waypoints, 2 to 10; first is the origin and last is the destination.

### `isochrone` (~97 tokens)

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.

Input parameters:

- `contours` (array): Travel-time bands in minutes, at most four.
- `costing` (string): Travel mode used to weight the road graph.
- `lat` (number, required): Latitude of the centre point.
- `lon` (number, required): Longitude of the centre point.

### `overpass_query` (~118 tokens)

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.

Input parameters:

- `query` (string, required): A complete bounded Overpass QL query, with explicit timeout and output limit.
- `responseMode` (string): compact: inline when small, a result handle when large. handle: always a handle. raw: always the full body, however large.

### `find_features` (~167 tokens)

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.

Input parameters:

- `category` (string, required): Mapped feature category; use overpass_query for arbitrary OSM tags.
- `east` (number, required)
- `limit` (integer): Maximum returned OSM objects, not a pagination guarantee.
- `north` (number, required)
- `responseMode` (string): compact: inline when small, a result handle when large. handle: always a handle. raw: always the full body, however large.
- `south` (number, required)
- `west` (number, required)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/robit-man-mapsource/mapsource#diagnostics

## Score history

- 2026-09-20: 63
- 2026-09-19: 63
- 2026-09-18: 62
- 2026-09-17: 62
- 2026-09-16: 61
- 2026-09-15: 61
- 2026-09-14: 61
- 2026-09-13: 60
- 2026-09-12: 60
- 2026-09-11: 58
- 2026-09-10: 58
- 2026-09-09: 60
- 2026-09-08: 59
- 2026-09-07: 58
- 2026-09-06: 57
- 2026-09-05: 57

## Common questions

### What is the Mapsource Geospatial API MCP server?

Mapsource Geospatial API is an MCP server listed in the public MCP registry as io.github.robit-man/mapsource. OSM queries, raster tiles, elevation. Check status: queries currently use fixtures; x402 is testnet. This page covers its hosted endpoint (https://mapsource.io/mcp).

### Is the Mapsource Geospatial API MCP server safe to use?

Mapsource Geospatial API scores 63 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Mapsource Geospatial API MCP server expose?

Mapsource Geospatial API exposes 13 tools: service_status, basemap_catalog, elevation, geo_data, geo_style, and 8 more. Their descriptions and schemas cost roughly 2,578 tokens of context every time the server is loaded.

### Does the Mapsource Geospatial API MCP server require authentication?

No. We connected to Mapsource Geospatial API without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Mapsource Geospatial API MCP server still maintained?

Mapsource Geospatial API is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mapsource.io/mcp
- Website: https://mapsource.io/docs/agents
- Changelog RSS feed: https://verifymcp.io/servers/robit-man-mapsource/mapsource.xml
- Changelog JSON feed: https://verifymcp.io/servers/robit-man-mapsource/mapsource.json
- HTML version of this page: https://verifymcp.io/servers/robit-man-mapsource/mapsource
