Semantic search interface for zoning code PDFs
Single tool 'search_zoning' has a clear action verb and reasonable description (95 chars), but critical gaps undermine quality. Input schema is present with proper type and description for the 'query' parameter. However, NO output schema is documented, the description mentions 'structured citations with filename, section, and relevant text snippets' but the actual response structure is not formally defined. This forces LLMs to guess at output fields and breaks downstream tool chaining. Error handling is absent from the code sample. The tool lacks idempotency hints, pagination support (if results are large), and guidance on when to use it vs. alternatives. No tool annotations (readOnlyHint, etc.) are present. The server exposes OpenAI API integration details (vector store management) but does not abstract them into tool parameters, violating the chat-data-model principle.
Search through zoning code documents for specific information. Returns structured citations with filename, section, and relevant text snippets.
Output schema not documented. Description claims 'structured citations with filename, section, and relevant text snippets' but no formal schema is provided. LLMs cannot infer response structure, breaking tool chaining and forcing guesswork.
No error handling guidance. Code does not show error responses, recovery hints, or actionable error messages. If search fails or returns no results, the LLM has no guidance on what to do next.
Missing pagination and result limits. No indication of max results, pagination support, or how to handle large result sets. If zoning code is extensive, unbounded results could exhaust context.
No tool annotations. Missing readOnlyHint (this is a read-only search), idempotentHint, or destructiveHint. LLMs cannot determine retry safety or side effects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Parameter description lacks format/constraint guidance. 'query' description does not specify length limits, forbidden characters, or example patterns. LLMs may pass overly long or malformed queries.