# ElevenLabs (npm · @mindstone/mcp-server-elevenlabs)

ElevenLabs MCP server: TTS, music, sound effects, voices, and audio transcription

- Trust score: 75/100 (medium)
- Change this week: +49
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-04

## Components

- npm · `@mindstone/mcp-server-elevenlabs`: 75/100 (this document), [markdown](https://verifymcp.io/servers/mindstone-mcp-server-elevenlabs/mindstone-mcp-server-elevenlabs.md), [page](https://verifymcp.io/servers/mindstone-mcp-server-elevenlabs/mindstone-mcp-server-elevenlabs)

## Channel facts

- Registry: `npm`
- Package: `@mindstone/mcp-server-elevenlabs`
- Version: `0.4.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-04.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 84/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to mindstone/mcp-servers).
  - License check failed: the license (FSL-1.1-MIT) isn't a recognized OSI-approved license.
  - Actively maintained (last published 23 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 65/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 5003 tokens (~208/item across 24 items; 24 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add mindstone-mcp-server-elevenlabs -- npx -y @mindstone/mcp-server-elevenlabs
```

### Codex

```bash
codex mcp add mindstone-mcp-server-elevenlabs -- npx -y @mindstone/mcp-server-elevenlabs
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mindstone-mcp-server-elevenlabs": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@mindstone/mcp-server-elevenlabs"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add mindstone-mcp-server-elevenlabs --command npx --arg -y --arg @mindstone/mcp-server-elevenlabs
```

### Hermes

```yaml
mcp_servers:
  mindstone-mcp-server-elevenlabs:
    command: "npx"
    args: ["-y", "@mindstone/mcp-server-elevenlabs"]
```

### Other

```json
{
  "mcpServers": {
    "mindstone-mcp-server-elevenlabs": {
      "command": "npx",
      "args": [
        "-y",
        "@mindstone/mcp-server-elevenlabs"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-04 (score 75, +4)

- [functional improvement] Stability: unverified → 0.27

### 2026-08-02 (score 71, +48)

- [security improvement] Provenance: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security] The attested source repository moved: mindstone/mcp-servers
- [functional regression] License: unverified → fail
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] Dependency health: unverified → partial
- [functional] Licence: FSL-1.1-MIT

### 2026-08-01 (score 23, +5)

- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] MCP protocol: unverified → pass

### 2026-07-31 (score 18, −6)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 24, −2)

- [functional regression] Dependency health: partial → unverified

### 2026-07-28 (score 26, −17)

- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Dependency health: unverified → partial
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 43)

First indexed and scored.

## MCP tools (24)

### `configure_elevenlabs_api_key` (~107 tokens)

Save the user's ElevenLabs API key for this session.

WHEN TO USE:
\- When the user provides their API key in chat
\- After AUTH_REQUIRED errors from any other tool

EXAMPLE: {"api_key": "sk_..."}

RELATED TOOLS:
\- check_subscription: verify the key and see credits after configuring

RETURNS: ok, message.

COST: FREE.

Input parameters:

- `api_key` (string, required): ElevenLabs API key (starts with "sk_").

### `check_subscription` (~149 tokens)

Check ElevenLabs subscription tier and character credit usage.

WHEN TO USE:
\- Before expensive generation calls (speech, music, sound effects) to confirm credits remain
\- When a tool returns quota or 403 errors — read remaining characters and next reset
\- To answer "how much ElevenLabs credit do I have left?"

EXAMPLE: {} (no arguments)

RELATED TOOLS:
\- generate_speech, generate_music, generate_sound_effect: credit-consuming generation
\- list_models: discover which models your tier can use

RETURNS: tier, character_count, character_limit, characters_remaining, next_character_count_reset_unix (and ISO), status when present.

COST: FREE — no credits consumed.

### `list_models` (~146 tokens)

List ElevenLabs models with languages and capability flags.

WHEN TO USE:
\- Pick a TTS model_id for generate_speech (e.g. eleven_v3, eleven_multilingual_v2)
\- Verify a model supports the language or capability you need before calling generation tools
\- Discover model IDs after an invalid model_id error

EXAMPLE: {} (no arguments)

RELATED TOOLS:
\- generate_speech: consumes a model_id from this list
\- check_subscription: confirm credits before generation

RETURNS: models[] with model_id, name, languages[], and capability booleans (TTS, voice conversion, finetuning).

COST: FREE — no credits consumed.

### `generate_music` (~294 tokens)

Generate music from a text prompt using ElevenLabs Music API.

WHEN TO USE:
\- Quick music bed from a genre/mood description
\- Vocal songs when the prompt includes [Verse]/[Chorus] lyric markers (do not set force_instrumental: true)

EXAMPLE: {"prompt": "Upbeat jazz piano, 30 seconds", "duration_seconds": 30}

RELATED TOOLS:
\- create_music_plan / generate_music_from_plan: per-section lyrics and styles
\- check_subscription: confirm credits before long tracks

RETURNS: file_path, size_bytes, duration_seconds, format; warnings[] when force_instrumental conflicts with lyric markers.

COST: Credits based on duration (3–600 seconds).

Input parameters:

- `duration_seconds` (number): Duration in seconds (3-600). Default: 30.
- `force_instrumental` (boolean): Force instrumental-only output (no vocals). Default: false. WARNING: setting this to true overrides any lyrics in the prompt — do not enable for vocal songs.
- `output_format` (string): Audio output format. Default: mp3_44100_128.
- `prompt` (string, required): Describe the music: genre, mood, instruments, style. Include `[Verse]`/`[Chorus]`/`[Bridge]` blocks with lyrics if you want a vocal song.
- `seed` (integer): Random seed for reproducibility.

### `create_music_plan` (~165 tokens)

Create a composition plan for music generation.

WHEN TO USE:
\- Structure a song with per-section lyrics and styles before paying for generation
\- Review or edit sections before calling generate_music_from_plan

EXAMPLE: {"prompt": "Acoustic folk ballad about the sea", "duration_seconds": 45}

RELATED TOOLS:
\- generate_music_from_plan: generate audio from the returned composition_plan
\- generate_music: faster one-shot generation without a plan

RETURNS: composition_plan (sections with section_name, duration_ms, styles, lines), total_duration_seconds.

COST: FREE — no credits consumed.

Input parameters:

- `duration_seconds` (number): Target duration in seconds (3-600). Default: 30.
- `prompt` (string, required): Describe the music you want.

### `generate_music_from_plan` (~189 tokens)

Generate music from a composition plan.

WHEN TO USE:
\- After create_music_plan when you want per-section control over lyrics and styles
\- When generate_music's single prompt is not precise enough

EXAMPLE: pass the composition_plan object from create_music_plan verbatim

RELATED TOOLS:
\- create_music_plan: produces the plan shape this tool expects
\- check_subscription: confirm credits before generation

RETURNS: file_path, size_bytes, duration_seconds, format.

COST: Credits based on total plan duration (3s–10min).

Input parameters:

- `composition_plan`: Composition plan object from create_music_plan. Wrapped display text and raw manually edited text are both accepted; the plan is unwrapped and strictly validated before generation.
- `output_format` (string): Audio output format. Default: mp3_44100_128.
- `seed` (integer): Random seed for reproducibility.

### `generate_speech` (~325 tokens)

Generate spoken audio from text using ElevenLabs text-to-speech.

WHEN TO USE:
\- Turn user text into a playable speech file
\- Narration, voiceovers, or reading content aloud

EXAMPLE: {"text": "Hello world.", "voice_id": "21m00Tcm4TlvDq8ikWAM", "model_id": "eleven_v3"}

RELATED TOOLS:
\- list_voices / search_shared_voices / get_voice: find voice_id
\- list_models: pick model_id (default eleven_v3)
\- check_subscription: confirm credits before long text

RETURNS: file_path, size_bytes, voice_id, model, format. API-resolved voice names are enveloped.

COST: ~1 credit per 100 characters.

Input parameters:

- `model_id` (string): TTS model. Default: eleven_v3.
- `output_format` (string): Audio output format. Default: mp3_44100_128.
- `similarity_boost` (number): Voice similarity 0-1. Default: 0.75.
- `stability` (number): Voice stability 0-1. Default: 0.5.
- `text` (string, required): Text to speak. Maximum ~5000 characters per request.
- `voice_id` (string): Direct voice ID (from list_voices). Takes priority over voice_name.
- `voice_name` (string): Voice name for fuzzy search (e.g., "Bella", "Sarah"). Use list_voices first to find a name that exists on the account.

### `generate_sound_effect` (~167 tokens)

Generate sound effects from a text description.

WHEN TO USE:
\- Short ambient or UI sounds from a natural-language prompt
\- Effects for video, games, or presentations

EXAMPLE: {"prompt": "Soft rain on a tin roof", "duration_seconds": 3}

RELATED TOOLS:
\- check_subscription: confirm credits before generation

RETURNS: file_path, size_bytes, duration_seconds.

COST: Credits based on duration (0.5–22 seconds).

Input parameters:

- `duration_seconds` (number): Duration in seconds (0.5-22). Auto if omitted.
- `prompt` (string, required): Describe the sound effect. Be specific about characteristics.
- `prompt_influence` (number): How closely to follow the prompt (0-1). Default: 0.3.

### `list_voices` (~201 tokens)

Search and browse voices on your ElevenLabs account.

WHEN TO USE:
\- Find voice_id values before generate_speech
\- Filter by category (premade, cloned, generated, professional)
\- Recover from VOICE_NOT_FOUND by listing what exists on the account

EXAMPLE: {"search": "Rachel", "page_size": 5}

RELATED TOOLS:
\- get_voice: full detail for one voice_id from this list
\- search_shared_voices: browse the public voice library (not limited to your account)
\- generate_speech: consumes voice_id from results

RETURNS: voices[] (voice_id, enveloped name/description/labels), count, has_more.

COST: FREE — no credits consumed.

Input parameters:

- `category` (string): Filter by voice category.
- `page_size` (integer): Number of results (1-100). Default: 20.
- `search` (string): Search query to filter voices by name.

### `get_voice` (~175 tokens)

Get full details for one voice by voice_id.

WHEN TO USE:
\- Inspect labels, preview URL, and description before generate_speech
\- Verify a voice_id still exists after a generation error
\- Compare a voice from list_voices or search_shared_voices in detail

EXAMPLE: {"voice_id": "21m00Tcm4TlvDq8ikWAM"}

RELATED TOOLS:
\- list_voices: browse account voices when you do not have the voice_id yet
\- search_shared_voices: find public-library voice_id values
\- generate_speech: consumes voice_id

RETURNS: voice object with enveloped name, description, and label values.

COST: FREE — no credits consumed.

Input parameters:

- `voice_id` (string, required): Voice ID from list_voices or search_shared_voices.

### `search_shared_voices` (~291 tokens)

Search the public ElevenLabs shared voice library.

WHEN TO USE:
\- Discover voices beyond those on the user's account
\- Filter by language, gender, age, or category before cloning or TTS
\- Find a voice_id when list_voices returns no match

EXAMPLE: {"search": "british narrator", "language": "en", "page_size": 10}

RELATED TOOLS:
\- list_voices: voices already on the account (faster for owned voices)
\- get_voice: full detail for a voice_id from results
\- generate_speech: may use voice_id if the voice is accessible to the account

RETURNS: voices[] with enveloped name, description, accent, and label text (third-party authored).

COST: FREE — no credits consumed.

Input parameters:

- `accent` (string): Filter by accent (e.g. british, american).
- `age` (string): Filter by age bracket (e.g. young, middle_aged).
- `category` (string): Filter by shared-voice category.
- `gender` (string): Filter by gender (e.g. male, female).
- `language` (string): Filter by language code (e.g. en, es).
- `page_size` (integer): Results per page (1-100). Default: 20.
- `search` (string): Free-text search across shared voice names and descriptions.

### `transcribe_audio` (~217 tokens)

Transcribe speech from a local audio file to text.

WHEN TO USE:
\- Convert meeting recordings or voice memos to text
\- Extract quotes from audio the user provides as a file path

EXAMPLE: {"file_path": "/path/to/recording.mp3", "language_code": "en"}

RELATED TOOLS:
\- generate_speech: the inverse operation (text to audio)

RETURNS: enveloped text, word_count, language. File path must be inside MCP_WORKSPACE_PATH (or os.tmpdir()).

COST: Credits based on audio duration.

Input parameters:

- `file_path` (string, required): Absolute path to local audio file to transcribe.
- `language_code` (string): Language code (e.g., "en", "es", "fr"). Auto-detected if omitted.
- `model_id` (string): STT model. Default: scribe_v1.
- `tag_audio_events` (boolean): When true, include non-speech events like "(laughter)" in the transcript. Default: false.

### `speech_to_speech` (~271 tokens)

Convert an audio clip to sound like a different voice (voice conversion).

WHEN TO USE:
\- Change the speaker voice of an existing recording while preserving timing
\- Apply a premade or cloned voice_id to source audio the user provides as a file

EXAMPLE: {"audio_path": "/path/to/source.mp3", "voice_id": "21m00Tcm4TlvDq8ikWAM"}

RELATED TOOLS:
\- list_voices / get_voice: resolve voice_id
\- generate_speech: synthesize new speech from text instead of converting audio
\- check_subscription: confirm credits before conversion

RETURNS: file_path and size_bytes for the converted audio (saved under os.tmpdir()).

COST: Credits based on source audio duration.

Input parameters:

- `audio_path` (string, required): Absolute path to local source audio inside MCP_WORKSPACE_PATH (or os.tmpdir()).
- `model_id` (string): STS model ID. Omit to use the API default.
- `remove_background_noise` (boolean): When true, reduce background noise during conversion. Default: false.
- `voice_id` (string, required): Target voice ID from list_voices or search_shared_voices.
- `voice_settings` (object): Optional voice settings JSON object (stability, similarity_boost).

### `isolate_audio` (~202 tokens)

Remove background noise from an audio file (audio isolation).

WHEN TO USE:
\- Clean up meeting recordings or voice memos with background noise
\- Prepare a cleaner clip before transcription or voice cloning
\- Source audio is at least ~4.6 seconds long (shorter clips fail upstream)

COMMON MISTAKES:
\- Clips under ~4.6 seconds — the API rejects them; trim/merge or pick a longer sample first

EXAMPLE: {"audio_path": "/path/to/noisy.mp3"}

RELATED TOOLS:
\- transcribe_audio: transcribe the isolated clip
\- speech_to_speech: apply a different voice after isolation
\- clone_voice: clone from a cleaner sample

RETURNS: file_path and size_bytes for the isolated audio (saved under os.tmpdir()).

COST: Credits based on audio duration.

Input parameters:

- `audio_path` (string, required): Absolute path to local audio inside MCP_WORKSPACE_PATH (or os.tmpdir()).

### `forced_alignment` (~178 tokens)

Align a transcript to audio and return per-word timestamps.

WHEN TO USE:
\- Build karaoke-style captions or precise edit markers from audio + transcript
\- Verify that spoken words match a provided script

EXAMPLE: {"file_path": "/path/to/clip.mp3", "text": "Hello world."}

RELATED TOOLS:
\- transcribe_audio: generate transcript text from audio alone
\- generate_speech: create audio from text (inverse workflow)

RETURNS: words[] with enveloped aligned text and start/end times, plus loss score. Input transcript text is caller-supplied and not echoed raw.

COST: Credits based on audio duration.

Input parameters:

- `file_path` (string, required): Absolute path to local audio inside MCP_WORKSPACE_PATH (or os.tmpdir()).
- `text` (string, required): Transcript text to align against the audio.

### `clone_voice` (~253 tokens)

Create an instant voice clone from one or more local audio samples.

WHEN TO USE:
\- Clone a speaker from short audio samples the user provides
\- Add a custom voice to the account for generate_speech or speech_to_speech

EXAMPLE: {"name": "My Clone", "files": ["/path/to/sample.mp3"], "description": "Meeting voice"}

RELATED TOOLS:
\- delete_voice: remove a cloned voice when no longer needed (required for live-test cleanup)
\- generate_speech: synthesize speech with the new voice_id
\- list_voices: confirm the clone appears on the account

RETURNS: voice_id and requires_verification flag. Every files[] path is sandboxed individually.

COST: Uses a voice slot; may consume credits depending on plan.

Input parameters:

- `description` (string): Optional voice description stored on the account.
- `files` (array, required): One or more absolute audio file paths inside MCP_WORKSPACE_PATH (each sandboxed).
- `labels` (object): Optional key/value labels for the voice.
- `name` (string, required): Display name for the cloned voice.
- `remove_background_noise` (boolean): When true, reduce background noise in samples. Default: false.

### `delete_voice` (~136 tokens)

Permanently delete a voice from the ElevenLabs account.

WHEN TO USE:
\- Remove a test or temporary cloned voice (e.g. rebel-live-test-* names)
\- Free a voice slot after clone_voice

EXAMPLE: {"voice_id": "abc123voiceId"}

RELATED TOOLS:
\- clone_voice: creates voices that should be deleted after testing
\- list_voices: confirm the voice is gone

RETURNS: ok confirmation. This action is irreversible.

COST: FREE — no generation credits; permanently removes the voice.

Input parameters:

- `voice_id` (string, required): Voice ID to delete (from list_voices or clone_voice).

### `text_to_dialogue` (~271 tokens)

Generate multi-voice dialogue audio from a script with one voice per line.

WHEN TO USE:
\- Produce a conversation or script with different speakers
\- Podcast-style back-and-forth with distinct voices per line

EXAMPLE: {"inputs": [{"text": "Hello there.", "voice_id": "21m00Tcm4TlvDq8ikWAM"}, {"text": "Hi!", "voice_id": "pNInz6obpgDQGcFmaJgB"}], "model_id": "eleven_v3"}

RELATED TOOLS:
\- list_voices: pick voice_id values for each speaker
\- generate_speech: single-voice TTS when you only need one narrator
\- check_subscription: confirm credits before long scripts

RETURNS: file_path and size_bytes for the combined dialogue audio (tmp file).

COST: ~1 credit per 100 characters across all lines.

Input parameters:

- `inputs` (array, required): Ordered dialogue lines, each with text and voice_id.
- `language_code` (string): ISO 639-1 language code (e.g. en, es). Optional hint for pronunciation.
- `model_id` (string): TTS model. Default: eleven_v3.
- `seed` (integer): Optional seed for reproducible generation.

### `design_voice` (~289 tokens)

Generate voice-design previews from a text description (slow — up to ~2 minutes).

WHEN TO USE:
\- Explore synthetic voice options before saving one to the account
\- Prototype a narrator tone from a short natural-language brief

COMMON MISTAKES:
\- Supplying short preview text — the API requires 100–1000 characters when text is sent; omit text to auto-generate sample lines instead

EXAMPLE: {"voice_description": "calm middle-aged British narrator"}

RELATED TOOLS:
\- create_voice_from_preview: save a preview's generated_voice_id as a permanent voice
\- delete_voice: remove test voices after create_voice_from_preview
\- list_voices: browse existing voices instead of designing new ones

RETURNS: previews[] with generated_voice_id and preview_file_path (audio decoded to tmp — NEVER base64). Preview speech text is auto-generated unless you supply a 100+ character sample line.

COST: Uses voice-design credits per preview.

Input parameters:

- `auto_generate_text` (boolean): Defaults to true when text is omitted; forwarded only when text is provided.
- `model_id` (string): Optional model override for the design endpoint.
- `text` (string): Optional sample line (100–1000 chars). Omit to auto-generate preview text.
- `voice_description` (string, required): Natural-language voice description (e.g. "calm middle-aged narrator").

### `create_voice_from_preview` (~218 tokens)

Save a voice-design preview as a permanent voice on the account.

WHEN TO USE:
\- After design_voice, when the user picks a preview they want to keep
\- Promote a generated_voice_id into a reusable voice_id for generate_speech

EXAMPLE: {"voice_name": "rebel-live-test-stage4", "voice_description": "calm middle-aged narrator", "generated_voice_id": "abc123fromPreview"}

RELATED TOOLS:
\- design_voice: produces generated_voice_id + preview audio paths
\- delete_voice: remove test voices (use rebel-live-test-* names for cleanup)
\- generate_speech: synthesize with the new voice_id

RETURNS: voice_id for the saved voice.

COST: Uses a voice slot; may consume credits depending on plan.

Input parameters:

- `generated_voice_id` (string, required): generated_voice_id from design_voice previews.
- `voice_description` (string, required): Voice description — should match or echo the design_voice voice_description.
- `voice_name` (string, required): Display name for the saved voice.

### `create_dubbing` (~320 tokens)

Submit an async dubbing job (v1 API). You MUST poll get_dubbing until status is dubbed, failed, or cancelled.

WHEN TO USE:
\- Translate/dub existing audio or video into another language
\- Localize a short clip the user already has on disk

EXAMPLE: {"file_path": "/path/in/workspace/clip.mp3", "target_lang": "es", "name": "rebel-live-test-dub"}

RELATED TOOLS:
\- get_dubbing: poll job status (every ~10s; respect expected_duration_sec from this response)
\- download_dubbed_audio: fetch audio once status is dubbed
\- delete_dubbing: cleanup test jobs

RETURNS: dubbing_id and expected_duration_sec. The job runs server-side — poll get_dubbing; do not assume instant completion.

COST: Dubbing credits per minute of source media.

Input parameters:

- `file_path` (string): Local audio/video file inside MCP_WORKSPACE_PATH (multipart field file).
- `name` (string): Optional job label (echoed by get_dubbing).
- `num_speakers` (integer): Number of speakers when known.
- `source_lang` (string): Source language code when known (auto-detect when omitted).
- `source_url` (string): Alternatively, a URL ElevenLabs fetches server-side (no local sandbox).
- `target_lang` (string, required): Target language code (e.g. es, fr, de). Required.
- `watermark` (boolean): Apply watermark when supported. Default: false.

### `get_dubbing` (~159 tokens)

Poll dubbing job status. Call repeatedly after create_dubbing until status is dubbed, failed, or cancelled.

WHEN TO USE:
\- After create_dubbing — poll every ~10s (respect expected_duration_sec)
\- Check whether a dub failed before retrying

EXAMPLE: {"dubbing_id": "dub_abc123"}

RELATED TOOLS:
\- create_dubbing: submit the job
\- download_dubbed_audio: fetch audio when status is dubbed
\- delete_dubbing: remove test jobs

RETURNS: status (verbatim, incl. failed), enveloped name and error detail when present.

COST: FREE — status read only.

Input parameters:

- `dubbing_id` (string, required): Dubbing job ID from create_dubbing.

### `download_dubbed_audio` (~154 tokens)

Download dubbed audio for a completed dubbing job.

WHEN TO USE:
\- After get_dubbing reports status dubbed
\- Fetch the localized track for a target language

EXAMPLE: {"dubbing_id": "dub_abc123", "language_code": "es"}

RELATED TOOLS:
\- get_dubbing: confirm status is dubbed before downloading
\- delete_dubbing: cleanup after testing

RETURNS: file_path and size_bytes (extension sniffed from Content-Type).

COST: FREE — download only (generation credits charged at submit).

Input parameters:

- `dubbing_id` (string, required): Dubbing job ID.
- `language_code` (string, required): Target language code used when creating the dub (e.g. es).

### `delete_dubbing` (~126 tokens)

Permanently delete a dubbing job and its outputs.

WHEN TO USE:
\- Cleanup rebel-live-test-* dubbing jobs after live tests
\- Remove a failed or unwanted dub from the account

EXAMPLE: {"dubbing_id": "dub_abc123"}

RELATED TOOLS:
\- create_dubbing / get_dubbing / download_dubbed_audio: the dubbing lifecycle

RETURNS: ok confirmation. Irreversible.

COST: FREE — no generation; permanently removes the dubbing job.

Input parameters:

- `dubbing_id` (string, required): Dubbing job ID to delete.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/mindstone-mcp-server-elevenlabs/mindstone-mcp-server-elevenlabs#diagnostics

## Score history

- 2026-08-04: 75
- 2026-08-03: 71
- 2026-08-02: 71
- 2026-08-01: 23
- 2026-07-31: 18
- 2026-07-30: 24
- 2026-07-28: 26
- 2026-07-27: 43

## Links

- npm package: https://www.npmjs.com/package/@mindstone/mcp-server-elevenlabs
- Socket report: https://socket.dev/npm/package/@mindstone/mcp-server-elevenlabs
- Repository: https://github.com/mindstone/mcp-servers
- Changelog RSS feed: https://verifymcp.io/servers/mindstone-mcp-server-elevenlabs/mindstone-mcp-server-elevenlabs/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/mindstone-mcp-server-elevenlabs/mindstone-mcp-server-elevenlabs/changelog.json
- HTML version of this page: https://verifymcp.io/servers/mindstone-mcp-server-elevenlabs/mindstone-mcp-server-elevenlabs
