Skip to main content
Glama

elevenlabs_act

Destructive

Generate audio with ElevenLabs. EVERY call spends the account's credits (characters for speech, seconds for music and sound) and is not retried: read elevenlabs op='get_subscription' before a batch. On the shared key, text is at most 5,000 characters per call (text_too_long): cut a longer script into lines, or use your own key, which lifts the limit.

On the SHARED key (granted by oto, no key of your own), only the generations this instance serves run — by default create_speech; the others ask for your own ElevenLabs key.

The audio comes back as a signed URL (url, valid expires_in seconds, deleted after a day), never inline: download it right away.

op:

  • create_speech — text read by voice_id (from elevenlabs op='list_voices'), with model_id, voice_settings, seed and language_code optional. previous_text / next_text make a line sound continuous with its neighbours when a script is read line by line. With timestamps=true the answer also carries words (each word's start and end, seconds) and the raw per-character alignment.

  • create_music — a track from a prompt (length music_length_ms, 3,000 to 300,000) or from a composition_plan (sections, each with its duration and positive and negative styles), never both; respect_sections_durations, force_instrumental, seed optional. A prompt naming an artist or a copyrighted work is refused. Billed per minute of track (~900 credits a minute). On the shared key, when the instance serves it: the length is required (music_length_ms, or each section's duration_ms), the quota is checked against it.

  • create_sound — a sound effect described in text; duration_seconds (0.5 to 30, else the model decides), prompt_influence (0 to 1), loop optional.

  • create_transcript — the words said in an audio file (Scribe): source designates the file (a {"kind": "transit", "ref"} an oto tool returned, a project file, a URL…), language_code pins the language (else detected), audio_seconds its length. Returns text, language_code and words (each with its start and end, seconds). Billed per second of audio (~330 credits a minute). On the shared key, when the instance serves it: audio_seconds is required, at most 300 seconds and 1 MB of audio per call.

  • create_voice_design — up to three previews of a voice described in voice_description, each reading text (or a text the model writes with auto_generate_text=true); each preview has its generated_voice_id and its own URL. Saving a preview as a voice of the account is not done here.

output_format is <codec>_<sample rate>[_<bitrate>], default mp3_44100_128; some (mp3_44100_192, pcm_44100) are paid plans only.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "op": "<op>"
    },
    "name": "elevenlabs_act"
  }
}

Input Schema

NameRequiredDescriptionDefault
opYesWhat to generate (see above).
_orgNoOrg (id) de CET APPEL. `oto_list_orgs()`.
loopNoSound only: make it loop seamlessly.
seedNo0 to 4294967295, to make a take reproducible as far as the model allows.
textNoThe words to read (`create_speech`), the sound to make (`create_sound`), or the preview's line (`create_voice_design`); at most 5000 characters on the shared key.
_groupNoÉquipe (id) de CET APPEL, sous son org parente.
promptNoMusic only: the track described in words.
sourceNoTranscription only: the audio file, e.g. {"kind": "transit", "ref": "..."} or {"kind": "url", "url": "https://..."}.
_run_idNoOBLIGATOIRE à chaque appel dès `run_start` ou `data_claim_next` : sans lui, l'écriture sur une ligne réservée est refusée. Hérité seulement si le serveur tient un run actif — n'y compte pas.
_projectNoProjet (id) de CET APPEL — jeton PRIMAIRE. `oto_project(op='list')`.
model_idNoModel id, e.g. eleven_multilingual_v2 or eleven_v3 for speech, music_v1 for music; the API's default when omitted.
voice_idNoThe voice that reads, for `create_speech`.
_instanceNoInstance de connecteur PRÉCISE (un credential exact). `oto_instance(op='list')`.
next_textNoSpeech only: the line after this one, for continuity.
timestampsNoSpeech only: also return each word's start and end.
audio_secondsNoTranscription only: the clip's length in seconds — what the quota is checked against before the call; required on the shared key.
language_codeNoSpeech and transcription: ISO 639-1 code to force the language, when the model supports it.
output_formatNoe.g. mp3_44100_128 (default), mp3_48000_192, pcm_24000, opus_48000_64.
previous_textNoSpeech only: the line before this one, for continuity.
voice_settingsNoSpeech only: {stability, similarity_boost, style, use_speaker_boost, speed}, each optional.
music_length_msNoMusic from a prompt only: the length, 3000 to 300000.
composition_planNoMusic only: {positive_global_styles, negative_global_styles, sections: [{section_name, duration_ms, positive_local_styles, negative_local_styles, lines}]}.
duration_secondsNoSound only: 0.5 to 30 seconds.
prompt_influenceNoSound only: how literally to follow the text, 0 to 1.
voice_descriptionNoVoice design only: the voice in words, e.g. age, accent, tone, pace.
auto_generate_textNoVoice design only: let the model write the preview's line.
force_instrumentalNoMusic only: no vocals.
respect_sections_durationsNoMusic from a plan only: keep each section's duration exactly.

Schema Changelog

Changes observed during successful MCP inspections.

No schema history has been recorded yet.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (readOnlyHint=false, destructiveHint=true, openWorldHint=true) by naming the cost mechanism — characters for speech, seconds for music/sound, ~900 credits/minute of music, ~330 credits/minute of audio — and by warning that calls are not retried. It also discloses the non-obvious return contract: audio is never inline, it is a signed URL valid `expires_in` seconds and deleted after a day, so it must be downloaded right away. The only gap is the absence of explicit failure/retry guidance beyond `text_too_long`.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the cost hazard before any per-op detail, and the op-by-op bullet structure makes a 28-parameter tool scannable. It is long, with some redundancy — the 5,000-character shared-key limit appears both in the preamble and implicitly in the `text` description, and the shared-key caveat is restated for music and transcript — but almost every sentence carries operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 28-parameter, five-mode generation tool with no output schema, the description supplies the missing return contract (signed `url` + `expires_in`, `words` with start/end, `generated_voice_id` per preview, `text`/`language_code` for transcription), the billing model, and the shared-key quota preconditions. Nothing an agent needs to call it correctly or budget a batch appears absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline would be 3; the description nonetheless adds semantics the schema cannot carry: `previous_text`/`next_text` exist to make a line sound continuous when a script is read line by line, `timestamps=true` yields `words` plus raw per-character `alignment`, `audio_seconds` is what the quota is checked against and is required on the shared key, and `output_format` codecs like `mp3_44100_192`/`pcm_44100` are paid-plan only.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ("Generate audio with ElevenLabs") and then decomposes each of the five `op` values into what it actually produces: speech read by a voice, a music track, a sound effect, a transcript, or voice-design previews. An agent can distinguish this from sibling tools like `higgsfield_act` or `elevenlabs` (management) without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit preconditions and alternatives: read `elevenlabs` op='get_subscription' before a batch, cut scripts over 5,000 chars into lines OR use your own key, and on the shared key only the instance-served op runs while others require your own ElevenLabs key. It also states per-op selection rules (music from `prompt` xor `composition_plan`, never both) and what is deliberately NOT done here (saving a voice-design preview as a voice).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources