Use ImmigrationDB through MCP
A read-only MCP server at https://immigrationdb.com/mcp plus direct file downloads, over the same countries, cities, visa routes, passport answers, reports and sources used by the HTML and JSON release.
Current access Live MCP endpoint, no key required
Connect any MCP client to https://immigrationdb.com/mcp — a read-only Streamable HTTP endpoint speaking MCP 2026-07-28 over the same release data as this site. No account, key or setup; rate limits and response caps keep it fair. Direct file downloads below remain for bulk reads.
- City shards
- 39 countries
- Cities
- 27,086
- Mode
- Read only
Download the data
Plain HTTPS fetches, no runtime required. Sizes are uncompressed bytes on disk; every file is also served gzip-compressed and transfers several times smaller.
| Artifact | Path | Size | What it contains |
|---|---|---|---|
| MCP index | /mcp/index.json | 33.6 MB | Snapshot identity, country pages, reports, entry rules and the shard map for all 39 countries |
| City shards | /mcp/cities/{country}.json | 2469.5 MB across 39 files | Full city records with claim-level facts; largest shards: DE 348.3 MB, DE 348.2 MB, IT 247.0 MB |
| Bounded query index | /mcp/query/index.json | 81 KB | Compact metric and country partitions used by the local agent tools |
| Fact lines | /mcp/query/facts.ndjson | 800.4 MB | Offset-addressable fact records; the runtime reads only selected lines |
| MCP catalog | /data/mcp/catalog.json | 7.7 MB | The 15-tool contract with input schemas and the machine-surface map |
| Entry-rule index | /data/mcp/entry-rules/index.json | 31 KB | Passport entry-rule discovery map |
| Source catalog | /data/sources/index.json | 45.4 MB | Every cited source row with URL, publisher and dates |
| Metric dictionary | /data/metrics.json | 153 KB | Definitions, units and coverage for every metric_id |
The complete corpus is deliberately not published as one file. Fetch the shards you need, or use the bounded query index when an agent needs one metric across countries: /mcp/query/index.json points to compact country and metric partitions plus offset-addressable facts.ndjson. The per-entity twins remain available for exact page reads. llms.txt is the start-here index for agents.
Tool catalog
Fifteen bounded tools form the public MCP contract; input schemas ship in the MCP catalog. Missing values and incompatible comparisons remain explicit.
| Tool | Input | Purpose |
|---|---|---|
search_destinations | query, limit, cursor | Search admitted ImmigrationDB country and city identities with bounded cursor pagination. |
get_city | country, slug | Get one admitted city with canonical URL, claim-level facts and source metadata. |
get_country | cc | Get one admitted country page record and official visa-route handoffs. |
search_visa_routes | destination, purpose, limit, cursor | Search admitted destination visa and residence routes without inventing missing eligibility data. |
get_legal_route | destination, route_id | Get one admitted legal-route record with its official source. |
search_entry_rules | passport, destination, purpose, limit, cursor | Search passport entry rules from the published record; unknown and unavailable decisions remain explicit. |
get_entry_rule | passport, destination | Get one passport entry rule using the canonical legal/entry URI identity. |
list_reports | category, limit, cursor | List public ImmigrationDB reports by optional category with bounded cursor pagination. |
get_report | report_id | Get one public report envelope with canonical and machine-resource URLs. |
resolve_city | query, limit | Resolve a natural-language city query to bounded ranked public candidates without silently selecting an ambiguous country. |
get_city_fact | country, slug, metric_id | Return exactly one public city fact with value, unit, geographic grain, dates, source and snapshot provenance. |
list_metrics | country, block, query, comparison_eligible, limit, cursor | List reviewed metric definitions and observed public snapshot coverage with bounded filters and pagination. |
list_blocks | limit, cursor | List stable reviewed metric blocks with observed metric, fact and country coverage. |
compare_cities | cities, metric_ids | Compare canonical public cities on compatible metric definitions with provenance for every cell. |
search_facts | countries, filters, sort_metric, sort_order, limit, cursor, diagnostic | Run bounded deterministic numeric filters over eligible public city facts with explicit counts and provenance. |
Stable resource URIs
immigrationdb://catalogCounts and discoverable resources.immigrationdb://country/deCountry record and route handoffs.immigrationdb://city/de/berlinCity facts with source metadata.immigrationdb://legal/routes/de/highly-skilledOne destination route family.immigrationdb://legal/entry/lv/usOne passport-entry answer.immigrationdb://report/warmest-published-cities-across-current-coverageReport rows, method and sources.Example requests
Resolve a city
{ "tool": "resolve_city", "arguments": { "query": "Berlin, Germany", "limit": 5 } }Get one fact
{ "tool": "get_city_fact", "arguments": { "country": "de", "slug": "berlin", "metric_id": "population_total" } }Compare cities
{ "tool": "compare_cities", "arguments": { "cities": [{ "country": "de", "slug": "berlin" }, { "country": "de", "slug": "munich" }], "metric_ids": ["population_total"] } }Find matching facts
{ "tool": "search_facts", "arguments": { "countries": ["de"], "filters": [{ "metric_id": "population_total", "op": ">", "value": 100000 }], "sort_metric": "population_total", "sort_order": "desc", "limit": 20 } }Response contract
Every response carries the snapshot ID, generation date and canonical origin. Facts retain value, unit, geographic grain, observation date, verification date, source ID, source URL and grade.
- Unknown or blocked values are not synthesized.
- HTML, JSON, Markdown and MCP use the same canonical identifiers.
- Data-only records stay outside public discovery.
- Errors include the requested identifier and snapshot ID.
Inspect the raw contract
Use the MCP catalog and index to discover the exact country shard or entity record you need.