Two tools with complete input schemas and descriptions. Tool names follow verb_noun pattern (hansard_search, hansard_contributions_search). Descriptions are present and adequate (100-150 chars), exceeding the 10-char minimum but below the 194-char production baseline. Parameters are well-typed with Zod schemas and descriptions. However, output schemas are not documented, responses are JSON stringified without field-level documentation. Error handling returns raw error messages without recovery guidance. No tool annotations (readOnlyHint, idempotentHint) despite both being read-only operations. Parameter descriptions lack format constraints (e.g., date format yyyy-mm-dd is mentioned but not enforced in schema).
Returns all matching results for the specified contribution type.
Returns a preview of up to 4 results from each contribution type (Spoken, Written, Corrections, Petitions). For complete results of a specific type, use hansard_contributions_search instead.
Output schemas not documented. Tools return JSON.stringify(result) without field-level documentation. LLMs cannot plan downstream operations or extract specific fields reliably.
Error handling lacks recovery guidance. Errors return raw exception messages (e.g., 'Error: <message>') without actionable next steps or error classification (retryable vs. user-fixable).
Tool annotations missing. Both tools are read-only but lack readOnlyHint annotation. Agents cannot distinguish safe tools from destructive ones without explicit hints.
Date format constraint mentioned in description but not enforced in schema. Parameter 'startDate' and 'endDate' accept any string; should use regex pattern or format constraint to enforce yyyy-mm-dd.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | <=2025-11-25 | v2 |
Result limits not enforced or documented. hansard_search claims 'only 4 results returned for each contribution type' but no code enforces this; hansard_contributions_search has no documented limit, risking context window exhaustion.