statcan_list_cubes

Pack: statcan · Connect: https://pipeworx.io/mcp (see Connect below for a single-pack URL)

No MCP client? Call it directly: GET https://gateway.pipeworx.io/v1/tools/statcan_list_cubes for the schema, then POST the same URL with its arguments for the data.

List 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. StatCan has ~8,000 cubes and its endpoint has no paging of its own, so this tool pages for you: pass title to search by name (recommended — it is the fast way to the handful you want), or walk page. Default 200 per page; has_more tells you whether more exist.

Parameters

NameTypeRequiredDescription
titlestringnoCase-insensitive substring match against the English and French cube titles, e.g. “egg” or “population”. Applied to the cubes scanned on this page.
limitnumbernoCubes per page (1-500, default 200).
pagenumbernoPage number, 1-based (default 1).

Example call

Arguments

{}

curl

curl -X POST https://gateway.pipeworx.io/statcan/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"statcan_list_cubes","arguments":{}}}'

TypeScript (@pipeworx/sdk)

import { Pipeworx } from '@pipeworx/sdk';
const pipeworx = new Pipeworx();

const result = await pipeworx.call('statcan_list_cubes', {});

Response shape

Always returns: count, page, limit, has_more, cubes

FieldTypeDescription
countnumberCubes returned on THIS page (not the catalogue total — StatCan’s endpoint has no paging, so this tool streams and pages; use has_more/next_page)
cubesarrayList of available cubes
pagenumber1-based page number returned
limitnumberCubes per page (1-500, default 200)
has_morebooleanTrue when more cubes exist beyond this page
next_pagenumber | nullNext page number, or null at the end
title_filterstring | nullThe lower-cased title substring applied, or null
scannednumberCubes read off the upstream stream before stopping — the bound that keeps this call from holding StatCan’s whole 8 MB array in memory
scan_truncatedbooleanTrue when the read stopped at the cap rather than the end of the upstream array, so a short page is OUR ceiling and not proof the list ended
upstream_bytes_readnumberBytes actually pulled from StatCan WDS for this call
notestring | nullPresent when the scan was truncated: says what was scanned and how to narrow
licencestringStatistics Canada Open Licence
Full JSON Schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "number",
      "description": "Cubes returned on THIS page (not the catalogue total -- StatCan's endpoint has no paging, so this tool streams and pages; use has_more/next_page)"
    },
    "cubes": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "product_id": {
            "type": [
              "number",
              "null"
            ],
            "description": "Cube product ID"
          },
          "cansim_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "CANSIM identifier"
          },
          "title_en": {
            "type": [
              "string",
              "null"
            ],
            "description": "English cube title"
          },
          "title_fr": {
            "type": [
              "string",
              "null"
            ],
            "description": "French cube title"
          },
          "start_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "Cube start date"
          },
          "end_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "Cube end date"
          },
          "release_time": {
            "type": [
              "string",
              "null"
            ],
            "description": "Release timestamp"
          },
          "archived": {
            "type": [
              "string",
              "null"
            ],
            "description": "Archive status"
          },
          "subject_codes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Subject classification codes"
          },
          "dimension_count": {
            "type": [
              "number",
              "null"
            ],
            "description": "Number of dimensions"
          }
        },
        "required": [
          "product_id",
          "cansim_id",
          "title_en",
          "title_fr",
          "start_date",
          "end_date",
          "release_time",
          "archived",
          "subject_codes",
          "dimension_count"
        ]
      },
      "description": "List of available cubes"
    },
    "page": {
      "type": "number",
      "description": "1-based page number returned"
    },
    "limit": {
      "type": "number",
      "description": "Cubes per page (1-500, default 200)"
    },
    "has_more": {
      "type": "boolean",
      "description": "True when more cubes exist beyond this page"
    },
    "next_page": {
      "type": [
        "number",
        "null"
      ],
      "description": "Next page number, or null at the end"
    },
    "title_filter": {
      "type": [
        "string",
        "null"
      ],
      "description": "The lower-cased title substring applied, or null"
    },
    "scanned": {
      "type": "number",
      "description": "Cubes read off the upstream stream before stopping -- the bound that keeps this call from holding StatCan's whole 8 MB array in memory"
    },
    "scan_truncated": {
      "type": "boolean",
      "description": "True when the read stopped at the cap rather than the end of the upstream array, so a short page is OUR ceiling and not proof the list ended"
    },
    "upstream_bytes_read": {
      "type": "number",
      "description": "Bytes actually pulled from StatCan WDS for this call"
    },
    "note": {
      "type": [
        "string",
        "null"
      ],
      "description": "Present when the scan was truncated: says what was scanned and how to narrow"
    },
    "licence": {
      "type": "string",
      "description": "Statistics Canada Open Licence"
    }
  },
  "required": [
    "count",
    "page",
    "limit",
    "has_more",
    "cubes"
  ]
}

Connect

Add this to your MCP client config — every tool in the catalog, including this one — or use one-click install buttons:

{
  "mcpServers": {
    "pipeworx": {
      "url": "https://pipeworx.io/mcp"
    }
  }
}
Connect to just the statcan pack
{
  "mcpServers": {
    "statcan": {
      "url": "https://gateway.pipeworx.io/statcan/mcp"
    }
  }
}

See Getting Started for client-specific install steps.

Regenerated from source · build October 30, 2026