Server defines 4 read-only tools with complete input schemas and basic descriptions. Tool names follow verb_noun convention (list, get, query). Descriptions are present but generic (34 - 72 chars, below the 50 - 200 char LLM-optimized baseline). Parameters have types and descriptions, but lack enums, ranges, and format constraints. Output schemas are not documented, LLMs cannot predict response structure. Error handling exists (IdescatError class) but does not guide recovery. No tool annotations (readOnlyHint, etc.). Composition is sound: tools chain logically (list → get metadata → query data). Security is adequate for read-only operations.
Get metadata about a table's dimensions, categories, and structure
Get available territorial/geographic options for a specific table
List available statistics, nodes, or tables in the IDESCAT catalog
Query data from an IDESCAT table with optional filters and limit
Output schemas not documented. LLMs cannot predict response structure (CatalogItem[], TerritorialOption[], TableMetadata, FlatRow[]). Agents cannot plan downstream calls or extract required fields.
Descriptions are too short (34 - 72 chars, below 50 - 200 char LLM-optimized baseline). Generic text like 'List available statistics' lacks context for when/why to call. Missing dependency hints (e.g., 'Call this first to discover available tables').
Parameters lack constraints. 'lang' accepts any string (should be enum: ca|es|en). 'last' (limit) is unbounded number (should be 1 - 1000). 'filters' is untyped object with no format guidance. No regex patterns or length limits documented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
No tool annotations. Tools are read-only but lack readOnlyHint annotation. Agents cannot distinguish safe tools from destructive ones without reading descriptions.
Error handling returns IdescatError with id and label, but does not guide recovery. 'IDESCAT API error 00: HTTP 404' tells agent nothing actionable. Missing suggestions for retry, alternative calls, or user-fixable issues.