ofaudio-mcp
This MCP server provides an agent-first audio generation and processing toolkit. It can generate music (with optional lyrics or composition plans), write lyrics, create sound effects, generate speech (single lines or multi-speaker dialogue), search/design/clone voices, and manage voice profiles and presets. It also handles audio transformations: transcription, voice isolation/denoising, and voice conversion (speech-to-speech). Jobs run asynchronously with fan-out support, and you can check job status, list recent jobs, and get account/credit info for all configured providers (ElevenLabs and Mureka).
Integrates with ElevenLabs for speech synthesis, sound effects generation, voice cloning and design, transcription, audio isolation, and speech-to-speech conversion. Provides tools for generating dialogue, managing voices and speakers, and controlling speech delivery.
Allows transcription of audio from TikTok videos by providing a video URL, extracting speech and generating transcripts or captions.
Allows transcription of audio from YouTube videos by providing a video URL, extracting speech and generating transcripts or captions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ofaudio-mcpGenerate a 30-second lo-fi hip hop beat for a podcast intro"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ofaudio-mcp
An agent-first MCP server for any audio an AI agent needs — generate (music, sound effects, speech, multi-speaker dialogue) and transform (transcribe, caption, isolate/denoise, voice-convert/dub) — behind one intent-shaped tool surface. It wraps ElevenLabs (speech, dialogue, SFX, voice library/design/cloning, music, transcription, isolation, speech-to-speech) and Mureka (music, lyrics), does the work in-process, and writes files to the local filesystem. Games, audiobooks, podcasts, video, ads, accessibility, localization — all one MCP.
Built to be driven by an agent, never a human clicking a UI. Every generation call returns
a job_id instantly and runs in the background, so an agent can fan out many variants
without blocking, then collect them with check_jobs.
Install
# from a checkout
pip install -e .
ofaudio-mcp # or: python -m ofaudio_mcpOnly hard dependency is the mcp SDK. Python 3.10+.
Related MCP server: minimax-omni
Configure (environment)
Copy .env.example to .env and fill in your keys (.env is gitignored).
Set at least one provider's key. Keys accept a singular or plural form; the plural
is comma-separated and becomes a multi-account pool (see Parallelism).
Env var | Default | Purpose |
| — | ElevenLabs key(s) — voice + SFX. Works with a subscription tier or pure pay-as-you-go. |
| — | Mureka key(s) — music. Prepaid API credits. |
|
| Where audio files are written. |
|
| Job records (JSON) + |
| all | Comma-separated tool groups to mount ( |
|
| Concurrent requests per ElevenLabs key. |
|
| Concurrent requests per Mureka key (Mureka caps at 1/account). |
|
| Seconds between polls for async (Mureka) jobs. |
|
| Max seconds to wait for one generation. |
|
| Pin a Mureka model (e.g. the V9 flagship string) once confirmed on a live key. |
|
| TTS model; drop to |
| Rachel | Default voice id when a call doesn't specify one. |
| official | Override API base URLs. |
A key entry may be label:key to name the lane in logs and job results
(e.g. MUREKA_API_KEYS="acct-a:ak_...,acct-b:ak_...").
Tools
27 tools in six groups (generate, speakers, voices, account, transform,
pronunciation); mount a subset with OFAUDIO_TOOLS. Every parameter is documented in the
tool schema itself, so an agent needs nothing beyond tools/list.
Tool | What it does |
| Themes, BGM, songs, instrumentals. Soft-defaults to Mureka (prompt→song writes its own lyrics; pass |
| Write song lyrics from a theme (Mureka) — synchronous |
| Speech-to-text (ElevenLabs Scribe). |
| Align a known script to existing audio → exact per-word timings (+ optional SRT/VTT) — for captioning recordings you already have the transcript for |
| Remove background noise / isolate the voice → |
| Speech-to-speech: re-voice a recording onto another |
| One-shots, ambience, seamless loops → |
| Dialogue / character VO. Identity = a |
| Multi-speaker scene in one call (≤10 voices, ~2000 chars) with natural turn-taking → |
| Save a reusable persona/mood preset (a preset over the speech knobs) |
| Save a speaker (pinned voice + base delivery) under a workspace |
| Saved speakers (optionally by workspace), each with its workspace |
| Search ElevenLabs' shared library of thousands of voices; every result carries a |
| Add a library voice to the account and save it under |
| Synthesize a custom voice from a text description; returns previews to audition |
| Keep a designed preview as a permanent, reusable voice (uses a voice slot) |
| Instant Voice Cloning from your audio file(s) → saved, reusable voice (uses a slot) |
| Delete a custom voice and free its slot (fresh name→id, blocks premade, warns on profile/speaker refs) |
| Both providers, one call — ElevenLabs (tier, char quota, voice slots, cloning, + |
| ElevenLabs models available on the account + capability flags |
| Batch-poll — returns status + file path per id |
| Recent jobs, newest first |
| Lock how words/lore-names are said — |
| Extend a saved dictionary (mints a new version) |
| ElevenLabs voices on the account ( |
| One voice's details (category, labels, description, preview_url) |
| Everything saved, one call: voice aliases, music presets, profiles (built-in + custom), speakers, pronunciation dictionaries, workspaces |
Each generate_* has a soft-pinned provider (music→Mureka, SFX/speech→ElevenLabs) and an
optional engine= override. A result is {job_id, status, path, duration, format, seed, provider} once succeeded.
Voices, speakers & delivery
The voice is the speaker's identity — pick or make one, don't dial it out of parameters. Three ways to get a voice, all reusable by name afterwards:
Use one of ElevenLabs' many —
search_voice_library(query="warm narrator", age="middle_aged")→add_library_voice(public_owner_id, voice_id, "narrator"). Thousands of ready-made voices.Design a custom one —
design_voice("warm, measured audiobook narrator, clear articulation", save_as="narrator"). Describe it, audition the previews, keep the best.Reuse what's on the account —
list_voices()shows the premade voices already there.
Then just generate_speech("...", voice="narrator") — the voice stays consistent.
Make it a first-class Speaker, grouped by workspace. For a whole cast across several projects,
save_speaker("narrator", voice, workspace="projectA", ...) saves the identity (pinned voice + base
delivery), and generate_speech(text, speaker="narrator", mood="calm", workspace="projectA") speaks
it — the mood layers over the speaker (a speaker is who; a profile is what mood).
search_voice_library(query) returns candidates with a preview_url each (no slots), and
add_library_voice(..., speaker="narrator", workspace="projectA") adds + saves in one step.
variants=N on generate_speech fans out N takes so a human picks the best.
Delivery (mood/tone) is a separate layer on top. Shape it with a profile and/or the
precision knobs. Built-in profiles: neutral, narrator, calm, whisper, sad, angry, excited, shout (v3, emotion via audio tags) and steady, dynamic (v2, consistency axis). Save your
own persona/mood presets with save_profile.
Two facts worth knowing (both handled for you, but they explain the design):
Eleven v3 (default for speech) does emotion via inline audio tags (
[whispers],[angry],[snorts], …) and a 3-mode stability (creative/natural/robust) — it ignores the numericstyleslider. Tags only land on an expressive voice; a flat narration voice mutes them.Eleven v2 uses the numeric sliders, but those control consistency (dynamic ↔ steady), not a specific emotion. Use it via the
steady/dynamicprofiles.
Parallelism
Mureka caps concurrency at 1 request per prepaid account and it doesn't stack, so the way to run music generation in parallel is multiple accounts. This server treats keys as a pool: supply N keys and it runs N jobs in parallel, one per key, automatically routing around a key that hits its rate limit (back-off) or runs out of balance. Supplying one key is just the N=1 case. (ElevenLabs scales concurrency within a single key by tier, so a lane count > 1 per key is the norm there.)
Mount it
Claude Code
claude mcp add ofaudio \
--env ELEVENLABS_API_KEY=xi_... --env MUREKA_API_KEY=ak_... \
-- python -m ofaudio_mcpCursor — .cursor/mcp.json:
{
"mcpServers": {
"ofaudio": {
"command": "python",
"args": ["-m", "ofaudio_mcp"],
"env": { "ELEVENLABS_API_KEY": "xi_...", "MUREKA_API_KEY": "ak_..." }
}
}
}Self-hosted / server — add the server to your MCP client's config and put the keys in a
.env next to it (they stay on the box):
ELEVENLABS_API_KEYS=xi_...
MUREKA_API_KEYS=acct-a:ak_...,acct-b:ak_...
OFAUDIO_OUT_DIR=/var/audio/ofaudio-outThe intended usage pattern is fan-out: fire many generate_* calls, then check_jobs.
Context cost
Most MCP clients load every tool schema into the model's context on every turn, so the size
of tools/list is a real cost. Claude Code defers schemas until a tool is used, but truncates
any tool description longer than 2048 characters. The surface is shaped around both:
Each tool's docstring is ≤ 700 chars; every parameter is documented in its own schema
description(nothing gets cut, and schema-rendering clients see real docs, nottitles).Tools carry MCP annotations (
readOnlyHint,destructiveHint) so clients can skip approval prompts on reads and warn ondelete_voice.The advertised schemas are compacted at startup (pydantic's
title/anyOf null/default: nullnoise stripped; validation unchanged).OFAUDIO_TOOLS=generate,accountmounts only the groups a project needs.The usage guide is served in-band as the MCP resource
ofaudio://guide(text/markdown) for clients that support resources; the same text ships as theskills/ofaudioskill.
Surface | Tools |
| ≈ tokens |
before this shaping | 33 | 42.3 KB | 12.1k |
all six groups | 27 | 33.7 KB | 9.6k |
| 9 | 13.7 KB | 3.9k |
Measure it with python scripts/tool_surface.py (honours OFAUDIO_TOOLS; exits 1 if any
description exceeds 2048 chars).
Status
Both providers work end-to-end. ElevenLabs: speech (+ timestamps, mood profiles,
variants), multi-speaker dialogue, SFX, Eleven Music, voice library / design / instant
cloning, voice lifecycle, account introspection, the speaker/workspace layer, and the transform
tools (transcribe, forced alignment, isolate, voice-convert). Mureka: instrumental + song,
prompt→song (easy-generate), user-supplied lyrics, standalone generate_lyrics, reference-track
vibe-match, and lossless flac-default output.
Design
See CLAUDE.md for the architecture, module map, tool surface, and the verified
provider facts that shape the design.
License
Source-available under PolyForm Noncommercial 1.0.0, with a licensor carve-out that draws the line at the tool, not the audio:
✅ Run it freely for any purpose — including to generate audio you use commercially. This MCP is only a client; it claims no rights in what you generate. Your rights to the generated audio are governed by ElevenLabs' and Mureka's terms and your own accounts with them.
❌ Don't commercialize the tool itself — you may not sell this software, host it as a paid service, or turn it (or a derivative) into a commercial product.
In short: make whatever audio you want, sell it if your provider terms allow — just don't sell
the MCP. See LICENSE for the full terms.
Available Tools
33 toolsaccount_statusA
Credits + quotas for ALL configured providers in one call — check before fan-out.
Returns a section per available provider (only those with a configured key):
"elevenlabs": tier, characters used/limit/remaining, voice slots, cloning entitlements, next quota reset, and "quality" (which audio formats this tier can request — lossless wav/pcm need Pro+, mp3_192 needs Creator+).
"mureka": prepaid credit balance, total recharge/spending, and concurrent_request_limit (=1 on the $30 tier — drives how many music jobs run at once).
Use it to avoid mid-batch failures (out of credits / voice slots) and to pick a supported
audio format for the account's tier. A provider that errors is reported under its own
key rather than failing the whole call.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavior: it returns sections only for configured providers, details the fields per provider (tier, limits, quality), and explains error handling. This goes far beyond a simple 'get status' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening sentence, then two bullet-like sections for each provider. Every sentence adds value, and the formatting improves scannability without being bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no parameters, the description thoroughly covers return structure, per-provider details, and edge cases (providers with errors). It provides all needed context for an AI agent to understand what will be returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4. The description instead focuses on output semantics, which is appropriate. Since there are no parameters to document, this is effectively complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Credits + quotas for ALL configured providers in one call' with a specific verb (check) and resource (account status). It also distinguishes from siblings by emphasizing provider-wide coverage and pre-fan-out use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is given: 'check before fan-out' and 'Use it to avoid mid-batch failures... and to pick a supported audio format.' It also clarifies that per-provider errors are isolated, which helps decide when to call this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_library_voiceA
Add a shared Voice Library voice to the account and save it under name.
Take public_owner_id + voice_id from search_voice_library. After this, generate_speech(voice="") uses that character. NOTE: consumes one custom-voice slot on the ElevenLabs account (tiers cap how many you can hold).
Returns: {"voice_id": , "name": ...} or {"error": ...}.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| voice_id | Yes | ||
| public_owner_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses a meaningful side effect ('consumes one custom-voice slot...') and describes return values. It doesn't cover potential failures or idempotency, but the disclosure is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a clear opening sentence, a workflow note, a warning, and a returns section. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with three string params and no annotations, the description covers purpose, usage, side effects, and return format. It lacks explicit error handling details, but overall it is sufficiently complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining that public_owner_id and voice_id come from search_voice_library, and that name is the saved name. All three parameters are semantically defined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add a shared Voice Library voice to the account and save it under `name`'), identifying the specific resource and outcome. It also references search_voice_library and generate_speech, distinguishing this from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit workflow context ('Take public_owner_id + voice_id from search_voice_library. After this, generate_speech(voice="<name>") uses that character'), which indicates when to use it. However, it does not explicitly mention alternatives or when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_pronunciation_rulesB
Add rules to an existing pronunciation dictionary (by saved name or id).
Args: dictionary: A saved dictionary name (or an ElevenLabs dictionary id). rules: {word: say_as} map or a list of EL rule objects (see create_pronunciation_dictionary).
Returns: {"id", "version_id", "added": } or {"error"}.
| Name | Required | Description | Default |
|---|---|---|---|
| rules | Yes | ||
| dictionary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It states it adds rules (implying mutation) and shows a return shape, but it does not disclose permissions, reversibility, idempotency, or any side effects like versioning. For a mutation tool, this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured with Args and Returns sections. Every sentence contributes meaning; there is no fluff. It is easy to scan and understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core operation and parameters, and provides a return format. However, with no annotations and no output schema, it lacks broader context such as when to choose this tool, error scenarios beyond a generic error object, and any prerequisite knowledge besides referencing another tool. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no descriptions, so the description compensates by explaining 'dictionary' as a saved name or id and 'rules' as a map or list of EL rule objects. It adds meaning beyond the bare property names, though it defers detailed rule structure to another tool, which is a partial gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds rules to an existing pronunciation dictionary, specifying that the dictionary can be referenced by saved name or id. This is a specific verb+resource pairing that makes the main function clear, though it does not explicitly contrast with sibling tools like create_pronunciation_dictionary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (you'd use this when you want to add rules to an existing dictionary) but does not provide explicit when-to-use or when-not-to-use guidance. It does reference create_pronunciation_dictionary for rule object format, which is a cross-reference, but lacks alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_speaker_from_libraryA
Add a Voice Library voice to the account AND save it as a speaker, in one step.
Combines add_library_voice + save_speaker. Consumes a voice slot. After this, speak('', text, workspace=...) uses it.
Args:
name: Speaker/voice handle to save under.
public_owner_id, voice_id: From a preview_voices candidate.
workspace: Workspace namespace (default "default").
seed: Optional base seed for the speaker.
description: Human note.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| seed | No | ||
| voice_id | Yes | ||
| workspace | No | default | |
| description | No | ||
| public_owner_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden of disclosing side effects. It mentions 'Consumes a voice slot' and that after the call, 'speak(...)' can use the speaker, providing key behavioral context. It does not detail error cases or permissions, but core effects are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the core purpose in the first sentence, then concisely notes the combination, side effect, and usage note. The Args list is direct without filler. Each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description covers purpose, side effects, and parameters. It lacks an explicit return value description, but considering the simple create-and-save nature and the presence of sibling tools for lookup, this is a minor gap. Overall it's complete enough for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains each parameter beyond schema titles: 'name' as handle, 'public_owner_id' and 'voice_id' as from preview_voices candidate, 'workspace' as namespace, 'seed' as optional base seed, and 'description' as human note. This compensates for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: adding a Voice Library voice and saving it as a speaker in one step. It explicitly references the combined tools 'add_library_voice + save_speaker', distinguishing it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use this tool: when you want both add_library_voice and save_speaker simultaneously. It also notes the resulting effect on 'speak' usage. This provides clear context for choosing this tool over separate alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_jobsA
Batch-poll jobs by id. This is the companion to fan-out generation.
Returns one status record per id: {job_id, kind, status, provider, and — when done — path, duration, format, seed}. status is one of queued/running/succeeded/failed; failed records include an "error". Unknown ids come back with status "unknown".
| Name | Required | Description | Default |
|---|---|---|---|
| job_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does this well by explaining the return record shape, the possible statuses (queued/running/succeeded/failed), that failed records include an error, and that unknown ids return status 'unknown'. Missing details like rate limits or authentication, but these are not critical for a polling tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-line summary, a context sentence, and a return-format explanation. Every sentence adds useful information without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter schema and no annotations, the description is quite complete. It covers purpose, usage context, input meaning, output shape, statuses, and error handling. The only minor gap is lack of details about rate limits or permissions, but these are not essential for an agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only defines job_ids as an array of strings with zero description coverage, so the description must compensate. It does so by clarifying that each id produces one status record and that unknown ids are handled gracefully. It doesn't specify ID format or maximum batch size, but the semantic purpose of the parameter is well conveyed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Batch-poll jobs by id'. It clearly distinguishes this tool from sibling tools like list_jobs by emphasizing polling specific IDs and noting it is 'the companion to fan-out generation'. This makes the tool's role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by stating this is the companion to fan-out generation, implying it should be used after generating jobs in batch. However, it does not explicitly mention alternatives or when not to use it, such as 'use list_jobs to enumerate jobs', so it falls short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clone_voiceA
Clone a voice from audio sample(s) — ElevenLabs Instant Voice Cloning.
A human provides the audio FILES on the machine ofaudio runs on; pass their paths.
~1-2 minutes of clean, single-speaker audio clones best. The result is saved under
name and usable immediately as generate_speech(voice=""). Consumes one voice
slot, and needs a tier that allows instant cloning (see account_status).
IMPORTANT: only clone a voice you have the rights/consent to use.
Args: name: Handle to save the cloned voice under. audio_paths: Path(s) to audio files (mp3/wav/…) readable on this machine. description: Optional description stored on the voice. remove_background_noise: Run ElevenLabs' denoiser on the samples first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| audio_paths | Yes | ||
| description | No | ||
| remove_background_noise | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool consumes one voice slot, requires a tier, saves under the provided name, and is immediately usable. It also explains the remove_background_noise parameter's effect. This is rich behavioral context beyond what any structured data would provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded, with a clear summary, ethical note, and parameter list. It is slightly longer due to the detailed guidance, but every sentence earns its place. A minor typo ('ofaudio') prevents a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given four parameters, no output schema, and no annotations, the description covers the tool's purpose, usage, parameter semantics, side effects (voice slot), prerequisites (tier), and ethical considerations. It even references related tools (generate_speech, account_status). This is highly complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description's Args section explains every parameter: name as the handle, audio_paths as readable files, description as optional stored text, and remove_background_noise as the denoiser flag. This fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'clone' and resource 'voice', clearly stating 'Clone a voice from audio sample(s) — ElevenLabs Instant Voice Cloning.' It distinguishes from siblings like generate_speech, which uses a voice, and save_voice which likely saves existing voices. The scope is well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: requires audio files on the machine, recommends ~1-2 minutes of clean single-speaker audio, and states the result is immediately usable with generate_speech. It also mentions prerequisites (tier allowing instant cloning, see account_status) and includes an important consent warning. This is clear when-to-use guidance with inferred alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_voiceA
Re-voice a recorded performance onto another voice (ElevenLabs speech-to-speech).
Keeps the delivery/timing of the input recording but swaps the voice — for dubbing, ADR, or turning your own take into a character's voice.
Args: audio: Local path to the source audio (the performance to convert). voice: Target voice — a saved name or an ElevenLabs voice id. remove_background_noise: Clean the input before converting. format: Output format ("mp3"/"wav"; wav auto-downgrades to mp3 on sub-Pro tiers). seed: Optional determinism hint.
Returns: {"path": } or {"error"}.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| audio | Yes | ||
| voice | Yes | ||
| format | No | ||
| remove_background_noise | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses core behavior (voice swap preserving timing), format downgrade behavior ('wav auto-downgrades to mp3 on sub-Pro tiers'), and noise removal as a pre-processing step. However, it omits potentially important side effects such as whether the original audio file is modified, network/credit consumption, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a brief summary, a use-case sentence, an Args block, and a Returns block. Every sentence adds value; there is no redundancy or filler. The front-loaded summary immediately conveys what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with five parameters and no output schema, the description is remarkably complete. It includes a return format, parameter details, and specific format/behavior nuances. Minor gaps include explicit error scenarios and prerequisites (e.g., account tier or parent workspace), but overall it is self-contained enough for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does. Each parameter gets a functional explanation beyond the schema: audio is 'Local path to the source audio', voice is 'a saved name or an ElevenLabs voice id', format includes allowed values and downgrade caveat, and seed is 'Optional determinism hint.' All five parameters are addressed, though 'seed' could be more precise about its effect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Re-voice a recorded performance onto another voice') and the resource (ElevenLabs speech-to-speech). It explicitly distinguishes this from sibling tools by emphasizing that it 'keeps the delivery/timing of the input recording but swaps the voice,' positioning it for dubbing, ADR, and character voice conversion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear use-case context: 'for dubbing, ADR, or turning your own take into a character's voice.' It does not explicitly name alternatives or state when not to use, but the distinction from text-to-speech tools (like generate_speech) is strongly implied through the focus on existing recordings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pronunciation_dictionaryA
Create a pronunciation dictionary so specific words/names are ALWAYS said a fixed way.
Great for a game/story cast: lock how lore names, places, and invented terms are
pronounced, then apply it to any speech so every character says them consistently. Save
it once (by name), then pass pronunciation=<name> to generate_speech/speak, or pin it
to a speaker (save_speaker(pronunciation=)).
Args: name: A name to save this dictionary under (reuse it later by name). rules: The easy form is a {word: say-it-like-this} map, e.g. {"Kaelthas": "kal-thass", "Y'ffre": "iffray"} (alias rules). For precise IPA control, pass a list of ElevenLabs rule objects ({"type":"phoneme","string_to_replace":"...","phoneme":"...","alphabet":"ipa"}). description: Optional note.
Returns: {"name", "id", "version_id", "rules": } or {"error"}.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| rules | Yes | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It explains that the dictionary is saved by name and reusable, and it specifies the return value. However, it does not disclose what happens if a name already exists (overwrite vs error) or any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a clear one-sentence summary, a usage paragraph, a structured args list, and a returns section. Every sentence adds value, and it is appropriately sized given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides a complete picture: what the tool does, how to use the resulting dictionary, the exact parameter formats, and the return value. It even references related tools (generate_speech/speak, save_speaker) for applying the dictionary, making it fully actionable for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully explain the parameters. It does so thoroughly: name is explained as a handle for reuse, rules are detailed with two formats (alias map and IPA phoneme objects) and examples, and description is noted as optional. This compensates completely for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a pronunciation dictionary, with a specific verb ('Create') and resource. It explains the function and provides a concrete use case, making the purpose unmistakable even without explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when to use the tool (for consistent pronunciation of names/terms) and how to apply the result (pass to generate_speech/speak or pin to a speaker). However, it does not mention alternatives like add_pronunciation_rules or specify when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_voiceA
Delete a custom voice from the ElevenLabs account, freeing a voice slot.
DESTRUCTIVE and irreversible — you must pass confirm=True. Resolves a name to its id first and refuses if the name is ambiguous (pass the exact voice_id then). Premade voices can't be deleted. Also removes local nickname aliases and warns if a saved profile still pins the voice.
Args: voice: The voice name or id to delete. confirm: Must be True to actually delete.
| Name | Required | Description | Default |
|---|---|---|---|
| voice | Yes | ||
| confirm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the transparency burden. It highlights destructive/irreversible nature, the confirm=True requirement, name-to-id resolution with ambiguity refusal, prohibition on premade voices, removal of local aliases, and profile-pinning warnings. This goes far beyond a basic delete operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, followed by critical warnings and a clear Args section. Every sentence adds value, from the destructive warning to the side-effect notifications, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, absence of annotations, and lack of output schema, the description is remarkably complete. It covers safety, side effects, edge cases like ambiguous names and premade voices, and parameter semantics, giving an agent sufficient information to invoke correctly and anticipate consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It explains 'voice' as a name or ID, clarifies ambiguity behavior, and defines 'confirm' as a required safety flag. This adds essential meaning beyond the raw types in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: deleting a custom voice from the ElevenLabs account, with the specific effect of freeing a voice slot. It clearly distinguishes from siblings like list_voices, get_voice, and clone_voice by focusing on deletion of custom voices only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use (deleting custom voices) and when not to (premade voices cannot be deleted), plus practical guidance around confirm=True and resolving ambiguous names. It does not explicitly name alternative sibling tools, but the exclusions and operational notes make usage context strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
design_voiceA
Design a brand-new custom voice from a text description (ElevenLabs Voice Design).
Describe the character ("elderly gruff grandfather, warm but gravelly, slight wheeze") and get back a few preview clips saved to the output dir. Audition them, then keep one with save_voice(name, generated_voice_id) — or pass save_as to auto-keep the first.
Args: description: The voice to synthesize, in plain language. save_as: If set, immediately save the first preview as a permanent voice under this name (consumes one custom-voice slot). text: Optional preview line (100-1000 chars); omit to auto-generate suitable text. model: Voice-design model ("eleven_multilingual_ttv_v2" default, or "eleven_ttv_v3"). guidance_scale: 0-100ish; higher sticks closer to the prompt (default ~5). loudness: -1 (quiet) to 1 (loud), default 0.5. seed: Fix generation for reproducible previews.
Returns: {"previews": [{generated_voice_id, path, duration}], "preview_text": ..., optionally "saved": {name, voice_id}} or {"error": ...}.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| text | No | ||
| model | No | ||
| save_as | No | ||
| loudness | No | ||
| description | Yes | ||
| guidance_scale | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It transparently discloses side effects (previews saved to output dir, save_as consumes a custom-voice slot), reproducibility via seed, parameter ranges, and the return format including error handling. This goes well beyond minimal expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, then a brief workflow, then structured Args and Returns sections. Every sentence adds value, and the length is justified by the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is remarkably complete: it covers all parameters, side effects, workflow steps, and return format. No critical gaps are apparent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates by explaining every parameter: description, save_as (with slot consumption), text (including character range), model (with defaults), guidance_scale (range and effect), loudness (range and default), and seed (reproducibility). This is exemplary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool designs a brand-new custom voice from a text description (ElevenLabs Voice Design) and provides a concrete example. This distinguishes it from sibling tools like clone_voice, convert_voice, or preview_voices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear workflow: describe the voice, get previews, audition them, then keep one via save_voice or pass save_as to auto-save. It implies when to use this tool versus alternatives, but does not explicitly state exclusions or name alternative tools as comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forced_alignmentA
Align a KNOWN script to existing audio → exact per-word timings (ElevenLabs).
Use when you already have the exact transcript (a recorded VO + its script) and want
precise timings for captions/lip-sync/cut timing. (Unlike transcribe, which discovers
the words — this snaps your given text to the audio.)
Args: audio: Local audio file path. text: The exact transcript/script spoken in the audio. captions: "srt" or "vtt" to also write a subtitle file from the aligned words.
Returns: {"words": , "characters": , "loss", "captions_path"?} or {"error"}.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| audio | Yes | ||
| captions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the core behavior (snapping text to audio), the output format (word/character counts, loss, captions path), and optional caption writing. However, it does not explain what 'loss' means or how mismatches between script and audio are handled, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with intro, usage guidance, args, and returns. Every sentence contributes value; no fluff. It is longer than typical but earns its length with dense, useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description is quite complete: it explains purpose, args, return values, and usage context. However, the 'loss' return field is left undefined, and error conditions or failure modes are not mentioned, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the Args section fully compensates: audio ('Local audio file path'), text ('exact transcript/script'), captions ('srt' or 'vtt' to also write a subtitle file'). This adds meaning well beyond the bare titles in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Align a KNOWN script to existing audio → exact per-word timings'. It clearly distinguishes the tool from siblings by contrasting with `transcribe`, which discovers words, while this snaps given text to audio.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Use when you already have the exact transcript...' and names the alternative (`transcribe`) with a clear distinction. This gives the agent actionable selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_dialogueA
Generate a multi-speaker dialogue scene in a single call (ElevenLabs Text-to-Dialogue).
One request renders all turns with natural back-and-forth timing — better than stitching N separate generate_speech calls. Up to 10 distinct voices, ~2000 characters total.
Args: lines: Ordered turns, each {"voice": , "text": }. An optional "speaker" label is allowed for your own clarity. v3 audio tags work in the text (e.g. "[laughs] no way!"). model: Dialogue model id (default eleven_v3). seed: Best-effort determinism for the whole scene. language_code: ISO 639-1 language pin. apply_text_normalization: "auto" | "on" | "off". engine: Provider override (defaults to ElevenLabs). format: Output format ("mp3" default).
Returns: {"job_id": ..., "status": "queued", "engine": ...} or {"error": ...}. check_jobs returns the mixed dialogue audio path.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| lines | Yes | ||
| model | No | ||
| engine | No | ||
| format | No | ||
| language_code | No | ||
| apply_text_normalization | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries the burden. It discloses async behavior (returns job_id and queued status, with check_jobs returning the audio path), seed determinism, and support for v3 audio tags. It does not mention error handling beyond an error object or permission/authorization needs, but covers key behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a one-line summary, benefit statement, constraints, an Args list, and a Returns section. It is detailed but every sentence adds value, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 7 parameters with 0% schema coverage, the description provides all necessary context: purpose, usage, parameter semantics, constraints, and return/status behavior. It is fully sufficient for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description fully compensates by explaining every parameter with types, defaults, and examples. For lines, it details the structure and optional fields; for apply_text_normalization, it lists enum options; and for engine, it explains the provider override.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Generate a multi-speaker dialogue scene in a single call.' It distinguishes from siblings by explicitly comparing to generate_speech ('better than stitching N separate generate_speech calls').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names alternative generate_speech and explains why this tool is preferred for multi-speaker scenes. Also gives constraints (up to 10 voices, ~2000 chars), providing clear context for when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_lyricsA
Write song lyrics from a theme/description (Mureka) — returns text, not audio.
Synchronous: returns immediately with the lyrics so an agent can read/review or edit them before spending song credits, then pass them to generate_music(lyrics=...). Great for getting the words right first, or generating lyrics on their own.
Args: prompt: The theme/brief ("a hopeful song about starting over in a new city").
Returns: {"title": ..., "lyrics": ...} or {"error": ...}.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it delivers: it discloses synchronous behavior, returns immediately, returns text not audio, and includes the return format. It adds practical insights about reviewing/editing before spending credits and error handling. However, it does not mention any potential cost implication for the lyrics generation itself or rate limits, which are minor for such a simple tool but keep it from a perfect score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: first the core purpose, then the synchronous/usage rationale, then the Args and Returns sections. Every sentence adds important information, with no redundancy or fluff. It is front-loaded with the most essential details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is remarkably complete. It covers purpose, behavior, parameter semantics, return format, and even workflow guidance with a sibling. The context is fully sufficient for an agent to invoke this tool correctly without additional research.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only provides the parameter name 'prompt' and type 'string', which is minimal. The description compensates with a clear semantics: 'The theme/brief' and a concrete example ('a hopeful song about starting over in a new city'). This fully clarifies what the parameter expects, adding significant value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Write song lyrics from a theme/description (Mureka)'. It immediately distinguishes itself from siblings like generate_music by clarifying 'returns text, not audio', and further differentiates by mentioning the synchronous, credit-aware workflow. This makes the tool's purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'before spending song credits' and 'Great for getting the words right first'. It also names the alternative, generate_music, and explains how to pass the generated lyrics to it, giving clear usage context and exclusions. This is exemplary guidance for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_musicA
Generate music — a theme, background track, song, or instrumental bed.
Returns immediately with a job_id; the audio is produced in the background. Poll it with check_jobs([job_id]) to get the file path when it's ready. Fire several calls to mass-produce variants without waiting.
Args:
prompt: What to make, in plain language ("uplifting orchestral intro, soaring strings"
/ "warm lo-fi study loop"). For a sung song, this is the theme/style and Mureka
writes the lyrics; pass lyrics to supply your own. Give either this OR
composition_plan (Eleven Music), not both.
duration: Target length in seconds, if you care (else the model decides).
instrumental: True for no vocals (BGM/underscore); False allows sung vocals.
reference: Optional path (local audio file) or URL to a reference track to steer style
(Mureka only — we upload it and match its vibe; Eleven Music has no such input).
lyrics: Mureka song only — supply exact lyrics (incl. [Verse]/[Chorus] tags) instead
of letting Mureka write them from the prompt. When set, prompt is treated as an
optional style descriptor ("r&b, slow, male vocal").
engine: Provider override. Soft-defaults to Mureka; pass "elevenlabs" to use Eleven
Music instead (honours prompt, duration, instrumental; ignores reference/count).
format: Output format. Mureka defaults to flac (lossless, highest quality, ~half
the size of wav) and also offers "wav" (lossless, uncompressed) and "mp3" (smaller)
— all free from the same generation. ElevenLabs: "mp3"/"wav".
count: How many tracks to generate this call, 1–3 (Mureka only).
composition_plan: Eleven Music only — a structured multi-section plan (intro/verse/
chorus with per-section prompts and durations) instead of a free-text prompt.
Mutually exclusive with prompt; auto-routes the job to ElevenLabs.
store_for_inpainting: Eleven Music only — persist the generated song so later calls
can condition on / inpaint sections of it. Surfaces a song_id in the job result
(via check_jobs) to reference it later.
respect_sections_durations: Eleven Music + composition_plan only — enforce each
section's requested duration strictly.
Returns: {"job_id": ..., "status": "queued", "engine": ...} or {"error": ...}. When a job finishes, check_jobs also returns song_id if store_for_inpainting was set.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| engine | No | ||
| format | No | ||
| lyrics | No | ||
| prompt | No | ||
| duration | No | ||
| reference | No | ||
| instrumental | No | ||
| composition_plan | No | ||
| store_for_inpainting | No | ||
| respect_sections_durations | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the async job behavior, engine-specific parameter handling, output format defaults, and side effects like store_for_inpainting persisting songs. This goes well beyond a simple 'generates music' claim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place. It front-loads the async behavior, then systematically documents each parameter with concise, high-signal details and a short Returns section. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 11 parameters, two engines, no annotations, and no output schema, the description is remarkably complete. It covers return values, job polling, defaults, engine differences, mutual exclusions, and relevant downstream effects, leaving little ambiguity for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate—and it does admirably. Every parameter gets a plain-language explanation, type/format hints, examples, and engine-specific constraints (e.g., reference is Mureka-only, count is 1–3). This significantly enriches the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Generate music — a theme, background track, song, or instrumental bed.' This specific enumeration distinguishes it from sibling tools like generate_sfx, generate_speech, and generate_dialogue, making the tool's purpose immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the asynchronous workflow ('Returns immediately with a job_id... Poll it with check_jobs') and provides engine-selection guidance (Mureka vs ElevenLabs), mutual exclusions (prompt OR composition_plan), and parameter applicability per engine. It effectively tells the agent when and how to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_sfxA
Generate a sound effect — a one-shot, ambience, or seamless loop.
Returns a job_id immediately; poll with check_jobs([job_id]) for the file path.
Args: prompt: The sound to make ("heavy wooden door creak", "sci-fi UI blip", "rain on a tin roof, distant thunder"). duration_seconds: Length 0.5–30, or None to let the model choose. loop: True to produce a seamlessly loopable clip (great for ambience/BGM beds). prompt_influence: 0–1 (default ~0.3) — higher sticks closer to the prompt, lower gives the model more creative latitude. model: SFX model id override (default the current text-to-sound model). engine: Provider override. Defaults to ElevenLabs for SFX. format: Output format ("mp3" default, "wav" where supported).
Returns: {"job_id": ..., "status": "queued", "engine": ...} or {"error": ...}.
| Name | Required | Description | Default |
|---|---|---|---|
| loop | No | ||
| model | No | ||
| engine | No | ||
| format | No | ||
| prompt | Yes | ||
| duration_seconds | No | ||
| prompt_influence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the asynchronous behavior (returns job_id immediately), the polling mechanism via check_jobs, engine defaults (ElevenLabs), and parameter-specific behavior (e.g., prompt_influence, loop semantics). It also includes the return value shape, including error case.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary line, async note, parameter list, and return value description. It uses bullet points and examples without unnecessary verbosity, and every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema or annotations, the description covers the full lifecycle: what the tool does, how to use parameters, async workflow, and expected return values. It is complete for a generation tool with 7 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates fully by explaining every parameter: prompt with examples, duration range, loop behavior, prompt_influence scale, model override, engine override, and format defaults. This adds critical meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Generate a sound effect' and specifies the subtypes (one-shot, ambience, seamless loop), distinguishing it from sibling tools like generate_music or generate_speech. The verb and resource are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for use (e.g., 'great for ambience/BGM beds') and workflow guidance (poll with check_jobs), but it does not explicitly state when not to use this tool or mention alternatives. However, the tool's scope is well-defined by its name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_speechA
Generate spoken dialogue / character voice acting.
Returns a job_id immediately; poll with check_jobs([job_id]) for the file path. Fire several calls to voice a whole scene without waiting.
Two ways to shape delivery, and they combine:
A
profile— a saved persona/mood preset. Built-ins: neutral, narrator, calm, whisper, sad, angry, excited, shout (see list_profiles). Save your own with save_profile. A profile just presets the knobs below.The precision knobs — any of these override the profile for this one line. Emotion can also be written inline as Eleven v3 audio tags, e.g. "[whispers] they're coming... [shouts] run!".
Args: text: The line(s) to speak, optionally with inline v3 audio tags. voice: An ElevenLabs voice name (see list_voices) or a voice id. Overrides any voice pinned by the profile. Omit for the default voice. profile: A saved/built-in profile name to preset delivery. model: Model id (default eleven_v3 for expressive character acting). stability: v3 delivery mode — "creative" (most expressive/tag-responsive), "natural" (balanced), or "robust" (locked-in) — or a 0-1 float. style: 0-1, amplifies the speaker's stylistic character (default 0). speed: Playback speed, 1.0 = normal (roughly 0.7-1.2 is usable). similarity_boost: 0-1, adherence to the reference voice (default 0.75). use_speaker_boost: Boost speaker similarity (slightly higher latency). seed: Fix sampling (0-4294967295) for more reproducible takes. Best-effort, NOT bit-exact (especially on v3) — a character's identity comes from its voice and settings, not the seed. previous_text / next_text: Surrounding lines, for prosody continuity in a scene. language_code: ISO 639-1 code to pin the language (not for multilingual_v2). with_timestamps: Also return per-character alignment (word/char timings) as a sidecar JSON next to the audio — for lip-sync, captions, and cut timing. variants: Generate N takes of this line in parallel (2-8) so a human can pick the best — v3 varies run-to-run. Returns {"job_ids": [...]} instead of one job_id. pronunciation: One or more pronunciation-dictionary names (or ids) to apply so lore names/terms are said a fixed way — up to 3. Create one with create_pronunciation_dictionary. engine: Provider override. Defaults to ElevenLabs for speech. format: Output format ("mp3" default, "wav"/PCM where the tier supports it).
Returns: {"job_id": ..., "status": "queued", "engine": ...} or {"error": ...}.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| text | Yes | ||
| model | No | ||
| speed | No | ||
| style | No | ||
| voice | No | ||
| engine | No | ||
| format | No | ||
| profile | No | ||
| variants | No | ||
| next_text | No | ||
| stability | No | ||
| language_code | No | ||
| previous_text | No | ||
| pronunciation | No | ||
| with_timestamps | No | ||
| similarity_boost | No | ||
| use_speaker_boost | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It transparently discloses key behaviors: immediate job_id return and polling via check_jobs, seed non-determinism ('NOT bit-exact'), variants behavior returning job_ids, with_timestamps sidecar, and profile override logic. These details set accurate expectations for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but densely informative. It opens with the async workflow, then provides a structured Args list mapping to all 18 parameters, followed by a clear Returns contract. There is no redundant filler; every sentence serves the agent's invocation decision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (18 params, no annotations, no output schema), the description covers purpose, workflow, parameter semantics, return shape, and caveats such as seed reproducibility and v3 expressiveness. It is complete enough for an agent to use effectively without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining every parameter's meaning, defaults, and interplay. For example, it clarifies that profile presets are overridden by precision knobs, explains stability mode options and semantics, and describes pronunciation dictionary usage. This adds substantial value beyond bare property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Generate spoken dialogue / character voice acting', which is a specific verb+resource combination. It distinguishes itself from sibling tools like generate_music and generate_sfx by focusing on speech. The async nature and workflow further differentiate it from simpler speech tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it is for generating dialogue/voice acting asynchronously, encourages firing multiple calls for a scene, and references related tools (check_jobs, list_profiles, save_profile, list_voices). However, it does not explicitly state when not to use this tool or compare it directly to alternatives like generate_dialogue or speak, so it misses the explicit exclusion criteria for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_voiceA
Details for one voice (by name or id): category, labels, description, preview_url.
| Name | Required | Description | Default |
|---|---|---|---|
| voice | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the operation returns specific fields and works by name or id, but it does not mention error behavior, permissions, rate limits, or explicitly confirm read-only status, though 'get' implies non-mutating behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the purpose and uses a colon to concisely list the returned fields. There is no wasted wording or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter getter with no output schema, the description adequately covers the return fields and parameter semantics. It doesn't detail error responses or exact result shape, but the tool's simplicity makes the information sufficient for correct invocation and expectation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines 'voice' as a required string with no description. The description's 'by name or id' provides crucial meaning, explaining what values the parameter accepts. This significantly compensates for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this tool retrieves details for a single voice, listing specific returned fields (category, labels, description, preview_url). This distinguishes it from siblings like list_voices (multiple voices) and preview_voices (audio preview).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when you need details for one voice by name or id, but it does not explicitly mention when to use it over alternatives like list_voices or search_voice_library. No exclusions or alternative tools are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
isolate_audioA
Remove background noise / isolate the voice from an audio file (ElevenLabs).
For cleaning up field recordings, podcast takes, or noisy clips before further use.
Args: audio: Local path to the audio file to clean.
Returns: {"path": } or {"error"}.
| Name | Required | Description | Default |
|---|---|---|---|
| audio | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the core behavior (removing noise/isolating voice) and the return format, but does not mention potential side effects, processing constraints, or whether the original file is modified. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a purpose statement, a usage context sentence, and clearly labeled Args/Returns sections. Every sentence contributes information, with no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema and no annotations, the description covers purpose, usage context, parameter meaning, and return format. It is nearly complete, but could benefit from mentioning whether the original file is preserved or any error conditions beyond the generic 'error'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the 'audio' parameter, but the description adds meaning by specifying 'Local path to the audio file to clean.' This clarifies that the parameter is a filesystem path, not a URL or ID, and the purpose. It does not mention file formats or size limits, so it stops short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Remove background noise / isolate the voice from an audio file', which clearly defines the tool's purpose. This distinguishes it from siblings like generate_speech or transcribe, which handle different audio tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: 'For cleaning up field recordings, podcast takes, or noisy clips before further use.' It does not explicitly mention alternatives or exclusions, but the use cases are well-defined. This is just short of the explicitness required for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_jobsA
List recent jobs (newest first), optionally filtered by status.
Args: status: Filter to one of queued/running/succeeded/failed, or omit for all. limit: Max records to return (default 50).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It does provide useful behavioral details: ordering ('newest first'), default limit (50), and accepted status values. However, it omits potential details like pagination beyond the limit, what 'recent' means in terms of time window, or whether the tool is read-only (though 'List' implies this).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded with the main purpose. The Args section is compact and each line earns its place. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with an output schema present, the description is largely complete: it covers the action, ordering, filtering, and parameter options. However, it leaves ambiguity around the 'recent' window and does not mention pagination or offset support, which could be relevant for large result sets. These gaps are minor given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates by explaining both parameters in detail: status lists allowed values (queued/running/succeeded/failed) and clarifies omission means 'all'; limit states the default (50) and purpose. This adds meaning beyond the schema's bare types and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' with a clear resource 'jobs' and states ordering ('newest first') plus an optional filter by status. This distinguishes it from sibling tools like check_jobs by making its scope explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (to list recent jobs, optionally filtered by status) but does not explicitly state when to use this tool versus alternatives such as check_jobs or other job-related tools. There is no when-not-to-use guidance, so usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsA
List ElevenLabs models available on the account, with capability flags.
Each: {model_id, name, can_do_tts, can_do_voice_conversion, max_characters, languages}.
Use to pick or confirm a model id before pinning it via model=.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It adds useful context: it's a read-only listing (implied by 'List'), scope is 'available on the account', and it enumerates the returned fields (model_id, name, can_do_tts, etc.). This exceeds the bare verb and gives the agent a good sense of what to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences plus a field listing. Every sentence earns its place, and the most important information (what it does) is front-loaded. The field list is presented as a compact inline list, avoiding redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists, the description is complete. It tells the agent what the tool returns, the scope (account), and the practical use case. There are no gaps that would leave the agent confused about when or how to invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description doesn't need to explain parameter semantics. The schema is empty, and the baseline for 0 params is 4. The description does mention how to use the returned model_id (via `model=`), which is a nice touch beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List ElevenLabs models available on the account, with capability flags.' It uses a specific verb (List), identifies the resource (ElevenLabs models), and specifies the account scope. It also distinguishes itself from sibling listing tools by focusing on models and their capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Use to pick or confirm a model id before pinning it via `model=`.' This tells the agent when to use the tool. It doesn't explicitly exclude alternatives, but the sibling tools are clearly for other resources (voices, profiles, etc.), so the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_presetsA
List everything saved in the presets registry: speaker voices and music identities.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description is the sole source of behavioral information. It does not explicitly state that the operation is read-only, does not describe the return format or any pagination or ordering behavior, and does not mention potential use cases or limitations. The description is purely functional and lacks behavioral depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the verb and resource. It includes a clarifying elaboration on the contents, adding value without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool is simple with no parameters, the description omits any indication of the return structure or how this relates to sibling tools like list_voices. Without an output schema, the description could be more complete by specifying typical response content or the relationship to other list tools. It is adequate but has clear gaps in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the description requirement is minimal. The description's mention of 'everything saved' appropriately indicates no filtering. Given the baseline of 4 for zero-parameter tools, this score is justified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'List' and specifies the resource 'presets registry', further clarifying the contents as 'speaker voices and music identities'. This clearly distinguishes it from sibling tools like list_voices or list_speakers by anchoring to the registry concept.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as list_voices or list_speakers. It simply states what it does without any contextual cues, exclusions, or alternative mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_profilesA
List speech profiles — built-in delivery presets plus any saved via save_profile.
Each entry shows its name, whether it's built-in, and the delivery settings it presets. Use a name as generate_speech(profile="").
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the disclosure burden. It clearly explains that the list includes built-in presets and saved profiles, and describes what each entry contains (name, built-in flag, delivery settings). For a read-only list operation, this is sufficient and transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the main verb and resource. Every sentence adds value: one defines the tool, the second explains the output and usage. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema (present but not shown), the description provides all necessary context: what is listed, where the data comes from (built-in + saved), and how to use the results. It is complete and self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, and the description correctly avoids inventing any. The baseline of 4 applies because there are no parameters to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'List speech profiles' which clearly states the action and resource. It further distinguishes these from voices by noting they are 'built-in delivery presets plus any saved via save_profile.' This separates it from sibling tools like list_voices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the user to use a profile name with generate_speech(profile="<name>"), which clarifies a primary use case. It does not explicitly discuss alternatives, but the context of siblings (e.g., list_voices) and the defined scope makes the intended usage clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pronunciation_dictionariesA
List saved pronunciation dictionaries (name → id/version). Apply one via
generate_speech/speak pronunciation= or save_speaker pronunciation=.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It transparently indicates a read-only listing operation, and even discloses the return shape (name → id/version). It does not mention side effects or access requirements, but for a simple list tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose, then provide practical usage guidance. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the zero-parameter schema and the presence of an output schema, the description fully covers what the tool does, what it returns, and how to apply the results. It is complete for an agent to select and use this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds meaning by explaining the output format and how to use the returned values, which is valuable context beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List saved pronunciation dictionaries' with a specific verb and resource. It also specifies the output format (name → id/version), which distinguishes it from other list tools and provides clear scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly points to alternative tools for applying a dictionary ('generate_speech/speak pronunciation= or save_speaker pronunciation='), giving clear context on when this listing tool is useful. It lacks an explicit 'when not to use', but the alternative guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_speakersA
List saved speakers (voice + base delivery), optionally within one workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for behavioral disclosure. It adds useful context about the entity composition ('voice + base delivery') and that workspace filtering is optional, but it omits explicit statements about read-only semantics, default behavior when workspace is null, or any side effects, leaving some assumptions implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of nine words, front-loaded with the verb and resource, with no filler. Every phrase adds value: 'saved speakers' clarifies scope, the parenthetical defines the entity, and the final clause explains the optional parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and an output schema, the description is largely complete, covering the resource, entity composition, and scoping. It could be slightly clearer about whether omitting workspace returns all speakers, but this is a minor gap given the low complexity and existing output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the single 'workspace' parameter is addressed by the description's 'optionally within one workspace', which conveys that the parameter is an optional filter. This adds meaning beyond the schema's type/default, though it does not elaborate on accepted workspace identifiers or behavior when omitted beyond the schema's type and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and identifies a clear resource ('saved speakers'), further clarifying that speakers consist of 'voice + base delivery'. This distinguishes it from sibling tools like list_voices, which target a different resource, and the optional workspace scoping is explicitly stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool over alternatives such as list_voices or list_profiles, nor does it name exclusions or alternatives. The phrase 'optionally within one workspace' hints at a common use case, but the usage guidance is essentially implied by the resource name and parenthetical rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_voicesA
List the ElevenLabs voices available on the account, plus saved speech profiles.
Returns {"account": [ {voice_id, name, category, labels, description}, ... ],
"profiles": [ ... ]}. Use a voice name (or id) as generate_speech(voice=...),
or a profile name as generate_speech(profile=...).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the output schema (account and profiles keys, along with voice fields) and that it returns both types, which is meaningful behavioral context. It doesn't explicitly mention read-only behavior, but 'list' strongly implies it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise lines: a clear purpose statement, a structured return format description, and a practical usage hint. There is no wasted wording, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema, the description fully covers the return structure and how to use the results with generate_speech. It also notes the inclusion of profiles, which is a key behavioral detail. No significant gaps for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the baseline for 0 params is 4. The description correctly adds no parameter information since none are needed, and the schema covers the empty parameter set completely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists ElevenLabs voices plus saved speech profiles, which is a specific verb+resource. It distinguishes itself from siblings like list_profiles by explicitly including both account voices and profiles, and it provides the return structure with field names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides downstream usage guidance (how to use a voice or profile name with generate_speech), but it does not explicitly say when to use this tool instead of siblings like list_profiles. The usage context is implied rather than explicitly contrasted with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workspacesA
List workspace namespaces that currently hold speakers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the behavioral disclosure burden. It discloses the read-only nature through the verb 'List' and adds scoping context ('currently hold speakers'), but it does not mention any ordering, filtering semantics, or access limitations. This is sufficient for a basic list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler. It front-loads the action and resource, earning a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, an output schema, and a clearly scoped purpose, the description provides enough context for an agent to select and invoke it. The sibling list tools are distinguished by the workspace-specific scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters in the input schema, so the description has nothing to add regarding parameter semantics. The schema covers 100% of parameters (none exist), which meets the baseline for 0-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('workspace namespaces') with a scope qualifier ('that currently hold speakers'), clearly distinguishing it from sibling list tools like list_voices or list_speakers. It goes beyond a mere restatement of the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving workspaces that have speakers, but it does not explicitly state when to prefer this over other list tools or mention any alternatives/exclusions. For a simple list tool, this is adequate but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_voicesA
Preview voices for a role — search the Voice Library and return top candidates, each with a ready-made preview_url to listen to. No generation, no voice slots consumed.
Pick one, then add_speaker_from_library(name, public_owner_id, voice_id) to add + save it as a speaker. (Library voices sound better than designed ones — search here first.)
Args: query: Short role term ("narrator", "villain", "host") — one or two words. gender / age / accent / use_case: Optional label filters. n: How many candidates to return (default 5).
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | ||
| age | No | ||
| query | No | ||
| accent | No | ||
| gender | No | ||
| use_case | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses that this is a non-consuming preview ('No generation, no voice slots consumed') and that it returns preview_urls. It does not cover all edge cases, but the key behavioral guarantee is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized: a purpose statement, a usage tip with next step, and a concise Args list. Every sentence adds value, and the structure is scannable without being overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives a complete workflow from previewing to adding a speaker, including the exact function call with required parameters. It lacks explicit return structure details, but for a preview tool this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description compensates by explaining query as a short role term with examples, filters as optional labels, and n as the count with a default. This provides meaning beyond the raw schema fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Preview voices for a role — search the Voice Library and return top candidates' with preview_url. It distinguishes itself from siblings like search_voice_library by emphasizing the preview_url output and 'No generation, no voice slots consumed.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Library voices sound better than designed ones — search here first' and instructs to use add_speaker_from_library after picking a candidate. This makes the intended workflow clear and includes a direct alternative comparison to designed voices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_profileA
Save a reusable speech profile (a persona/mood preset) under name.
A profile bundles delivery settings so generate_speech(profile="") reproduces it.
Pin voice + a seed to lock a character's exact sound line-to-line, or leave voice
out for a voice-agnostic mood you can lay over any voice. Saving a name that matches a
built-in shadows it. Everything here maps to the same knobs generate_speech accepts.
Args: name: Handle to save under (e.g. "kael", "villain-calm"). voice: ElevenLabs voice name or id to pin (optional). model: Model id to pin (optional). stability: "creative"/"natural"/"robust" or a 0-1 float. style: 0-1. speed: Playback speed (1.0 = normal). similarity_boost: 0-1. use_speaker_boost: Boost speaker similarity. tag: An audio tag prepended to every line, e.g. "angry" → "[angry] ...". seed: Fix sampling for consistency (0-4294967295). description: Human note shown in list_profiles.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| name | Yes | ||
| seed | No | ||
| model | No | ||
| speed | No | ||
| style | No | ||
| voice | No | ||
| stability | No | ||
| description | No | ||
| similarity_boost | No | ||
| use_speaker_boost | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses important side-effects: shadowing built-in names, mapping to generate_speech knobs, and seed-locked consistency. It does not mention permissions or idempotency, but the disclosed behaviors go well beyond a bare 'save profile' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a purpose paragraph, a context paragraph, and an Args list. It is as long as needed for 11 parameters, with no filler or redundant repetition of schema defaults.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 11-parameter tool with no annotations and no output schema, the description covers the tool's purpose, usage relationship, parameter semantics, and a key side-effect (shadowing built-ins). It provides everything an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description fully compensates by documenting all 11 parameters in the Args section with types, examples, and value constraints (e.g., stability accepts 'creative'/'natural'/'robust' or 0-1, seed range 0-4294967295). This adds real meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Save a reusable speech profile (a persona/mood preset)'. It clearly distinguishes from siblings by explaining that profiles bundle delivery settings so generate_speech(profile="<name>") reproduces them, contrasting with voice/speaker save tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on when to use: to create reusable presets for generate_speech. Explains design choices (pin voice+seed vs voice-agnostic mood) and warns about shadowing built-in profiles. Does not explicitly name alternative tools, but context implies this is for speech presets, enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_speakerA
Save a reusable SPEAKER — a pinned voice + its base delivery — under a workspace.
A speaker is the identity ("narrator"); a profile is a mood ("angry"). Speak one with
speak(speaker, text, mood?) and the mood layers on top. Group speakers by
workspace so casts for different projects don't collide.
Args: name: Speaker handle (e.g. "narrator"). voice: The voice to pin — an ElevenLabs voice name/id, or a saved voice/clone name. workspace: Workspace namespace (default "default"). model / stability / style / speed / similarity_boost / use_speaker_boost / seed: The speaker's BASE delivery (all optional; each overridable per line). pronunciation: A pronunciation-dictionary name/id (or list) to apply automatically whenever this speaker talks — so it always says lore names the same way. description: Human note.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| seed | No | ||
| model | No | ||
| speed | No | ||
| style | No | ||
| voice | Yes | ||
| stability | No | ||
| workspace | No | default | |
| description | No | ||
| pronunciation | No | ||
| similarity_boost | No | ||
| use_speaker_boost | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It does explain that pronunciation is applied automatically and that delivery parameters are base defaults overridable per line. However, it omits what happens if a speaker with the same name already exists (e.g., overwrite behavior) and any auth/rate-limit details, which is a notable gap for a save operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a clear opening sentence, a brief conceptual explanation, and a compact parameter list. Every sentence adds value, and the grouped parameter line for delivery settings keeps it concise despite the high parameter count.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description thoroughly covers the parameters and conceptual model, but there is no output schema and the description does not mention what the tool returns (e.g., saved speaker object, success message) or potential failure scenarios. This missing return-value context is a gap for a save tool with no structured output contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description compensates for 0% schema coverage by clearly explaining all 12 parameters. It gives concrete examples (e.g., name as 'narrator'), defines voice as ElevenLabs voice or saved clone, lists the base delivery parameters as a group, and explains pronunciation's automatic application. This adds substantial meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'Save a reusable SPEAKER — a pinned voice + its base delivery — under a workspace.' It distinguishes the tool from siblings by contrasting speaker (identity) with profile (mood), making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool by defining the speaker concept and how it relates to `speak` and profiles. It also gives practical guidance on workspace usage to avoid collisions. However, it doesn't explicitly mention when not to use it or refer to alternative tools like `save_profile` by name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_voiceA
Save a designed voice preview (from design_voice) as a permanent, reusable voice.
Consumes one custom-voice slot on the account. After this, generate_speech(voice="") uses it.
Args: name: Handle to save under. generated_voice_id: The preview id from design_voice. description: Optional description stored on the voice.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| description | No | ||
| generated_voice_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses the key side effect: it consumes one custom-voice slot. It also clarifies that the saved voice becomes available to generate_speech. It doesn't mention overwrite behavior or reversibility, but covers the main behavioral contract.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-line purpose, a two-sentence behavioral note, and a compact Args list. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description gives a complete picture: where the input comes from, what side effect occurs (slot consumption), and how the result is used later (with generate_speech). All parameters are explained, and the tool's place in the broader workflow is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain parameters. It does so fully: 'name' is the handle to save under, 'generated_voice_id' is the preview id from design_voice, and 'description' is optional metadata stored on the voice. This adds clear meaning beyond the bare schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the specific action (saving a designed voice preview) and its resource (from design_voice, as a permanent reusable voice). It distinguishes the tool from siblings like delete_voice and list_voices by tying it to the design->save->generate workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it should be used after design_voice and before generate_speech. It explains the prerequisite and downstream usage, but doesn't explicitly name alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_voice_libraryA
Search ElevenLabs' shared Voice Library — thousands of ready-made voices.
This is how you pick a voice instead of dialing one out of parameters: search for "warm narrator", "raspy villain", "friendly host", filter by age/gender/accent, then add the one you like with add_library_voice(...) and use it by name in generate_speech.
Keep query SHORT — one or two words ("narrator", "villain", "host"). Long sentences
over-match and return almost nothing; lean on the label filters to narrow instead.
Args: query: Short free-text term ("narrator", "host", "villain"). One or two words. gender / age / accent: Label filters (e.g. age="old", gender="male"). use_case: e.g. "characters_animation", "narrative_story", "video_games". category: "professional", "famous", or "high_quality". descriptives: Extra descriptive terms (e.g. ["raspy", "gruff"]). page_size: Max results (1-100, default 20).
Returns: {"voices": [{public_owner_id, voice_id, name, description, gender, age, accent, preview_url, ...}], "count": N}. Pass public_owner_id + voice_id to add_library_voice.
| Name | Required | Description | Default |
|---|---|---|---|
| age | No | ||
| query | No | ||
| accent | No | ||
| gender | No | ||
| category | No | ||
| use_case | No | ||
| page_size | No | ||
| descriptives | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It warns that long queries 'over-match and return almost nothing' and recommends short queries and filters, which is a key behavioral trait. It also discloses the return structure and how to use results with add_library_voice. However, it doesn't mention rate limits, error handling, or other edge cases, but for a search tool the disclosed behavior is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening, usage guidance, query-length warning, then organized Args and Returns sections. It is longer than minimal but every section contributes necessary information for 8 parameters and no output schema. Slightly verbose but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is remarkably complete. It covers the tool's purpose, usage workflow, parameter semantics, return format, and integration with sibling tools like add_library_voice. All 8 parameters are explained, and the return value is described with the important note about public_owner_id + voice_id. No critical gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides only names and types with zero descriptions. The description's Args section adds concrete meaning for every parameter, including examples ('raspy', 'gruff'), allowed categories ('professional', 'famous', 'high_quality'), specific use_cases ('characters_animation', 'narrative_story'), and page_size constraints (1-100, default 20). This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search ElevenLabs' shared Voice Library — thousands of ready-made voices.' It distinguishes itself from alternatives by positioning it as 'how you pick a voice instead of dialing one out of parameters,' and connects to downstream tools like add_library_voice and generate_speech.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool: as the alternative to manually specifying voice parameters. It provides a clear workflow (search → filter → add → generate) and offers practical advice on query length and filter usage. It also mentions specific example queries and filter values, giving the agent concrete guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
speakA
Speak a line as a saved SPEAKER, optionally in a MOOD.
Resolves the speaker (voice + base delivery), layers a mood profile if given, then
applies any per-line overrides. Returns a job_id like generate_speech (or job_ids if
variants > 1).
Args: speaker: A saved speaker name (see list_speakers). text: The line (v3 audio tags work). mood: Optional profile name (built-in like "angry"/"whisper", or a saved one) to layer over the speaker's base delivery for this one line. workspace: Which workspace's speaker (default "default"). stability / style / speed / seed: Per-line overrides (win over speaker + mood). with_timestamps: Also emit an alignment sidecar (lip-sync/captions). variants: Generate N takes (2-8) to preview and pick the best. engine / format: as generate_speech.
| Name | Required | Description | Default |
|---|---|---|---|
| mood | No | ||
| seed | No | ||
| text | Yes | ||
| speed | No | ||
| style | No | ||
| engine | No | ||
| format | No | ||
| speaker | Yes | ||
| variants | No | ||
| stability | No | ||
| workspace | No | default | |
| pronunciation | No | ||
| with_timestamps | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explains the processing pipeline (resolving speaker, layering mood, applying overrides), return behavior (job_id or job_ids for variants), and side effects (timestamps sidecar). It also notes v3 audio tag support. Missing details about latency, cost, or failure modes, but sufficient for a generation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a concise summary paragraph followed by a bulleted argument list. The first sentence is a punchy purpose statement, and each argument is described in one line. The length is justified for 13 parameters, but the 'engine / format' line could be more explicit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter tool with no output schema and no annotations, the description provides substantial context: return values, sidecar outputs, variants, and parameter precedence. The main gaps are the undocumented 'pronunciation' parameter and the indirect engine/format reference. Overall, it gives an agent enough information to use the tool correctly in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains speaker, text, mood, workspace, per-line overrides, variants, and timestamps. However, 'pronunciation' is completely omitted, and 'engine / format: as generate_speech' relies on external reference without inlining the semantics. Despite the gap, the description adds meaningful meaning to most parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Speak a line as a saved SPEAKER, optionally in a MOOD,' a specific verb-resource pairing that clearly identifies the tool's function. It distinguishes itself from siblings like generate_speech by emphasizing the use of a saved speaker, making the purpose immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers clear contextual guidance, directing users to list_speakers for valid speaker names and noting that engine/format parameters follow generate_speech. It implies when to use this tool (when a saved speaker exists) but does not explicitly name alternatives like generate_dialogue or generate_speech as substitutes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcribeA
Transcribe speech to text (ElevenLabs Scribe) — for podcasts, meetings, captions, dubbing prep.
Args: audio: A local audio/video file path, OR a URL (hosted file, YouTube, TikTok). language: ISO code (639-1 or -3) to force; omit to auto-detect. diarize: True to label speakers (who said what). captions: "srt" or "vtt" to also write a subtitle file (from word timings) and return its path.
Returns: {"text", "language_code", "words": , "captions_path"?} or {"error"}.
| Name | Required | Description | Default |
|---|---|---|---|
| audio | Yes | ||
| diarize | No | ||
| captions | No | ||
| language | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and excels: it discloses input types (local file/URL), optional behaviors (language forcing, diarization, caption file generation), and the exact return format including an error case. This is rich behavioral detail beyond a simple one-liner.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a purpose line, Args, and Returns sections. Every line provides actionable information without fluff, making it easy to scan while remaining complete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, optional captions output), the description covers all inputs, behaviors, and return values. The optional captions_path is explained, and the error return is acknowledged, making the description self-contained despite the lack of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds substantial meaning to every parameter: audio accepts a local path or URLs including YouTube/TikTok, language is an ISO code with auto-detect default, diarize labels speakers, and captions accepts 'srt' or 'vtt' and returns a path. This fully compensates for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb and resource: 'Transcribe speech to text' using ElevenLabs Scribe. It also lists concrete use cases (podcasts, meetings, captions, dubbing prep) that distinguish it from sibling tools like forced_alignment or generate_speech.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear use-case context ('for podcasts, meetings, captions, dubbing prep') and explains when options like diarize or captions should be enabled. However, it does not explicitly name alternative tools or state when NOT to use this tool, so it stops short of full exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
33 tool updates
v0.1.0- First observed
account_status - First observed
add_library_voice - First observed
add_pronunciation_rules - First observed
add_speaker_from_library - First observed
check_jobs - First observed
clone_voice - First observed
convert_voice - First observed
create_pronunciation_dictionary - First observed
delete_voice - First observed
design_voice - First observed
forced_alignment - First observed
generate_dialogue - First observed
generate_lyrics - First observed
generate_music - First observed
generate_sfx - First observed
generate_speech - First observed
get_voice - First observed
isolate_audio - First observed
list_jobs - First observed
list_models - First observed
list_presets - First observed
list_profiles - First observed
list_pronunciation_dictionaries - First observed
list_speakers - First observed
list_voices - First observed
list_workspaces - First observed
preview_voices - First observed
save_profile - First observed
save_speaker - First observed
save_voice - First observed
search_voice_library - First observed
speak - First observed
transcribe
TDQS
Scored across 33 tools
Several voice-related tools have overlapping responsibilities, such as preview_voices vs search_voice_library and add_speaker_from_library vs add_library_voice. These overlaps create ambiguous boundaries, even with detailed descriptions, making it hard for an agent to pick the correct tool confidently.
The majority of tools follow a clear verb_noun pattern (generate_*, list_*, save_*, delete_*). Minor deviations include standalone verbs like 'speak' and 'transcribe', plus noun-based names like 'account_status' and 'forced_alignment', but the overall style is recognizable and mostly consistent.
With 33 tools, the server feels overloaded. Many are small variations on voice management (add, save, list, preview, search, clone, delete), inflating the count well beyond the typical 3-15 tool range for a focused server.
The domain is broad and well covered: music and speech generation, voice cloning/design/library management, speech customization (profiles, speakers, pronunciation), transcription, forced alignment, noise isolation, voice conversion, and job tracking. Minor gaps include no delete for speakers/profiles, but these can be worked around by overwriting.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI voice generation: text-to-speech and voice cloning from any MCP client.
MCP server for Producer/Riffusion AI music generation
Generate game-ready 3D models, textures, and audio from natural language, over MCP.
Generate AI images, video, music, and sound effects, and upscale them, from any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that gives AI agents the ability to listen to and understand music/audio files, enabling semantic analysis, stem separation, lyrics transcription, and signal processing via tool calls.1MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for MiniMax's multimodal generation models, enabling text-to-speech, voice cloning, image, video, and music creation through natural language.MIT
- AlicenseNot gradedqualityDmaintenanceA comprehensive audio MCP server that enables AI agents to generate speech, transcribe audio, clone voices, analyze speech quality, design soundscapes, and manage audio assets through a standardized interface.2MIT
- AlicenseAqualityCmaintenanceA full-featured MCP server for the ElevenLabs API that brings text-to-speech, speech-to-text, voice cloning, sound effects, music, audio isolation, dubbing, and account tools to any MCP client.28MIT