{"name":"com.statsmapped/public-data","slug":"statsmapped-public-data","title":"StatsMapped Public Data","description":"Public statistics for Ireland and the UK: housing, crime, health, economy, welfare, with caveats.","url":"https://mcp.market/server/statsmapped-public-data","rating":null,"grade":"A","score":91,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":36,"stars":0,"forks":0,"downloads_week":457,"last_push_at":"2026-10-10T05:37:44.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T08:30:48.225Z","last_ok_at":"2026-11-04T08:30:48.225Z","latency_ms":414},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/ActiveGuy/statsmapped-mcp","website":"https://statsmapped.com","version":"0.3.2","remotes":[{"type":"streamable-http","url":"https://mcp.statsmapped.com/mcp"}],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"statsmapped-mcp","version":"0.3.2","runtimeHint":"uvx","transport":{"type":"stdio"}}],"tools":[{"name":"compare","description":"Four modes, depending on which arguments are given -- consolidates what\n    were four separate tools (rank_areas, list_comparisons, get_comparison,\n    check_comparability) behind one, since they are all really \"how does this\n    stat compare\" at different scopes. Exactly one mode's arguments should be\n    given; mixing arguments from different modes (e.g. both `stat_key` and\n    `pair_key`, or only one of `stat_key_a`/`stat_key_b`) raises an error\n    rather than silently guessing which mode was meant.\n\n    1. `stat_key` alone (no `pair_key`, no `stat_key_a`/`stat_key_b`): ranks\n       every area at one geography level by its latest figure for that stat,\n       for one country -- e.g. \"which counties have the highest median sale\n       price\" (country=\"ireland\"). `stat_key` comes from `query_data`'s\n       dataset-listing mode, for the SAME country. `level` omitted uses this\n       ranking's own default level; pass one of that dataset's own\n       `compatible_levels` for a different one -- a level this ranking\n       doesn't have registered returns an empty list rather than an error.\n       Where the underlying stat has no honest per-area denominator (crime,\n       homelessness, live_register and similar -- StatsMapped's own\n       RANKING_NO_DENOMINATOR_STATS), each row's `rate_per_1000` is the real\n       figure to rank/compare by, not `latest_value`, which is a raw count\n       dominated by area population size. Always carry forward every entry\n       in `caveats` when using a row in an answer.\n    2. `pair_key` alone: full detail for one registered comparison pair --\n       each axis's label, unit and publisher, the correlation stats (r, rho,\n       and a leave-one-out sensitivity range naming the single most\n       influential area), and caveats. `pair_key` comes from mode 4's own\n       response, for the SAME country.\n    3. Both `stat_key_a` and `stat_key_b` given: does StatsMapped have a\n       registered, hand-vetted comparison between these two stats? Registry-\n       backed only -- never computes a fresh correlation for an arbitrary\n       pair. Both stat_keys come from `query_data`'s dataset-listing mode,\n       for the SAME country. `verdict` is one of `\"SUPPORT\"` (a real,\n       hand-vetted registered pair with no open caveats -- may be treated as\n       a confirmed relationship), `\"QUALIFY\"` (hand-vetted, but the evidence\n       carries real caveats -- e.g. no robustness check for outliers, or an\n       unverified geography-level join; read `uncertainty` and `reasons`\n       before presenting it as confirmed), `\"REJECT\"` (a real structural\n       impossibility or a human-vetted \"no\" -- the two stats share no\n       geography level at all, or a reviewer rejected this exact pairing),\n       or `\"INSUFFICIENT\"` (not registered, not ruled out either --\n       StatsMapped genuinely hasn't vetted this pair; never treat this as\n       \"probably comparable\"). `uncertainty` names 4 separate dimensions\n       (data_quality, comparability, statistical_strength,\n       causal_strength) -- `causal_strength` is always `\"not_established\"`,\n       since no comparison here implies causation regardless of verdict.\n       `comparable` (DEPRECATED, kept only for callers that haven't\n       migrated) collapses `verdict` to the old 3-way yes/no/unknown --\n       `\"yes\"` for both `SUPPORT` and `QUALIFY` (both mean \"hand-vetted\",\n       the old `comparable` meaning this field has always carried; the\n       caveats a `QUALIFY` pair carries live in `uncertainty`/`reasons`,\n       not in demoting `comparable`), `\"no\"` for `REJECT`, `\"unknown\"` for\n       `INSUFFICIENT`. Prefer `verdict` directly when you need to\n       distinguish a fully-confirmed `SUPPORT` from a caveated `QUALIFY`.\n       Read `reasons` before presenting any answer other than `\"SUPPORT\"`\n       as unqualified.\n    4. None of the above given: lists every registered cross-dataset\n       comparison pair for one country -- e.g. \"median sale price vs new\n       dwelling completions per 1,000 residents\". A small, hand-curated set,\n       not an arbitrary-pair engine: pass one of the returned `pair_key`\n       values to mode 2 for the real correlation and axis detail.\n\n       `level` is only meaningful together with `stat_key` (mode 1); giving\n       it without `stat_key` raises rather than silently dropping it and\n       falling through to mode 4's unrelated pair listing.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"stat_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Stat Key"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Level"},"pair_key":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Pair Key"},"stat_key_a":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Stat Key A"},"stat_key_b":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Stat Key B"},"country":{"default":"ireland","title":"Country","type":"string"}},"title":"compareArguments"}},{"name":"explain_metric","description":"Definition, methodology and standing caveats for ONE stat ('ireland' or\n    'united-kingdom') -- never a current figure. Call this when the question is\n    about what a metric MEANS or how it's measured (\"how is the claimant count\n    defined\", \"is this a mean or a median\"), not about a specific area's value --\n    `query_data`/`compare` already answer that. `stat_key` comes\n    from `query_data(country=...)` for the SAME country.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"stat_key":{"title":"Stat Key","type":"string"},"country":{"default":"ireland","title":"Country","type":"string"}},"required":["stat_key"],"title":"explain_metricArguments"}},{"name":"list_areas","description":"List every geography at one boundary level, for one country ('ireland'\n    or 'united-kingdom'). `level` defaults to \"county\" (Ireland's 26 counties);\n    the UK's own primary level is \"lad\" (local authority districts), not\n    \"county\". Other levels exist per country (e.g. Ireland's \"local_authority\",\n    \"garda_division\") -- see a dataset's own `compatible_levels` from\n    `query_data` for which levels a given stat is actually published at.\n    Returns each area's `id` (used by `query_data`'s area-scoped modes,\n    always paired with the SAME `country`) and `name`.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"level":{"default":"county","title":"Level","type":"string"},"country":{"default":"ireland","title":"Country","type":"string"}},"title":"list_areasArguments"}},{"name":"query_data","description":"Three modes, depending on which of `area_id`/`dataset` are given --\n    consolidates what were three separate tools (list_datasets,\n    list_area_datasets, get_dataset_for_area) behind one, since they are all\n    really \"how do I get data\" at different levels of specificity:\n\n    1. Neither `area_id` nor `dataset`: lists every dataset (stat) StatsMapped\n       tracks for one country ('ireland' or 'united-kingdom'), with its key,\n       human label, and which geography levels it can be shown at. Ireland and\n       the UK track genuinely different datasets -- call this first for the\n       right country before assuming a stat_key exists there, to find the\n       right `stat_key` for `compare`'s ranking mode.\n    2. `area_id` given, `dataset` omitted: lists every dataset available for\n       that one area (e.g. \"county:kerry\" for Ireland, \"uk:lad:e09000033\" for\n       the UK), with its latest figure, year-on-year change, and caveat labels\n       only (not full caveat text -- use mode 3 for the full detail on any one\n       dataset that matters). `area_id` comes from `list_areas`; `country`\n       must match whichever country that call used, or this simply 404s\n       (\"unknown geography\").\n    3. Both `area_id` and `dataset` given: full detail for one dataset in one\n       area -- the latest figure, a written summary, full caveat text, and (if\n       `history_months` is set) recent history. `dataset` is a `series_key`\n       from mode 2's own response. `history_months` means actual months of\n       history (0 = everything) -- e.g. 24 returns 2 years of an annual\n       series, not 24 years. `country` must match `area_id`'s own country.\n\n       `dataset` and `history_months` are only meaningful together with\n       `area_id` (and, for `history_months`, `dataset` too, since it only\n       applies to mode 3); giving either without its real precondition\n       raises rather than silently dropping the argument and dispatching to\n       the wrong mode.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"area_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Area Id"},"dataset":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Dataset"},"history_months":{"default":0,"title":"History Months","type":"integer"},"country":{"default":"ireland","title":"Country","type":"string"}},"title":"query_dataArguments"}}],"scan":{"score":91,"grade":"A","scanned_at":"2026-10-13T14:42:02.229Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-13T14:42:02.198Z","components":{"code":{"score":25,"max":25,"notes":["5 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1012ms"]},"poisoning":{"score":13,"max":15,"notes":["4 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":15,"max":15,"notes":["last push 3 days ago"]},"identity":{"score":8,"max":10,"notes":["endpoint served from the registry-verified namespace domain"]}},"findings":[{"id":"poison.long-description","severity":"low","component":"poisoning","title":"Unusually long tool description (over 2,000 characters)","evidence":"tool compare: …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 the SAME country. 3. Both `stat_key_a` and `stat_key_b` given: does StatsMapped have a registered, hand-vetted comparison between these two stats? Registry- backed only -- never computes a fresh correlation for an arbitrary pair. Both stat_keys come from `query_data`'s dataset-listing mode, for the SAME country. `verdict` is one of `\"SUPPORT\"` (a real, hand-vetted registered pair with no open caveats -- may be treated as a confirmed relationship), `\"QUALIFY\"` (hand-vetted, but the evidence carries real caveats -- e.g. no robustness check for outliers, or an unverified geography-level join; read `uncertainty` and `reasons` before presenting it as confirmed), `\"REJECT\"` (a real structural impossibility or a human-vetted \"no\" -- the two stats share no geography level at all, or a reviewer rejected this exact pairing), or `\"INSUFFICIENT\"` (not registered, not ruled out either -- StatsMapped genuinely hasn't vetted this pair; never treat this as \"probably comparable\"). `uncertainty` names 4 separate dimensions (data_quality, comparability, statistical_strength, causal_strength) -- `causal_strength` is always `\"not_established\"`, since no comparison here implies causation regardless of verdict. `comparable` (DEPRECATED, kept only for callers that haven't migrated) collapses `verdict` to the old 3-way yes/no/unknown -- `\"yes\"` for both `SUPPORT` and `QUALIFY` (both mean \"hand-vetted\", the old `comparable` meaning this field has always carried; the caveats a `QUALIFY` pair carries live in `uncertainty`/`reasons`, not in demoting `comparable`), `\"no\"` for `REJECT`, `\"unknown\"` for `INSUFFICIENT`. Prefer `verdict` directly when you need to distinguish a fully-confirmed `SUPPORT` from a caveated `QUALIFY`. Read `reasons` before presenting any answer other than `\"SUPPORT\"` as unqualified. 4. None of the above given: lists every registered cross-dataset comparison pair for one country -- e.g. \"median sale price vs new dwelling completions per 1,000 residents\". A small, hand-curated set, not an arbitrary-pair engine: pass one of the returned `pair_key` values to mode 2 for the real correlation and axis detail. `level` is only meaningful together with `stat_key` (mode 1); giving it without `stat_key` raises rather than silently dropping it and falling through to mode 4's unrelated pair listing. …"}],"inputs":{"probes":[{"url":"https://mcp.statsmapped.com/mcp","reachable":true,"authRequired":false,"latencyMs":1012,"serverInfo":{"name":"statsmapped","version":""}}],"packages":[{"registryType":"pypi","identifier":"statsmapped-mcp","version":"0.3.2","found":true,"weeklyDownloads":457,"license":"MIT","dependencyCount":3,"publishedAt":"2026-10-10T05:38:31.397444Z","repositoryUrl":"https://statsmapped.com/ireland/sources"}],"repo":{"found":true,"owner":"ActiveGuy","repo":"statsmapped-mcp","archived":false,"pushedAt":"2026-10-10T05:37:44Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/92592872?v=4","ownerCreatedAt":"2021-10-15T15:13:16Z","license":"MIT"},"icon":{"url":"https://statsmapped.com/static/favicon.png?v=d52f64a4653ed5b4","source":"site","width":216,"height":216},"presence":{"stars":0,"forks":0,"downloadsWeek":457,"license":"MIT","lastPushAt":"2026-10-10T05:37:44.000Z","score":36}}}},"grade_history":[],"reviews":[]}