# StatsMapped Public Data (remote · mcp.statsmapped.com)

Public statistics for Ireland and the UK: housing, crime, health, economy, welfare, with caveats.

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

## Components

- remote · `mcp.statsmapped.com`: 72/100 (this document), [markdown](https://verifymcp.io/servers/com-statsmapped-public-data/mcp.md), [page](https://verifymcp.io/servers/com-statsmapped-public-data/mcp)
- pypi · `statsmapped-mcp`: 85/100, [markdown](https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp.md), [page](https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp)

## Channel facts

- Endpoint: `https://mcp.statsmapped.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.3.2`

## 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-11-05.

- **Endpoint Security**: 60/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 6 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 is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 56/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2878 tokens (~479/item across 6 items; 6 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 87/100
  - Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 71/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 6 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the StatsMapped Public Data MCP server?

StatsMapped Public Data is a hosted endpoint at https://mcp.statsmapped.com/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 com-statsmapped-public-data 'https://mcp.statsmapped.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "com-statsmapped-public-data": {
      "url": "https://mcp.statsmapped.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-statsmapped-public-data": {
      "type": "http",
      "url": "https://mcp.statsmapped.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-statsmapped-public-data]
url = "https://mcp.statsmapped.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-statsmapped-public-data": {
      "type": "remote",
      "url": "https://mcp.statsmapped.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-statsmapped-public-data --url 'https://mcp.statsmapped.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-statsmapped-public-data:
    url: "https://mcp.statsmapped.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "com-statsmapped-public-data": {
      "Transport": "http",
      "Url": "https://mcp.statsmapped.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-statsmapped-public-data -t streamable-http -u 'https://mcp.statsmapped.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "com-statsmapped-public-data": {
      "type": "http",
      "url": "https://mcp.statsmapped.com/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-11-05 (score 72, +1)

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

### 2026-11-02 (score 71, +1)

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

### 2026-10-31 (score 70, +1)

- [security] Tool “get_scene” rewrote its description, which is the text the model reads
- [functional improvement] Schema quality: 545 → 479
- [functional] New tool “notable_changes”

### 2026-10-29 (score 69, +1)

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

### 2026-10-27 (score 68, +1)

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

### 2026-10-25 (score 67, +1)

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

### 2026-10-23 (score 66, +1)

- [security] Tool “query_data” rewrote its description, which is the text the model reads
- [security] Tool “list_areas” rewrote its description, which is the text the model reads
- [security] Tool “explain_metric” rewrote its description, which is the text the model reads
- [security] Tool “compare” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 481 → 545
- [functional] New tool “get_scene”
- [cosmetic] “query_data” added an optional parameter “stat_key”
- [cosmetic] “query_data” added an optional parameter “council”
- [cosmetic] “list_areas” added an optional parameter “include_parents”

### 2026-10-21 (score 65, +1)

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

## MCP tools (6)

### `query_data` (~860 tokens)

Use when you need to find which datasets exist, which exist for one area, or the figures and history
    for one area and dataset (or a council planning view). For what a metric means use `explain_metric`;
    for how areas rank use `compare`.

    Three modes, depending on which of `area_id`/`dataset` are given (plus a planning mode, `council`, described last) --
    consolidates what were three separate tools (list_datasets,
    list_area_datasets, get_dataset_for_area) behind one, since they are all
    really "how do I get data" at different levels of specificity:

    1. Neither `area_id` nor `dataset`: lists every dataset (stat) StatsMapped
       tracks for one country ('ireland' or 'united-kingdom'), with its key,
       human label, and which geography levels it can be shown at. Ireland and
       the UK track genuinely different datasets -- call this first for the
       right country before assuming a stat_key exists there, to find the
       right `stat_key` for `compare`'s ranking mode.
    2. `area_id` given, `dataset` omitted: lists every dataset available for
       that one area (e.g. "county:kerry" for Ireland, "uk:lad:e09000033" for
       the UK), with its latest figure, year-on-year change, and caveat labels
       only (not full caveat text -- use mode 3 for the full detail on any one
       dataset that matters). Pass `stat_key` (from mode 1) to list only that
       stat's series for the area: a full listing is tens of KB, one stat is a
       few hundred bytes. `area_id` comes from `list_areas`; `country`
       must match whichever country that call used, or this simply 404s
       ("unknown geography").
    3. Both `area_id` and `dataset` given: full detail for one dataset in one
       area -- the latest figure, a written summary, full caveat text, and (if
       `history_months` is set) recent history. `dataset` is a `series_key`
       from mode 2's own response. `history_months` means actual months of
       history (0 = everything) -…

Input parameters:

- `area_id`
- `council`
- `country` (string)
- `dataset`
- `history_months` (integer)
- `stat_key`

Output parameters:

- `result`

### `list_areas` (~242 tokens)

Use when you need the ids and names of the areas (counties, local authorities, districts) to pass to
    `query_data`.

    List every geography at one boundary level, for one country ('ireland'
    or 'united-kingdom'). `level` defaults to "county" (Ireland's 26 counties);
    the UK's own primary level is "lad" (local authority districts), not
    "county". Other levels exist per country (e.g. Ireland's "local_authority",
    "garda_division") -- see a dataset's own `compatible_levels` from
    `query_data` for which levels a given stat is actually published at.
    Returns each area's `id` (used by `query_data`'s area-scoped modes,
    always paired with the SAME `country`), `name` and `level`. Slim by default;
    `include_parents=True` adds each area's `parents` (the regions it sits in)
    and Irish-language name.

Input parameters:

- `country` (string)
- `include_parents` (boolean)
- `level` (string)

Output parameters:

- `result` (array)

### `compare` (~1131 tokens)

Use when the question is how areas rank or compare on a stat, or whether two stats can be compared
    fairly. For one area's own figures use `query_data`.

    Four modes, depending on which arguments are given -- consolidates what
    were four separate tools (rank_areas, list_comparisons, get_comparison,
    check_comparability) behind one, since they are all really "how does this
    stat compare" at different scopes. Exactly one mode's arguments should be
    given; mixing arguments from different modes (e.g. both `stat_key` and
    `pair_key`, or only one of `stat_key_a`/`stat_key_b`) raises an error
    rather than silently guessing which mode was meant.

    1. `stat_key` alone (no `pair_key`, no `stat_key_a`/`stat_key_b`): ranks
       every area at one geography level by its latest figure for that stat,
       for one country -- e.g. "which counties have the highest median sale
       price" (country="ireland"). `stat_key` comes from `query_data`'s
       dataset-listing mode, for the SAME country. `level` omitted uses this
       ranking's own default level; pass one of that dataset's own
       `compatible_levels` for a different one -- a level this ranking
       doesn't have registered returns an empty list rather than an error.
       Where the underlying stat has no honest per-area denominator (crime,
       homelessness, live_register and similar -- StatsMapped's own
       RANKING_NO_DENOMINATOR_STATS), each row's `rate_per_1000` is the real
       figure to rank/compare by, not `latest_value`, which is a raw count
       dominated by area population size. Always carry forward every entry
       in `caveats` when using a row in an answer.
    2. `pair_key` alone: full detail for one registered comparison pair --
       each axis's label, unit and publisher, the correlation stats (r, rho,
       and a leave-one-out sensitivity range naming the single most
       influential area), and caveats. `pair_key` comes from mode 4's own
       response, for…

Input parameters:

- `country` (string)
- `level`
- `pair_key`
- `stat_key`
- `stat_key_a`
- `stat_key_b`

Output parameters:

- `result`

### `explain_metric` (~155 tokens)

Use when the question is what a metric means or how it is measured; for a figure use `query_data`.

    Definition, methodology and standing caveats for ONE stat ('ireland' or
    'united-kingdom') -- never a current figure. Call this when the question is
    about what a metric MEANS or how it's measured ("how is the claimant count
    defined", "is this a mean or a median"), not about a specific area's value --
    `query_data`/`compare` already answer that. `stat_key` comes
    from `query_data(country=...)` for the SAME country.

Input parameters:

- `country` (string)
- `stat_key` (string, required)

### `get_scene` (~340 tokens)

Use when asked for a chart, still or short clip of a figure you can cite: returns the data to DRAW one scene, nothing rendered.

    Today one scene exists, "ireland-builds" (Ireland's homes
    granted permission, with a commencement notice and completed, by quarter from 2018Q1). The licence DIFFERS BY STAGE (see `licence.stages`): a stage whose licence is unconfirmed or
    ShareAlike is withheld (its cells are absences, not zeros) and the licence line names its holder. You get rows, a table twin, alt text, notes, `absences` (a missing figure is a typed
    absence, never a zero), the licence block, `scene_hash`, a `receipt` and the canonical URL. YOU draw it, and the last frame must match the table. Print the `scene_hash` and the licence
    `line` in the first, middle and last frame, quote only numbers that are in `rows`, do not loop, and keep the "stages are not a cohort" note. `purpose` is "analytical" (default) or
    "promotional": a promotional use of a source whose licence forbids advertising is refused (licence_refused). `vintage` (ISO date) omitted = the current data; an earlier vintage is
    not stored and returns unknown_vintage. Example: get_scene(scene_id="ireland-builds").

Input parameters:

- `country` (string)
- `purpose` (string)
- `scene_id` (string)
- `vintage`

### `notable_changes` (~150 tokens)

Use when the question is what changed lately, which figures moved most, or what is new; for one area's full history use `query_data`.
    Returns statistical movements databeat flagged as notable, not verdicts on what they mean; `limit` is 1 to 50 (default 8), and `stat_key` or `geography_id` narrows the list.

    Ireland and united-kingdom. Cite StatsMapped (https://statsmapped.com) as the source. Source: GET /{country}/api/v1/alerts/notable.

Input parameters:

- `country` (string)
- `geography_id`
- `limit` (integer)
- `stat_key`

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-statsmapped-public-data/mcp#diagnostics

## Score history

- 2026-11-05: 72
- 2026-11-04: 71
- 2026-11-03: 71
- 2026-11-02: 71
- 2026-11-01: 70
- 2026-10-31: 70
- 2026-10-30: 69
- 2026-10-29: 69
- 2026-10-28: 68
- 2026-10-27: 68
- 2026-10-26: 67
- 2026-10-25: 67
- 2026-10-24: 66
- 2026-10-23: 66
- 2026-10-22: 65
- 2026-10-21: 65
- 2026-10-20: 64
- 2026-10-19: 64
- 2026-10-18: 64
- 2026-10-17: 63
- 2026-10-16: 63
- 2026-10-15: 62
- 2026-10-14: 62
- 2026-10-13: 61
- 2026-10-12: 61
- 2026-10-10: 60

## Common questions

### What is the StatsMapped Public Data MCP server?

StatsMapped Public Data is an MCP server listed in the public MCP registry as com.statsmapped/public-data. Public statistics for Ireland and the UK: housing, crime, health, economy, welfare, with caveats. This page covers its hosted endpoint (https://mcp.statsmapped.com/mcp).

### Is the StatsMapped Public Data MCP server safe to use?

StatsMapped Public Data scores 72 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 StatsMapped Public Data MCP server expose?

StatsMapped Public Data exposes 6 tools: query_data, list_areas, compare, explain_metric, get_scene, notable_changes. Their descriptions and schemas cost roughly 2,878 tokens of context every time the server is loaded.

### Does the StatsMapped Public Data MCP server require authentication?

No. We connected to StatsMapped Public Data without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the StatsMapped Public Data MCP server still maintained?

StatsMapped Public Data is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What did VerifyMCP test on the StatsMapped Public Data MCP server?

VerifyMCP ran 12 checks on StatsMapped Public Data, covering TLS certificate, HTTPS, HSTS header, DNSSEC and 8 more. One item could not be completed, a gap on our side rather than a finding about StatsMapped Public Data: Authorization. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Remote endpoint: https://mcp.statsmapped.com/mcp
- Repository: https://github.com/ActiveGuy/statsmapped-mcp
- Website: https://statsmapped.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-statsmapped-public-data/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-statsmapped-public-data/mcp/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/com-statsmapped-public-data/mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-statsmapped-public-data/mcp
