montreal_query

Pack: data-montreal · Endpoint: https://gateway.pipeworx.io/data-montreal/mcp

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

Query any City of Montreal datastore resource (donnees.montreal.ca, CKAN) by its resource id (a UUID). Supports a free-text q, exact-match filters (field→value), sort (“field desc”), limit and offset. Use montreal_datasets to find a resource id, or montreal_recent for the common ones.

Parameters

NameTypeRequiredDescription
resource_idstringyesCKAN datastore resource id (UUID), e.g. “2cfa0e06-9be4-49a6-b7f1-ee9f2363a872”.
qstringnoFree-text search across columns.
filtersobjectnoExact-match filters as a JSON object, e.g. {“district”:“B2”}.
sortstringnoSort clause, e.g. “DDS_DATE_CREATION desc”.
limitnumbernoMax rows (default 100, max 1000).
offsetnumbernoRow offset for paging.

Example call

Arguments

{
  "resource_id": "2cfa0e06-9be4-49a6-b7f1-ee9f2363a872",
  "limit": 100
}

curl

curl -X POST https://gateway.pipeworx.io/data-montreal/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"montreal_query","arguments":{"resource_id":"2cfa0e06-9be4-49a6-b7f1-ee9f2363a872","limit":100}}}'

TypeScript (@pipeworx/sdk)

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

const result = await pipeworx.call('montreal_query', {
  "resource_id": "2cfa0e06-9be4-49a6-b7f1-ee9f2363a872",
  "limit": 100
});

More examples

{
  "resource_id": "2cfa0e06-9be4-49a6-b7f1-ee9f2363a872",
  "filters": {
    "district": "B2"
  },
  "sort": "DDS_DATE_CREATION desc"
}

Connect

Add this to your MCP client config, or use one-click install buttons:

{
  "mcpServers": {
    "data-montreal": {
      "url": "https://gateway.pipeworx.io/data-montreal/mcp"
    }
  }
}

See Getting Started for client-specific install steps.

Regenerated from source · build September 20, 2026