Single tool 'result_fetch' has a clear, well-structured description (194 chars) and comprehensive input schema with 4 parameters, each with type and description. Naming follows verb_noun pattern. However, output schema is not formally documented in the tool definition itself, only inferred from the fetch() function's return dict. Parameter descriptions are adequate but lack explicit constraints (e.g., offset/limit ranges). No error handling guidance in the tool definition. The tool is read-only and well-scoped, but lacks the polish expected of A-grade tools.
Retrieve a slice of a spilled payload by handle, with pagination support. Returns a chunk of the offloaded tool result with metadata about total size, offset, and whether more data is available.
Output schema not formally documented in tool definition. The fetch() function returns a dict with fields (handle, tool, total_chars, offset, returned_chars, next_offset, has_more, content), but this structure is not declared in the MCP tool schema visible to the LLM.
Parameter constraints not explicit. 'offset' and 'limit' parameters lack min/max bounds in descriptions. LLMs may pass negative offsets or unreasonably large limits. Should state: 'offset: non-negative integer, 0-indexed' and 'limit: 1 - 10000 characters per chunk'.
No error handling guidance in tool description. Tool can return None (missing/expired payload) but the description does not explain what the LLM should do if fetch fails. Should add: 'Returns null if handle is invalid or expired; agent should inform user and suggest re-running the original tool.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
No idempotency guarantee stated. Tool is read-only (safe to retry), but description does not explicitly say so. Should state: 'This tool is idempotent and safe to call multiple times with the same handle and offset.'