Three well-named, read-only tools with clear descriptions and proper input schemas. All tools start with action verbs (get_, search, cite_affected). Descriptions are detailed (150 - 250 chars) and explain what each tool does and when to use it. Input schemas use Zod with type declarations and parameter descriptions. However, output schemas are not formally documented, responses are free-text strings rather than structured objects. Error handling returns text messages but lacks categorization (retryable vs. fatal). No tool annotations (readOnlyHint, idempotentHint) despite all being read-only. Missing pagination for search results (limit capped at 25 but no offset/cursor). Overall solid foundation with room for structured output and error guidance.
List bills in a biennium that amend or affect a given RCW citation, via the Washington State Legislature SOAP web service. Biennium format is "2025-26" (defaults to the current biennium).
Return the full text of a Revised Code of Washington (RCW) section by its citation, e.g. 9A.36.021. Includes the caption, statutory text, and history/notes. Source: app.leg.wa.gov.
Find RCW citations matching a partial citation string (e.g. "9A.36" -> 9A.36.011, 9A.36.021, ...). NOTE: this matches CITATIONS, not keywords — free-text words like "assault" return no results, because there is no public full-text RCW search API. Feed results into get_section.
Output schemas not documented. Tools return free-text strings (e.g., 'RCW 9A.36.021, caption\nurl\n\ntext') rather than structured JSON objects. LLMs cannot reliably extract fields for downstream tool calls or data extraction.
No tool annotations. All three tools are read-only and idempotent, but lack readOnlyHint and idempotentHint annotations. LLMs cannot infer safety properties and may treat them as state-modifying.
Error responses lack categorization. Errors return plain text (e.g., 'Error: <message>') with isError=true flag, but do not indicate whether the error is retryable, user-fixable, or fatal. LLMs cannot determine next action.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Search tool lacks pagination cursor/offset. Results are capped at 25 but no next_cursor or offset parameter provided. If a user searches '9A' and gets 25 results, there is no way to fetch the next batch.
Parameter descriptions lack format/constraint details. 'cite' parameter accepts strings like '9A.36.021' or '42.56.070' but no regex pattern or format constraint is documented in the description. LLMs may pass invalid formats.