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 query and, 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. Add province for one province or territory.
list_services
Up to 25 services a call, filtered by category, level or query.
search_bodies
Public bodies by name (query), optionally in one province or 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 near and type (a kind of place, such as library) 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 Code
claude mcp add --transport http canada-service-map https://canadaservicemap.ca/mcp
A project's .mcp.json, for Claude Code
{
  "mcpServers": {
    "canada-service-map": {
      "type": "http",
      "url": "https://canadaservicemap.ca/mcp"
    }
  }
}
Cursor, in ~/.cursor/mcp.json
{
  "mcpServers": {
    "canada-service-map": {
      "url": "https://canadaservicemap.ca/mcp"
    }
  }
}
A client that only starts local programs, such as Claude Desktop's config file, through the mcp-remote bridge
{
  "mcpServers": {
    "canada-service-map": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://canadaservicemap.ca/mcp"
      ]
    }
  }
}

JSON API

Who handles passports near Halifax
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, level or q.
GET /api/services/{id}
One service, by its id, such as passport, with province if you want one.
GET /api/bodies/search?q=
Public bodies by name, with province if 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 near and type are 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.

The passport page, as Markdown and as JSON
curl https://canadaservicemap.ca/services/passport.md
curl -H "Accept: application/json" https://canadaservicemap.ca/services/passport

The 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

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:

A citation
Canada Service Map, "Passport renewal and applications in Canada", checked 13 October 2026, https://canadaservicemap.ca/services/passport

Each 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.