Kosovo Agency of Statistics (ASKdata) PxWeb MCP server for querying statistical data
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation, output schema clarity, and error handling guidance. Tool names lack action verbs (subjects, table_meta, query_table are noun-heavy). Parameter descriptions are minimal or missing type constraints. No documented output schemas. Error handling is generic (raw HTTP status + truncated text). The 'body' parameter in query_table is particularly problematic: it's typed as 'object' with only a comment-style description of its structure, not a formal schema. No pagination, no result limits documented, no recovery guidance.
Pull data from a table (path ends in ".px"). body is a PxWeb query object. Mind the ~10,000-cell limit.
Navigate the subject tree. Root lists databases ({dbid}); start at "ASKdata".
Table definition (dimensions, valid values). Path must end in ".px".
Tool names lack action verbs. 'subjects', 'table_meta', 'query_table' are noun-heavy and do not clearly signal what action the LLM should expect. Should be 'list_subjects', 'get_table_metadata', 'query_table_data' to match verb_noun convention.
Output schemas are not documented. LLMs cannot plan downstream calls or extract fields without knowing what the response contains. No documentation of return types, field names, or structure for any tool.
The 'body' parameter in query_table is typed as generic 'object' with only a comment-style description '{query: [{code, selection: {filter, values}}], response: {format: "json-stat2"}}'. This is not a formal schema and does not specify required sub-fields, types, or constraints. LLMs cannot validate or construct this object reliably.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
Error handling is generic and non-actionable. Errors return raw HTTP status + truncated response text (e.g. 'ASKdata: 404 ...'). No guidance on what the LLM should do next (retry, lookup, ask user). No categorization of errors as retryable vs fatal.
No result limits or pagination documented. The query_table tool mentions a ~10,000-cell limit in the description, but no guidance on how to handle oversized results, pagination, or offset/limit parameters. Large result sets could exhaust context windows.