Server has 6 tools with clear verb-noun naming (list_, get_, read_, send_). All tools have descriptions (avg 120 chars, within baseline 34-392). Input schemas are present with type definitions and parameter descriptions. However, output schemas are undocumented, tools return JSON strings without declaring field structure. Error handling is minimal: no recovery guidance, no categorization of retryable vs fatal errors. Missing tool annotations (readOnlyHint, destructiveHint). Composition is reasonable: tools are single-purpose, but send_and_wait combines send + poll logic, violating single-responsibility. No pagination support despite list_sessions potentially returning many results.
Get raw events from a session, optionally filtered by type.
Get details about a specific Claude Code session.
List all Claude Code sessions.
Read recent conversation from a Claude Code session.
Send a message to a Claude Code session and wait for the full response. Polls until the session produces a result event (turn complete), then returns the assistant's response. Use this when you need the other session's answer.
Send a message to a Claude Code session.
Output schemas undocumented. Tools return JSON strings without declaring field structure (e.g., list_sessions returns 'Found N session(s)' text, get_session_info returns raw JSON). LLMs cannot plan downstream calls or extract specific fields reliably.
No error handling guidance. Tools use _with_retry() for 401 refresh but provide no recovery hints to LLM on other failures (network timeout, invalid session_id, permission denied). Errors are raw exceptions, not actionable messages.
send_and_wait violates single-responsibility: combines send_message + polling loop + presence signaling. Should be split into send_message (fire-and-forget) and wait_for_response (polling only), allowing agents to compose them independently.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
No tool annotations. send_message and send_and_wait are destructive (WRITE risk) but lack destructiveHint. list_sessions, get_session_info, read_session, get_session_events are read-only but lack readOnlyHint. Agents cannot infer safety without annotations.
No pagination. list_sessions caps display at 30 items but does not expose limit/offset parameters or total count. Large session lists will be truncated silently, and agents cannot iterate through all results.