Skip to main content
Glama

Explore plenary sittings, decisions, and voters

euparl_get_plenary_votes
Read-onlyIdempotent

Discover sittings with mode sittings and year; default decisions pages compact summaries with labels and separate decided-on and recording document relations for sitting_id. Optional document_id filters decisions before paging by exact document identity or hyphen-boundary descendant. Mode decision requires decision_id and returns one rich record with reference text and commentary; it rejects nondefault paging and snapshot. Optional decision-only mep_id returns independent recorded and intended positions with publication availability, without a roster lookup; empty positions do not prove absence from the vote. Mode voters requires decision_id and one position, paging recorded and intended voters independently. Missing arrays succeed with available false; published empty arrays have available true. Optional resolve_names requires explicit roster_term and joins only published names from that complete term roster, never voting-date affiliations or current-roster substitutes. Some IDs may remain unresolved. Continue local decisions or voters with page.next_offset and snapshot; restart at offset 0 without snapshot after snapshot_changed. Missing sitting decisions succeed empty; absent selected decision fails decision_not_found.

Input Schema

NameRequiredDescriptionDefault
modeNoDefault decisions returns compact summaries; sittings discovers by year, decision returns one rich record, voters pages one position.decisions
yearNoFour-digit year, required only for sittings and forbidden in other modes.
limitNoWhole items requested; default 20, effective maximum 100 with notice.
mep_idNoDecision-only member lookup: canonical numeric ID, person/ prefix or exact public person URI. Uses published arrays without a roster join; empty positions do not prove absence from the vote.
offsetNoZero-based collection offset; default 0.
languageNoSupported EU ISO-639-1 language, case-insensitive; default en; source text is never translated.
positionNoRequired only for voters: favor, against, abstention, intended_favor, intended_against, or intended_abstention.
snapshotNoReturned decisions or voter-position snapshot; required for local offset above 0, optional at offset 0; forbidden for sittings and decision.
sitting_idNoRequired outside sittings: real YYYY-MM-DD date, MTG-PL-YYYY-MM-DD, known event prefix, or exact public event URI.
decision_idNoRequired for decision and voters: exact returned canonical decision ID, known eli/dl/event/ prefix, or exact public event URI; forbidden for sittings and decisions.
document_idNoDecisions-only document filter: canonical ID, eli/dl/doc/ prefix or exact public URI. Matches decided-on or recording relations by exact ID or hyphen-boundary descendant before paging.
roster_termNoExplicit parliamentary term 0–10 containing the sitting; required with resolve_names true, forbidden otherwise. No term is inferred from dates.
resolve_namesNoDefault false retains IDs only; true is voters-only and requires roster_term for complete names-only roster resolution.

Output Schema

NameRequiredDescriptionDefault
capNoEffective whole-item page limit.
modeNoSitting discovery, compact decision page, one rich decision, or one voter-position page.
pageNoSelected sitting, compact decision, or voter-position page; absent for a rich decision.
errorNoPresent when the call failed. Absent on success.
shownNoWhole items shown on this partial page.
noticeNoPublication, language fallback, empty-result or continuation guidance.
votersNoIndependent page for one recorded or intended position, preserving published ID order.
decisionNoComplete selected rich decision, present only in decision mode.
positionNoSelected recorded or intended position in voters mode.
sittingsNoSitting discovery page, present only in sittings mode.
availableNoWhether the selected source array was published, including a published empty array.
decisionsNoCompact whole-decision page with selected-language labels and separate decided-on and recording document relations.
truncatedNoTrue when this page returns only part of the selected collection.
sitting_idNoNormalized selected sitting identifier; absent in sitting discovery.
totalCountNoExact count only when published or computed over a complete collection.
decision_idNoNormalized selected decision identifier; present in decision and voters modes.
appliedFiltersNoActual normalized retrieval scope and filters.
voter_resolutionNoNames-only provenance and complete-position resolution counts; names do not prove spelling or affiliation on the voting date.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only declare readOnly/openWorld/idempotent; the description adds substantive behavior well beyond that: available=false vs available=true semantics for missing vs published-empty arrays, snapshot_changed handling, decision_not_found on absent decisions, and that IDs may remain unresolved. This is exactly the safety and state-contract context the annotations cannot convey.

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

Conciseness3/5

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

There is almost no wasted clause, but the entire definition is one dense semicolon-chained run with no sentence or bullet structure, and it leads with the non-default sittings mode before revealing that decisions is the default. Content density is justified; readability is not.

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?

For a 13-parameter, four-mode tool this is unusually complete: input requirements per mode, paging/snapshot lifecycle, error outcomes (decision_not_found, snapshot_changed), and availability semantics are all covered, and an output schema exists so return shape need not be restated.

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 the baseline is 3, but the description still adds meaning beyond the schema: mep_id returning independent recorded and intended positions 'without a roster lookup' and the caveat that empty positions do not prove absence from the vote, plus document_id descendant matching before paging. The resolve_names/roster_term relationship is reinforced rather than newly explained, keeping it from a 5.

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?

The description names the resources precisely (sittings, decisions, voters) and specifies a verb per mode, and it is clearly the plenary-vote tool among siblings like euparl_get_mep and euparl_search_documents. It never explicitly states what it is not or names a sibling, and it opens with the least-common mode (sittings) in a way that can momentarily obscure that 'decisions' is the default.

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

Usage Guidelines5/5

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

Explicit when-to-use per mode: 'Mode decision requires decision_id', 'Mode voters requires decision_id and one position', 'sittings with mode sittings and year'. It also states hard exclusions (rejects nondefault paging and snapshot for decision mode) and the resume strategy (page.next_offset with snapshot, restart at 0 after snapshot_changed).

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.