Statistics Faroe Islands (Hagstova Føroya) PxWeb MCP. Keyless PxWeb API for navigating and querying statistical data from the Faroe Islands.
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Tool names lack action verbs (subjects, table_meta, query_table are noun-heavy). Descriptions are present but terse (10-80 chars), below the 50-200 char baseline for LLM optimization. Parameter descriptions exist but lack detail on constraints, formats, and valid ranges. No output schemas documented. Error handling is minimal, raw HTTP errors with truncated text. The 'body' parameter in query_table is documented only as a JSON example string, not a structured schema. No tool annotations (readOnlyHint, etc.) despite all being read-only operations.
Pull data from a table. body is a PxWeb query object. Mind PxWeb cell limits — narrow each dimension via selection.values.
Navigate the subject tree. Empty path returns the database list (drill into "H2"); items have type "l" (folder) or "t" (table, id ends in ".px").
Table definition (dimensions, valid values). Path must end in the ".px" table id.
Tool names lack action verbs. 'subjects', 'table_meta', 'query_table' are noun-heavy and do not clearly signal intent. Should be 'list_subjects', 'get_table_metadata', 'fetch_table_data' to match verb_noun convention.
Descriptions are too short (10 - 80 chars, baseline 50 - 200). 'Navigate the subject tree...' and 'Table definition...' lack context on WHEN to use each tool and what the LLM should expect. Descriptions should explain the workflow: subjects → table_meta → query_table.
Output schemas are not documented. LLMs cannot plan downstream calls or extract fields without knowing what each tool returns. Add explicit return type documentation for each tool.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
The 'body' parameter in query_table is documented only as a JSON example string ('{query: [...], response: {...}}'), not a structured schema. This violates the constrained-input pattern, LLMs cannot validate the structure and will hallucinate invalid PxWeb queries.
Error handling is minimal. Raw HTTP errors ('Hagstova: 400 ...') with truncated response text do not guide the LLM on recovery. Should categorize errors (retryable vs user-fixable) and suggest next steps (e.g., 'Cell limit exceeded, narrow selection.values').