{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-06T04:06:40.221Z","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp","markdownUrl":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp.md","server":{"slug":"com-statsmapped-public-data","name":"StatsMapped Public Data","registryName":"com.statsmapped/public-data","description":"Public statistics for Ireland and the UK: housing, crime, health, economy, welfare, with caveats.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"statsmapped-mcp","type":"pypi","identifier":"statsmapped-mcp","withdrawn":false,"url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp","version":"0.3.2","transport":"stdio","scoredAt":"2026-11-05T08:20:11.964Z"},"score":{"total":85,"tier":"high trust","status":"scored","weekDelta":18,"history":[{"date":"2026-11-05","total":85},{"date":"2026-11-04","total":70},{"date":"2026-11-03","total":85},{"date":"2026-11-02","total":69},{"date":"2026-11-01","total":84},{"date":"2026-10-31","total":68},{"date":"2026-10-30","total":83},{"date":"2026-10-29","total":67},{"date":"2026-10-28","total":67},{"date":"2026-10-27","total":81},{"date":"2026-10-26","total":81},{"date":"2026-10-25","total":65},{"date":"2026-10-24","total":80},{"date":"2026-10-23","total":79},{"date":"2026-10-22","total":79},{"date":"2026-10-21","total":75},{"date":"2026-10-20","total":75},{"date":"2026-10-19","total":75},{"date":"2026-10-18","total":75},{"date":"2026-10-17","total":75},{"date":"2026-10-16","total":75},{"date":"2026-10-15","total":75},{"date":"2026-10-14","total":75},{"date":"2026-10-13","total":49},{"date":"2026-10-12","total":49}]},"categories":[{"name":"Supply Chain Security","score":100,"verdict":"partial","reasons":["No malware found by supply-chain analysis.","No known CVEs affecting this package version or its production dependencies.","Runs hatchling.build at install time, a recognised build step with no custom scripting around it.","1 of 31 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.allowlisted","args":{"tool":"hatchling.build","hooks":"build_backend"}},{"code":"dephealth.assessed","args":{"deps":"31","unhealthy":"1"}}]},{"name":"Provenance & Transparency","score":97,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Cryptographically verified build provenance (signed, bound to ActiveGuy/statsmapped-mcp).","Clear OSI-approved license (MIT).","Actively maintained (last published 5 days ago).","Disclosure check failed: no security disclosure policy was found in the source repository."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.verified","args":{"repo":"ActiveGuy/statsmapped-mcp"}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"5"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":56,"verdict":"fail","reasons":["AI-judged instruction clarity (excellent).","Context-footprint check failed: tool/resource definitions use about 1887 tokens (~471/item across 4 items; 4 tools + 0 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"excellent"}},{"code":"schema.footprint_heavy","args":{"avg":"471","items":"4","tools":"4","tokens":"1887","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":73,"verdict":"partial","reasons":["Stability observed for 22 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"22"}}]},{"name":"Tool Coverage","score":71,"verdict":"fail","reasons":["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."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"0"}},{"code":"toolquality.output_present","args":{"pct":"100"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 4 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 4 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_none","args":{"tools":"4"}},{"code":"toolsafety.manipulation_clean","args":{"units":"4","judged":"4"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a current MCP spec version (2026-07-28)."],"codes":[{"code":"protocol.current","args":{"version":"2026-07-28"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"mcp","type":"remote","identifier":"https://mcp.statsmapped.com/mcp","withdrawn":false,"score":72,"current":false,"url":"https://verifymcp.io/servers/com-statsmapped-public-data/mcp","markdownUrl":"https://verifymcp.io/servers/com-statsmapped-public-data/mcp.md"},{"slug":"statsmapped-mcp","type":"pypi","identifier":"statsmapped-mcp","withdrawn":false,"score":85,"current":true,"url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp","markdownUrl":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp.md"}],"facts":[{"label":"Registry","value":"pypi"},{"label":"Package","value":"statsmapped-mcp"},{"label":"Version","value":"0.3.2"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"query_data","title":null,"description":"Three modes, depending on which of `area_id`/`dataset` are given --\nconsolidates what were three separate tools (list_datasets,\nlist_area_datasets, get_dataset_for_area) behind one, since they are all\nreally \"how do I get data\" at different levels of specificity:\n\n1. 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.\n2. `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\").\n3. 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.","inputs":[{"name":"area_id","type":null,"required":false,"description":null},{"name":"country","type":"string","required":false,"description":null},{"name":"dataset","type":null,"required":false,"description":null},{"name":"history_months","type":"integer","required":false,"description":null}],"outputs":[{"name":"result","type":null,"required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":522},{"name":"list_areas","title":null,"description":"List every geography at one boundary level, for one country ('ireland'\nor 'united-kingdom'). `level` defaults to \"county\" (Ireland's 26 counties);\nthe 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.\nReturns each area's `id` (used by `query_data`'s area-scoped modes,\nalways paired with the SAME `country`) and `name`.","inputs":[{"name":"country","type":"string","required":false,"description":null},{"name":"level","type":"string","required":false,"description":null}],"outputs":[{"name":"result","type":"array","required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":161},{"name":"compare","title":null,"description":"Four modes, depending on which arguments are given -- consolidates what\nwere four separate tools (rank_areas, list_comparisons, get_comparison,\ncheck_comparability) behind one, since they are all really \"how does this\nstat compare\" at different scopes. Exactly one mode's arguments should be\ngiven; 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\nrather than silently guessing which mode was meant.\n\n1. `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.\n2. `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.\n3. 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 f…","inputs":[{"name":"country","type":"string","required":false,"description":null},{"name":"level","type":null,"required":false,"description":null},{"name":"pair_key","type":null,"required":false,"description":null},{"name":"stat_key","type":null,"required":false,"description":null},{"name":"stat_key_a","type":null,"required":false,"description":null},{"name":"stat_key_b","type":null,"required":false,"description":null}],"outputs":[{"name":"result","type":null,"required":true,"description":null}],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":1080},{"name":"explain_metric","title":null,"description":"Definition, methodology and standing caveats for ONE stat ('ireland' or\n'united-kingdom') -- never a current figure. Call this when the question is\nabout what a metric MEANS or how it's measured (\"how is the claimant count\ndefined\", \"is this a mean or a median\"), not about a specific area's value --\n`query_data`/`compare` already answer that. `stat_key` comes\nfrom `query_data(country=...)` for the SAME country.","inputs":[{"name":"country","type":"string","required":false,"description":null},{"name":"stat_key","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":124}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T08:20:11.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"verified","label":"Verified","reason":"verified","reasonLabel":"Verified","discovery":"attestation_endpoint","discoveryLabel":"Registry attestation endpoint","sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[{"hook":"build_backend","tier":"allowlisted"}],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":31,"partial":false,"deprecated":null,"stale":null,"noRepo":1}},"mismatches":[],"changelog":{"trackingSince":"2026-10-12","recent":[{"id":"chg_01a1aacb-4a6a-7ec7-959c-1aa032fb5020","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a1aacb-4a6a-7ec7-959c-1aa032fb5020"},{"id":"chg_01a1aacb-4a6e-719a-9d51-c4e6a07815b0","kind":"score.total_changed","summary":"Trust score (70 → 85)","materiality":"functional","direction":"improvement","scoreDelta":15,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a1aacb-4a6e-719a-9d51-c4e6a07815b0"},{"id":"chg_01a1a63a-255a-7268-bc16-ce90e2233c71","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a1a63a-255a-7268-bc16-ce90e2233c71"},{"id":"chg_01a1a63a-255b-745e-b174-05aad9002308","kind":"score.total_changed","summary":"Trust score (85 → 70)","materiality":"functional","direction":"regression","scoreDelta":-15,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a1a63a-255b-745e-b174-05aad9002308"},{"id":"chg_01a1a0e9-aac4-7a55-82c5-8309511d62d1","kind":"score.total_changed","summary":"Trust score (69 → 85)","materiality":"functional","direction":"improvement","scoreDelta":16,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a1a0e9-aac4-7a55-82c5-8309511d62d1"},{"id":"chg_01a1a0e9-aac0-7ecb-ba3b-c71330367d6a","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a1a0e9-aac0-7ecb-ba3b-c71330367d6a"},{"id":"chg_01a19bed-ddf4-73f7-9e70-0369a1b6dfea","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a19bed-ddf4-73f7-9e70-0369a1b6dfea"},{"id":"chg_01a19bed-ddf5-73c4-a4dc-6403cf0e823c","kind":"score.total_changed","summary":"Trust score (84 → 69)","materiality":"functional","direction":"regression","scoreDelta":-15,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a19bed-ddf5-73c4-a4dc-6403cf0e823c"},{"id":"chg_01a196cb-3ab5-7d35-9fb1-6303e1097160","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a196cb-3ab5-7d35-9fb1-6303e1097160"},{"id":"chg_01a196cb-3abc-7662-87af-c39081f2c906","kind":"score.total_changed","summary":"Trust score (68 → 84)","materiality":"functional","direction":"improvement","scoreDelta":16,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a196cb-3abc-7662-87af-c39081f2c906"},{"id":"chg_01a1919e-1918-70a8-841e-9d851f53f90f","kind":"score.total_changed","summary":"Trust score (83 → 68)","materiality":"functional","direction":"regression","scoreDelta":-15,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a1919e-1918-70a8-841e-9d851f53f90f"},{"id":"chg_01a1919e-1916-72af-bff8-128985c4f5d8","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a1919e-1916-72af-bff8-128985c4f5d8"},{"id":"chg_01a18bdc-9a44-7052-9395-116b9e240023","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a18bdc-9a44-7052-9395-116b9e240023"},{"id":"chg_01a18bdc-9a45-7a20-98ae-9c87d8dcadd5","kind":"score.total_changed","summary":"Trust score (67 → 83)","materiality":"functional","direction":"improvement","scoreDelta":16,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a18bdc-9a45-7a20-98ae-9c87d8dcadd5"},{"id":"chg_01a1822c-4d2a-723c-85e3-c5d31b19ebe8","kind":"score.total_changed","summary":"Trust score (81 → 67)","materiality":"functional","direction":"regression","scoreDelta":-14,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a1822c-4d2a-723c-85e3-c5d31b19ebe8"},{"id":"chg_01a1822c-4d28-7135-af64-ee43f845fc47","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a1822c-4d28-7135-af64-ee43f845fc47"},{"id":"chg_01a17773-ad7f-7cc7-bdae-1b0512431e86","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a17773-ad7f-7cc7-bdae-1b0512431e86"},{"id":"chg_01a17773-ad82-75bb-b874-4464138829de","kind":"score.total_changed","summary":"Trust score (65 → 81)","materiality":"functional","direction":"improvement","scoreDelta":16,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a17773-ad82-75bb-b874-4464138829de"},{"id":"chg_01a172b7-c6db-7824-b039-ae1a59358771","kind":"score.total_changed","summary":"Trust score (80 → 65)","materiality":"functional","direction":"regression","scoreDelta":-15,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a172b7-c6db-7824-b039-ae1a59358771"},{"id":"chg_01a172b7-c69f-7ba8-a69c-8fbd2e55693e","kind":"check.unverifiable","summary":"Malware scan (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp#chg-chg_01a172b7-c69f-7ba8-a69c-8fbd2e55693e"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp/changelog.json"},"links":{"html":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp","markdown":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp.md","changelogJson":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp/changelog.json","changelogRss":"https://verifymcp.io/servers/com-statsmapped-public-data/statsmapped-mcp.xml","external":[{"label":"PyPI project","href":"https://pypi.org/project/statsmapped-mcp/"},{"label":"Socket report","href":"https://socket.dev/pypi/package/statsmapped-mcp"},{"label":"Repository","href":"https://github.com/ActiveGuy/statsmapped-mcp"},{"label":"Website","href":"https://statsmapped.com/"}]}}