ElevenLabs MCP server
50 operations8 webhooks
AI audio platform; generate speech, dialogue, sound effects and music, transcribe and align audio, change or isolate voices, dub video, manage voices and history, and run conversational agents.
Try ElevenLabs with your agent
Connect ElevenLabs, then paste this into Claude, ChatGPT or Cursor. For ideas from other apps, see the use cases.
Using Corsair, show me what you can do in ElevenLabs on my account, then run one read-only example and show me the result.
ElevenLabs tools and triggers
Tools are what your agent can do in ElevenLabs through Corsair's MCP server. Triggers are the ElevenLabs events a routine can start from.
Agents
- Conversation DeleteDestructive
Delete a conversation, for good.
agents.conversationDelete
- Conversation GetRead-only
Read a conversation’s transcript, metadata and analysis.
agents.conversationGet
- Conversations ListRead-only
List conversations, optionally for one agent.
agents.conversationsList
- CreateWrite
Create a conversational agent.
agents.create
- DeleteDestructive
Delete an agent, for good.
agents.delete
- GetRead-only
Read an agent’s full configuration.
agents.get
- ListRead-only
List conversational agents.
agents.list
- Signed UrlWrite
Mint a short-lived WebSocket URL a client can use to talk to an agent; the conversation spends credits.
agents.signedUrl
- UpdateWrite
Change an agent’s configuration, name or tags.
agents.update
Voices
- Add From LibraryWrite
Add a voice from the shared library to this account; uses a voice slot.
voices.addFromLibrary
- Default SettingsRead-only
The settings a voice has by default.
voices.defaultSettings
- DeleteDestructive
Delete a voice from this account, for good.
voices.delete
- EditWrite
Change a voice’s name, description or labels.
voices.edit
- Edit SettingsWrite
Change a voice’s stored settings (stability, similarity and so on).
voices.editSettings
- GetRead-only
Read one voice with its settings and labels.
voices.get
- Get SettingsRead-only
Read a voice’s stored settings.
voices.getSettings
- ListRead-only
List the voices this account can use.
voices.list
- Search LibraryRead-only
Search the shared voice library.
voices.searchLibrary
Dubbing
- CreateWrite
Start dubbing a video or audio file into another language; spends credits by length. Returns at once with a dubbing_id; follow it with dubbing.get until status is dubbed or failed.
dubbing.create
- DeleteDestructive
Delete a dub, for good.
dubbing.delete
- GetRead-only
Where a dub stands: status dubbed or failed are final.
dubbing.get
- Get AudioRead-only
Download a finished dub as base64 (audio or video), subject to the same size limit as other audio.
dubbing.getAudio
- Get TranscriptRead-only
Read a dub’s transcript as srt, webvtt or json.
dubbing.getTranscript
- ListRead-only
List dubs, newest first by default.
dubbing.list
History
- DeleteDestructive
Delete a history item and its audio, for good.
history.delete
- GetRead-only
Read one history item: its text, voice, model and cost.
history.get
- Get AudioRead-only
Download a history item’s audio as base64, subject to a size limit you can raise with maxBytes.
history.getAudio
- ListRead-only
List generated speech, newest first by default.
history.list
Voice Design
- CreateWrite
Save a designed preview as a voice in this account; uses a voice slot.
voiceDesign.create
- DesignWrite
Generate voice previews from a description; spends credits. Hear one with voiceDesign.getPreview, then pass its generated_voice_id to voiceDesign.create.
voiceDesign.design
- Get PreviewRead-only
Read a preview's audio by its generated_voice_id, without generating again. Subject to a size limit you can raise with maxBytes.
voiceDesign.getPreview
- RemixWrite
Generate previews of a changed version of an existing voice; spends credits. Hear one with voiceDesign.getPreview.
voiceDesign.remix
Account
- SubscriptionRead-only
The plan, credits used and limits.
account.subscription
- Usage StatsRead-only
Credits used over a time range, by product or model.
account.usageStats
- UserRead-only
The account’s user and workspace ids and its subscription. Key fields are removed from the result.
account.user
Music
- ComposeWrite
Generate a song from a prompt or a composition plan; spends credits by length. ElevenLabs keeps no copy, so the audio comes back in the result. At the default format, about 24 KB/s, a song over about 31 s is too big to return from a script on Corsair’s cloud, whose cap is 1,000,000 bytes: pick a lower-bitrate outputFormat, or pass contentBase64 to the next operation and return only metadata.
music.compose
- PlanWrite
Draft a composition plan from a prompt, to edit and pass to music.compose.
music.plan
- Separate StemsWrite
Split a song into stems, returned as a zip; spends credits by audio length.
music.separateStems
Speech To Text
- ConvertWrite
Transcribe audio or video from a URL or a base64 file; spends credits by audio length. With webhook true it returns at once and delivers the transcript by webhook.
speechToText.convert
- Delete TranscriptDestructive
Delete a stored transcript, for good.
speechToText.deleteTranscript
- Get TranscriptRead-only
Read a transcript by the transcription_id speechToText.convert returned.
speechToText.getTranscript
Text To Speech
- ConvertWrite
Turn text into speech; spends credits by text length. Returns the audio as base64 with its history item id; set includeContent false to keep a long clip out of the result and read it later with history.getAudio.
textToSpeech.convert
- Convert With TimestampsWrite
Turn text into speech with the start and end time of each character; spends credits by text length. Same audio fields as textToSpeech.convert.
textToSpeech.convertWithTimestamps
Audio Isolation
- IsolateWrite
Remove background noise from audio and keep the voices; spends credits by audio length. The cleaned audio comes back in the result.
audioIsolation.isolate
Forced Alignment
- CreateWrite
Line up known text with audio to get word and character timings; spends credits by audio length.
forcedAlignment.create
Models
- ListRead-only
List available models with their languages and rates.
models.list
Single Use Tokens
- CreateWrite
Mint a single-use token, valid 15 minutes, to give a client instead of the API key.
singleUseTokens.create
Sound Effects
- GenerateWrite
Generate a sound effect from a description; spends credits by duration. ElevenLabs keeps no copy, so the audio comes back in the result.
soundEffects.generate
Text To Dialogue
- ConvertWrite
Turn lines spoken by several voices into one audio clip; spends credits by text length.
textToDialogue.convert
Voice Changer
- ConvertWrite
Say the same thing in a different voice, from a base64 audio file; spends credits by audio length.
voiceChanger.convert
Connect ElevenLabs to Claude, ChatGPT or Cursor
- 1
Connect ElevenLabs in Corsair
Add your ElevenLabs API key once in Corsair. Corsair stores the credential encrypted and makes the ElevenLabs API calls for your agent, so it never goes into a prompt or a config file. Connect ElevenLabs
If your link lets the agent add apps, you can skip this: it gives you a sign-in link the first time it needs ElevenLabs. On a ChatGPT personal plan, connect ElevenLabs here first.
- 2
Add Corsair's MCP server to your agent
Every client uses the same address:
https://mcp.corsair.dev/mcpOpen Customize → Connectors → Add custom connector, paste the address, then select Connect.Add a custom MCP server with the address and choose OAuth. Personal plans get read tools only.Add to CursorOr add this to~/.cursor/mcp.json. Cursor opens Corsair to sign in the first time it connects.{ "mcpServers": { "corsair": { "url": "https://mcp.corsair.dev/mcp" } } }Run this, then run/mcpin Claude Code to sign in.claude mcp add --transport http corsair https://mcp.corsair.dev/mcpCodex, Gemini CLI, VS Code, Zed and other clients with OAuth sign-in work the same way. Clients without it, such as GitHub Copilot's coding agent, use a link's own address and an API key. Setup for every client
- 3
Sign in and choose what needs your approval
Your client opens Corsair to sign in. Pick a link: the apps your agent can use and a mode that decides what it may do without asking. In the default Cautious mode, ElevenLabs's read and write operations run right away and its 6 destructive operations wait for your approval. Strict mode asks before every write and refuses destructive operations, and Read mode allows reads only.
FAQ
Install corsair and @corsair-dev/elevenlabs, add the ElevenLabs plugin, and connect with an API key. Then call methods like corsair.elevenlabs.api.account.subscription() from your app. Corsair verifies webhooks, and keeps each tenant isolated.
Yes. ElevenLabs requires an API key from your ElevenLabs account or developer dashboard. Create credentials with access that matches what you automate, then paste them into Corsair or connect through managed auth in Hub.
Yes. One Corsair client can hit ElevenLabs, GitHub, Notion, Stripe, and the rest. Trigger ElevenLabs from a webhook, push updates to Slack, or chain actions across plugins. Same tenant context across integrations, plain TypeScript.
Teams use Corsair for AI audio platform; generate speech, dialogue, sound effects and music, transcribe and align audio, change or isolate voices, dub video, manage voices and history, and run conversational agents. Common builds include sync jobs, admin tooling, and agents that call ElevenLabs APIs from your backend. Webhook handlers react to ElevenLabs events and fan out to Slack, email, or other plugins in the same tenant.
The SDK is open source. Self-host and you pay Corsair nothing for the integration layer. Hub bills for hosted auth and execution, not per ElevenLabs API call. Hub has a generous free tier. For hobby projects you can probably run the whole thing on free. Paid plans start to matter with more tenants or heavier traffic.
We maintain @corsair-dev/elevenlabs in the open repo. When ElevenLabs ships API changes, upgrade the package. Your call sites stay typed. You should not need to rewrite the integration layer each time.
No. Corsair does not read your ElevenLabs data or hold individual access credentials. Credentials stay in your database. API calls run on your instance. We do not store ElevenLabs data on your behalf.
Yes. Add https://mcp.corsair.dev/mcp as a custom connector or MCP server in Claude, ChatGPT, Cursor, VS Code, Claude Code, Codex or any client that supports remote MCP servers with OAuth sign-in, then sign in to Corsair. On ChatGPT personal plans, custom servers currently get read tools only.
Yes. Put ElevenLabs on a link in Strict mode and every write waits for your approval, while destructive actions are refused. The default Cautious mode asks only before the 6 destructive ElevenLabs operations. You can change a link's mode at hub.corsair.dev/me.