Drive your Claude Code sessions by voice from any MCP client — hands-free, while a Remote Control client watches the same session
Server has 7 tools with complete schemas and descriptions. Naming follows verb_noun convention (list_, send_, get_, read_, set_, rename_). Descriptions are substantive (100-200 chars typical), explaining WHAT and WHEN. However, parameter descriptions lack detail on constraints, formats, and valid ranges. Error handling is present but generic. No tool annotations (readOnlyHint/destructiveHint). Output schemas are not formally documented. Risk classification exists in metadata but not surfaced to LLM.
Send a prompt to a session and wait for the complete answer in a single call. Blocks until the session finishes or the timeout expires.
Poll for the session's reply to a message sent via send_message. Returns progress updates and the final answer.
Enumerate every Claude Code session currently running for this user, with their status, working directory, and whether they can be messaged.
Read the transcript of a session's conversation, optionally filtered to turns after a specific timestamp.
Change a session's display name.
Deliver a prompt to a Claude Code session's queue. Returns immediately with a cursor for polling the reply.
Parameter descriptions lack format constraints and valid ranges. E.g., 'wait_seconds' has no min/max bounds; 'session' accepts 'name, UUID, or pid' but no validation guidance. LLMs cannot infer valid input ranges.
Output schemas not formally documented. Tools return structured responses (e.g., list_sessions returns session objects with status/cwd/socketPath), but LLM has no schema to plan downstream calls or extract fields reliably.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). Risk metadata exists in code (READ_ONLY, WRITE) but is not exposed to LLM via tool schema. LLM cannot distinguish safe vs. destructive operations.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | <=2025-11-25 | v2 |
Set the user's preferences for how this relay behaves: whether to send periodic updates while a session works, how often, and whether to ask for confirmation before each action.
Error handling is generic. Code returns failure() with error message text, but does not categorize errors as retryable/user-fixable/fatal or provide recovery guidance. LLM cannot decide whether to retry, ask user, or abort.
Parameter 'session' is overloaded (accepts name, UUID, or pid). No separate parameters for session_id, session_name, session_pid. Forces LLM to guess which identifier to pass and risks type confusion.