Three tools with mixed quality. http_request has a complete schema with 8 parameters, all typed and described, but the description is generic (48 chars, below the 50-200 baseline). oauth2_authorize_and_fetch_token has 8 parameters with types and descriptions, but the description is truncated in the source (incomplete). echo_tool is trivial (1 param, minimal value). No tool has documented output schemas. Error handling returns generic dicts without recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite oauth2 being clearly destructive. Parameter descriptions lack format constraints (e.g., 'timeout' should specify '1-300 seconds'). No mention of rate limits, retries, or idempotency.
Echo the input text
Make an HTTP request to a specified URL
Create an OAuth2 authorization URL, open browser, and automatically fetch token
Tool descriptions are too short and lack context. http_request (48 chars) and oauth2_authorize_and_fetch_token (truncated) do not explain WHEN to use them or what they return. Baseline is 50-200 chars with clear intent.
No output schemas documented. LLMs cannot plan downstream calls or extract fields. http_request returns {status_code, headers, body} but this is inferred from code, not declared in tool metadata.
Missing tool annotations. oauth2_authorize_and_fetch_token is destructive (modifies state, opens browser, caches tokens) but has no destructiveHint. http_request with client_id lookup is idempotent but unmarked. No readOnlyHint on echo_tool.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | <=2025-11-25 | v2 |
Parameter descriptions lack format constraints. 'timeout' (default 30) has no range (should be '1-300 seconds'). 'method' lists examples but no enum constraint. 'scope' accepts array|string but no guidance on format.
Error handling is generic. http_request returns {error: str(e)} with no recovery guidance. oauth2 callback server errors not documented. No distinction between retryable (network timeout) vs user-fixable (invalid URL) vs fatal errors.