OpenParliament (CA)
liveLegislatureGovernmentCivic-tech mirror of the Parliament of Canada — Hansard debates, bills, votes, MPs, committee meetings. Keyless.
Tools
search_debatesrequired: queryList Hansard speeches (debate contributions) by a specific MP and/or party, optionally within a date range. Returns who spoke, when, and the speech text. IMPORTANT: the OpenParliament API has NO free-
queryreqstring—date_fromoptstring—date_tooptstring—politicianoptstring—partyoptstring—limitoptnumber—offsetoptnumber—Try it
list_billsList Canadian Parliament bills from OpenParliament.ca, optionally filtered by parliament-session (e.g. "44-1"), sponsor politician slug, and status. Returns bill number, name, sponsor, and current sta
sessionoptstring—sponsoroptstring—statusoptstring—limitoptnumber—offsetoptnumber—Try it
get_billrequired: session, numberFetch full detail for a Canadian Parliament bill by session (e.g. "44-1") and bill number (e.g. "C-318") — returns title, sponsor, status, and legislative history.
sessionreqstring—numberreqstring—Try it
list_votesList recorded votes in the Canadian Parliament from OpenParliament.ca, optionally filtered by session. Returns vote number, date, description, and yes/no/paired tallies.
sessionoptstring—limitoptnumber—offsetoptnumber—Try it
list_politiciansCurrent + historic MPs.
currentoptboolean—partyoptstring—provinceoptstring—nameoptstring—limitoptnumber—offsetoptnumber—Try it
get_politicianrequired: slugFetch a Canadian MP profile from OpenParliament.ca by politician slug — returns name, party, riding, province, election history, and links to their debate contributions.
slugreqstring—Try it
list_committeesList Canadian House of Commons committees from OpenParliament.ca, optionally filtered by session. Returns committee slug, name, and acronym for use with list_committee_meetings.
sessionoptstring—limitoptnumber—offsetoptnumber—Try it
list_committee_meetingsCommittee meetings (with witnesses + evidence).
committee_slugoptstring—date_fromoptstring—date_tooptstring—limitoptnumber—Try it
Test with curl
The gateway speaks JSON-RPC 2.0 over HTTP POST. You can test any pack directly from the terminal.
curl -X POST https://gateway.pipeworx.io/openparliament-ca/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'curl -X POST https://gateway.pipeworx.io/openparliament-ca/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_debates","arguments":{"query": "hello"}}}'Use with the SDK
Install @pipeworx/sdk to call tools from any TypeScript/Node project.
import { Pipeworx } from '@pipeworx/sdk';
const px = new Pipeworx();
const result = await px.call("search_debates", {"query":"example"});// Or ask in plain English:
const answer = await px.ask("civic-tech mirror of the parliament of canada — hansard debates, bills, votes, mps, committee meetings");