Two tools with complete input schemas and basic descriptions, but significant gaps in parameter documentation and error guidance. read_webpage has 4 parameters with descriptions; web_search has 2. Both tools lack output schema documentation. Descriptions are adequate (100-150 chars) but lack WHEN/WHY context. No error recovery guidance. No tool annotations (readOnlyHint, idempotentHint). Parameter descriptions are present but generic, e.g., 'The search query' lacks format/length constraints. No mention of timeout behavior, retry logic, or rate limits despite external API calls.
Fetches a webpage via curl and returns its text content. Strips HTML tags, scripts, and styles. Supports chunked reading for large pages.
Performs a web search using DuckDuckGo and returns titles with links.
No output schema documented. LLMs cannot predict response structure (fields, types, pagination). Forces trial-and-error parsing.
Parameter descriptions lack constraints. 'The search query' does not specify length limits, character restrictions, or format. 'Maximum characters to return' lacks min/max bounds (e.g., 1 - 100000).
No error recovery guidance. Timeout errors ('Error: Search request timed out') do not tell LLM whether to retry, backoff, or ask user. No categorization of retryable vs fatal errors.
No tool annotations. Tools are read-only but lack readOnlyHint. Idempotent (same input → same output) but lack idempotentHint. LLMs cannot infer safety properties.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
read_webpage accepts 'offset' for chunked reading but no guidance on pagination strategy. No mention of total_size in response or how to iterate. LLM must infer chunking logic.