MCP server that makes AI agents speak a brief summary of every response
Single tool 'speak_when_done' has a reasonable description (89 chars, within 10-1024 range) but lacks critical schema documentation. Input parameters (text, voice, speed) are visible in the code but NOT formally registered with JSON Schema in the tool definition. The description is action-oriented but does not explain when to call this vs alternatives, what happens on failure, or retry behavior. No output schema documented. Parameter descriptions exist in code comments but are not exposed to the MCP protocol layer where LLMs can see them. Risk classification (READ_ONLY) is present but error handling guidance is absent.
Speak a brief summary of your response out loud. Call this at the end of EVERY response. Summarize what you said in 1-3 short sentences — shorter is better. If your response is a question, speak the question only, not the suggested answers. Keep it natural and conversational.
Input schema not formally defined in MCP tool registration. Parameters (text, voice, speed) are inferred from code but not exposed as JSON Schema to the LLM. This violates pattern:tool and prevents LLMs from understanding parameter constraints, types, and defaults.
No output schema documented. LLMs cannot predict what the tool returns or plan downstream actions. Pattern:tool requires documented return types.
Description lacks error recovery guidance. Does not explain what happens if TTS API fails, audio player is unavailable, or text is too long. Pattern:recovery-guide requires actionable error messages.
Parameter descriptions not exposed to MCP protocol. Code comments describe voice and speed defaults ('from config') but LLMs cannot see these. Descriptions must be in the tool schema, not buried in implementation.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | <=2025-11-25 | v2 |
No idempotency guarantee documented. Calling speak_when_done twice with identical text may generate/cache audio twice or reuse cache, behavior is unclear to LLMs, risking duplicate audio playback.