Convert text to speech audio -- 20+ languages, base64 MP3 output. Google TTS engine, fast and reliable.
Single tool 'media_text_to_speech' has a well-structured schema with proper types and descriptions for both parameters. The tool description is comprehensive (280+ chars) and includes use cases and anti-patterns (what NOT to use it for). However, the output schema is documented only in prose within the description rather than as a formal JSON Schema object. Parameter descriptions are clear ('max 200 characters per request', language codes listed). The tool follows verb_noun naming ('media_text_to_speech') but is somewhat verbose. No error handling guidance is visible in the definition, what happens if text exceeds 200 chars, or if an unsupported language is passed? No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present.
Use this when you need to convert text to speech audio. Returns base64-encoded MP3 audio in JSON. Returns: 1. audio (base64 MP3 data) 2. language used 3. textLength (character count) 4. durationEstimate in seconds 5. format (mp3). Example output: {"audio":"SUQzBAAAAAAAI1RTU0UAAAAP...","language":"en","textLength":45,"durationEstimate":3.2,"format":"mp3"} Use this FOR generating audio narration, building voice assistants, creating audio versions of articles, accessibility features, and language learning apps. Do NOT use for language detection -- use text_detect_language instead. Do NOT use for text translation -- use text_translate instead. Do NOT use for OCR from images -- use media_extract_text_from_image instead.
Output schema not formally documented in JSON Schema format. Prose description lists fields (audio, language, textLength, durationEstimate, format) but no structured schema object is visible in src/config.ts or elsewhere. LLMs cannot reliably parse prose-only output specs.
No error handling guidance. Tool description does not explain what happens if text exceeds 200 chars, if language code is invalid, or if the TTS service fails. LLMs need recovery hints like 'If language unsupported, try en' or 'Max 200 chars, split longer text and concatenate audio'.
No tool annotations present. Tool is read-only (does not modify state) but lacks readOnlyHint annotation. This helps agents understand retry safety and idempotency.
Language parameter accepts a free-form string with examples ('en, fr, es, de, it, pt, ja, ko, zh, ar, ru, hi, etc.') rather than an enum. LLMs may hallucinate unsupported codes like 'en-US' or 'english'. Should declare enum with exact supported values.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2025-06-18+ | v2 |
Tool name 'media_text_to_speech' is somewhat generic. Clearer names like 'generate_speech_from_text' or 'synthesize_audio' would better signal the action. Current name does not clearly indicate it GENERATES audio output.