Self-verifying TTS: generate, transcribe with an independent ASR, measure (real WPM, word integrity, internal silences) and re-generate with escalating instructions until the quality gates pass.
loop-tts has 4 well-named tools with clear, actionable descriptions (avg 180 chars). All tools have input schemas with typed parameters. However, output schemas are not formally documented in the MCP tool definitions, only described in prose. Parameter descriptions are present but inconsistent in detail. Error handling guidance is minimal. The batch tool accepts complex nested objects but lacks validation constraints (e.g., min segment count, max text length). No tool annotations (readOnlyHint/destructiveHint) despite clear semantic differences (tts_speak and tts_batch are WRITE; tts_verify and tts_status are READ_ONLY).
Generate a multi-voice piece. segments: a list of {"text": "...", "speaker": optional, "instruct": optional, "min_wpm": optional}. Returns JSON with the assembled audio path and one QC report per segment.
Generate verified speech. Returns JSON: audio_path + QC report (measured WPM, word integrity, max internal silence, attempts, and the transcription of what was actually said). If report.ok is false, consider rewriting the text and retrying.
Health: TTS backend reachability, STT model state, active gates.
Run the quality gates on an existing audio file, from ANY TTS engine (OpenAI, ElevenLabs, Kokoro, ...). Returns the QC report: measured WPM, word integrity vs the expected text, max internal silence, transcription.
Output schemas not formally documented in MCP tool definitions. Descriptions mention JSON structure (audio_path, QC report fields) but no structured schema object is visible in tool registration.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear semantic differences. tts_speak and tts_batch modify state (WRITE); tts_verify and tts_status are read-only. Agents cannot infer safety without annotations.
tts_batch parameter 'segments' lacks validation constraints. No documented min/max segment count, max text length per segment, or total payload size. LLMs may pass invalid batches.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Error handling descriptions are absent. Tools mention 'report.ok is false' but do not guide recovery (e.g., 'rewrite text and retry'). No error classification (retryable vs fatal) visible in schema.
Parameter 'language' in tts_verify is optional but no default documented. Unclear whether it falls back to config.language or requires explicit specification.