Skip to main content
Glama

canada-parliament-mcp-server

Canparl Get Vote

canparl_get_vote
Read-onlyIdempotent

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 Schema

NameRequiredDescriptionDefault
limitNoMaximum 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.
partyNoCanonical official caucus or certain Bloc/Green alias; historical observed caucuses are accepted.
ballotNoRecorded ballot Yea, Nay, or Paired, case-insensitive; Yes and No are accepted as Yea and Nay.
numberYesDivision number returned by canparl_search_votes or canparl_get_bill.
offsetNoZero-based offset in the selected ordering.
sessionNoParliamentary session; omitted means current.
personIdNoDecimal official person ID from canparl_search_members detailLookup or a ballot row; matches this division's recorded participants, including members no longer seated.
provinceNoEnglish province/territory name or one of the 13 postal codes.

Output Schema

NameRequiredDescriptionDefault
capNoEffective ballot page limit after the per-call cap.
errorNoPresent when the call failed. Absent on success.
shownNoReturned ballot count.
tallyNoOfficial counts independent of local filters.
noticeNoLimit clamp, nonvoter, mismatch, empty, past-end, or response-budget guidance.
ballotsNoMatching ballots ordered by caucus, surname, given name, then personId.
byPartyNoComplete unfiltered participant aggregation by source caucus.
divisionNoVerified full-session division metadata.
truncatedNoWhether more matching ballots remain, including after a response-budget stop.
paginationNoContinuation within matching ballots; nextOffset is offset plus ballots returned.
provenanceNoRetrieval metadata for every source request.
totalCountNoMatching ballot count before pagination.
ballotsTotalNoComplete recorded participant count.
appliedFiltersNoNormalized ballot filters and division identity.
ballotsMatchedNoExact matching count before pagination.
tallyMatchesBallotsNoWhether all three official counts match participants; null if any count is absent.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, openWorld, so the safety profile is covered. The description adds genuinely non-obvious behavior: ballot/personId/party/province filters apply only to the ballot page, nonvoters are omitted from results, and pagination must continue with identical filters + nextOffset. It does not restate the safety annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, front-loaded with what is returned, then filter scoping, then the session default, then the pagination instruction. Nothing is redundant and no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, a fully documented 8-parameter schema, and readOnly/idempotent annotations, the remaining burden is behavioral nuance — filter scope, nonvoter absence, and nextOffset continuation — all of which the description covers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so a baseline 3 would be defensible, but the description adds meaning the schema doesn't: it clarifies that four of the filters scope only the ballot page (not the tally), and that an omitted session resolves to the verified current session. This is real semantic lift beyond the field-level descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Read) and resource set (a recorded House division, official tally, party totals, and a page of individual ballots), which is enough to distinguish it from canparl_search_votes by scope. It stops short of naming the sibling, so an agent must infer the search-then-fetch relationship (which only the schema's `number` description supplies).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains behavioral scoping clearly (filters affect only the ballot page; nonvoters are absent) and the session default, which implies when the tool is appropriate. However, it never states when to choose this over canparl_search_votes or how to obtain the required division number; that routing information lives only in the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.