Open source

An open-source civic project. Not affiliated with the Government of Canada or the City of Toronto.

Civic Codebooks

Nshipyard Canada · Project 07

Every civic code, resolved to its meaning.

Toronto's civic datasets speak in codes: a 5-digit NOC number for an occupation, a 3-digit infraction for a parking ticket, a GSIN string for a procurement line. This project publishes the three reference tables that decode them: 516 occupations from the National Occupational Classification 2021, 195 Toronto parking infraction codes with real ticket counts, and 4,909 federal procurement codes.

516

NOC 2021 occupations, English and French titles, TEER category on each

195

Toronto parking infraction codes, each with tickets, fines, and average fine

4,909

GSIN procurement codes with English and French descriptions

3

reference tables, one search box, REST API and MCP tools over all of them

Explorer

One search across all three codebooks.

Type a code like 21211 or 3, or a keyword like nurse, parking, or relocation, to see it resolved.

Showcase

Raw codes in, human meaning out.

A codebook earns its keep when it resolves something. Below, three real codes from real Toronto datasets, before and after resolution. The ticket counts come from 6,454,695 real parking tickets issued in 2023-2025.

Before

21211

NOC 2021 unit group

After

Data scientists

TEER 1 · Natural and applied sciences

Before

3

Toronto parking infraction

After

PARK ON PRIVATE PROPERTY

1,085,167 tickets · $64.7M in fines · $59.64 average

Before

V502A

GSIN procurement code

After

Relocation Services

Service · Active

516 occupations by TEER

TEER, the Training, Education, Experience and Responsibility scale that Statistics Canada and Employment and Social Development Canada attach to every NOC 2021 occupation, runs from 0 (management) to 5 (short on-the-job training). Most Toronto-relevant licensed work sits in TEER 2-4.

TEER 0Management

48

TEER 1University degree

97

TEER 2College or apprenticeship, 2+ years

162

TEER 3College or apprenticeship, under 2 years

69

TEER 4High school plus job training

95

TEER 5Short on-the-job training

45

For developers

Query it from code, or from an agent.

Three consumption paths, same reference data. REST for applications, OpenAPI for integration, MCP tools over streamable HTTP for AI agents.

Endpoints

GET/api/v1/codes/search?q=nurse&table=noc

Unified search across all three codebooks

{
  "query": "nurse",
  "count": 12,
  "results": [
    { "table": "noc", "code": "31301",
      "title": "Registered nurses and registered
               psychiatric nurses" }
  ]
}
GET/api/v1/codes/infractions/3

One infraction with real ticket totals

{
  "code": "3",
  "description": "PARK ON PRIVATE PROPERTY",
  "tickets": 1085167,
  "total_fines": 64715355,
  "avg_fine": 59.64
}
GET/api/v1/codes/noc/21211

One occupation, EN/FR titles and TEER

{
  "code": "21211",
  "title_en": "Data scientists",
  "title_fr": "Scientifiques des données",
  "teer": "1"
}

Connect your agent

Put this data to work inside your AI tools.

Pick your harness, copy the prompt, send it to your agent. Your agent runs the setup itself.

Copy and send this to Claude Code

Set up the Toronto Civic Codebooks MCP server so I can query it from here.
1. Run: claude mcp add --transport http toronto-codes https://this-site.example/mcp
2. Run `claude mcp list` to confirm it connected.
3. Look up NOC code 21211 and tell me its TEER category, and show me the result.

Data

Take the files.

Versioned releases, MIT licensed. CSV for spreadsheets and joins.

noc_2021.csv

516 NOC 2021 unit groups: code, EN/FR titles, TEER, broad category

Download
infraction_codebook.csv

195 Toronto parking infraction codes with ticket and fine totals

Download
procurement_codes.csv

4,909 GSIN codes: EN/FR descriptions, status, commodity type

Download

Methodology

NOC titles are verbatim from Statistics Canada (EN and FR files, retrieved 2026-10-08); TEER is derived from the second digit of the 5-digit code, per StatCan's documented structure. Infraction descriptions are verbatim from the City of Toronto parking tickets file; counts and fines computed from 6,454,695 real tickets (2023-2025) in the sibling project. GSIN descriptions are verbatim from Public Services and Procurement Canada (retrieved 2026-10-08); the commodity type (Goods/Service/Construction) is derived from the code pattern per the federal reporting guide. Toronto publishes no commodity-code table in open data, so the federal GSIN is the documented fallback for procurement.