Skip to main content
Glama

switzerland-parliament-mcp-server

Server Details

Search Swiss parliamentary business, votes, debates, members, and declared interests.

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/switzerland-parliament-mcp-server
GitHub Stars
0
Server Listing
Switzerland Parliament MCP Server

TDQS

A4.5/5.0

Scored across 7 tools

Disambiguation5/5

The seven tools divide cleanly into get/search operations for businesses, members, and transcripts, plus votes and reference dictionaries. Although chparl_get_business and chparl_get_votes expose multiple modes, their names and descriptions make clear when each tool applies, and no two tools appear to target the same resource in the same way.

Naming Consistency5/5

All tools use the same chparl_verb_noun snake_case pattern: get_business, get_member, get_votes, list_reference, search_business, search_members, search_transcripts. There are no mixed verb styles or casing conventions.

Tool Count5/5

Seven tools is well within the expected range for this domain and each tool corresponds to a meaningful entity or operation. The set avoids both thin coverage and excessive fragmentation.

Completeness4/5

The surface covers reading and searching businesses and members, retrieving votes, searching transcripts, and listing reference dictionaries, which is strong for a read-only parliamentary data server. Minor gaps remain, such as no general full-text business search or date-oriented vote search, and Ständerat member votes are explicitly excluded.

Available Tools

7 tools
chparl_get_businessChparl Get BusinessA
Read-onlyIdempotent
Inspect

Read a Swiss parliamentary business by canonical eight-digit businessId or exact published short number. Choose overview for metadata and available text sizes; texts for original published text, automatically outlined when several fields exceed the disclosure budget; or status_history, bills, related_business, preconsultations, or subjects for independently paged relationships. textFields selects complete original fields only in texts, even when large. Paging applies only to relationships. Use subjects to narrow chparl_search_transcripts; source text and HTML remain unchanged.

NameRequiredDescriptionDefault
limitNoRelationships only: requested page size, default 20, clamped to 100.
offsetNoRelationships only: source row offset, default zero; continue with returned nextOffset.
sectionNoReadable section, default overview.overview
languageNoMetadata and business-text variant: de (default), fr, or it.de
businessIdYesCanonical eight-digit businessId from chparl_search_business, or an exact published short number such as 99.1234.
textFieldsNoTexts only: named original fields; empty array means unset.

Output Schema

NameRequiredDescription
billsNoLinked bill page; no enacted-law content is inferred.
errorNoPresent when the call failed. Absent on success.
foundNoWhether the requested business metadata row exists.
noticeNoCombined clamping, byte-fitting, empty-section, or past-end guidance.
hasMoreNoWhether selected relationship rows remain; absent for non-collection results.
sectionNoSelected section.
businessNoBusiness summary on every found result, with extra metadata on overview.
guidanceNoDiscovery guidance when the business is missing.
subjectsNoDebate subjects usable in chparl_search_transcripts.
nextOffsetNoOriginal offset plus delivered rows when more remain.
provenanceNoAttribution, publication status, and source download dates.
totalCountNoWhole selected relationship count when supplied by the source.
textDocumentNoOriginal selected texts or automatic field outline.
returnedCountNoComplete relationship rows delivered; absent for overview, texts, or missing business.
statusHistoryNoPublished status history page.
effectiveLimitNoEffective relationship limit after clamping.
relatedBusinessNoRelated business page.
effectiveFiltersNoEffective business identifier, section, selectors, and paging defaults.
preconsultationsNoPublished committee preconsultation page.

TDQS

A4.6/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing non-obvious behavior: texts are 'automatically outlined when several fields exceed the disclosure budget', textFields returns complete fields even when large, and source text/HTML 'remain unchanged'. It stops short of covering error modes or the shape of the returned paging envelope, so not a full 5.

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 action and identifier formats, then section selection, then caveats — a sensible priority order. It is dense with semicolon-chained clauses, which costs a little readability but nothing is redundant.

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 6-parameter tool with full schema descriptions, readOnly/idempotent annotations and an output schema, the description closes the remaining gaps: identifier provenance, section choice, paging scope, and the outlining behavior that would otherwise surprise an agent.

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 schema already documents every parameter and the baseline is 3. The description still adds scoping semantics the schema leaves implicit: textFields applies only to texts, limit/offset only to relationships, and the accepted businessId forms.

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?

Opens with a specific verb+resource ('Read a Swiss parliamentary business') and immediately scopes the accepted identifiers (canonical eight-digit businessId or exact published short number). It then enumerates the section modes, which makes it unmistakable against the search/list siblings.

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 when-to-use routing per section (overview for metadata/sizes, texts for original text, relationship sections for paged data) and cross-tool guidance ('Use subjects to narrow chparl_search_transcripts'). It also states the constraint that paging applies only to relationships, preventing a common misuse.

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

chparl_get_memberChparl Get MemberA
Read-onlyIdempotent
Inspect

Read a Swiss Parliament member by PersonNumber, which need not equal Person.ID. overview returns identity and every base MemberCouncil affiliation without pagination. Select council_terms for historical council terms, committees for published MemberCommittee rows, or interests for declared interests; those sections accept limit and offset. Missing paid status means unknown, and empty interests do not establish absence of conflicts of interest. Metadata labels remain in the selected language.

NameRequiredDescriptionDefault
limitNoRelationship sections only: default 20, effective maximum 100 with notice. Omit for overview.
offsetNoRelationship sections only: default zero; continue with nextOffset. Omit for overview.
sectionNooverview (default), council_terms, committees, or interests.overview
languageNoMetadata language: de (default), fr, or it; uppercase is accepted.de
personNumberYesRequired positive Int32 PersonNumber as a decimal string; discover with chparl_search_members.

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
foundNoWhether a Person matched the requested PersonNumber and language.
noticeNoCombined clamping, size, empty-section, or past-end guidance.
personNoResolved parliamentary identity, including the distinct Person.ID.
hasMoreNoWhether section records remain; false for complete overview affiliations.
sectionNoProfile component returned.
guidanceNoDiscovery guidance when the person is absent.
interestsNoDelivered declared interests; missing paid flags stay unknown, and emptiness does not prove no conflicts of interest.
committeesNoDelivered published committee memberships; not a complete historical committee ledger.
nextOffsetNoStarting offset plus delivered records; absent when exhausted or unpaged.
provenanceNoAttribution, publication status, and source download dates.
totalCountNoExact section count when supplied upstream, or the fully enumerated overview membership count.
membershipsNoComplete base MemberCouncil affiliations in overview; source continuations are drained.
councilTermsNoDelivered complete historical council-term records.
returnedCountNoNumber of profile records returned; omitted for a missing person.
effectiveLimitNoEffective page size, present only for relationship sections.
effectiveFiltersNoNormalized profile parameters and defaults for the selected section.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/openWorld, and the description adds genuinely non-obvious semantics beyond them: missing paid status means unknown, empty interests do not establish absence of conflicts of interest, overview is unpaginated while relationship sections paginate (effective max 100 with notice), and metadata labels follow the selected language. These are exactly the interpretive caveats an agent needs to avoid misreading the response.

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?

Purpose is front-loaded and the pagination caveat comes second, so the highest-value information leads. It is dense and semicolon-heavy, packing several sections into one sentence, but nearly every clause earns its place with a behavior an agent would otherwise get wrong.

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 a full output schema present, the description need not describe return shapes, and it instead covers the interpretive risks (paid status unknown, empty interests ambiguity, pagination scope, language of labels). Combined with complete schema annotations, nothing essential for correct invocation is missing.

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

Parameters5/5

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

Though schema coverage is 100% (baseline 3), the description adds meaning the schema does not: PersonNumber need not equal Person.ID, limiting applies only to relationship sections (omit for overview), and language governs the labels returned. These are genuine semantic additions rather than restatements.

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 a specific verb and resource — read a Swiss Parliament member by PersonNumber — and immediately clarifies the non-obvious ID semantics (PersonNumber need not equal Person.ID). This is an unambiguous, single-purpose getter that an agent can distinguish from the sibling search/get tools by resource alone.

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 explicitly routes the agent among the four sections: overview for identity and all base affiliations without pagination, council_terms for historical terms, committees for published MemberCommittee rows, interests for declared interests. Only gap is it does not state when to prefer this over chparl_search_members (that hint lives in the schema's personNumber description, not the tool description).

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

chparl_get_votesChparl Get VotesA
Read-onlyIdempotent
Inspect

Find Nationalrat roll calls with mode votes and businessId, sessionId, or both. Use mode members with voteId for one paged roll call, or personNumber without voteId for member history optionally filtered by businessId and sessionId. Use mode groups with voteId for complete decision counts by parliamentary group. Member roll calls start in the 2003 winter session and exclude Ständerat member votes; an empty result does not prove no vote occurred. Member counts cover only delivered rows; groups mode reads all published member rows before reporting totals. Verbatim decisionTexts accompany code buckets when published. Code meanings include 1 yes, 2 no, 3 abstention, 4 present, 5 did not participate, 6 excused under Art. 57 para. 4, 7 president does not vote, and 8 resigned. Unknown codes and missing decisions are retained. Follow nextOffset with the same mode and filters.

NameRequiredDescriptionDefault
modeNoWorkflow: votes (default), members, or complete groups.votes
limitNoPaged modes only: votes default 10/max 50, members default 50/max 100; higher requests are clamped with notice.
offsetNoPaged modes only: starting row offset, default zero; continue using returned nextOffset.
voteIdNoMembers or groups only: positive Int32 Vote.ID discovered through votes mode; omit for personNumber history. Cannot combine with businessId or sessionId.
languageNoMetadata language: de (default), fr, or it; decision text remains as published.de
sessionIdNoVotes or member history only: positive Int32 Session.ID from chparl_list_reference topic sessions; combine with businessId to narrow discovery.
businessIdNoVotes or member history only: canonical eight-digit businessId from chparl_search_business, or a published short number such as 99.1234.
personNumberNoMembers only: exact PersonNumber from chparl_search_members, distinct from Person.ID or current group affiliation.

Output Schema

NameRequiredDescription
modeNoVote workflow returned.
voteNoResolved roll-call metadata in members or groups mode.
errorNoPresent when the call failed. Absent on success.
foundNoWhether a supplied business or selected vote exists; unkeyed history/session searches succeed with true even when empty.
votesNoWhole metadata records delivered in votes mode.
groupsNoComplete group aggregates; empty when member data is unavailable.
noticeNoCombined clamping, whole-item fitting, empty-result, or coverage guidance.
hasMoreNoWhether more rows remain after the delivered page; false for complete groups.
membersNoWhole member decisions delivered in members mode.
businessNoResolved business identity when supplied for vote discovery or member history.
coverageNoCoverage of the published member decisions.
guidanceNoIdentifier discovery guidance when the parent was not found.
nextOffsetNoOriginal offset plus delivered rows; absent when exhausted.
provenanceNoAttribution, publication status, and source download dates.
totalCountNoExact whole-query count of votes or filtered member rows, when supplied.
returnedCountNoNumber of delivered vote, member, or group records.
decisionCountsNoPage counts in members mode or complete nonempty vote counts in groups mode.
effectiveLimitNoEffective page size after mode-specific clamping.
effectiveFiltersNoNormalized mode, identifiers, metadata language, and applicable paging defaults.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/openWorld, so the description earns credit for going further: it warns that an empty result does not prove no vote occurred, distinguishes member counts (delivered rows only) from groups mode (reads all published rows before totaling), notes Ständerat votes are excluded and the coverage starts in the 2003 winter session, and states unknown codes are retained. These are non-obvious data-fidelity caveats an agent could not infer.

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 core purpose and mode routing, with caveats after. The eight enumerated code meanings take up roughly a third of the text and largely restate decodable output, which is the one portion that does not clearly earn its space given an output schema exists.

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 an 8-parameter, three-mode, paged tool, the description covers mode selection, filter combinations, coverage limits, code interpretation, retention of unknown values, and pagination via nextOffset. Return-shape detail is left to the output schema, which is the right division of labor.

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 still adds value by explaining how mode interacts with filters as a workflow rather than isolated fields. It does not add syntax or format detail beyond the schema, but the mode-conditioned usage framing exceeds baseline.

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?

Opens with a specific verb+resource ("Find Nationalrat roll calls") and immediately enumerates the three workflow modes, which no sibling offers. It references siblings only as ID sources (chparl_search_business, chparl_search_members) rather than stating an explicit this-not-that boundary, so differentiation is strong but not stated outright.

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?

Each mode is paired with its required and permitted inputs: "mode members with voteId for one paged roll call, or personNumber without voteId for member history", and "mode groups with voteId for complete decision counts". It also flags the combination constraints (voteId cannot combine with businessId/sessionId) so an agent can pick a mode without opening the schema.

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

chparl_list_referenceChparl List ReferenceA
Read-onlyIdempotent
Inspect

List Swiss Parliament reference entries and source coverage. Choose identifiers, coverage, or languages for server explanations; statuses for the official legacy/current status snapshot; or business_types, councils, cantons, parties, groups, committees, or sessions for live dictionaries. Date filters apply only to sessions. Follow nextOffset with the same topic, language, and dates; labels remain in the requested metadata language and missing labels stay unknown.

NameRequiredDescriptionDefault
limitNoRequested page size, default 50; values above 100 are clamped with a notice. Whole-item byte fitting may return fewer entries.
topicYesReference dictionary or explanatory topic to list.
dateToNoSessions only: inclusive EndDate upper bound, YYYY-MM-DD.
offsetNoStarting row offset, default zero. Use the returned nextOffset to continue.
dateFromNoSessions only: inclusive StartDate lower bound, YYYY-MM-DD.
languageNoMetadata label language: de (default), fr, or it.de

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
itemsNoComplete reference entries delivered on this page.
topicNoReference topic returned.
noticeNoCombined limit, whole-item byte-budget, empty-result, or past-end guidance.
hasMoreNoWhether entries remain beyond this delivered page.
nextOffsetNoOriginal offset plus delivered entries; absent when exhausted.
provenanceNoAttribution, publication status, and source download dates.
totalCountNoWhole-query reference count when the source supplies one.
returnedCountNoNumber of complete entries actually delivered.
effectiveLimitNoEffective row limit after clamping; response-size fitting may deliver fewer.
effectiveFiltersNoNormalized reference filters and resolved paging defaults.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld, and the description adds non-obvious behavior: pagination via nextOffset must repeat the same topic, language, and dates; labels stay in the requested metadata language; unknown labels stay unknown rather than falling back. It does not discuss rate limits or return envelope shape, but the output schema covers the latter.

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 sentence, then the topic-routing clause, then operational notes; no filler. Dense but appropriate for an 11-value enum tool, though the longer trailing sentences about labels could be tightened.

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 paginated reference-dictionary tool with a full output schema and complete annotation coverage, the description supplies everything an agent needs: topic routing, the sessions-only date rule, pagination invariants, and label-language behavior. Return shape is left to the output schema, as allowed.

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 is 3; the description earns a bump by adding semantics the schema lacks — that dateFrom/dateTo are meaningful only for the sessions topic, and that offset continuation requires holding topic, language, and dates constant. It does not explain limit clamping, but the schema already does.

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?

Opens with a specific verb and resource ("List Swiss Parliament reference entries and source coverage") and then enumerates every topic value, so an agent knows exactly what class of data this returns. It does not name sibling tools, but the reference/dictionary nature is clearly distinct from the chparl_search_* and chparl_get_* tools.

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 routes each topic to its use case: identifiers/coverage/languages for server explanations, statuses for the legacy/current snapshot, and the remaining topics for live dictionaries. It also states the key conditional constraint that "Date filters apply only to sessions," which prevents a common misuse.

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

chparl_search_businessChparl Search BusinessA
Read-onlyIdempotent
Inspect

Search Swiss parliamentary business by title substring, published submitter label, type, current status, submission session, inclusive submission dates, or committee role. Use chparl_list_reference to resolve codes and chparl_get_business to read a returned businessId. Follow nextCursor with unchanged filters; newest canonical business IDs appear first. Author searches omit the business total. Committee searches page role candidates and may return short pages without a distinct business total. Metadata labels remain in de, fr, or it without translation fallback.

NameRequiredDescriptionDefault
limitNoPage request, default 20; clamped to 100. Committee pages count candidate roles, and byte fitting may return fewer businesses.
queryNoOne title substring, preserving punctuation and diacritics.
authorNoSubstring of the published submitter label, not every co-signatory.
cursorNoOpaque nextCursor from a previous call with identical filters; omit to start.
typeIdNoBusiness type code from chparl_list_reference topic business_types.
languageNoMetadata language: de (default), fr, or it.de
statusIdNoCurrent status code from chparl_list_reference topic statuses.
sessionIdNoSubmission session ID from chparl_list_reference topic sessions.
committeeIdNoCommittee number from chparl_list_reference topic committees; matches any published committee role.
submittedToNoInclusive submission-date upper bound, YYYY-MM-DD.
submittedFromNoInclusive submission-date lower bound, YYYY-MM-DD.

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
noticeNoCombined clamp, short-page, size-fitting, or empty-result guidance.
hasMoreNoWhether older matching businesses remain.
businessesNoDistinct complete business summaries on this page.
nextCursorNoContinue after the smallest delivered business ID using identical filters.
provenanceNoAttribution, publication status, and source download dates.
totalCountNoOriginal-filter business total, available only without author or committee filters.
returnedCountNoDistinct businesses actually delivered.
effectiveLimitNoEffective business or role-candidate limit after clamping.
effectiveFiltersNoEffective business discovery filters and defaults.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the readOnly/openWorld/idempotent annotations by disclosing non-obvious behavior: newest canonical IDs come first, author searches omit the business total, committee searches page over role candidates and may return short pages without a distinct total, and metadata labels are never translated. These are exactly the quirks that would otherwise cause an agent to misread or re-page results.

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?

Five tight sentences: purpose first, then prerequisite/follow-up routing, then pagination rule, then the two search-mode caveats, then the localization caveat. No filler or repetition of schema content.

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 an 11-parameter, open-world search with an output schema, it covers everything an agent needs to call it correctly: code resolution, cursor discipline, result ordering, and the degraded-result cases. Return value explanation is rightly omitted since an output schema exists.

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%, including defaults, enum values, patterns and the maximum-vs-clamped limit nuance, so the schema already carries parameter meaning. The description restates the facet list and adds only marginal semantics (inclusive date bounds, published submitter label), so baseline 3 applies.

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?

Names a specific verb (search) and resource (Swiss parliamentary business) and enumerates the exact facets that can be searched: title substring, published submitter label, type, status, session, submission dates, committee role. It also distinguishes itself from siblings by pointing to chparl_list_reference for code resolution and chparl_get_business for reading a returned businessId.

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?

Gives clear operational context: resolve codes with chparl_list_reference first, follow nextCursor only with unchanged filters, and use chparl_get_business to expand results. There is no explicit statement of when *not* to use this tool (e.g., versus chparl_search_transcripts for debate text), so it stops short of the top band.

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

chparl_search_membersChparl Search MembersA
Read-onlyIdempotent
Inspect

Find current or former Swiss Parliament affiliation records by name, council, canton, party, or parliamentary group. membership defaults to current; former selects inactive records and all omits the activity filter. query matches a substring of a published first, last, or official name. Use each record’s personNumber with chparl_get_member for identity, full council terms, committees, and declared interests. Follow nextOffset with the same filters.

NameRequiredDescriptionDefault
limitNoRequested page size, default 20, effective maximum 100 with notice. Whole records may be fitted to the response byte budget.
queryNoOptional name substring, trimmed without changing internal punctuation or diacritics.
offsetNoStarting MemberCouncil record offset; continue with returned nextOffset.
councilNoN or S; exact German, French, and Italian council names are accepted. Resolve codes with chparl_list_reference topic councils.
groupIdNoOptional ParlGroupNumber from chparl_list_reference topic groups.
partyIdNoOptional Party identifier from chparl_list_reference topic parties.
cantonIdNoOptional Canton identifier from chparl_list_reference topic cantons.
languageNoMetadata language: de (default), fr, or it; uppercase is accepted.de
membershipNocurrent (default), former, or all MemberCouncil records.current

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
noticeNoCombined clamping, byte fitting, empty-result, or past-end guidance.
hasMoreNoWhether further matching affiliation records remain.
membersNoComplete MemberCouncil affiliation records delivered on this page.
nextOffsetNoStarting offset plus delivered records; absent when exhausted.
provenanceNoAttribution, publication status, and source download dates.
totalCountNoExact whole-query MemberCouncil record count when supplied upstream.
returnedCountNoNumber of complete MemberCouncil records delivered.
effectiveLimitNoEffective requested page size after clamping.
effectiveFiltersNoNormalized search filters and resolved defaults.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and open-world, so the safety profile is covered. The description adds genuinely non-structured behavior: default activity filtering and the requirement to reuse the same filters when following nextOffset. It does not mention the byte-budget truncation of results, which is only visible in 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.

Conciseness5/5

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

Four sentences, each carrying distinct information: scope, filter semantics, query semantics, cross-tool routing, and pagination. Nothing is repeated from the schema verbatim and the core purpose is front-loaded.

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 nine optional parameters, full schema coverage, and an output schema, the description supplies what the structured fields cannot: filter-mode semantics, cross-tool routing, and pagination protocol. An agent can call and iterate this tool correctly from the description alone.

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 adds real meaning beyond it: the precise semantics of current/former/all activity filtering and the fact that query matches a substring of first, last, or official names rather than free text. Filter-to-reference-tool resolution is left to 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?

States a specific verb and resource ('Find ... Swiss Parliament affiliation records') plus the exact filterable dimensions (name, council, canton, party, parliamentary group). It also distinguishes itself from chparl_get_member by scoping this tool to search and routing detail lookups elsewhere.

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 membership modes ('current' default, 'former' selects inactive, 'all' omits the filter), how query substring matching works, and the handoff path: use personNumber with chparl_get_member for identity and terms. Pagination guidance ('Follow nextOffset with the same filters') closes the loop on repeated calls.

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

chparl_search_transcriptsChparl Search TranscriptsA
Read-onlyIdempotent
Inspect

Find Amtliches Bulletin passages by business, debate subject, speaker, session, council, or inclusive meeting dates. Supply at least a business, subject, speaker, session, or date bound. A text substring query additionally requires sessionId or a closed date range of at most 31 calendar days. Searches return metadata by default; includeText returns whole original passages, and an exact transcriptId defaults to full text. Metadata language never translates the speaker text; missing LanguageOfText remains unknown. Business searches cover every associated subject up to 20; larger debates require selecting subjectId through chparl_get_business section subjects. Follow nextOffset with unchanged filters.

NameRequiredDescriptionDefault
limitNoSearch page request: metadata default 20/max 100, full text default 3/max 10; clamped with notice. Incompatible with transcriptId.
queryNoOne original-text substring; requires sessionId or both dates spanning at most 31 inclusive calendar days.
dateToNoInclusive meeting-day upper bound, YYYY-MM-DD.
offsetNoSearch starting row offset, default zero; use returned nextOffset. Incompatible with transcriptId.
councilNoN or S; exact German, French, and Italian council names are also accepted.
dateFromNoInclusive meeting-day lower bound, YYYY-MM-DD.
languageNoMetadata language: de (default), fr, or it; original passage text stays in its published language.de
sessionIdNoExact positive decimal session identifier from chparl_list_reference topic sessions.
subjectIdNoPositive Int64 debate IdSubject string; incompatible with businessId and transcriptId.
businessIdNoCanonical eight-digit businessId from chparl_search_business or published short number; incompatible with subjectId and transcriptId.
includeTextNoReturn whole original text and references; defaults true for transcriptId and false for searches. Explicit false always wins.
personNumberNoExact speaker PersonNumber from chparl_search_members, distinct from Person.ID.
transcriptIdNoExact positive Int64 transcriptId from a previous chparl_search_transcripts result; only language and includeText may accompany it.

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
foundNoExact-ID mode only: whether the selected passage exists.
noticeNoCombined clamp, whole-item fitting, empty-result, or indivisible-record guidance.
hasMoreNoWhether passages remain after the delivered search page; absent in exact-ID mode.
guidanceNoHow to discover a valid exact passage or missing business identifier.
nextOffsetNoOriginal offset plus actually delivered passages, when more remain.
provenanceNoAttribution, publication status, and source download dates.
scopeFoundNoBusiness searches only: whether the business exists, independently of published subjects or passages.
totalCountNoExact whole-scope passage count when supplied; absent when a business does not exist.
transcriptsNoWhole matching passages or zero-or-one exact-ID result, without shortening original fields.
returnedCountNoPassages actually delivered on a search page; absent in exact-ID mode.
effectiveLimitNoSearch page size after metadata or full-text clamping.
effectiveFiltersNoEffective passage filters, disclosure mode, and applicable paging defaults.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, open-world behavior, so the bar is lower; the description adds the return-mode behavior that annotations cannot express: metadata by default, full original passages with includeText, and full text when transcriptId is supplied. It also discloses the language caveat that metadata language never translates speaker text and that missing LanguageOfText stays unknown. It says nothing about failure modes or rate behavior, so not a 5.

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 sentences, front-loaded with purpose and the admission constraint before secondary details like the 20-subject cap and pagination. Some clauses are densely packed and slightly cryptic ('missing LanguageOfText remains unknown'), but no sentence is filler.

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?

For a 13-parameter, zero-required tool with complex conditional constraints, the description covers admission rules, text-search preconditions, output-shape toggles, language caveats, and pagination. Return field details are rightly left to the output schema. Only error/edge behavior is unaddressed.

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 is 3; the description earns above baseline by articulating a one-of constraint the schema does not encode (required: 0) — at least one of business, subject, speaker, session, or date bound — and by pairing query with the 31-day window. It also flags the includeText default inversion for transcriptId, though much of that is duplicated in 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 first sentence names a specific verb (Find) and resource (Amtliches Bulletin passages) plus the full set of filterable dimensions, so the agent knows exactly what this returns. It is clearly distinguishable from siblings such as chparl_search_business or chparl_get_votes, which are not about retrieving passage text.

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 states the minimum viable call ('Supply at least a business, subject, speaker, session, or date bound'), the extra precondition for text queries (sessionId or a closed range of at most 31 calendar days), and a concrete alternative path (select subjectId via chparl_get_business when a business has more than 20 subjects). It also closes the loop on follow-up calls ('Follow nextOffset with unchanged filters').

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. 7 tool updates
    • First observedchparl_get_business
    • First observedchparl_get_member
    • First observedchparl_get_votes
    • First observedchparl_list_reference
    • First observedchparl_search_business
    • First observedchparl_search_members
    • First observedchparl_search_transcripts

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables searching and retrieving Swedish Riksdag open data — parliamentary documents, committee reports, consolidated SFS statutes, speeches, main votes, and member records — through seven tools, with paginated full text and continuation support. Runs keyless over STDIO or Streamable HTTP and includes dated reference tables for document types, committees, parties, constituencies, and sessions.
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.