TTS-only voice output for Claude Desktop. A lightweight, cross-platform MCP server providing voice_speak (two-tier TTS with local system TTS + Gemini 2.5 Flash) and voice_toggle (control server state).
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and error handling. voice_speak has a clear purpose but lacks output schema documentation. voice_toggle uses an enum for action parameter (good), but both tools lack descriptions of what they return and how to handle failures. No error recovery guidance. Descriptions are adequate (100-150 chars) but parameter-level documentation is sparse. No tool annotations (readOnlyHint/destructiveHint). Naming is verb-forward (voice_speak, voice_toggle) which is correct, but descriptions don't explain prerequisites, dependencies, or failure modes.
Speak text aloud using two-tier TTS (local system TTS + Gemini 2.5 Flash). Supports macOS say command, Windows SAPI5, Linux espeak, and cloud Gemini TTS with fallback chain.
Control server state: start/stop listening, enable/disable voice response, query status. Returns current configuration and server state.
No output schema documented for either tool. LLMs cannot plan downstream actions or extract return values. voice_speak should document what it returns (success boolean, error message, duration played). voice_toggle should document the status object structure.
No error handling guidance. Tools lack descriptions of failure modes, recovery steps, or actionable error messages. E.g., voice_speak may fail if TTS unavailable or audio device missing, LLM needs guidance on what to do next.
Missing parameter descriptions. 'interrupt' parameter in voice_speak lacks explanation of behavior when true (does it queue, cancel, or error if nothing playing?). 'action' enum values in voice_toggle lack descriptions of side effects (does 'stop' persist state?).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | <=2025-11-25 | v2 |
No tool annotations. voice_speak is READ_ONLY (marked in metadata) but schema lacks readOnlyHint. voice_toggle is WRITE (marked in metadata) but schema lacks destructiveHint. Annotations help LLMs reason about side effects and retry safety.
voice_toggle 'status' action returns unspecified structure. Description says 'Returns current configuration and server state' but does not document fields (listening: bool, response_enabled: bool, etc.). LLM cannot extract or chain this data.