---
title: "Developers: JSON API and MCP server"
url: "https://canadaservicemap.ca/developers"
description: "Use Canada Service Map from code or an AI agent: a read-only MCP server and JSON API for Canadian public services, bodies and places. Free, and no key needed."
site: "Canada Service Map"
author: "Mahmoud Halat"
publisher: "Space & Story"
updated: "2026-10-13"
licence: "Built entirely from public data: open data and official government pages. Each record keeps the licence of its source, listed at https://canadaservicemap.ca/data."
---
# 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 13 October 2026.

## 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:

```shell
claude mcp add --transport http canada-service-map https://canadaservicemap.ca/mcp
```

A project's .mcp.json, for Claude Code:

```json
{
  "mcpServers": {
    "canada-service-map": {
      "type": "http",
      "url": "https://canadaservicemap.ca/mcp"
    }
  }
}
```

Cursor, in ~/.cursor/mcp.json:

```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:

```json
{
  "mcpServers": {
    "canada-service-map": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://canadaservicemap.ca/mcp"
      ]
    }
  }
}
```

## JSON API

Who handles passports near Halifax:

```shell
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), `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:

```shell
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](https://canadaservicemap.ca/llms.txt), and every service with its one-line answer is at [/llms-full.txt](https://canadaservicemap.ca/llms-full.txt).

## Files agents look for

- [/.well-known/mcp/server-card.json](https://canadaservicemap.ca/.well-known/mcp/server-card.json): the MCP server card
- [/.well-known/api-catalog](https://canadaservicemap.ca/.well-known/api-catalog): the API catalog (RFC 9727)
- [/.well-known/ai-catalog.json](https://canadaservicemap.ca/.well-known/ai-catalog.json): the AI catalog, listing the MCP server and the API
- [/.well-known/agent-skills/index.json](https://canadaservicemap.ca/.well-known/agent-skills/index.json): an agent skill for finding a Canadian public service
- [/openapi.json](https://canadaservicemap.ca/openapi.json): the OpenAPI description of the JSON API
- [/llms.txt](https://canadaservicemap.ca/llms.txt): what the site is and how to cite it
- [/sitemap.xml](https://canadaservicemap.ca/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:

A citation:

```text
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](https://canadaservicemap.ca/data). 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](https://cite-met.com/?utm_source=canadaservicemap&utm_medium=referral&utm_campaign=credits), the hosting platform Mahmoud co-founded, on Cloudflare.

Not a government website. The official page always has the final word.

## Cite this page

Canada Service Map, "Developers: JSON API and MCP server", updated 13 October 2026, https://canadaservicemap.ca/developers
