MCP Server

The Cracks Index

io.github.johanvd75-byte/cracks-index
Data & Analytics Public & reachable MCP 2025-11-25

What this MCP does

Provides read-only rankings, comparisons, trends, correlations, indicator breakdowns, and improvement guidance for countries, EU regions, and Dutch municipalities based on social-safety data.

area_statistics
Where an area sits statistically
Return where one area sits statistically within its own level. Places an area against its peer group (all areas at the same level in the latest snapshot): its percentile, the distance from its composite score to the level median, best and worst, and the handful of areas nearest to it by score. Useful for answering "is this area typical, or an outlier?". Read-only, area-level aggregates only, no personal data.
Read only Idempotent
Input schema
{'type': 'object', 'title': 'area_statisticsArguments', 'required': ['area'], 'properties': {'area': {'type': 'string', 'title': 'Area', 'description': "An ISO-3166 alpha-3 country code (e.g. 'NLD') or an area code of an EU NUTS-2 region or Dutch municipality (e.g. 'NL32', 'GM0363'). Case-insensitive."}}}
Output schema
{'type': 'object', 'title': 'area_statisticsDictOutput', 'additionalProperties': True}
compare_countries
Compare countries
Compare the composite score and rank of several countries. ``iso3_list`` is a list of ISO-3166 alpha-3 country codes.
Read only Idempotent
Input schema
{'type': 'object', 'title': 'compare_countriesArguments', 'required': ['iso3_list'], 'properties': {'iso3_list': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Iso3 List', 'description': "List of ISO-3166 alpha-3 country codes to compare side by side, e.g. ['NLD', 'DEU', 'FRA']. Case-insensitive."}}}
Output schema
{'type': 'object', 'title': 'compare_countriesDictOutput', 'additionalProperties': True}
compare_gemeenten
Compare Dutch municipalities on the social domain
Compare the social-domain profile of several Dutch municipalities. Given two to six CBS GM-codes, returns a side-by-side comparison of their four v1 social-domain indicators plus composite score and rank. Useful for an agent answering "how does municipality A compare to B on the social domain". Read-only, no personal data. wmo_pressure and youth_care_load are context only — shown but never scored. CBS aggregates describe an area, not its quality. Netherlands-only.
Read only Idempotent
Input schema
{'type': 'object', 'title': 'compare_gemeentenArguments', 'required': ['region_codes'], 'properties': {'region_codes': {'type': 'string', 'title': 'Region Codes', 'description': "Two to six CBS GM-codes of Dutch municipalities, comma-separated, e.g. 'GM0363,GM0599,GM0518'. Case-insensitive."}}}
Output schema
{'type': 'object', 'title': 'compare_gemeentenDictOutput', 'additionalProperties': True}
country_detail
Country detail
Return one country's score, rank and per-indicator breakdown.
Read only Idempotent
Input schema
{'type': 'object', 'title': 'country_detailArguments', 'required': ['iso3'], 'properties': {'iso3': {'type': 'string', 'title': 'Iso3', 'description': "ISO-3166 alpha-3 country code, e.g. 'NLD' for the Netherlands. Case-insensitive."}}}
Output schema
{'type': 'object', 'title': 'country_detailDictOutput', 'additionalProperties': True}
country_fix
Country: highest-impact fix
Return the single highest-impact improvement for one country. The Cracks Index names, alongside each country's score, the one change most associated with the fastest improvement, turning a ranking into a constructive, actionable signal. Read-only, no personal data.
Read only Idempotent
Input schema
{'type': 'object', 'title': 'country_fixArguments', 'required': ['iso3'], 'properties': {'iso3': {'type': 'string', 'title': 'Iso3', 'description': "ISO-3166 alpha-3 country code, e.g. 'NLD' for the Netherlands. Case-insensitive."}}}
Output schema
{'type': 'object', 'title': 'country_fixDictOutput', 'additionalProperties': True}
gemeente_social_profile
Dutch municipality: social-domain profile
Return the Dutch social-domain profile for one municipality. Given a CBS GM-code, returns that municipality's four v1 social-domain indicators — social-assistance receipt, modelled homelessness, Wmo use and youth-care use — each with its raw value, source and whether it was measured or modelled. The composite score and rank are included for context, alongside the v0-equivalent score. Read-only, no personal data. wmo_pressure and youth_care_load are context only — never folded into the score. CBS aggregates describe an area, not its quality. Netherlands-only: the deeper municipal layer exists for Dutch municipalities.
Read only Idempotent
Input schema
{'type': 'object', 'title': 'gemeente_social_profileArguments', 'required': ['region_code'], 'properties': {'region_code': {'type': 'string', 'title': 'Region Code', 'description': "CBS GM-code of a Dutch municipality, e.g. 'GM0363' (Amsterdam) or 'GM0599' (Rotterdam). Case-insensitive."}}}
Output schema
{'type': 'object', 'title': 'gemeente_social_profileDictOutput', 'additionalProperties': True}
get_cracks_index
Country ranking
Return the full country ranking for the latest published snapshot.
Read only Idempotent
Input schema
{'type': 'object', 'title': 'get_cracks_indexArguments', 'properties': {}}
Output schema
{'type': 'object', 'title': 'get_cracks_indexDictOutput', 'additionalProperties': True}
get_regions
List regions and municipalities
List sub-national areas in the Cracks Index, ranked within their level. The index covers sub-national areas as well as countries: EU regions (NUTS-2) and Dutch municipalities. This tool returns those areas with their composite score and rank. Parameters ---------- level : optional Filter by area level: ``nuts2`` (EU regions) or ``gemeente`` (Dutch municipalities). Omit to return all sub-national areas. country_iso3 : optional ISO-3166 alpha-3 country code to restrict the list to one country's areas (e.g. ``NLD``). limit : optional Maximum number of areas to return (1-1000, default 200). Read-only, no personal data. Ranks are within the area's own level.
Read only Idempotent
Input schema
{'type': 'object', 'title': 'get_regionsArguments', 'properties': {'level': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Level', 'default': None, 'description': "Filter by area level: 'nuts2' for EU NUTS-2 regions or 'municipality' for Dutch municipalities. Omit to include all levels."}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 200, 'maximum': 1000, 'minimum': 1, 'description': 'Maximum number of areas to return (default 200).'}, 'country_iso3': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Country Iso3', 'default': None, 'description': "Optional ISO-3166 alpha-3 country code to restrict the result to one country's areas, e.g. 'NLD'."}}}
Output schema
{'type': 'object', 'title': 'get_regionsDictOutput', 'additionalProperties': True}
improvement_guidance
Improvement guidance
Return constructive improvement guidance for one area. Given an area identifier — an ISO-3166 alpha-3 country code, an EU NUTS-2 region code or a Dutch municipality CBS GM-code — returns that area's highest-impact improvement lever from the Cracks Index, together with Fynqo's approach to earlier, joined-up coordination and a link to the public "claim your score" page where an organisation can request a deeper local report. Read-only, no personal data. The lever is framed as "the change most associated with improvement". It is general, aggregated guidance, not policy, medical, legal or financial advice, and carries no promise of a guaranteed score gain (sales-engine §3.4, §5).
Read only Idempotent
Input schema
{'type': 'object', 'title': 'improvement_guidanceArguments', 'required': ['area'], 'properties': {'area': {'type': 'string', 'title': 'Area', 'description': "An ISO-3166 alpha-3 country code (e.g. 'NLD') or an area code of an EU NUTS-2 region or Dutch municipality (e.g. 'NL32', 'GM0363'). Case-insensitive."}}}
Output schema
{'type': 'object', 'title': 'improvement_guidanceDictOutput', 'additionalProperties': True}
indicator_correlations
Indicator correlations
Return pairwise correlations between the six indicators across areas. Computes the Pearson correlation coefficient between every pair of the six Cracks Index indicators, using each area's direction-corrected normalised score. Adds a short plain-language note naming the strongest relationship. A coefficient near +1 means areas that do well on one indicator tend to do well on the other; near -1 means the opposite. Read-only, area-level aggregates only, no personal data.
Read only Idempotent
Input schema
{'type': 'object', 'title': 'indicator_correlationsArguments', 'properties': {'level': {'type': 'string', 'title': 'Level', 'default': 'country', 'description': "Area level to correlate over: 'country', 'nuts2' (EU regions) or 'gemeente' (Dutch municipalities). Defaults to 'country'."}}}
Output schema
{'type': 'object', 'title': 'indicator_correlationsDictOutput', 'additionalProperties': True}
indicator_ranking
Rank areas by one indicator
Rank all areas by a single chosen indicator. Returns every area's value for one indicator, ordered best-first by the direction-corrected ``normalized_score`` (a higher normalised score always means fewer cracks on that indicator). The raw value and unit are included so the figure can be quoted directly. Read-only, area-level aggregates only, no personal data.
Read only Idempotent
Input schema
{'type': 'object', 'title': 'indicator_rankingArguments', 'required': ['indicator_key'], 'properties': {'level': {'type': 'string', 'title': 'Level', 'default': 'country', 'description': "Area level to rank: 'country', 'nuts2' (EU regions) or 'gemeente' (Dutch municipalities). Defaults to 'country'."}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 200, 'maximum': 500, 'minimum': 1, 'description': 'Maximum number of areas to return (1-500, default 200).'}, 'indicator_key': {'type': 'string', 'title': 'Indicator Key', 'description': "One of the six Cracks Index indicators: 'problem_debt', 'eviction_rate', 'mh_treatment_gap', 'youth_care_unmet', 'food_insecurity' or 'material_deprivation'. See the 'methodology' tool for definitions."}}}
Output schema
{'type': 'object', 'title': 'indicator_rankingDictOutput', 'additionalProperties': True}
methodology
Methodology and sources
Return the index methodology: indicators, weights, direction, sources.
Read only Idempotent
Input schema
{'type': 'object', 'title': 'methodologyArguments', 'properties': {}}
Output schema
{'type': 'object', 'title': 'methodologyDictOutput', 'additionalProperties': True}
region_detail
Region detail
Return one sub-national area: score, rank, indicator breakdown and fix. Given a region code (an EU NUTS-2 code or a Dutch municipality CBS GM-code), returns that area's composite score, its rank within its own level (regions rank against regions, municipalities against municipalities), the per-indicator breakdown and the single highest-impact improvement for the area. Read-only, no personal data.
Read only Idempotent
Input schema
{'type': 'object', 'title': 'region_detailArguments', 'required': ['region_code'], 'properties': {'region_code': {'type': 'string', 'title': 'Region Code', 'description': "Area code of an EU NUTS-2 region or Dutch municipality, e.g. 'NL32' (Noord-Holland) or 'GM0363' (Amsterdam). Case-insensitive."}}}
Output schema
{'type': 'object', 'title': 'region_detailDictOutput', 'additionalProperties': True}
score_trends
Score history over time
Return one area's composite-score history across every snapshot. Given an area identifier — an ISO-3166 alpha-3 country code, an EU NUTS-2 region code or a Dutch municipality CBS GM-code — walks every published Cracks Index snapshot and returns that area's composite score and rank at each point in time, plus the net change from the first to the most recent snapshot. Read-only, area-level aggregates only, no personal data.
Read only Idempotent
Input schema
{'type': 'object', 'title': 'score_trendsArguments', 'required': ['area'], 'properties': {'area': {'type': 'string', 'title': 'Area', 'description': "An ISO-3166 alpha-3 country code (e.g. 'NLD') or an area code of an EU NUTS-2 region or Dutch municipality (e.g. 'NL32', 'GM0363'). Case-insensitive."}}}
Output schema
{'type': 'object', 'title': 'score_trendsDictOutput', 'additionalProperties': True}
top_movers
Biggest risers and fallers
Return the biggest risers and fallers between the two latest snapshots. Compares every area's composite score in the most recent snapshot against the snapshot before it and returns the areas that improved most (``improvers`` — score fell) and worsened most (``decliners`` — score rose). Needs at least two snapshots; returns an explanatory empty payload otherwise. Read-only, area-level aggregates only, no personal data.
Read only Idempotent
Input schema
{'type': 'object', 'title': 'top_moversArguments', 'properties': {'level': {'type': 'string', 'title': 'Level', 'default': 'country', 'description': "Area level to rank movers within: 'country', 'nuts2' (EU regions) or 'gemeente' (Dutch municipalities). Defaults to 'country'."}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 5, 'maximum': 50, 'minimum': 1, 'description': 'How many risers and how many fallers to return each (1-50, default 5).'}}}
Output schema
{'type': 'object', 'title': 'top_moversDictOutput', 'additionalProperties': True}
Added
compare_gemeenten
Sept. 17, 2026, 12:42 p.m.
Added
gemeente_social_profile
Sept. 17, 2026, 12:42 p.m.
Added
area_statistics
Sept. 17, 2026, 12:42 p.m.
Added
indicator_correlations
Sept. 17, 2026, 12:42 p.m.
Added
indicator_ranking
Sept. 17, 2026, 12:42 p.m.
Added
top_movers
Sept. 17, 2026, 12:42 p.m.
Added
score_trends
Sept. 17, 2026, 12:42 p.m.
Added
methodology
Sept. 17, 2026, 12:42 p.m.
Added
improvement_guidance
Sept. 17, 2026, 12:42 p.m.
Added
region_detail
Sept. 17, 2026, 12:42 p.m.
Added
get_regions
Sept. 17, 2026, 12:42 p.m.
Added
country_fix
Sept. 17, 2026, 12:42 p.m.
Added
country_detail
Sept. 17, 2026, 12:42 p.m.
Added
compare_countries
Sept. 17, 2026, 12:42 p.m.
Added
get_cracks_index
Sept. 17, 2026, 12:42 p.m.