Danish Parliament (Folketinget) open data MCP — oda.ft.dk, an OData v3 API.
Three tools with complete input schemas and descriptions. Naming follows verb_noun pattern (query_, get_, search_). Descriptions are detailed (150-250 chars) and include examples. However, output schemas are undocumented, LLMs cannot predict response structure. Parameters lack type constraints (enums, ranges, patterns). Error handling is minimal. No pagination guidance despite OData $top/$skip support. Missing idempotency and rate-limit documentation for a public API.
Fetch a single Folketinget entity record by its numeric id, e.g. Sag(1). Returns the record object directly (not wrapped in `value`). Use $expand to inline related entities.
Query a Folketinget (Danish Parliament) OData v3 entity collection. Returns matching rows under the `value` array. Fields and values are in Danish (e.g. titel=title, navn=name, opdateringsdato=last-updated). Supports OData $filter/$orderby/$expand/$select with $top/$skip paging. Example filters: "year(opdateringsdato) eq 2024", "substringof('klima',titel)", "typeid eq 3".
Convenience search over Sag (cases/bills): finds cases whose Danish title (titel) contains a substring. Sorted by most recently updated. Use this to look up legislation/matters by keyword; for full control use query_entity.
Output schemas undocumented. LLMs cannot predict response structure (e.g., 'value' array for list endpoints vs direct object for by-id). Agents cannot plan downstream field extraction or chaining.
Entity parameter accepts free-form strings with no enum constraint. LLMs may hallucinate invalid entity names (e.g., 'Sager' instead of 'Sag'). Should declare enum: ['Sag', 'Aktør', 'Afstemning', 'Stemme', 'Møde', 'Dokument', 'Sagstrin'].
Numeric parameters (top, skip, id) lack range constraints. No minimum/maximum documented. LLMs could pass negative, zero, or absurdly large values (e.g., top=999999). Should specify: top 1 - 1000, skip ≥0, id >0.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
No pagination guidance in descriptions. OData supports $top/$skip but tool descriptions do not explain default behavior (top=20), max limits, or when to use skip for iteration. Agents may not discover pagination capability.
Error handling returns raw HTTP status + truncated response text. No recovery guidance. E.g., '404 not found' tells LLM nothing about whether to retry, adjust filter, or try a different entity. Should include actionable hints.