Skip to main content
Glama

Server Details

Track European Parliament procedures, MEPs, votes, documents, speeches, and questions.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
cyanheads/eu-parliament-mcp-server
GitHub Stars
1
Server Listing
@cyanheads/eu-parliament-mcp-server

TDQS

A4.3/5.0

Scored across 9 tools

Disambiguation4/5

Each tool has a distinct primary resource/action: MEPs, plenary votes, procedures, questions, reference lookups, documents, and speeches. The get/list/search split is clear, though the multi-mode tools (especially euparl_get_plenary_votes and euparl_search_documents) and the shared euparl_list_reference utility create some surface overlap.

Naming Consistency5/5

All nine tools consistently use the euparl_ prefix followed by a snake_case verb_noun pattern. The verbs are predictable and reflect the intended operation type.

Tool Count5/5

Nine tools is well scoped for a read-only EU Parliament API covering multiple resource families. Each tool earns its place without excessive fragmentation.

Completeness4/5

The surface covers the core read-only domain: MEPs, plenary votes, procedures, questions, documents, speeches, and reference data. Gaps are minor, such as no dedicated committee or plenary agenda tool, but most workflows can be assembled from existing tools.

Available Tools

9 tools
euparl_get_mepRead a member and membership historyA
Read-onlyIdempotent
Inspect

Read an MEP identity or membership history including published committee, delegation, and political-group records. Default section overview returns identity and membership_count; section memberships pages full membership records. Missing end dates do not establish current membership. Continue memberships with page.next_offset and snapshot; restart at offset 0 without snapshot after snapshot_changed. Missing detail succeeds with found false; discover IDs with euparl_search_meps.

NameRequiredDescriptionDefault
limitNoWhole items requested; default 20, effective maximum 100 with notice.
mep_idYesDecimal person ID, person/ prefix, or exact https://data.europarl.europa.eu/person/ URI.
offsetNoZero-based collection offset; default 0.
sectionNoDefault overview returns identity and membership count; memberships returns the selected history page.overview
languageNoSupported EU ISO-639-1 language, case-insensitive; default en; source text is never translated.
snapshotNoReturned membership snapshot; required for membership offset above 0, optional at offset 0.

Output Schema

NameRequiredDescription
capNoEffective whole-item page limit.
nameNoPublished full name.
pageNoMembership continuation metadata; absent on overview or missing detail.
errorNoPresent when the call failed. Absent on success.
foundNoWhether Parliament published member detail.
shownNoWhole items shown on this partial page.
mep_idNoNormalized decimal person identifier.
noticeNoPublication, language fallback, empty-result or continuation guidance.
sectionNoIdentity overview or separately paged membership history.
availableNoWhether the selected source array was published, including a published empty array.
truncatedNoTrue when this page returns only part of the selected collection.
given_nameNoPublished given name.
source_urlNoPublic member source URL.
totalCountNoExact count only when published or computed over a complete collection.
citizenshipNoPublished citizenship; distinct from country of representation.
family_nameNoPublished family name.
membershipsNoSelected membership history page; present only on a found memberships response.
appliedFiltersNoActual normalized retrieval scope and filters.
place_of_birthNoPublished place of birth, never inferred from citizenship.
membership_countNoParsed membership count on a found overview; absent relations do not prove no membership history.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: it discloses that missing end dates do not imply current membership, that a missing detail returns success with found=false, and how snapshot_changed invalidates pagination state. These are non-obvious semantics an agent could not infer from the schema.

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

Conciseness4/5

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

Front-loads purpose and section behavior, then pagination, then failure/discovery semantics — a sensible order with no filler. Some sentences are very compressed (e.g. 'Missing detail succeeds with found false'), which slightly taxes parsing without wasting space.

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, return shapes need not be explained, and the description still covers the operationally risky parts: mode selection, pagination continuation and invalidation, and the found=false failure mode. An agent has everything needed to call this correctly.

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 baseline would be 3, but the description adds real meaning: the section switch between overview and memberships, and the coupling of snapshot to offset (required above 0, restart at 0 without snapshot after snapshot_changed). It does not restate limit/language syntax, which the schema already handles.

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

Purpose5/5

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

States a specific verb and resource (read MEP identity or membership history) and enumerates exactly what is covered: committee, delegation, and political-group records. It also distinguishes itself from the sibling lookup tool by pointing to euparl_search_meps for ID discovery.

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

Usage Guidelines4/5

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

Clearly routes between the two modes (default overview for identity/count, memberships for the paged history) and names euparl_search_meps as the way to obtain an ID. It lacks an explicit 'when not to use this' clause, but the alternatives and conditions are stated.

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

euparl_get_plenary_votesExplore plenary sittings, decisions, and votersA
Read-onlyIdempotent
Inspect

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.

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

NameRequiredDescription
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.

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.

euparl_get_procedureRead a parliamentary procedureA
Read-onlyIdempotent
Inspect

Read a procedure title, stage, events, participants, or linked parliamentary documents. Default section overview returns scalar fields and collection counts; events, participants, and documents page one selected collection. Continue with page.next_offset and the returned snapshot; restart at offset 0 without snapshot if the collection changes. Historical participation groups remain historical. Missing detail succeeds with found false; discover references with euparl_list_procedures. Linked documents can be read with euparl_search_documents mode get; files are linked, not parsed.

NameRequiredDescriptionDefault
limitNoWhole items requested; default 20, effective maximum 100 with notice.
offsetNoZero-based collection offset; default 0.
sectionNoDefault overview returns scalars and counts; choose a collection for complete paged items.overview
languageNoSupported EU ISO-639-1 language, case-insensitive; default en; source text is never translated.
snapshotNoPrevious collection snapshot; required for local offset above 0, optional at offset 0.
procedure_idYesProcedure YYYY-NNNN or YYYY/NNNN, optional letter suffix and (TYPE), known eli/dl/proc/ prefix or exact public procedure URI.

Output Schema

NameRequiredDescription
capNoEffective whole-item page limit.
pageNoSelected collection continuation; absent on overview or missing detail.
errorNoPresent when the call failed. Absent on success.
foundNoWhether Parliament published procedure detail.
shownNoWhole items shown on this partial page.
stageNoPublished current procedure stage.
titleNoPublished procedure title in the actual selected language.
eventsNoSelected event page, present only for the events section.
noticeNoPublication, language fallback, empty-result or continuation guidance.
sectionNoProcedure retrieval section.
availableNoWhether the selected source array was published, including a published empty array.
documentsNoSelected deduplicated linked-document page, present only for documents.
referenceNoExact published procedure reference.
truncatedNoTrue when this page returns only part of the selected collection.
source_urlNoPublic procedure source URL.
totalCountNoExact count only when published or computed over a complete collection.
participantsNoSelected historical participation page, present only for participants.
procedure_idNoNormalized canonical procedure identifier.
process_typeNoPublished procedure type.
appliedFiltersNoActual normalized retrieval scope and filters.
available_sectionsNoSection counts on a found overview only.

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/openWorld annotations it discloses the paging contract and snapshot coupling, that missing detail returns found false rather than erroring, that historical participation groups stay historical, and that linked files are linked rather than parsed. These are non-obvious behaviors an agent could not infer from annotations or schema alone.

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

Conciseness4/5

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

Front-loaded with the purpose, then paging, then error/alternative handling – a logical order for a six-parameter read tool. The semicolon-chained, telegraphic phrasing (e.g. "Historical participation groups remain historical") is compact but occasionally terse enough to slow parsing.

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?

Covers everything an agent needs: sectioning, paging invariants, missing-detail behavior, and sibling routing. Return shape need not be described because an output schema exists, and the readOnly annotations already carry the safety profile.

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?

With 100% schema coverage the baseline is 3, but the description adds real meaning: the snapshot/offset relationship across a single selected collection and the overview-versus-section tradeoff between scalars and complete paged items. It does not explain the local-versus-returned page limits or the language fallback beyond what the schema already says.

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

Purpose5/5

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

States a specific verb and resource plus the exact sub-resources readable (title, stage, events, participants, documents), mapping directly onto the section enum. It also names the sibling it is not (euparl_list_procedures for discovery), so an agent can choose between them without opening schemas.

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?

Explicitly explains the default overview versus selecting a collection section, how to continue paging (page.next_offset plus the returned snapshot), and the reset rule (offset 0 without snapshot when the collection changes). It also routes to euparl_list_procedures for reference discovery and euparl_search_documents mode get for linked documents.

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

euparl_list_proceduresList parliamentary proceduresA
Read-onlyIdempotent
Inspect

List procedure references by procedure type. Titles, stages, and participants require euparl_get_procedure with a returned procedure_id. Use euparl_list_reference topic procedure_types for supported process_type codes. No keyword, year, committee, or stage filter is available. Search exposes at most 10000 results; continue with page.next_offset when present, otherwise narrow process_type.

NameRequiredDescriptionDefault
limitNoWhole items requested; default 20, effective maximum 100 with notice.
offsetNoZero-based collection offset; default 0.
languageNoSupported EU ISO-639-1 language, case-insensitive; default en; source text is never translated.
process_typeNoOptional procedure-type code from euparl_list_reference topic procedure_types; case-insensitive and whitespace-trimmed.

Output Schema

NameRequiredDescription
capNoEffective whole-item page limit.
pageNoWhole-item page metadata.
errorNoPresent when the call failed. Absent on success.
itemsNoWhole sparse procedure records on this page.
shownNoWhole items shown on this partial page.
noticeNoPublication, language fallback, empty-result or continuation guidance.
availableNoWhether the selected source array was published, including a published empty array.
truncatedNoTrue when this page returns only part of the selected collection.
totalCountNoExact count only when published or computed over a complete collection.
appliedFiltersNoActual normalized retrieval scope and filters.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, open-world behavior, so the bar is lower, and the description still adds real operational context: a 10000-result exposure cap plus 'continue with page.next_offset when present, otherwise narrow process_type'. That is a concrete pagination and narrowing strategy an agent could not infer from the annotations. It stops short of describing record shape, but the output schema covers that.

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

Conciseness4/5

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

Four short sentences, each load-bearing, with the core purpose front-loaded and pagination last. Slightly dense telegraphic phrasing ('Search exposes...') but no filler or repetition.

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 filtered list tool with a 100%-documented schema, an output schema, and safety annotations already in place, the description covers the remaining gaps an agent needs: what is returned, how to get detail, how to resolve codes, what filters are unavailable, and how to page past the cap.

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

Parameters3/5

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

Schema coverage is 100%, so limit, offset, language, and process_type are already fully documented, including the 100 effective maximum. The description reinforces process_type's dependency on the reference lookup and rules out filter parameters that do not exist, but adds no syntax or format detail beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource (list procedure references) and immediately scopes it: it returns references only, not titles/stages/participants. It explicitly names euparl_get_procedure as the tool that yields the richer record, so an agent can distinguish the two without opening either schema.

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?

Gives explicit routing: use euparl_get_procedure with a returned procedure_id for detail, and euparl_list_reference topic procedure_types for valid codes. It also lists what this tool cannot do (no keyword, year, committee, or stage filter), which prevents wasted calls more effectively than a positive description alone.

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

euparl_list_questionsList parliamentary questionsA
Read-onlyIdempotent
Inspect

List parliamentary questions by year and work_type or retrieve metadata, source-file links and published answers with mode get and question_id. Human citations such as E-000001/2025 retain their full year; omission of term checks canonical candidates for every overlapping parliamentary term and requires one verified match. Supply term to disambiguate; canonical IDs resolve directly. Use euparl_list_reference topic question_types for work_type codes. No keyword, author or addressee search is available. Empty answers means no answer relation was published in this response. Get rejects list filters and nondefault paging; continue lists with page.next_offset.

NameRequiredDescriptionDefault
modeNoDefault list discovers questions; get requires question_id and forbids year and work_type.list
termNoGet-only term 0–10 to disambiguate a human citation; must agree with a canonical ID. Omit to verify candidates for every term overlapping the citation year.
yearNoList-only four-digit question year.
limitNoWhole items requested; default 20, effective maximum 100 with notice.
offsetNoZero-based collection offset; default 0.
languageNoSupported EU ISO-639-1 language, case-insensitive; default en; source text is never translated.
work_typeNoList-only question code from euparl_list_reference topic question_types; case-insensitive and whitespace-trimmed.
question_idNoGet-only canonical E-{term}-{year}-{six-digit-sequence}, known document prefix/public URI, or human E-NNNNNN/YYYY citation; corresponding P/O prefixes are accepted.

Output Schema

NameRequiredDescription
capNoEffective whole-item page limit.
modeNoExecuted question retrieval mode.
pageNoList continuation metadata; absent in get mode.
errorNoPresent when the call failed. Absent on success.
foundNoGet-only result; false only after complete citation resolution or missing published detail.
itemsNoWhole sparse records on a list page; absent in get mode.
shownNoWhole items shown on this partial page.
noticeNoPublication, language fallback, empty-result or continuation guidance.
questionNoQuestion detail present only when a published record is found.
availableNoWhether the selected source array was published, including a published empty array.
truncatedNoTrue when this page returns only part of the selected collection.
totalCountNoExact count only when published or computed over a complete collection.
appliedFiltersNoActual normalized retrieval scope and filters.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations establish read-only/idempotent/open-world behavior, and the description adds substantial context beyond that: get rejects list filters and nondefault paging, empty answers mean no answer relation was published, term omission triggers candidate verification and requires exactly one match, and canonical IDs resolve directly. These are precisely the operational quirks an agent needs.

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

Conciseness4/5

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

The description is front-loaded with the main capabilities and then layers constraints without wasted words. It is dense and mostly earns its sentences, though the single-paragraph format makes some mode-specific rules harder to scan than a short bulleted split would.

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?

Given an output schema and rich annotations, the description covers the remaining gaps: dual-mode behavior, pagination continuation, disambiguation rules, supported work_type lookup, and the absence of keyword/author search. Nothing essential for calling this 8-parameter, two-mode tool correctly is missing.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents every parameter in detail. The description adds some workflow nuance (human citation format, term disambiguation, page.next_offset) but does not add much parameter-level meaning beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description names the resource (parliamentary questions), the two operations (list by year/work_type, get by question_id), and the extra payloads available in get mode (metadata, source-file links, published answers). It also explicitly rules out keyword/author/addressee search, which distinguishes it from search-oriented siblings without needing to name them.

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?

It gives explicit mode selection rules: default list discovers questions; get requires question_id and forbids year/work_type. It routes the agent to euparl_list_reference for work_type codes and explains how to continue pagination with page.next_offset. It also covers the term-disambiguation workflow and when to supply term versus omitting it.

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

euparl_list_referenceList parliamentary reference dataA
Read-onlyIdempotent
Inspect

List parliamentary codes, identifier formats, historical committees and political groups, or coverage limitations. Choose organizations with organization_ids to resolve supported membership organization IDs into published names and dates; ordered per-item found false means no detail was published. Organization lookups page the supplied IDs with an effective maximum of 20 per call; repeat the same ID list with page.next_offset. Other topics retain historical coverage and an effective maximum of 100. These lists do not require snapshots; missing end dates do not establish current status.

NameRequiredDescriptionDefault
limitNoWhole items requested; default 20, effective maximum 20 for organizations or 100 for other topics, with notice.
topicYesReference topic; organizations requires organization_ids, which other topics reject.
offsetNoZero-based collection offset; default 0.
languageNoSupported EU ISO-639-1 language, case-insensitive; default en; source text is never translated.
organization_idsNoRequired nonempty list only for organizations; order and duplicates retained, with at most 20 looked up per page.

Output Schema

NameRequiredDescription
capNoEffective whole-item page limit.
pageNoWhole-item page metadata.
errorNoPresent when the call failed. Absent on success.
itemsNoWhole reference entries on this page.
shownNoWhole items shown on this partial page.
topicNoRequested reference topic.
noticeNoPublication, language fallback, empty-result or continuation guidance.
availableNoWhether the selected source array was published, including a published empty array.
truncatedNoTrue when this page returns only part of the selected collection.
totalCountNoExact count only when published or computed over a complete collection.
appliedFiltersNoActual normalized retrieval scope and filters.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, openWorld), and the description adds real behavioral detail on top: an effective page cap of 20 for organizations versus 100 for other topics, the repeat-with-page.next_offset paging recipe, the meaning of found=false on ordered items, and the caveat that absent end dates do not imply current status. The snapshot remark is opaque without prior context and is the one weak disclosure.

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?

The resource enumeration is correctly front-loaded, but the remaining sentences are compressed to the point of ambiguity — 'Choose organizations with organization_ids' reads awkwardly and the closing 'do not require snapshots' clause is cryptic. Information density is high with little padding, yet parse effort is higher than it should be.

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

Completeness4/5

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

With an output schema present, return-value explanation is unnecessary, and the description closes the remaining behavioral gaps: paging, per-topic caps, the organizations special case, and the interpretation of missing data. An agent can invoke this correctly from the definition alone, bar the unexplained snapshot reference.

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

Parameters3/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; the description mainly restates what the schema already declares (organization_ids required for organizations, 20-per-page cap, page.next_offset). It does add the operational note that the same ID list must be re-supplied across pages while order and duplicates are retained, but that is largely duplicative of the structured fields.

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 opens with a specific verb ('List') and enumerates the concrete resource families covered: codes, identifier formats, historical committees/political groups, coverage limitations. That is far more informative than the title, though it never names how it differs from the sibling get_/list_ tools that return actual parliamentary entities rather than reference data.

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

Usage Guidelines4/5

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

It gives a clear conditional rule — use the organizations topic together with organization_ids to resolve IDs into names and dates, and it implies other topics take no IDs. What is missing is any explicit statement of when an agent should reach for this reference tool instead of euparl_list_procedures or euparl_search_documents, so the routing guidance is contextual rather than comparative.

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

euparl_search_documentsSearch parliamentary documentsA
Read-onlyIdempotent
Inspect

Search adopted texts, committee documents, or plenary documents, then retrieve metadata and source-file links with mode get and document_id. Get accepts IDs from procedures, speeches, votes, questions and answers without a source family; parent_document_ids lead from subdivisions to parent files. Detail preserves adopted_document_ids, based_on_document_ids and public_register_ref; follow published document relations with mode get, while preserving ordinary missing-record and upstream-error outcomes for unavailable targets. Document relations never imply procedure links. Only adopted_texts supports text, title, sitting dates and related_process_id. Committee supports term but no year; plenary supports year but no term. Use euparl_list_reference topic document_types for family-specific work_type codes. Detail returns links, not extracted full text. Adopted texts expose at most 10000 search results; continue with page.next_offset when present, otherwise narrow supported filters.

NameRequiredDescriptionDefault
modeNoDefault search discovers records; get requires document_id and rejects source and all search filters.search
termNoParliamentary term 0–10; adopted_texts and committee search only.
textNoAdopted-texts-only keyword search in the requested language.
yearNoFour-digit document year; adopted_texts and plenary search only.
limitNoWhole items requested; default 20, effective maximum 100 with notice.
titleNoAdopted-texts-only title search in the requested language.
offsetNoZero-based collection offset; default 0.
sourceNoSearch-only family; omitted search defaults to adopted_texts. Omit entirely in get mode.
languageNoSupported EU ISO-639-1 language, case-insensitive; default en; source text is never translated.
work_typeNoSearch-only family-specific code from euparl_list_reference topic document_types; case-insensitive and whitespace-trimmed.
document_idNoGet-only canonical work ID, eli/dl/doc/ prefix or exact public URI; no family restriction.
sitting_dateNoAdopted-texts-only sitting date YYYY-MM-DD; start of range when sitting_date_end is supplied.
sitting_date_endNoAdopted-texts-only inclusive range end YYYY-MM-DD; requires sitting_date and must not precede it.
related_process_idNoAdopted-texts-only procedure reference YYYY-NNNN, YYYY/NNNN(TYPE), known prefix or public URI.

Output Schema

NameRequiredDescription
capNoEffective whole-item page limit.
modeNoExecuted retrieval mode.
pageNoSearch continuation metadata; absent in get mode.
errorNoPresent when the call failed. Absent on success.
foundNoGet-only publication result; false for missing or empty detail.
itemsNoWhole sparse records on a search page; absent in get mode.
shownNoWhole items shown on this partial page.
noticeNoPublication, language fallback, empty-result or continuation guidance.
sourceNoEffective family in search mode; absent in generic get.
documentNoPresent only when get finds published detail.
availableNoWhether the selected source array was published, including a published empty array.
truncatedNoTrue when this page returns only part of the selected collection.
totalCountNoExact count only when published or computed over a complete collection.
appliedFiltersNoActual normalized retrieval scope and filters.

TDQS

A4.3/5.0
Behavior5/5

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

Beyond readOnly/openWorld/idempotent annotations, the description discloses important behavior: get returns links rather than extracted full text, detail preserves specific ID fields, unrelated missing-record and upstream-error outcomes remain ordinary, and document relations never imply procedure links. It also states the 10,000-result cap and page.next_offset continuation rule.

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

Conciseness4/5

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

The description is dense but front-loads purpose and mode behavior, and almost every sentence carries operational information. Some clauses are compressed to the point of being cryptic, notably the detail/relations sentence, but there is little obvious 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?

For a 14-parameter, two-mode tool with rich schema coverage, an output schema, and safety annotations, the description covers the essential decision points: mode choice, family-specific filters, work_type lookup, pagination limits, detail output nature, and non-procedure relation semantics. Remaining gaps are minor and largely covered by structured fields.

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 description coverage is 100%, so the baseline is 3. The description adds cross-parameter meaning beyond the schema: text/title/sitting_date/related_process_id are adopted-texts-only, committee supports term but not year, plenary supports year but not term, and get mode rejects source and all search filters.

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 opens with a specific verb and resource set: searching adopted texts, committee documents, or plenary documents, and retrieving metadata/source links via get mode. It clearly separates search from get and names the document families, though it does not explicitly contrast itself with sibling tools such as euparl_search_speeches or euparl_get_procedure.

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

Usage Guidelines4/5

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

It gives strong mode guidance: search discovers records, get requires document_id and rejects source plus search filters. It also states which filters apply to which families (adopted_texts/committee/plenary) and points to euparl_list_reference for work_type codes, leaving only sibling-level alternatives implicit.

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

euparl_search_mepsFind members of the European ParliamentA
Read-onlyIdempotent
Inspect

Find MEPs by name, country, political group, gender, or parliamentary term. Omitted term selects members in office today; explicit term selects that published term roster. Name matching requires every normalized token after case, diacritic, and punctuation normalization over the complete roster before paging. Country and group describe roster context, never voting-date affiliation. Continue with page.next_offset and snapshot; restart at offset 0 without snapshot after snapshot_changed. Read identity and membership history with euparl_get_mep. Empty matches succeed with guidance.

NameRequiredDescriptionDefault
termNoParliamentary term 0–10; omitted selects members in office today.
limitNoWhole items requested; default 20, effective maximum 100 with notice.
genderNoSupported gender code FEMALE, MALE, NAP, NKN, or NST, case-insensitive.
offsetNoZero-based collection offset; default 0.
countryNoSupported ISO alpha-2 country code, case-insensitive; GB maps to historical UK and does not establish current membership. See euparl_list_reference topic mep_filters.
languageNoSupported EU ISO-639-1 language, case-insensitive; default en; source text is never translated.
snapshotNoReturned roster snapshot; required for offset above 0, optional at offset 0.
name_containsNoAll-token name filter over the complete selected roster; case, diacritics, and punctuation are normalized, without fuzzy scoring.
political_groupNoSupported political group code, case-insensitive; accepts EPP, S&D, Verts/ALE, Greens/EFA, The Left, GUE/NGL, Renew, PfE, and Patriots aliases. Query aliases never rewrite historical organization identities. See euparl_list_reference topic mep_filters.

Output Schema

NameRequiredDescription
capNoEffective whole-item page limit.
pageNoWhole-item page metadata.
errorNoPresent when the call failed. Absent on success.
itemsNoComplete member records on the selected local page.
shownNoWhole items shown on this partial page.
noticeNoPublication, language fallback, empty-result or continuation guidance.
availableNoWhether the selected source array was published, including a published empty array.
truncatedNoTrue when this page returns only part of the selected collection.
totalCountNoExact count only when published or computed over a complete collection.
appliedFiltersNoActual normalized retrieval scope and filters.

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/openWorld annotations, the description discloses important operational behavior: snapshot-based paging, restart behavior after snapshot_changed, complete-roster name matching before paging, and empty-match success with guidance. It also clarifies that country and group are roster context, not voting-date affiliation.

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?

The description is dense but front-loaded and purpose-first, with no wasted filler. Each clause carries operational meaning relevant to a nine-parameter search tool.

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?

Given the nine parameters, existing output schema, and safe read-only annotations, the description covers the remaining decision-relevant behavior: filtering scope, term semantics, pagination/snapshot handling, empty results, and when to use the detail sibling. Nothing essential for correct invocation appears missing.

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 description coverage is 100%, so the schema already documents all nine parameters and the baseline is 3. The description adds useful semantic context around term omission, name-token normalization, roster-context filtering, and snapshot continuation, though it does not add meaning for every parameter beyond the schema.

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

Purpose5/5

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

The description uses a clear verb-resource pair, 'Find MEPs', and lists the supported filters, making the tool's purpose immediately identifiable. It also distinguishes the lookup role from the detail-oriented sibling by saying to read identity and membership history with euparl_get_mep.

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?

It explicitly explains how term omission versus explicit term selection behaves, how name matching works, and how country/group filters should be interpreted. It also directs agents to the appropriate sibling for identity/history and gives a clear rule for pagination continuation versus restart after a snapshot change.

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

euparl_search_speechesSearch parliamentary speechesA
Read-onlyIdempotent
Inspect

Search speech activities in parliamentary term 9 or 10, default 10, or retrieve one with mode get and speech_id. Text and title search return activity metadata, not transcripts. Follow document_ids with euparl_search_documents mode get and any returned parent_document_ids to source files. Use euparl_list_reference topic activity_types for activity_type codes. Get rejects search filters and nondefault paging. Search exposes at most 10000 results; continue with page.next_offset when present, otherwise narrow text, title, person_id, activity_type or sitting dates.

NameRequiredDescriptionDefault
modeNoDefault search discovers speech activities; get requires speech_id and rejects search filters.search
termNoSearch-only parliamentary term 9 or 10; omitted search defaults to 10. Omit in get mode.
textNoSearch-only keywords in the selected language; matching does not guarantee transcript output.
limitNoWhole items requested; default 20, effective maximum 100 with notice.
titleNoSearch-only published activity title keywords in the selected language.
offsetNoZero-based collection offset; default 0.
languageNoSupported EU ISO-639-1 language, case-insensitive; default en; source text is never translated.
person_idNoSearch-only numeric MEP identifier, person/ prefix or exact public person URI.
speech_idNoGet-only canonical activity ID, eli/dl/event/ prefix or exact public URI.
sitting_dateNoSearch-only sitting date YYYY-MM-DD; start date when a range end is supplied.
activity_typeNoSearch-only code from euparl_list_reference topic activity_types; case-insensitive and whitespace-trimmed.
sitting_date_endNoSearch-only inclusive end date YYYY-MM-DD; requires sitting_date and cannot precede it.

Output Schema

NameRequiredDescription
capNoEffective whole-item page limit.
modeNoExecuted speech retrieval mode.
pageNoSearch continuation metadata; absent in get mode.
errorNoPresent when the call failed. Absent on success.
foundNoGet-only publication result; false for missing or empty detail.
itemsNoWhole speech activity records on the search page; absent in get mode.
shownNoWhole items shown on this partial page.
noticeNoPublication, language fallback, empty-result or continuation guidance.
speechNoPublished activity detail when get succeeds.
availableNoWhether the selected source array was published, including a published empty array.
truncatedNoTrue when this page returns only part of the selected collection.
totalCountNoExact count only when published or computed over a complete collection.
appliedFiltersNoActual normalized retrieval scope and filters.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, and open-world behavior. The description adds valuable context beyond that: it discloses that get mode rejects search filters and nondefault paging, that search exposes at most 10000 results, and that pagination should continue with page.next_offset when present. These are concrete behavioral traits an agent needs.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and mode distinction. Every sentence carries useful information, though it is somewhat dense and could be slightly more concise. Overall structure is logical and efficient.

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?

Given 12 parameters, two modes, pagination, and the existence of an output schema, the description covers everything an agent needs: mode behavior, defaults, result limits, how to continue pagination, and where to find related data (documents, reference codes). No critical gaps remain.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 12 parameters in detail. The description mentions some parameter names (term, speech_id, text, title, person_id, activity_type, sitting_date) but adds little beyond what the schema provides. The inter-parameter constraints it mentions (e.g., get rejects search filters, sitting_date_end requires sitting_date) are also covered in the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb (search) and resource (speech activities), scopes it to parliamentary terms 9 or 10, and distinguishes it from sibling tools by naming euparl_search_documents and euparl_list_reference. It also clarifies that text and title search return activity metadata, not transcripts, which further differentiates from document search.

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

Usage Guidelines4/5

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

It clearly describes when to use search mode versus get mode with speech_id, and directs the agent to euparl_search_documents for source files and euparl_list_reference for activity_type codes. It also gives pagination guidance (continue with page.next_offset when present, otherwise narrow filters). No explicit exclusions are given, but the alternatives and conditions are clear.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updates
    • First observedeuparl_get_mep
    • First observedeuparl_get_plenary_votes
    • First observedeuparl_get_procedure
    • First observedeuparl_list_procedures
    • First observedeuparl_list_questions
    • First observedeuparl_list_reference
    • First observedeuparl_search_documents
    • First observedeuparl_search_meps
    • First observedeuparl_search_speeches

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides live, source-linked transparency data on German MPs, including roll-call voting, side jobs, committee memberships, and election programs, via the Abgeordnetenwatch API. No API key required.
    AGPL 3.0
  • A
    license
    A
    quality
    D
    maintenance
    Provides access to live UK Parliament data including bills, votes, MP profiles, and financial interests without requiring an API key. It enables users to track parliamentary rebellions, search petitions, and cross-reference voting records with declared financial interests.
    5
    3 npm
    9
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.