Skip to main content
Glama

sweden-parliament-mcp-server

Server Details

Search Swedish parliamentary documents, speeches, votes, members, and statutes.

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

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation5/5

The set splits cleanly into three verbs over distinct resources: sky search_* tools locate items, get_* tools read a single item by exact ID, and list_reference is an offline catalog lookup. Boundaries are explicitly stated in descriptions (e.g., search_documents points to get_document for status/text; search_members points to get_member for assignment history), so an agent can pick correctly. get_votes is dual-mode (report vs member) but covers a single resource and is not confusable with the others.

Naming Consistency5/5

Every tool uses the same riksdag_ prefix followed by a verb_noun pattern (get_document, get_member, get_votes, list_reference, search_documents, search_members, search_speeches). Verb choice is meaningful and consistent across resources, with no camelCase or stylistic drift.

Tool Count5/5

Seven tools is well within a sensible range and each covers a distinct need (documents, members, votes, speeches, reference data). Nothing looks redundant or padded, and the read-only surface is matched to a read-only source.

Completeness4/5

Coverage is strong: search+read for documents, members and speeches, plus votes and a reference catalog, which covers the core research workflows. Minor gaps exist — there is no dedicated session/browse tool (the reference session catalog is noted as lagging), and speech text is reached only through search get-mode rather than a standalone reader.

Available Tools

7 tools
riksdag_get_documentRead parliamentary documentA
Read-onlyIdempotent
Inspect

Read a document status, decisions, linked records and text. Select sections and follow complete continuation calls to read long reports or consolidated SFS statutes. SFS text is consolidated published text, not a point-in-time legal version.

NameRequiredDescriptionDefault
revisionNoRevision returned by a previous call; rejects changed records.
sectionsNoSelect metadata, decisions, reservations, activities, properties, attachments, references, stakeholders, text or source_html. Omit for metadata, complete outline and first text page.
documentIdYesDocument ID from riksdag_search_documents, or unambiguous SFS YYYY:N identifier.
htmlLengthNoExplicit source HTML length in code points; defaults start at 8000 and fit the complete response; explicit lengths are honored.
htmlOffsetNoSource HTML offset in Unicode code points.
textLengthNoExplicit text length in code points; defaults start at 8000 and fit the complete response; explicit lengths are honored.
textOffsetNoText offset in Unicode code points.
sectionLimitNoRequested entries per selected array section; applied maximum 100.
sectionOffsetNoOffset applied independently to each selected array section.

Output Schema

NameRequiredDescription
textNoSelected canonical text page, unchanged on both surfaces.
errorNoPresent when the call failed. Absent on success.
foundNoWhether the source record exists.
sourceNoRequired attribution to the Swedish Parliament.
noticesNoAll applicable notices, including an empty list.
outlineNoEvery selectable section and its complete size.
guidanceNoHow to resolve a missing identifier.
metadataNoSource publication metadata and links.
revisionNoHash of the complete normalized record.
decisionsNoSelected page of authoritative report points.
truncatedNoAt least one selected array section has more entries or a response-fitted page; follow its sectionPages continuation.
activitiesNoSelected process-event page.
documentIdNoNormalized document identifier.
htmlOffsetNoReturned HTML offset in code points.
propertiesNoSelected property page.
referencesNoSelected relationship page.
sourceHtmlNoSeparately selected original source HTML page.
textOffsetNoReturned text offset in Unicode code points.
attachmentsNoSelected linked-attachment page.
htmlHasMoreNoWhether source HTML remains.
retrievedAtNoSource fetch time, retained unchanged on cache hits.
textHasMoreNoWhether canonical text remains.
nextHtmlCallNoComplete continuation for source HTML.
nextTextCallNoComplete continuation for canonical text.
reservationsNoSelected reservation page.
sectionPagesNoIndependent counts and complete continuation for every selected array.
stakeholdersNoSelected page of source participants, retaining entries without an IID.
textAvailableNoWhether a published canonical body exists.
upstreamQueryNoUpstream query echo; not proof that a filter was applied.
effectiveQueryNoDeterministic normalized input, applied defaults and local filters.
htmlTotalLengthNoComplete HTML code-point length.
textTotalLengthNoComplete canonical text length in code points.
upstreamWarningsNoWarnings supplied by the source.
htmlReturnedLengthNoReturned HTML code points.
textRepresentationNoSource SFS text or canonical converted Markdown.
textReturnedLengthNoActual returned text code points.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld, so the extra burden is modest; the description still adds real value by disclosing pagination/continuation behavior and the consolidated-vs-historical SFS caveat, which an agent could otherwise get wrong.

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?

Three sentences, front-loaded with what is returned, then the paging mechanism, then the SFS caveat. Dense but every sentence carries information; no 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?

With an output schema and full parameter documentation, the description only needs to cover the paging model and the SFS interpretation caveat, both of which it does. Revision-conflict semantics are left entirely to the schema, a minor gap.

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, but the description adds operational meaning the schema does not: that sections can be selected and that continuation calls are the mechanism for long documents. It still leaves the offset/length and sectionLimit interplay to the schema.

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?

Specific verb ('Read') plus resource ('document') and an enumeration of what is returned (status, decisions, linked records, text). It implicitly contrasts with riksdag_search_documents by dealing with a single identified document, and the SFS note flags a distinct content type, but it does not explicitly name a sibling.

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?

Explains when to select sections, when to follow continuation calls for long reports, and warns that SFS text is consolidated rather than point-in-time. Missing an explicit 'use riksdag_search_documents first to obtain a documentId' routing statement, though the schema supplies it.

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

riksdag_get_memberRead parliamentary memberA
Read-onlyIdempotent
Inspect

Read one member register entry and assignment history by exact member ID. Assignment dates preserve source precision and do not establish historical sitting status.

NameRequiredDescriptionDefault
memberIdYesNumeric memberId from riksdag_search_members, including leading zeros.
revisionNoRevision returned by the preceding assignment page.
assignmentLimitNoRequested assignments; applied maximum 100.
assignmentOffsetNoAssignment offset in published source order.

Output Schema

NameRequiredDescription
nameNoPublished given and family names, when present.
errorNoPresent when the call failed. Absent on success.
foundNoWhether the exact member IID exists.
partyNoPublished party code.
sourceNoRequired attribution to the Swedish Parliament.
statusNoUnmodified source service-status label.
hasMoreNoWhether assignments remain.
noticesNoAll applicable notices, including an empty list.
guidanceNoNext step when the member IID is absent.
memberIdNoNumeric register IID, including leading zeros; absent for some historical and European Parliament entries.
nextCallNoComplete next-assignment call.
revisionNoComplete normalized member record revision.
givenNameNoPublished given name.
sourceUrlNoPublic register source URL.
truncatedNoWhether further assignments remain available through nextCall.
familyNameNoPublished family name.
assignmentsNoPublished assignments in source order.
retrievedAtNoSource fetch time, retained unchanged on cache hits.
constituencyNoPublished constituency label.
returnedCountNoAssignments returned on this page.
upstreamQueryNoUpstream query echo; not proof that a filter was applied.
effectiveQueryNoDeterministic normalized input, applied defaults and local filters.
sourceRecordIdNoSource register UUID, distinct from the member IID.
assignmentLimitNoApplied assignment limit.
assignmentTotalNoExact total published assignments.
detailAvailableNoWhether a numeric member IID is published for riksdag_get_member.
assignmentOffsetNoApplied assignment offset.
upstreamWarningsNoWarnings supplied by the source.
serviceClassificationNoSource-defined Swedish chamber service; unknown is retained.
requestedAssignmentLimitNoRequested assignment limit before clamping and fitting.

TDQS

A3.8/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, so the description's added value is the domain caveat that assignment dates preserve source precision and do not establish historical sitting status. That is genuinely useful interpretation guidance beyond the annotations, though pagination/revision behavior is left to 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?

Two short sentences with the core purpose front-loaded and the interpretive caveat second. Every sentence earns its place with no 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?

An output schema exists and the annotations plus full parameter coverage carry most of the burden, so the description only needs purpose and caveats. It supplies both, though it could note that revision supports paging continuity to be fully self-contained.

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 all four parameters, including revision and assignment paging, are already documented in structured fields. The description adds no parameter-level detail beyond the schema, which is the expected 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?

States a specific verb and resource ('Read one member register entry and assignment history') and constrains the lookup to an exact member ID, which implicitly separates it from riksdag_search_members. It does not name the sibling explicitly, so a 4 rather than a 5.

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

Usage Guidelines3/5

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

'By exact member ID' implies the caller must already have an ID, and the schema notes it comes from riksdag_search_members, so usage context is present but indirect. There is no explicit when-to-use/when-not statement or named alternative in the description itself.

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

riksdag_get_votesRead parliamentary main votesA
Read-onlyIdempotent
Inspect

Read authoritative report decisions and party main-vote groups separated by avser, or a member’s session main votes. Report mode requires report or documentId; ballots true with an explicit point adds individual member ballots and independent ballotPage continuation. Member mode requires memberId. Follow complete local continuation calls. Main votes do not include every ballot round; empty rows never prove acclamation.

NameRequiredDescriptionDefault
modeYesReport decision points or one member’s session main votes.
limitNoMember or report-ballot requested rows; default 20, applied maximum 500.
partyNoMember-mode local party filter; report party groups are always complete.
pointNoOne authoritative report point; omit to traverse all points.
offsetNoMember or explicit report-ballot local row offset; default 0.
reportNoReport designation or session:designation; report mode only.
ballotsNoReport mode only: include individual ballots for an explicit point; default false.
sessionYesRequired parliamentary session, for example 2024/25.
memberIdNoRequired in member mode: numeric memberId from riksdag_search_members, including leading zeros.
revisionNoReturned complete-candidate or report-catalog revision for consistent continuation.
documentIdNoReport mode: documentId from riksdag_search_documents with documentType bet; alternative to report.
pointLimitNoAll-points report page size; default 5, applied maximum 10.
pointOffsetNoAll-points report local offset; default 0.
ballotRevisionNoReturned ballot-page revision for consistent report-ballot continuation.

Output Schema

NameRequiredDescription
modeNoApplied workflow.
errorNoPresent when the call failed. Absent on success.
foundNoWhether the selected report or member-vote selection is available; empty member rows remain a successful selection.
limitNoApplied member row limit after fitting.
partyNoApplied member-mode party filter.
votesNoWhole member or explicit report-point main ballots after local pagination.
offsetNoApplied member row offset.
pointsNoWhole report points with every party aggregate and complete decision evidence.
reportNoNormalized report designation.
sourceNoRequired attribution to the Swedish Parliament.
hasMoreNoMore whole rows or report points remain.
noticesNoAll applicable notices, including an empty list.
sessionNoNormalized parliamentary session.
guidanceNoHow to resolve a missing report.
memberIdNoNormalized member ID, preserving leading zeros.
nextCallNoComplete continuation advancing by actual returned entries.
revisionNoHash of complete normalized candidates or authoritative point catalog.
truncatedNoResponse fitting shortened the requested local page.
ballotPageNoIndependent ballot pagination; report-point counts and revision retain their meanings.
documentIdNoAuthoritative report document ID.
pointLimitNoApplied report-point limit after measured fitting.
totalCountNoExact filtered member-vote total or selected report-point total.
pointOffsetNoApplied report-point offset.
retrievedAtNoSource fetch time, retained unchanged on cache hits.
returnedCountNoActual returned whole rows or points.
upstreamQueryNoUpstream query echo; not proof that a filter was applied.
candidateCountNoComplete validated member/session candidate count, optionally narrowed upstream by party, before local filtering.
effectiveQueryNoDeterministic normalized input, applied defaults and local filters.
requestedLimitNoOriginal requested member row limit.
pointTotalCountNoExact complete authoritative report-point catalog count.
upstreamWarningsNoWarnings supplied by the source.
requestedPointLimitNoOriginal requested report-point limit.

TDQS

A4.2/5.0
Behavior4/5

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

The annotations already establish a safe, idempotent read, while the description adds important behavioral caveats: report party groups are complete, continuation calls must be followed, and empty vote rows do not prove acclamation. It also warns that main votes do not include every ballot round, which is material context beyond the annotations.

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-loaded, starting with the core resource and then covering mode requirements and caveats. It remains appropriately sized for a 14-parameter tool, though the mode-specific clauses are packed tightly into a single paragraph.

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 annotations, a full input schema, and an output schema present, the description supplies the remaining decision-critical context: mode requirements, ballot behavior, continuation expectations, and vote completeness limitations. Nothing essential for correct invocation appears to be 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 description coverage is 100%, so the schema already documents all 14 parameters in detail. The description reinforces key requirements and continuation behavior but does not add substantial parameter semantics beyond what the schema field descriptions provide.

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-resource pair: reading authoritative report decisions, party main-vote groups, or a member’s session main votes. It also clearly separates the two supported modes, so an agent can distinguish this tool from document, member, and speech search siblings.

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 concrete mode requirements: report mode needs report or documentId, member mode needs memberId, and individual ballots require ballots=true with an explicit point. It does not explicitly compare against sibling tools, but the mode-specific use conditions are otherwise clear.

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

riksdag_list_referenceRiksdag List ReferenceA
Read-onlyIdempotent
Inspect

Look up official document types, committees, parties, constituencies, speech reply filters, sessions, identifier conventions and source coverage. The offline snapshot is dated; follow nextCall to read every entry. Document subtypes remain distinct from parent document-type codes, and the session catalog can lag current sessions.

NameRequiredDescriptionDefault
limitNoRequested entries; values above 100 are clamped with a notice.
topicYesVocabulary or guidance topic to browse.
offsetNoZero-based local entry offset.

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
limitNoApplied maximum page length after clamping and whole-entry fitting.
topicNoSelected reference topic.
offsetNoApplied zero-based local offset.
sourceNoRequired attribution to the Swedish Parliament.
entriesNoComplete entries on this page, retaining Swedish source labels and distinct subtypes.
hasMoreNoWhether further bundled entries remain.
noticesNoAll applicable notices, including an empty list.
nextCallNoContinuation covering every remaining entry.
truncatedNoWhether response fitting shortened this page.
totalCountNoExact number of bundled entries for this topic.
retrievedAtNoSource fetch time, retained unchanged on cache hits.
returnedCountNoActual entries on this page.
upstreamQueryNoUpstream query echo; not proof that a filter was applied.
effectiveQueryNoDeterministic normalized input, applied defaults and local filters.
requestedLimitNoCaller-requested page length before clamping.
upstreamWarningsNoWarnings supplied by the source.
referenceSourceUrlNoOfficial source URL for this topic.
referenceVerifiedAtNoSnapshot verification date.
referenceCatalogTimestampNoOriginal catalog generation timestamp without an inferred timezone.

TDQS

A3.8/5.0
Behavior4/5

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

With readOnlyHint/idempotentHint already declaring safety, the description adds real context: the snapshot is dated, the session catalog can lag, document subtypes are distinct from parent type codes, and nextCall must be followed to read all entries. These are staleness and completeness traits the annotations cannot express.

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?

Three sentences, front-loaded with the topic inventory, then staleness and subtype caveats. Dense but each clause carries a distinct warning; only the topic list is close to restating the enum.

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?

An output schema exists, so return values need not be described, and the description covers the remaining unknowns an agent needs: snapshot staleness, pagination via nextCall, subtype-vs-parent distinction, and session lag. Little is missing for a read-only reference lookup.

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 still adds meaning by glossing the enum topics — 'speech reply filters' for speech_types, 'identifier conventions' for identifiers, and 'source coverage' for coverage — clarifying intent beyond the bare enum labels.

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 states a specific verb ('look up') and enumerates the reference resources covered (document types, committees, parties, sessions, identifier conventions, coverage). This clearly separates it from the sibling search_/get_ tools, which retrieve documents, members, votes, or speeches, even though no sibling is named explicitly.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: an agent gathers that this is the vocabulary tool to consult before or alongside the search tools. There is no explicit 'use this when / don't use this when' or pointer to a specific alternative, so guidance remains inferential.

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

riksdag_search_documentsSearch parliamentary documentsA
Read-onlyIdempotent
Inspect

Search Swedish parliamentary documents and consolidated SFS statutes by words, document type, session, committee, party, member IID or dates. Choose relevance or descending date ordering and follow complete continuation calls. Read document status and text with riksdag_get_document.

NameRequiredDescriptionDefault
pageNoRemote page number, starting at 1.
sortNoSource ordering; relevance for nonblank queries and descending date otherwise.
partyNoParty code or exact reference label.
queryNoSource full-text query; narrow slow searches with session or type.
dateToNoInclusive latest ISO calendar date, YYYY-MM-DD.
offsetNoIn-page row offset; follow nextCall without changing the remote page size.
sessionNoParliamentary session; omission searches all available sessions.
dateFromNoInclusive earliest ISO calendar date, YYYY-MM-DD.
memberIdNoNumeric member IID from riksdag_search_members; leading zeros are preserved.
pageSizeNoRequested remote page size; maximum applied size 50.
revisionNoRemote-page revision from continuation; rejects changed pages.
committeeNoCommittee code or exact reference label.
documentTypeNoDocument type code or exact reference label, including sfs.

Output Schema

NameRequiredDescription
pageNoApplied remote page.
errorNoPresent when the call failed. Absent on success.
itemsNoComplete rows selected from the fetched remote page.
offsetNoApplied in-page row offset.
sourceNoRequired attribution to the Swedish Parliament.
hasMoreNoWhether local rows or another remote page remain.
noticesNoAll applicable notices, including an empty list.
nextCallNoComplete next-page call with unchanged filters and page size.
pageSizeNoApplied remote page size.
revisionNoHash of the complete normalized remote page.
truncatedNoWhether response fitting shortened this local page.
totalCountNoAuthoritative source hit count, when published.
retrievedAtNoSource fetch time, retained unchanged on cache hits.
returnedCountNoActual rows returned.
upstreamQueryNoUpstream query echo; not proof that a filter was applied.
effectiveQueryNoDeterministic normalized input, applied defaults and local filters.
upstreamWarningsNoWarnings supplied by the source.
remoteReturnedCountNoComplete fetched remote-page row count.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered structurally. The description adds the pagination behavior ('follow complete continuation calls') and default ordering behavior, but says nothing about result-size limits or cost of broad queries beyond what the schema already states.

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?

Two sentences, front-loaded with the verb and resource, then the filter menu and the ordering/continuation instructions, then the sibling handoff. No filler and every clause carries operational information.

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?

Given 13 optional parameters, an output schema, and full annotations, the description covers purpose, filtering, ordering, pagination, and the follow-up retrieval tool, which is sufficient for correct invocation. It does not state default behavior when no parameters are supplied or how filters combine, leaving a minor completeness gap.

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 all 13 parameters are already documented with semantics such as revision, offset, and session behavior. The description only groups the filter families (words, type, session, committee, party, member IID, dates) at a high level without adding syntax or combination rules, matching the baseline 3 for a fully documented 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 (Search) and resource (Swedish parliamentary documents and consolidated SFS statutes) and enumerates the filter dimensions available, so an agent knows precisely what it retrieves. It also names the sibling riksdag_get_document for the status/text follow-up, cleanly separating search from retrieval.

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 routing: use this to search, then read document status and text with riksdag_get_document, and it explains the relevance-vs-date ordering choice and the continuation workflow. It stops short of explicit exclusions (e.g., when to prefer riksdag_search_speeches or riksdag_search_members for related content), so there is a small gap.

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

riksdag_search_membersSearch parliamentary membersA
Read-onlyIdempotent
Inspect

Find members and ministers by name, party, constituency and service status. Defaults to the service register; register all includes earlier source records through a larger cold request that may time out. Use numeric memberId with riksdag_get_member for assignment history.

NameRequiredDescriptionDefault
limitNoRequested rows; applied maximum 100.
partyNoParty code or exact reference label.
offsetNoLocal row offset.
sittingNoSource service classification; all retains unknown status.all
registerNoRegister scope; all includes historical records and can require a large cold request that reaches the normal timeout.service
revisionNoRevision returned by a preceding page.
constituencyNoExact constituency reference label or code, applied locally.
nameContainsNoStrict all-token local name filter, ignoring case and diacritics.

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
itemsNoFiltered member-register rows.
limitNoApplied row limit.
offsetNoApplied local offset.
sourceNoRequired attribution to the Swedish Parliament.
hasMoreNoWhether filtered rows remain.
noticesNoAll applicable notices, including an empty list.
nextCallNoComplete next-page call.
revisionNoComplete candidate-set revision.
truncatedNoWhether response fitting shortened the selected page.
totalCountNoExact count after local filtering.
retrievedAtNoSource fetch time, retained unchanged on cache hits.
returnedCountNoRows in this page.
upstreamQueryNoUpstream query echo; not proof that a filter was applied.
candidateCountNoActual returned candidate records in the selected register scope.
effectiveQueryNoDeterministic normalized input, applied defaults and local filters.
requestedLimitNoRequested row limit before clamping and fitting.
upstreamWarningsNoWarnings supplied by the source.
sourceReportedCountNoSource-reported register hits; may differ from actual returned candidates in all scope.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, and open-world, so the safety profile is covered. The description adds genuinely new behavioral context: the default register scope and the timeout risk of the larger historical request, which is operationally important and not derivable from annotations 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?

Three tight sentences with no filler; the core capability comes first, then the caveat, then the sibling pointer. The phrase 'register all includes earlier source records' is slightly compressed but still readable.

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 and full parameter documentation in the schema, the description only needs to cover invocation guidance and caveats — which it does via the register/timeout warning and the get_member pointer. Nothing essential for a correct call 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 description coverage is 100%, so the schema already documents all 8 parameters including register scope and timeout behavior. The description repeats the register/timeout story rather than adding new syntax or format details, so the 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?

States a specific verb ('Find') and resource ('members and ministers') with the filterable facets (name, party, constituency, service status). It also separates itself from the sibling riksdag_get_member by assigning ID-based assignment history to that tool, so an agent can pick correctly 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 Guidelines4/5

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

Clearly routes ID-based lookups to riksdag_get_member and explains the register=all trade-off ('larger cold request that may time out'). It lacks an explicit statement of when NOT to search at all, but the alternative routing gives strong context.

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

riksdag_search_speechesSearch and read parliamentary speechesA
Read-onlyIdempotent
Inspect

Search speeches within a required parliamentary session, optionally by member, party, reply exclusion and heading tokens. Heading matching searches debate headings only, never body text. Search hydrates one text page by default; use get mode with an item speechId to read all remaining text and retain the returned revision for continuation.

NameRequiredDescriptionDefault
modeNoSearch by default; get reads one retrieval speechId.
limitNoSearch only: requested rows, default 5 and applied maximum 20.
partyNoSearch only: official party code or exact reference label.
offsetNoSearch only: local row offset, default 0.
sessionNoRequired in search mode; parliamentary session such as 2024/25.
memberIdNoSearch only: numeric memberId from riksdag_search_members, retaining leading zeros.
revisionNoSearch candidate revision or get textRevision copied from the preceding page.
speechIdNoRequired in get mode: retrieval ID copied from a search item, never the source UUID.
textCountNoSearch only: maximum speeches to request text for, default 1 and applied maximum 5; 0 returns metadata.
speechTypeNoSearch only: all by default; speech excludes replies.
textLengthNoGet only: requested Unicode code points; defaults start at 8000 and fit the complete response; explicit lengths are honored.
textOffsetNoGet only: Unicode code-point offset, default 0.
headingContainsNoSearch only: all-token local heading and subheading filter, ignoring case and diacritics; never body search.

Output Schema

NameRequiredDescription
itemNoGet mode: exact speech metadata and text page.
modeNoApplied search or detail mode.
errorNoPresent when the call failed. Absent on success.
foundNoGet mode: whether the retrieval ID exists.
itemsNoSearch mode: local speech page after heading filtering.
limitNoApplied search page size after clamp and response fitting.
offsetNoApplied local row offset.
sourceNoRequired attribution to the Swedish Parliament.
hasMoreNoWhether filtered speech rows remain.
noticesNoAll applicable notices, including an empty list.
guidanceNoRecovery guidance for an expected detail miss.
nextCallNoComplete next local search-page call.
revisionNoSearch candidate-set revision or complete get detail revision.
speechIdNoGet mode: requested retrieval ID.
textCountNoApplied maximum speeches selected for text retrieval.
truncatedNoWhether response fitting shortened the local row page.
totalCountNoExact local heading-filtered match count.
retrievedAtNoSource fetch time, retained unchanged on cache hits.
returnedCountNoSpeech rows returned on this page.
upstreamQueryNoUpstream query echo; not proof that a filter was applied.
candidateCountNoComplete validated upstream candidate count.
effectiveQueryNoDeterministic normalized input, applied defaults and local filters.
requestedLimitNoOriginal requested search page size.
upstreamWarningsNoWarnings supplied by the source.

TDQS

A5/5.0
Behavior5/5

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

Beyond the safety hints provided in annotations, the description specifies crucial operational behaviors: heading matching applies only to debate headings, never the body text. It also details the default hydration behavior of a single page.

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 with critical information but highly structured. Both sentences serve distinct, necessary purposes: the first establishing scope and options, and the second detailing retrieval mechanics and workflow.

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 complexity of the 13 parameters and the dual functionality (search/get), the description provides necessary boundaries and operational context (e.g., 'heading matches debate headings only') that a standalone schema cannot convey.

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?

Although the schema is comprehensive, the description adds semantic meaning by clustering the parameters into operational stages (Search options vs. Read/Hydrate mechanics). This links the parameters functionally rather than just describing them individually.

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 clearly identifies the resource (speeches) and the primary action (search within a required parliamentary session). It distinguishes itself by detailing optional filters (member, party, heading tokens) and implicitly separating its function from general document search tools via the context provided.

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 provides an explicit workflow, explaining the difference between 'search' mode (default, hydrating one text page) and 'get' mode (used with `speechId` to continue reading). This guides the agent on the correct sequence of tool usage.

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 observedriksdag_get_document
    • First observedriksdag_get_member
    • First observedriksdag_get_votes
    • First observedriksdag_list_reference
    • First observedriksdag_search_documents
    • First observedriksdag_search_members
    • First observedriksdag_search_speeches

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.