Riksdagen (Swedish Parliament) open data MCP.
Four tools with complete schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. All tools follow verb_noun naming (search_, list_, get_). Descriptions are adequate (100-200 chars) but lack actionable context for LLM selection. Parameter descriptions exist but are sparse, many lack format constraints, ranges, or examples of valid values. No output schemas documented. Error handling is minimal. The server exposes a read-only API with no destructive operations, reducing security risk but also limiting composition patterns.
Fetch a single document's full metadata by its id (e.g. "HD024189" or "hd024189"). Result nests under dokumentstatus.dokument.
List current members of the Riksdag (ledamöter), optionally filtered by party and/or constituency. Results nest under personlista.person[] with Swedish fields (parti, valkrets, efternamn, tilltalsnamn).
List individual member votes (voteringar) for a parliamentary session and committee-report designation. Results nest under voteringlista.votering[]; each row has namn, parti, valkrets and rost (Ja/Nej/Avstår/Frånvarande).
Search Riksdagen documents (motions, propositions, committee reports, written questions). Filter by free-text query, document type, and date range. Results nest under dokumentlista.dokument[].
Output schemas not documented. LLMs cannot plan downstream calls or extract fields without knowing what search_documents, list_members, list_votes, and get_document return. Descriptions mention nesting (e.g. 'dokumentlista.dokument[]') but do not specify field types or structure.
Parameter constraints missing. 'sz' (result size) lacks min/max bounds; 'doktyp' and 'parti' lack enum definitions; 'from' and 'tom' lack date format validation. Free-form strings invite hallucinated values.
No pagination guidance. search_documents defaults to 20 results (max ~500) but does not document how to fetch subsequent pages. list_votes defaults to 50 rows. Without offset/limit or cursor patterns, agents cannot reliably iterate large result sets.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Parameter descriptions lack actionable detail. 'Party abbreviation, e.g. S, M, SD, C, V, KD, L, MP' uses examples instead of an enum. 'Constituency name (valkrets), e.g. "Stockholms län"' does not explain how to discover valid values or whether partial matches work.
Error handling absent. No guidance on what to do if a document ID is invalid, a party code is unrecognized, or the API returns 500. LLMs receive raw HTTP errors with no recovery path.