Developers
The API and MCP server
Canada Service Map has a read-only Model Context Protocol (MCP) server for AI assistants, and a JSON API. Both are free and need no key. They return the same facts as the pages, each with a link to its page and the licence of its source.
By Mahmoud Halat, updated
MCP server
The endpoint is https://canadaservicemap.ca/mcp. It speaks Streamable HTTP, keeps no session, and every tool only reads.
find_service- Who handles a need where someone lives: the service, the public body, the official link and the nearest places. Takes
queryand, if you have it,near. get_service- One service by
id: who handles it, its official links with the date each was checked, and its checked facts. Addprovincefor one province or territory. list_services- Up to 25 services a call, filtered by
category,levelorquery. search_bodies- Public bodies by name (
query), optionally in oneprovinceor territory. get_body- One public body by slug or
id: its websites, the bodies above and below it, the services it delivers and the places it runs. places_near- The nearest places of one kind to a place. Both
nearandtype(a kind of place, such aslibrary) are required.
Every result includes url, the address of its page on this site, and source, with its licence. Resource templates return the Markdown copy of a service, a service in a province, a city, a kind of place in a city, or a public body.
Connect a client
claude mcp add --transport http canada-service-map https://canadaservicemap.ca/mcp{
"mcpServers": {
"canada-service-map": {
"type": "http",
"url": "https://canadaservicemap.ca/mcp"
}
}
}{
"mcpServers": {
"canada-service-map": {
"url": "https://canadaservicemap.ca/mcp"
}
}
}{
"mcpServers": {
"canada-service-map": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://canadaservicemap.ca/mcp"
]
}
}
}JSON API
curl "https://canadaservicemap.ca/api/find?q=passport&near=Halifax"GET /api/find?q=&near=- What someone needs, in English or French, and where, if you know: the service, who handles it, the official link and places nearby.
GET /api/services- Up to 25 services, filtered by
category,levelorq. GET /api/services/{id}- One service, by its id, such as
passport, withprovinceif you want one. GET /api/bodies/search?q=- Public bodies by name, with
provinceif you want one. GET /api/bodies/{id}- One public body, by slug or id.
GET /api/places?near=&type=- The nearest places of one kind. Both
nearandtypeare required. GET /api/health- Whether the API is up.
Every parameter and response is in the OpenAPI description, https://canadaservicemap.ca/openapi.json. Answers are JSON, any website may call the API from the browser, and nothing needs a key.
Markdown and JSON copies of every page
Every page has a Markdown copy at its address plus .md, and a JSON copy at .json. The JSON copy holds the page's facts with their sources, checked dates, licence and a ready citation. Or ask for the page itself with Accept: text/markdown or Accept: application/json.
curl https://canadaservicemap.ca/services/passport.md
curl -H "Accept: application/json" https://canadaservicemap.ca/services/passportThe home page's copies are /index.md and /index.json. A short guide for AI assistants is at /llms.txt, and every service with its one-line answer is at /llms-full.txt.
Files agents look for
- /.well-known/mcp/server-card.json: the MCP server card
- /.well-known/api-catalog: the API catalog (RFC 9727)
- /.well-known/ai-catalog.json: the AI catalog, listing the MCP server and the API
- /.well-known/agent-skills/index.json: an agent skill for finding a Canadian public service
- /openapi.json: the OpenAPI description of the JSON API
- /llms.txt: what the site is and how to cite it
- /sitemap.xml: every page worth indexing
Fair use
Use it as much as you need, within 60 requests a minute from one IP address, across the API and the MCP server together. Past that, you get HTTP 429 with a Retry-After header that says when to try again.
Lists return at most 25 results. There is no bulk export: the data stays on the site, and each answer links the page it came from.
How to cite
Link the page in each result's url, with the date it was checked. Every page has a ready citation, like this one:
Canada Service Map, "Passport renewal and applications in Canada", checked 13 October 2026, https://canadaservicemap.ca/services/passportEach record keeps the licence of its source, listed on Data and sources. Point people to the official page for the final word.
Where it runs
The site, the API and the MCP server are hosted on CiteMET, the hosting platform Mahmoud co-founded, on Cloudflare.
Canada Service Map is independent and not a government website. The official page always has the final word.