Dutch Parliament (Tweede Kamer) open data MCP server providing access to OData v4 entities including members, parties, cases, activities, meetings, votes, decisions, and documents.
Three well-defined tools with complete JSON schemas, clear descriptions, and proper parameter typing. Tool names follow verb_noun convention (query_, get_, search_). Descriptions are detailed and contextual (194 - 250 chars, within baseline 34 - 392 range). All parameters have type declarations and descriptions. However, output schemas are not documented, LLMs cannot predict response structure. Error handling is absent; no guidance on retryability, invalid inputs, or recovery paths. No tool annotations (readOnlyHint, idempotentHint). The server exposes a read-only OData API with good parameter constraints (enums for search_people.field), but lacks defensive validation and user-facing error messages.
Fetch one Tweede Kamer record by its GUID id. Pass the entity name and the record Id (a GUID, e.g. "8b3664bd-77e4-468b-af96-f3f4ec27fcce"). Optionally narrow fields with $select or inline related records with $expand.
Query a Tweede Kamer (Dutch Parliament) OData v4 entity set with full OData passthrough. Entity names and fields are Dutch. Returns matching records under `value`. Use $filter to subset (e.g. "Achternaam eq 'Rutte'" or "contains(NaamNL,'Groen')"), $select to pick fields, $orderby to sort, $expand for related records. Always set $top to bound responses.
Convenience search over Tweede Kamer members/people (Persoon entity) by name. Matches a case-insensitive substring against surname (Achternaam) and/or preferred first name (Roepnaam). Returns id, name parts, role (Functie) and party label.
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination). Baseline: 100% of A+ tools document return types.
No error handling or recovery guidance. Invalid inputs (malformed GUIDs, invalid OData syntax) will fail silently. No actionable error messages to guide LLM retry or self-correction.
No tool annotations. Tools are read-only but lack readOnlyHint. LLMs cannot distinguish safe tools from destructive ones without explicit hints.
query_entity accepts free-form OData $filter strings. No validation or injection protection. Malformed filters or injection attempts will fail at the API, not caught by the tool.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
No pagination guidance in descriptions. query_entity defaults $top to 25 but does not explain how to iterate large result sets or warn about context window limits.