Five well-named, read-only tools with complete input schemas and clear descriptions. Tool names follow verb_noun pattern (search_tables, get_data). All parameters have type definitions and descriptions. Descriptions average ~150 chars, within the 10 - 1024 baseline. However, output schemas are not documented, LLMs cannot predict response structure for downstream chaining. Error handling is minimal (generic HTTP errors). No pagination guidance for potentially large result sets (search_tables, dimension_values). Missing tool annotations (readOnlyHint) despite all tools being read-only.
List the valid codes/labels for one dimension of a table (a sub-endpoint such as "Periods" or a region/category dimension key, as named in the table root or table_dimensions).
Fetch observations from a table (TypedDataSet). Supports OData v3 query params. Use $select to pick columns (from table_dimensions keys) and $filter to subset, e.g. filter="Periods eq '2020JJ00'". Always set a $top to avoid huge responses.
Find CBS StatLine datasets by keyword (matched against title). Returns table id, title, period and language. Table ids ending in "eng"/"ENG" have English labels; others are Dutch.
Column/dimension definitions for a table (DataProperties): what each field means, its key, type, unit and decimals. Use this before get_data to learn which $select keys and $filter dimensions exist.
Metadata for one table: title, summary, time period covered, frequency, update status and description. Pass a table id like "37296eng".
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting) for downstream tool chaining or data extraction. E.g., search_tables returns 'Identifier', 'Title', 'Period', 'Language', but this is inferred from code, not declared in tool metadata.
No pagination metadata or guidance. search_tables and dimension_values accept 'top' but do not document whether results are truncated, whether a next_cursor exists, or total count. Large result sets risk context window exhaustion.
Error handling is generic. cbsGet() throws 'CBS: {status} {text}', no guidance on recovery (retry, lookup alternative, ask user). LLMs cannot self-correct from HTTP 404 or 400 errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Tool annotations missing. All five tools are read-only, but no readOnlyHint is declared in schemas. This prevents clients from optimizing caching, parallelization, or safety policies.
Parameter 'dimension' in dimension_values lacks format guidance. Description says 'e.g. Periods, CaribbeanNetherlands' but does not state case sensitivity, allowed characters, or how to discover valid dimension names (answer: call table_dimensions first).