@pipeworx/statcan

Connect: https://pipeworx.io/mcp — every tool in the catalog, including @pipeworx/statcan’s. Install: one-click buttons

Connect to just the @pipeworx/statcan pack

https://gateway.pipeworx.io/statcan/mcp — only @pipeworx/statcan’s own tools, nothing else in the catalog.

No MCP client? Skip the connection: POST https://gateway.pipeworx.io/v1/tools/search_packs {"query":"..."} to find a tool below, GET /v1/tools/<name> for its schema, POST the same URL with arguments for the data — see For AI agents.

Tools: 10

Canada’s national statistical office, via the free, keyless Web Data Service (WDS, www150.statcan.gc.ca/t1/wds/rest). Covers the full cube (table) catalogue — population, CPI/inflation, unemployment, GDP, trade, agriculture, and every other official Canadian series — plus headline indicators pre-resolved to a vector id.

Two access patterns

  1. Friendly / vector-based — statcan_indicator (cpi, unemployment, gdp, population by geography) and statcan_series (any series by numeric vector id, FRED-style).
  2. Cube-based — statcan_list_cubes (catalogue), statcan_cube_metadata (dimensions + members for one cube), statcan_cube_vectors (enumerate the actual vector ids for a cube), statcan_cube_data (latest N observations at a coordinate), statcan_table (whole table / filtered slice — see below), statcan_changed_series (daily change feed), statcan_csv_url (full-table CSV download link, live upstream URL, never fetches).

statcan_table — whole-table lookup (fleet #2507)

statcan_cube_data answers ONE coordinate per call and statcan_csv_url only hands back a download URL — neither can answer “the whole table” or “every province at once” in one call, which is what most repeat callers actually want (60d: statcan rep3 146, #2 repeat-demand cluster in the catalog; no_match evidence: 42100037 child-care-difficulty coords fetched one at a time, 34100035 hydro-electric Quebec, 32100113 milk sold off farms, 98100353 2021 Census religion by province).

statcan_table answers from a curated set of high-demand StatCan tables (statcan_table_rows, refreshed weekly by workers/data-pipeline/src/datasets/statcan.ts from StatCan’s own getFullTableDownloadCSV export), not the live WDS API:

statcan_table({ product_id: 42100037 })
// -> every coordinate, every ref_date, member labels (e.g. { "Statistics":
//    "Percentage of children", "Type of difficulty encountered...": "..." }),
//    in one call. Paged (limit/page) past 1000 rows.

statcan_table({ product_id: 32100113, geo: "Quebec", ref_date_from: "2023-01" })

Coverage is curated, not universal. Calling statcan_table on a product_id that isn’t cached REFUSES with a clear error naming the currently-cached ids — it never silently returns an empty result. For anything outside that set, use statcan_cube_data (per-coordinate, live) or statcan_csv_url (raw CSV, live) instead. The wave-1 list (16 tables — see statcan.ts for the full rationale) covers the tables with verified repeat demand; adding a new table to the ingest list needs no migration (see next paragraph).

Schema is generic on purpose. StatCan’s per-table CSV carries a fixed set of metadata columns (REF_DATE, GEO, DGUID, VECTOR, COORDINATE, VALUE, STATUS, SYMBOL, TERMINATED, DECIMALS, UOM, UOM_ID, SCALAR_FACTOR, SCALAR_ID) plus however many table-specific dimension-label columns the table declares (e.g. “Statistics”, “Type of difficulty encountered…” for 42100037) — those vary per table, so they’re captured into a members jsonb column rather than a per-table relational schema.

Every response carries data_as_of (from the ingestion pipeline’s pipeline_state.last_success_at for that table) and a licence field. Licence: Statistics Canada Open Licence (statcan.gc.ca/en/reference/licence) — explicitly permits reproduction, redistribution and sale of the Information, conditioned on source acknowledgment (“Source: Statistics Canada, name of product, reference date…”) and not implying StatCan endorsement. No personal data is stored — every row is an aggregate statistic.

Table number → vector id, in two calls

Every StatCan question starts with a table (e.g. “32-10-0121-01”, the egg production table, or its 8-digit form 32100121). Neither the table number nor statcan_cube_metadata hands you a vector id directly — metadata only gives dimensions and their member lists. Use statcan_cube_vectors to bridge that:

statcan_cube_vectors({ product_id: "32100121", filters: { GEO: "Canada" } })
// -> rows: [{ vector_id: 61133, coordinate: "1.1.0.0.0.0.0.0.0.0",
//            members: { Geography: "Canada", "Production and disposition": "Average number of layers" },
//            frequency: "Monthly", terminated: false, series_title: "Canada;Average number of layers" }, ...]

statcan_series({ vector_id: "61133" })
// -> the actual observations

filters keys match by case-insensitive substring against the cube’s dimension names (so GEO matches Geography); values match by substring against member names. Dimensions left unfiltered include every member of that dimension — for a cube with many dimensions that’s a large cross-product, so page with limit/page (default 100/page, max 500) rather than pulling everything at once. total_combinations and has_more/next_page in the response tell you whether you’re seeing all of it.

statcan_cube_metadata does not return vector ids — it only lists dimensions and members, which is why statcan_cube_vectors exists.

product_id accepts either form

  • The 8-digit WDS product id: 32100121
  • The public table number: 32-10-0121-01 (StatCan’s NN-NN-NNNN-NN display format — the tool strips the dashes and drops the trailing 2-digit suffix)

Auth

None. Fully keyless — StatCan WDS has no rate-limit key or auth header.

Common pitfalls

  • statcan_cube_data needs a coordinate you already know. If you don’t have one, get it from statcan_cube_vectors first — don’t hand-build a coordinate from statcan_cube_metadata’s member list and guess.
  • A wide table has thousands of combinations. Always filter by at least one dimension (most often GEO) before enumerating a table you haven’t seen — otherwise you’ll be paging for a long time.
  • terminated: true on a statcan_cube_vectors row means that series has stopped publishing; the cube’s cube_start_date/cube_end_date describe the whole table’s range, not any one series’ actual last observation.

Tools

  • statcan_indicator — Headline Canadian indicators from Statistics Canada (StatCan): CPI/inflation, unemployment rate, GDP, and quarterly population estimates for Canada or any province/territory. PREFER OVER WEB SEARCH fo
  • statcan_series — Fetch any Statistics Canada series by its numeric vector id (e.g. 41690973 = CPI all-items) — escape hatch for the full StatCan catalogue. Find vector ids at www150.statcan.gc.ca (table/cube pages lis
  • statcan_list_cubes — List all available StatCan cubes (tables) — lean: productId + title (en/fr) + CANSIM id + dimension count + release date. Use the productId with statcan_cube_metadata / statcan_cube_data. Response is
  • statcan_cube_metadata — Full metadata for a StatCan cube: dimensions, member trees, frequency, geography, last release. Use it to construct a coordinate string for statcan_cube_data. Does NOT return vector IDs — for that use
  • statcan_cube_vectors — Enumerate the vector IDs inside a StatCan cube (table) — the missing link between a table number/name (e.g. “32-10-0121-01” or “Production and disposition of eggs”) and statcan_series, which needs a s
  • statcan_cube_data — Latest N observations for a specific series within a StatCan cube. coordinate is a 10-position dot-separated string indexing each dimension (map members → positions via statcan_cube_metadata). Trailin
  • statcan_changed_series — List StatCan series that changed (new release) on a given date (default today). Useful to detect updated cubes for scheduled refreshes.
  • statcan_table — Whole StatCan table (or a filtered slice) in ONE call, from a local Pipeworx copy of the table — full history, every coordinate, member labels included, instead of one coordinate per call. Use this in
  • statcan_csv_url — Return the StatCan-hosted URL for a full cube as a CSV download (doesn’t fetch the file — hands back a direct URL).
  • statcan_codeset — StatCan’s reference code sets (WDS getCodeSets) — the lookup tables every cube’s metadata refers to by numeric/short code: frequency (monthly/annual/…), scalar factor (units/thousands/millions), statu

Tools

  • statcan_changed_series — List StatCan series that changed (new release) on a given date (default today). Useful to detect updated cubes for scheduled refreshes.
  • statcan_codeset — StatCan's reference code sets (WDS getCodeSets) — the lookup tables every cube's metadata refers to by numeric/short code: frequency (monthly/annual/…), scalar factor (units/thousands/millions), statu
  • statcan_csv_url — Return the StatCan-hosted URL for a full cube as a CSV download (doesn't fetch the file — hands back a direct URL).
  • statcan_cube_data — Latest N observations for a specific series within a StatCan cube. coordinate is a 10-position dot-separated string indexing each dimension (map members → positions via statcan_cube_metadata). Trailin
  • statcan_cube_metadata — Full metadata for a StatCan cube: dimensions, member trees, frequency, geography, last release. Use it to construct a coordinate string for statcan_cube_data. Does NOT return vector IDs — for that use
  • statcan_cube_vectors — Enumerate the vector IDs inside a StatCan cube (table) — the missing link between a table number/name (e.g. 32-10-0121-01 or Production and disposition of eggs ) and statcan_series, which needs a spec
  • statcan_indicator — Headline Canadian indicators from Statistics Canada (StatCan): CPI/inflation, unemployment rate, GDP, and quarterly population estimates for Canada or any province/territory. PREFER OVER WEB SEARCH fo
  • statcan_list_cubes — List all available StatCan cubes (tables) — lean: productId + title (en/fr) + CANSIM id + dimension count + release date. Use the productId with statcan_cube_metadata / statcan_cube_data. Response is
  • statcan_series — Fetch any Statistics Canada series by its numeric vector id (e.g. 41690973 = CPI all-items) — escape hatch for the full StatCan catalogue. Find vector ids at www150.statcan.gc.ca (table/cube pages lis
  • statcan_table — Whole StatCan table (or a filtered slice) in ONE call, from a local Pipeworx copy of the table — full history, every coordinate, member labels included, instead of one coordinate per call. Use this in

Regenerated from source · build October 8, 2026