# Text-to-Speech

Generate TTS audio and manage voices from your MCP client.

Browse voices, generate audio, and check job status. Supports both ElevenLabs and Stealth TTS providers.

### `list_voices`

Browse and search available TTS voices. Returns voice IDs, names, previews, and metadata. Set `stealth=true` for Stealth provider voices.

**Example prompt**

"Show me young male American English voices"

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| search | string | null | Search by voice name or labels |
| gender | string | null | Filter: `male`, `female`, or `neutral` |
| age | string | null | Filter: `young`, `middle_aged`, or `old` |
| language | string | null | Language code (e.g. `en`, `es`, `fr`) |
| accent | string | null | Filter by accent (e.g. `american`, `british`) |
| sort | string | trending | Sort: `trending`, `created_date`, `usage_character_count_1y` |
| page_size | integer | 30 | Results per page (max 100) |
| page | integer | 0 | Page number (0-indexed) |
| stealth | boolean | false | Use Stealth voices endpoint instead of ElevenLabs |
| minimax | boolean | false | Use MiniMax voices endpoint (cloned MiniMax voices only) |

### `generate_tts`

Generate text-to-speech audio. Submits a job, polls until complete, returns the permanent hosted audio URL.

**Example prompt**

"Generate a voiceover using the voice 'Adam' saying: Welcome to today's video about productivity tips"

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| script | string | required | Text to convert to speech (max 200,000 characters) |
| voice_id | string | required | Voice ID from `list_voices`, or voice name for Stealth provider |
| provider | string | elevenlabs | TTS provider: `elevenlabs`, `stealth`, or `minimax` |
| model_id | string | null | ElevenLabs model (e.g. `eleven_multilingual_v2`, `eleven_flash_v2_5`) |
| stability | number | null | Voice consistency 0.0-1.0 (ElevenLabs only) |
| similarity_boost | number | null | Voice match accuracy 0.0-1.0 (ElevenLabs only) |
| style | number | null | Style exaggeration 0.0-1.0 (ElevenLabs only) |
| speed | number | null | Playback speed 0.7-1.2 (ElevenLabs) or 0.5-2.0 (MiniMax) |
| temperature | number | null | Expressiveness — higher is more expressive (Stealth only) |
| speaking_rate | number | null | Speaking speed multiplier (Stealth only) |
| stealth_model | string | 1.5 | Stealth model tier (Stealth only). `1.5` = standard model (1× characters, default); `2.0` = Stealth 2.0, our newest, most capable model (2× characters). |
| pitch | integer | null | Pitch shift -12..+12 (MiniMax only) |
| volume | number | null | Volume 0.0-10.0 (MiniMax only) |
| voice_name | string | null | Human-readable voice label for your reference |
| custom_title | string | null | Custom filename for output MP3 (without extension) |
| srt_format | string | off | SRT transcript format (ElevenLabs and Stealth). 'off' = no SRT reformat, 'default' = original word-level captions, '1' / '2' / '3' / '5' = N words per caption (social-video style), 'sentence' = one full sentence per caption. For ElevenLabs, non-'off' values turn SRT generation on and bill **1.2×** the script character count (the SRT pass runs an extra forced-alignment step); 'off' bills 1×. Stealth always includes a word-level SRT as `transcript_url` at no extra cost, so the preset never changes the price. 1/2/3/5/sentence additionally fetch the upstream SRT and regroup it. Mirrors the web UI's SRT preset. |

### `get_tts_job_status`

Check the status of a TTS generation job. Use this to retrieve the `audio_url` for a previously submitted job.

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| job_id | string | required | Job ID returned from `generate_tts` |

### `list_tts_jobs`

List your recent TTS generation jobs, sorted by creation time (newest first). No parameters required.

**Example prompt**

"Show me my recent TTS generations"

### `clone_voice`

Clone a voice using the Stealth voice engine or MiniMax. Upload an audio sample and get a reusable voice ID. Requires an active subscription.

**Example prompt**

"Clone this voice sample as 'My Narrator' using the audio at https://example.com/sample.mp3"

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| display_name | string | required | Display name for the cloned voice |
| audio_url | string | required | URL to the audio sample (MP3, WAV, M4A, OGG, WEBM; max 15MB) |
| lang_code | string | EN_US | Language code (e.g. EN_US, ES_MX, FR_FR, DE_DE, JA_JP) |
| description | string | null | Description of the voice |
| provider | string | stealth | Voice engine: `stealth` or `minimax` |
| voice_name | string | null | Display name (MiniMax only — use display_name for Stealth) |
| language | string | English | Language tag (MiniMax only) — e.g. English, Spanish, French. See full list at /docs. |
| need_noise_reduction | string | true | Strip background noise (MiniMax only). Values: `true` or `false`. |

### `delete_voice`

Delete a cloned Stealth or MiniMax voice by ID.

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| voice_id | string | required | ID of the cloned voice to delete |
| provider | string | stealth | Voice engine: `stealth` or `minimax` |
