Three tools with clear verb-noun naming (search_chats, get_session, get_turn) and solid descriptions (avg 150 chars). All parameters have types and descriptions. However, output schemas are not documented in the source, only input schemas are visible. Error handling is absent: no guidance on what happens when a session_id is invalid, when FTS syntax fails, or when neighbors exceed bounds. Parameter descriptions lack format/constraint details (e.g., what format is session_id? 'codex:abc123' is shown as example but not formalized). No pagination guidance despite search_chats returning ranked results. Composition is sound, tools chain logically (search → get_session → get_turn). Security is appropriate for read-only operations.
Session header plus all of its turns, in order.
A turn's chunks plus neighboring turns, each with provenance.
Ranked full-text search over indexed chat turns. Each result carries title, source, model, a relative `when`, cleaned snippet, and provenance (source file + line).
Output schemas not documented. LLMs cannot plan downstream calls or extract fields without knowing what search_chats, get_session, and get_turn return. Rubric requires 'Document the output schema' for all tools.
No error handling guidance. If session_id is invalid, raw FTS syntax fails, or neighbors param is out of range, LLMs receive no recovery hints. Rubric requires 'Error responses must tell the LLM what to do next.'
Parameter format constraints not formalized. session_id description says 'e.g. codex:abc123' but does not specify the format pattern or valid source prefixes. Rubric: 'When a parameter has a regex pattern, length limit, or character restriction, state it in the description.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
search_chats returns ranked results but no pagination or result-count guidance. Rubric: 'Tools returning lists should accept page/offset and limit parameters and return a total count or next_cursor.' Limit is capped at 100 but no guidance on what happens when results exceed limit.
raw_fts parameter lacks actionable description. LLMs will not know when to use raw SQLite FTS5 MATCH syntax vs. natural language query. Rubric: 'Write descriptions as if prompt-engineering. State WHAT the tool does, WHEN to use it, and any prerequisites.'