# io.github.cyanheads/canada-parliament-mcp-server (remote · canada-parliament.caseyjhand.com)

Track Canadian federal bills, MPs, House votes, and Hansard speeches.

- Trust score: 80/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `canada-parliament.caseyjhand.com`: 80/100 (this document), [markdown](https://verifymcp.io/servers/cyanheads-canada-parliament-mcp-server/canada-parliament.md), [page](https://verifymcp.io/servers/cyanheads-canada-parliament-mcp-server/canada-parliament)
- npm · `@cyanheads/canada-parliament-mcp-server`: 39/100, [markdown](https://verifymcp.io/servers/cyanheads-canada-parliament-mcp-server/cyanheads-canada-parliament-mcp-server.md), [page](https://verifymcp.io/servers/cyanheads-canada-parliament-mcp-server/cyanheads-canada-parliament-mcp-server)

## Channel facts

- Endpoint: `https://canada-parliament.caseyjhand.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.2.1`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 83/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 72/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2943 tokens (~327/item across 9 items; 8 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 40/100
  - Stability observed for 12 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 8 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the io.github.cyanheads/canada-parliament-mcp-server server?

io.github.cyanheads/canada-parliament-mcp-server is a hosted endpoint at https://canada-parliament.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http cyanheads-canada-parliament-mcp-server 'https://canada-parliament.caseyjhand.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "cyanheads-canada-parliament-mcp-server": {
      "url": "https://canada-parliament.caseyjhand.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "cyanheads-canada-parliament-mcp-server": {
      "type": "http",
      "url": "https://canada-parliament.caseyjhand.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.cyanheads-canada-parliament-mcp-server]
url = "https://canada-parliament.caseyjhand.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-canada-parliament-mcp-server": {
      "type": "remote",
      "url": "https://canada-parliament.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add cyanheads-canada-parliament-mcp-server --url 'https://canada-parliament.caseyjhand.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  cyanheads-canada-parliament-mcp-server:
    url: "https://canada-parliament.caseyjhand.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "cyanheads-canada-parliament-mcp-server": {
      "Transport": "http",
      "Url": "https://canada-parliament.caseyjhand.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add cyanheads-canada-parliament-mcp-server -t streamable-http -u 'https://canada-parliament.caseyjhand.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "cyanheads-canada-parliament-mcp-server": {
      "type": "http",
      "url": "https://canada-parliament.caseyjhand.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 80, +1)

No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-03 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-01 (score 78, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 77, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “canparl_list_reference” rewrote its description, which is the text the model reads
- [security] Tool “canparl_search_members” rewrote its description, which is the text the model reads
- [security] Tool “canparl_get_member” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 271 → 327
- [functional] Server version: 0.2.0 → 0.2.1
- [cosmetic] “canparl_search_members” added an optional parameter “parliament”
- [cosmetic] “canparl_search_speeches” added an optional parameter “language”
- [cosmetic] “canparl_get_member” reworded the description of “personId”
- [cosmetic] “canparl_list_reference” reworded the description of “session”
- [cosmetic] “canparl_search_bills” reworded the description of “limit”
- [cosmetic] “canparl_search_bills” reworded the description of “titleContains”
- [cosmetic] “canparl_search_members” reworded the description of “includeFormer”
- [cosmetic] “canparl_search_members” reworded the description of “name”
- [cosmetic] “canparl_search_members” reworded the description of “party”
- [cosmetic] “canparl_search_members” reworded the description of “province”
- [cosmetic] “canparl_search_members” reworded the description of “riding”
- [cosmetic] “canparl_search_speeches” reworded the description of “contains”
- [cosmetic] “canparl_search_votes” reworded the description of “subjectContains”
- [cosmetic] “canparl_get_bill” reworded the description of “section”

### 2026-10-29 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-28 (score 76, +3)

- [functional] First check of Schema quality: 100
- [functional] New resource “canada-parliament-guide”
- [functional] Server version: 0.1.3 → 0.2.0

### 2026-10-26 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-25 (score 72, 0)

- [functional improvement] Stability: unverified → 0.03

## MCP tools (8)

### `canparl_search_bills` (~375 tokens)

Canparl Search Bills

Find House and Senate bills in one session by title, number, type, chamber, status, or indexed MP sponsor. Sponsor results are the OpenParliament-indexed subset; fetch a bill for its sponsor, stages, divisions, and statute citation. Omitted session means the verified current official session. Follow nextOffset with identical filters.

Input parameters:

- `billCode` (string): Exact bill code, including a split-bill suffix letter such as C-15A; accepts bill s321, S321, S 321, or S-321.
- `billType` (string): Official bill type from canparl_list_reference topic bill_types.
- `limit` (integer): Maximum rows, default 10, effective cap 100; values through 10000 are accepted and clamp with a notice. Whole records may end the page early at the 24000-byte response budget; follow nextOffset.
- `offset` (integer): Zero-based offset in the selected ordering.
- `originatingChamber` (string): House, House of Commons, or Senate; case-insensitive.
- `session`: Parliamentary session; omitted means current.
- `sponsor` (string): MP OpenParliament slug or politician path/HTTPS URL (member.slug from canparl_get_member, or an includeFormer canparl_search_members row), or a current MP's official personId; Senators are not indexe…
- `status` (string): Official bill status from canparl_list_reference topic bill_statuses.
- `titleContains` (string): Literal substring of any English or French long or short title; matching ignores case, accents, dash and quote styles, and repeated whitespace.

Output parameters:

- `appliedFilters` (object): Normalized filters applied together with AND.
- `bills` (array): Matching official bills ordered by chamber prefix, number, then split-bill suffix letter.
- `cap` (integer): Effective page limit after the per-call cap.
- `error` (object): Present when the call failed. Absent on success.
- `notice` (string): Limit clamp, coverage, empty-result, past-end, or response-budget guidance.
- `pagination` (object): Local continuation in the filtered ordering, including a response-budget stop.
- `provenance` (array): Original retrieval metadata from all source requests.
- `session` (string): Verified official parliament-session token.
- `shown` (integer): Number of bills in this page.
- `sponsorCoverage` (string): Whether the result is restricted to the third-party sponsor index.
- `total` (integer): Exact matching count after all filters and before pagination.
- `totalCount` (integer): Exact matching count before slicing.
- `truncated` (boolean): Whether more matching bills remain after this page.

### `canparl_get_bill` (~255 tokens)

Canparl Get Bill

Read one House or Senate bill's official dossier. Large dossiers return an outline; re-call with one section and follow pagination.nextOffset for collections. Stages preserve nested records whole. Obtain billCode and session from canparl_search_bills; omitted session means the verified current official session.

Input parameters:

- `billCode` (string, required): Bill code from canparl_search_bills, including a split-bill suffix letter such as C-15A; accepts bill s321, S321, S 321, or S-321.
- `limit` (integer): Maximum whole records per selected collection page, 1–100 per call; larger values up to 10000 return 100 with a notice, and the byte budget may reduce it.
- `offset` (integer): Zero-based whole-record offset within the selected collection.
- `section` (string): One section from the returned outline: sponsor, stages.house, stages.senate, stages.royalAssent, divisions, senateVoteDetails, publications, statute, summary.en, summary.fr, notes.en, notes.fr, miles…
- `session`: Parliamentary session; omitted means current.

Output parameters:

- `appliedFilters` (object): Normalized requested bill identity.
- `bill` (object): Official bill summary.
- `disclosure` (string): Overflow, empty, unavailable, past-end, or response-budget-stop guidance.
- `divisions`: House divisions, or null if unavailable.
- `error` (object): Present when the call failed. Absent on success.
- `kind` (string): Absent for full dossier; outline lists sections; section returns one selection.
- `milestones` (object): Reading milestones as UTC instants ending in Z (YYYY-MM-DDTHH:MM:SS[.fraction]Z), converted from LEGISinfo's Ottawa-time clocks; Senate times of day are LEGISinfo's recorded times. A value in another…
- `notes` (object): Official dossier notes; notes.en and notes.fr sections each return one language.
- `notice` (string): Limit clamp or source coverage guidance when applicable.
- `pagination` (object): Whole-record selection continuation.
- `provenance` (array): Original retrieval metadata for every source request.
- `publications`: Publications, or null if unavailable.
- `sections` (array): Available section selectors.
- `senateVoteDetails`: Complete variable Senate vote records; not House divisions.
- `sponsor` (object): Official sponsor fields.
- `stages` (object): All official stage containers.
- `statute`: Enacted statute when both year and chapter exist; otherwise null.
- `summary` (object): Library of Parliament legislative summary; summary.en and summary.fr sections each return one language.
- `totalCount`: Selected collection total, or null for unavailable or scalar sections.
- `webReferences`: Related documents, press releases, and costing notes, or null if unavailable.

### `canparl_search_members` (~424 tokens)

Canparl Search Members

Find House MPs by name, riding, province, or caucus in the complete current official roster, or set parliament to search everyone who sat in that Parliament (36th onward) with official personIds and membership dates. Set includeFormer for OpenParliament's historical name index; its rows may contain only a name and slug. Follow nextOffset with identical filters and use detailLookup with canparl_get_member.

Input parameters:

- `includeFormer` (boolean): Use the sparse historical name index instead of an official roster; parliament, riding, province, and party are rejected with it.
- `limit` (integer): Maximum rows, default 25, effective cap 100; values through 10000 are accepted and clamp with a notice. Whole records may end the page early at the 24000-byte response budget; follow nextOffset.
- `name` (string): Official roster: literal name substring; matching ignores case, accents, dash and quote styles, and repeated whitespace. Historical: OpenParliament's own match, where one token is surname lookup and…
- `offset` (integer): Zero-based offset in the selected ordering.
- `parliament` (integer): Parliament number, such as 41, whose official House roster to search instead of the current one: everyone who sat in it, one row each with the caucus and riding last held there. The official roster o…
- `party` (string): Official caucus name; Bloc and Green aliases accepted; official rosters only, not includeFormer. With parliament, matches the one caucus each member last held in that Parliament, and that roster's ow…
- `province` (string): Province postal code or full English name; official rosters only, not includeFormer.
- `riding` (string): Literal riding substring; matching ignores case, accents, dash and quote styles, and repeated whitespace. Official rosters only, not includeFormer.

Output parameters:

- `appliedFilters` (object): Normalized AND filters and name semantics.
- `cap` (integer): Effective page limit after the per-call cap.
- `error` (object): Present when the call failed. Absent on success.
- `members` (array): Returned member identities.
- `notice` (string): Limit clamp, empty page, historical coverage, or response-budget guidance.
- `pagination` (object): Continuation in the selected source ordering.
- `provenance` (array): Original source retrieval metadata.
- `shown` (integer): Returned row count.
- `total`: Exact filtered count of the official roster searched; null for historical index.
- `totalCount` (integer): Exact filtered count of the official roster searched, current or parliament; absent for historical searches.
- `truncated` (boolean): More queried rows remain.

### `canparl_get_member` (~439 tokens)

Canparl Get Member

Read one House MP by a returned OpenParliament slug or official personId, current or former (36th Parliament onward). Pass exactly one identifier from canparl_search_members detailLookup. Official profiles survive unavailable OpenParliament enrichment. Recent ballots come newest first from the official House member-votes feed when the member has one official personId, filterable by votesSession (default: the member's latest session) and votesBillCode; otherwise from OpenParliament. Sponsored bills and recent ballots are independently pageable; set their limits to zero for profile-only lookup.

Input parameters:

- `billsOffset` (integer): Zero-based sponsored bill page offset.
- `personId` (string): Decimal official person ID, distinct from an OpenParliament slug: a current member's, or a former member's from the 36th Parliament onward, such as a canparl_search_members parliament row or a canpar…
- `recentVotes` (integer): Ballot rows to return, 0–10 per call; zero disables, and larger values up to 10000 return 10 with a notice.
- `slug` (string): Returned OpenParliament slug, politician path, or HTTPS OpenParliament profile URL; never a guessed name. A digit-only value equal to a current official personId, or its /politicians/<digits>/ path o…
- `sponsoredBills` (integer): Sponsored bill rows to hydrate, 0–5 per call; zero disables, and larger values up to 10000 hydrate 5 with a notice.
- `votesBillCode` (string): Keep official ballots on this bill, including a split-bill suffix such as C-15A; accepts c15, C 15, or bill C-15. Needs one official personId.
- `votesOffset` (integer): Zero-based ballot page offset.
- `votesSession`: Official ballot session such as 44-1; omitted means the member's latest session in the feed. Needs one official personId.

Output parameters:

- `appliedFilters` (object): Normalized lookup and independent activity controls.
- `cap` (object): Bounded workloads after the per-call caps.
- `error` (object): Present when the call failed. Absent on success.
- `member` (object): Public member profile.
- `memberships`: Source membership history, or null if unavailable.
- `notice` (string): Workload clamp, coverage, and recovery guidance.
- `openParliament` (object): OpenParliament identity outcome.
- `provenance` (array): All successful source retrieval metadata.
- `recentVotes` (object): Independently pageable activity section.
- `shown` (object): Returned activity counts.
- `sponsoredBills` (object): Independently pageable activity section.
- `truncated` (object): Independent source continuations.
- `unavailable` (array): Explicit unavailable enrichment outcomes.

### `canparl_search_votes` (~283 tokens)

Canparl Search Votes

Find recorded House divisions in one session by bill, result, document type, date, or subject. Return newest first and pass session plus number to canparl_get_vote. Omitted session resolves from the current official bill feed. Follow nextOffset with identical filters.

Input parameters:

- `billCode` (string): Exact bill code, including a split-bill suffix letter such as C-15A; accepts bill s321, S321, S 321, or S-321.
- `dateFrom` (string): Inclusive Ottawa civil date YYYY-MM-DD; independently optional.
- `dateTo` (string): Inclusive Ottawa civil date YYYY-MM-DD; independently optional.
- `documentType` (string): Official category from canparl_list_reference topic vote_document_types.
- `limit` (integer): Maximum rows, default 25, effective cap 100; values through 10000 are accepted and clamp with a notice. Whole records may end the page early at the 24000-byte response budget; follow nextOffset.
- `offset` (integer): Zero-based offset in the selected ordering.
- `result` (string): Official result from vote_results; Passed and Failed are accepted aliases.
- `session`: Parliamentary session; omitted means current.
- `subjectContains` (string): Literal subject substring; matching ignores case, accents, dash and quote styles, and repeated whitespace.

Output parameters:

- `appliedFilters` (object): Normalized AND filters.
- `cap` (integer): Effective page limit after the per-call cap.
- `divisions` (array): Matching divisions, date-time descending then number descending.
- `error` (object): Present when the call failed. Absent on success.
- `notice` (string): Limit clamp, empty-result, past-end, or response-budget guidance.
- `pagination` (object): Continuation within the filtered ordering.
- `provenance` (array): Source retrieval metadata.
- `session` (string): Resolved official session.
- `shown` (integer): Returned division count.
- `total` (integer): Exact matching count before pagination.
- `totalCount` (integer): Exact matching count.
- `truncated` (boolean): Whether more matches remain.

### `canparl_get_vote` (~287 tokens)

Canparl Get Vote

Read a recorded House division, its full official tally, party totals, and a page of individual ballots. Ballot, personId, party, and province filters affect the ballot page only; nonvoters are absent. Omitted session means the verified current official session. Follow nextOffset with identical filters.

Input parameters:

- `ballot` (string): Recorded ballot Yea, Nay, or Paired, case-insensitive; Yes and No are accepted as Yea and Nay.
- `limit` (integer): Maximum returned ballots, 1–400 per call, default 30; larger values up to 10000 clamp to 400 with a notice. A page ends early at the 24000-byte response budget; follow nextOffset.
- `number` (integer, required): Division number returned by canparl_search_votes or canparl_get_bill.
- `offset` (integer): Zero-based offset in the selected ordering.
- `party` (string): Canonical official caucus or certain Bloc/Green alias; historical observed caucuses are accepted.
- `personId` (string): Decimal official person ID from canparl_search_members detailLookup or a ballot row; matches this division's recorded participants, including members no longer seated.
- `province` (string): English province/territory name or one of the 13 postal codes.
- `session`: Parliamentary session; omitted means current.

Output parameters:

- `appliedFilters` (object): Normalized ballot filters and division identity.
- `ballots` (array): Matching ballots ordered by caucus, surname, given name, then personId.
- `ballotsMatched` (integer): Exact matching count before pagination.
- `ballotsTotal` (integer): Complete recorded participant count.
- `byParty` (array): Complete unfiltered participant aggregation by source caucus.
- `cap` (integer): Effective ballot page limit after the per-call cap.
- `division` (object): Verified full-session division metadata.
- `error` (object): Present when the call failed. Absent on success.
- `notice` (string): Limit clamp, nonvoter, mismatch, empty, past-end, or response-budget guidance.
- `pagination` (object): Continuation within matching ballots; nextOffset is offset plus ballots returned.
- `provenance` (array): Retrieval metadata for every source request.
- `shown` (integer): Returned ballot count.
- `tally` (object): Official counts independent of local filters.
- `tallyMatchesBallots` (boolean|null): Whether all three official counts match participants; null if any count is absent.
- `totalCount` (integer): Matching ballot count before pagination.
- `truncated` (boolean): Whether more matching ballots remain, including after a response-budget stop.

### `canparl_search_speeches` (~426 tokens)

Canparl Search Speeches

Find indexed House Hansard speeches by speaker, bill debated or mentioned, or date. contains scans at most 100 candidate speeches per call; follow nextOffset without changing filters until exhausted before drawing a negative conclusion.

Input parameters:

- `billDebated` (object): Bill debated; combined with all other scopes using AND.
- `contains` (string): Local literal substring of the selected language's plain text; matching ignores case, accents, dash and quote styles, and repeated whitespace. A speech without text in that language never matches. Ca…
- `dateFrom` (string): Inclusive Ottawa civil date lower bound, YYYY-MM-DD; independently optional.
- `dateTo` (string): Inclusive Ottawa civil date upper bound, YYYY-MM-DD; independently optional.
- `language` (string): Hansard language of speaker, h1, h2, and content, and of the text contains scans: en (default) or fr. A field without text in that language is null, never filled from the other; older records carry n…
- `limit` (integer): Maximum returned matches, 1–10 per call; larger values up to 10000 clamp to 10 with a notice. A page ends early at the 24000-byte response budget, returning at least one match whole. Candidate pages…
- `mentionedBill` (object): Bill mentioned; combined with all other scopes using AND.
- `offset` (integer): Raw candidate offset; keep every filter identical when continuing.
- `politician` (string): Speaker OpenParliament slug or exact politician path/HTTPS URL (member.slug from canparl_get_member, or an includeFormer canparl_search_members row), or a current MP's official personId. A digit-only…
- `substantiveOnly` (boolean): Exclude procedural remarks when true; false includes substantive and procedural remarks.

Output parameters:

- `appliedFilters` (object): All normalized filters applied with AND; bill relationships rely on the source endpoint.
- `cap` (integer): Effective maximum returned matches after the per-call cap.
- `error` (object): Present when the call failed. Absent on success.
- `excludedCommittees` (integer): Visited candidates excluded because they were not House debate documents.
- `exhausted` (boolean): True only after visiting every row of a source-terminal page.
- `nextOffset`: First unvisited raw candidate offset, or null when exhausted; after a response-budget stop, the first match not returned.
- `notice` (string): Limit clamp, coverage, continuation, procedural-filter, candidates without selected-language text, unavailable affiliation, and response-budget guidance.
- `provenance` (array): Original retrieval metadata for scope validation, candidate pages fetched before the page ended, and memberships of returned speeches.
- `scanned` (integer): Raw candidates visited, including excluded committee records; at most 100. A response-budget stop ends it before the first match not returned.
- `shown` (integer): Number of returned matching speeches.
- `speeches` (array): Matching House speeches in source order with complete prose in the selected language.
- `truncated` (boolean): Whether raw candidates remain to be scanned; not an exact count of further matches.

### `canparl_list_reference` (~135 tokens)

Canparl List Reference

List canonical session coverage and bill, division, and caucus vocabulary. Use source-specific terms when constructing filters. Omitted session means the verified current session for vocabulary. For topic sessions omit session; the entire global index is returned. Topic parties covers the current session only: its entries come from the current House roster, so a past division's caucuses come from canparl_get_vote byParty.

Input parameters:

- `session`: Session for session-dependent vocabulary; omitted means current. Omit it for topic sessions; topic parties accepts only the current session.
- `topic` (string, required): Reference topic used to construct source-specific filters.

Output parameters:

- `appliedFilters` (object): Resolved reference scope.
- `cap` (integer): Complete reference entry count; no display cap is imposed.
- `currentSession` (string): Current session verified from the official default bill feed.
- `entries` (array): Complete bounded reference vocabulary or real session union.
- `error` (object): Present when the call failed. Absent on success.
- `notice` (string): Catalog-only or historical coverage guidance.
- `provenance` (array): Source retrieval metadata.
- `session` (string|null): Selected session, or null for the global session index.
- `shown` (integer): All returned reference entries.
- `topic` (string): Reference topic used to construct source-specific filters.
- `totalCount` (integer): Exact number of reference entries.
- `truncated` (boolean): Always false: the entire vocabulary is returned.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/cyanheads-canada-parliament-mcp-server/canada-parliament#diagnostics

## Score history

- 2026-11-05: 80
- 2026-11-04: 79
- 2026-11-03: 79
- 2026-11-02: 78
- 2026-11-01: 78
- 2026-10-31: 77
- 2026-10-30: 77
- 2026-10-29: 77
- 2026-10-28: 76
- 2026-10-27: 73
- 2026-10-26: 73
- 2026-10-25: 72
- 2026-10-24: 72

## Common questions

### What is the io.github.cyanheads/canada-parliament-mcp-server server?

io.github.cyanheads/canada-parliament-mcp-server is listed in the public MCP registry as io.github.cyanheads/canada-parliament-mcp-server. Track Canadian federal bills, MPs, House votes, and Hansard speeches. This page covers its hosted endpoint (https://canada-parliament.caseyjhand.com/mcp).

### Is the io.github.cyanheads/canada-parliament-mcp-server server safe to use?

io.github.cyanheads/canada-parliament-mcp-server scores 80 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.cyanheads/canada-parliament-mcp-server server expose?

io.github.cyanheads/canada-parliament-mcp-server exposes 8 tools: canparl_search_bills, canparl_get_bill, canparl_search_members, canparl_get_member, canparl_search_votes, and 3 more. Their descriptions and schemas cost roughly 2,624 tokens of context every time the server is loaded.

### Does the io.github.cyanheads/canada-parliament-mcp-server server require authentication?

No. We connected to io.github.cyanheads/canada-parliament-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the io.github.cyanheads/canada-parliament-mcp-server server still maintained?

io.github.cyanheads/canada-parliament-mcp-server is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What did VerifyMCP test on the io.github.cyanheads/canada-parliament-mcp-server server?

VerifyMCP ran 13 checks on io.github.cyanheads/canada-parliament-mcp-server, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Remote endpoint: https://canada-parliament.caseyjhand.com/mcp
- Repository: https://github.com/cyanheads/canada-parliament-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/cyanheads-canada-parliament-mcp-server/canada-parliament.xml
- Changelog JSON feed: https://verifymcp.io/servers/cyanheads-canada-parliament-mcp-server/canada-parliament/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/cyanheads-canada-parliament-mcp-server/canada-parliament.json
- HTML version of this page: https://verifymcp.io/servers/cyanheads-canada-parliament-mcp-server/canada-parliament
