Two well-defined read-only tools with clear naming, descriptions, and Zod schemas. Tool names follow verb_noun convention (cityjson_read_*). Both have explicit input schemas with type definitions and parameter descriptions. Descriptions are concise (100-150 chars, within baseline) and convey purpose clearly. Parameters are minimal (1-2 per tool) and well-constrained. However, output schemas are not documented in the visible code, the tools return unstructured responses without declared field schemas. No error handling guidance or recovery patterns present. No tool annotations (readOnlyHint despite risk:READ_ONLY metadata). Limited composition: tools are isolated discovery/content retrieval with no downstream chaining requirements.
Returns the full specification content for a specific chapter in Markdown format
Returns the table of contents for the CityJSON specification, including all chapters and their sections
Output schemas not documented. Tools return unstructured responses with no declared field types or structure. LLMs cannot reliably extract returned chapter content, outline structure, or pagination info.
No tool annotations despite risk metadata. Tools marked risk:READ_ONLY but not annotated with readOnlyHint in the tool definition. Prevents clients from optimizing caching or applying safety policies.
No error handling or recovery guidance. If a chapter is not found or the specs path is invalid, tools likely return generic errors. No guidance on how to discover valid chapters or recover from missing data.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 65 | 2026-07-28+ | v2 |
| 2026-03-09 | C | 65 | - | v1 |
cityjson_read_spec_chapter accepts free-form string for chapter identifier with only minLength:1 constraint. No enum of valid chapters, pattern validation, or discovery mechanism. LLMs must guess valid chapter names (metadata, city-objects, geometry-objects, etc.), risking failed calls.