The MCP server for Parliament of Poland public API
This server provides 19 read-only tools querying Polish Parliament public data. Tool definitions are present with basic structure, but quality is inconsistent. Naming follows verb_noun convention well (get-*, all appropriate for query operations). Descriptions are minimal but present (average ~40-50 chars, below the 194-char baseline for A+ tools). Critical gaps: (1) Input schemas use raw Zod objects, not JSON Schema with explicit type declarations, schema quality is low-to-medium for most tools. (2) Parameter descriptions are bare and lack actionable detail (e.g., 'Offset for pagination' does not specify valid range, default, or when to use; 'Term of the Sejm' does not explain what values are valid or how to discover them). (3) Output schemas are completely undocumented, callers cannot know what fields to expect or how to chain results. (4) No error handling guidance: failures return plain text like 'Failed to fetch...' with no recovery steps. (5) STDIO-only transport (hard cap at 50). (6) No pagination limits documented despite many tools accepting offset/limit. These gaps prevent confident LLM-guided usage and increase hallucination risk.
Get a list of bilateral groups in the Sejm
Get detailed information about a specific club
Get a list of clubs for a given term
Get detailed information about a specific committee
Get a list of committees for a given term
Get detailed information about a specific interpellation
Get a list of interpellations for a given term
Get information about a member of Parliament
Output schemas completely undocumented. Tools return JSON structures but callers have no declared schema. LLMs cannot reliably extract fields or plan downstream operations.
Parameter descriptions lack actionable detail. 'Offset for pagination' does not specify valid range (0 - ?), default (0?), or when required. 'Term of the Sejm' does not explain valid values or how to discover them (call get-terms first?). LLMs cannot validate inputs without explicit constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 46 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 35 | - | v1 |
Get a list of MPs for a given term
Get detailed information about a specific print
Get a list of prints for a given term
Get a list of proceedings for a given term
Get information about a specific legislative process
Get a list of legislative processes for a given term
Get a list of Sejm terms
Get a list of transcripts for a given term
Get a list of video recordings for a given term
Get a list of votings for a given term
Get a list of written questions for a given term
Tool descriptions are generic and minimal (avg 40 - 50 chars vs. 194-char baseline). 'Get a list of MPs for a given term' does not explain when to use this vs. get-member, what the response contains, or what term values are valid. Too short for LLM selection confidence.
Input schemas are Zod objects, not JSON Schema. While Zod is used in code, the tool registration in server.ts does not convert them to explicit JSON Schema format with 'type', 'enum', 'minimum', 'maximum' fields visible to the client. Callers see raw Zod internals, not schema.
get-bilateral-groups has empty input schema ({}). No parameters are listed or described. While the tool takes no inputs, the schema should be explicit and documented.
No error recovery guidance. Tools return plain-text failures like 'Failed to fetch the list of bilateral groups' with no guidance on retrying, alternative parameters, or next steps. LLMs cannot self-correct.
Pagination limits and defaults are not documented. Tools accept 'offset' and 'limit' but do not state: Is limit unbounded? What is the default? Are there max limits? This invites LLMs to pass invalid or excessive values.
STDIO-only transport. Server cannot be accessed remotely or integrated with hosted MCP clients. This is a hard architectural limitation preventing adoption in many production environments.