Ireland Central Statistics Office (CSO) PxStat MCP. CSO publishes ~12,600 official Irish statistics tables (population, CPI, labour force, housing, trade, etc.) as JSON-stat 2.0 via the keyless PxStat API.
Four well-named tools with clear, actionable descriptions (avg 180 chars). All tools have complete input schemas with type definitions and parameter descriptions. Naming follows verb_noun pattern (list_, dataset_, get_, query_). Descriptions explain WHAT, WHEN, and dependencies (e.g., 'use dataset_metadata first'). However, output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal (no recovery guidance, no categorization). No pagination support despite large result sets. Missing tool annotations (readOnlyHint, idempotentHint).
Get the structure of one CSO table by matrix code: its dimensions, the category codes + human labels for each dimension, size, and last-updated date. Use this to discover valid dimension codes before calling get_dataset with filters.
Read a full CSO table as JSON-stat 2.0 (dimensions + flat value array). Some tables are large (the CPI table is ~60k values); use dataset_metadata first to gauge size, or use query_dataset to fetch a filtered slice instead.
Search the CSO catalog of ~12,600 Irish statistics tables. Returns matching tables with their matrix code (e.g. "CPM01"), label, dimensions, and last-updated date. The full catalog is large, so always pass a keyword query to narrow it.
Read a FILTERED slice of a CSO table via JSON-RPC. Pass a map of dimension code -> array of category index values to keep (get the dimension codes and category index values from dataset_metadata). Returns JSON-stat 2.0 covering only the selected cells — far smaller than get_dataset.
Output schemas not documented. LLMs cannot predict response structure (JSON-stat 2.0 format, field names, types). Agents must infer from examples or trial-and-error.
No error handling guidance. Errors thrown as raw messages (e.g., 'CSO: 404 ...') without recovery hints. LLM cannot determine if error is retryable, user-fixable, or fatal.
No pagination support. list_datasets returns up to 200 results but no cursor/offset for larger result sets. Large responses risk context window exhaustion.
Missing tool annotations. No readOnlyHint, idempotentHint, or destructiveHint. All tools are read-only but this is not declared in schema, forcing LLMs to infer safety.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Parameter 'limit' in list_datasets lacks required constraint. Description says 'default 50, max 200' but no minimum specified. clampLimit() enforces bounds server-side, but schema should declare enum or min/max.