VoiceLabs
Server Details
AI voice generation: text-to-speech and voice cloning from any MCP client.
- Status
- Healthy
- Uptime
- 40.8% over 69 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 9 tools
Each tool targets a distinct resource/action: clone_voice_profile (non-idempotent clone from recording) vs ensure_voice_profile (idempotent preset creation) are clearly differentiated by their descriptions, as are speak (TTS) vs transcribe (STT) and get_generation vs list_captures. The two meta-tools (search_tools, execute_typescript) form a coherent pair rather than overlapping with the domain tools.
Predominantly a consistent snake_case verb_noun pattern (clone_voice_profile, get_generation, list_captures, search_tools, execute_typescript). The two exceptions, speak and transcribe, are bare verbs without an explicit noun, a minor deviation from the otherwise predictable convention.
Nine tools is well-scoped for a voice service covering cloning, TTS, STT, profile management, and polling. Each tool earns its place with no redundant entries.
Core workflows (create/list voices, speak+poll, transcribe, list captures) are covered, but there is no delete or update for voice profiles and no way to list generation history (only get by id). These are notable lifecycle gaps that could force agents into dead ends when cleanup or bulk retrieval is needed.
Available Tools
9 toolsclone_voice_profileClone a voice from a recordingAInspect
Create a cloned voice on the user's VoiceLabs account from a recording the caller provides: a name, the language, the exact text spoken in the recording, and the audio either inline as base64 (audioBase64) or as an https:// URL (audioUrl). The recording must be 2–30 seconds of clear speech. Returns the new profile's id, name, voice type and engine; pass the id to speak. Not idempotent: a second call with the same name is refused, so check list_voice_profiles first. Only clone a voice whose owner has agreed to it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name for the new cloned voice. Must not already exist on the account — call list_voice_profiles first if unsure; a duplicate is refused with INVALID_REQUEST. | |
| audioUrl | No | An https:// URL the recording can be downloaded from (public host, no redirects, up to 10 MiB). Give exactly one of audioBase64 or audioUrl. | |
| language | No | ISO language code of the recording and the voice. Defaults to "en". | |
| audioBase64 | No | The recording inline as base64 (WAV, or any of mp3/m4a/ogg/flac/aac/webm/opus; up to 10 MiB decoded). 2–30 seconds of clear speech. Give exactly one of audioBase64 or audioUrl. | |
| referenceText | Yes | The exact words spoken in the recording (up to 1000 characters). The engine aligns the clone against this transcript, so it must match what is said. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| engine | Yes | |
| language | Yes | |
| sampleId | Yes | |
| voiceType | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=false and destructiveHint=false, and the description adds real value on top: the specific refusal behavior (a second call with the same name), the 2–30 second audio constraint, and an ethical precondition around owner consent. It does not cover auth/permission requirements or rate limits, which keeps it out of the top band.
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?
A single dense paragraph that front-loads the action and lists inputs before the non-idempotency warning. Efficient, though it repeats a couple of schema facts (2–30 seconds, the base64-vs-URL pair) that add length without new 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?
An output schema exists so return values need not be re-explained, and the description still flags the key returned id and its use with speak. Combined with the duplicate-name refusal, the consent rule, and the audio constraints, an agent has everything required to invoke this 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 100%, so the schema already documents every parameter including the audioBase64/audioUrl exclusivity, formats, size limits, and transcript requirements. The description restates those facts (name, language, referenceText, the two audio forms) without adding syntax or semantics the schema lacks, so baseline 3 applies.
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 and resource ('Create a cloned voice ... from a recording') and enumerates the exact inputs, so it is clearly distinguishable from the sibling list_voice_profiles and ensure_voice_profile. It even notes the return payload and the follow-on tool (speak), which pins down what the tool is for.
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?
Gives concrete when-to-use guidance and a prerequisite: check list_voice_profiles first because a duplicate name is refused, and only clone a voice whose owner has consented. It does not explicitly contrast with the closest sibling, ensure_voice_profile, so an agent may still have to guess between the two.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensure_voice_profileEnsure a voice profile existsAIdempotentInspect
Make sure a voice profile with the given name exists on the user's VoiceLabs account, creating it from one of VoiceLabs' built-in (preset) voices if it does not. Idempotent: calling it again with the same name returns the same profile with created: false and creates nothing. Use this when list_voice_profiles comes back empty, or when speak reports NOT_FOUND for a voice, then pass the returned id to speak. It cannot clone a real person's voice — that is clone_voice_profile, which needs the voice:clone scope and a recording.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The profile name to ensure exists. Matched EXACTLY against the account's existing profiles — the same uniqueness key the engine enforces — so a differently-cased name is a different profile. | |
| engine | No | Which built-in voice catalogue to draw from. Defaults to "kokoro", VoiceLabs' fast general-purpose preset engine. | |
| language | No | ISO language code for the profile. Defaults to "en". | |
| description | No | Optional human note stored on the profile. Ignored when the profile already exists. | |
| builtinVoiceId | No | The built-in voice to use. Defaults to "af_heart", the engine's own default Kokoro voice. The ids VoiceLabs publishes (case-sensitive) — kokoro: af_alloy, af_aoede, af_bella, af_heart, af_jessica, af_kore, af_nicole, af_nova, af_river, af_sarah, af_sky, am_adam, am_echo, am_eric, am_fenrir, am_liam, am_michael, am_onyx, am_puck, am_santa, bf_alice, bf_emma, bf_isabella, bf_lily, bm_daniel, bm_fable, bm_george, bm_lewis, ef_dora, em_alex, em_santa, ff_siwis, hf_alpha, hf_beta, hm_omega, hm_psi, if_sara, im_nicola, jf_alpha, jf_gongitsune, jf_nezumi, jf_tebukuro, jm_kumo, pf_dora, pm_alex, pm_santa, zf_xiaobei, zf_xiaoni, zf_xiaoxiao, zf_xiaoyi. qwen_custom_voice: Vivian, Serena, Uncle_Fu, Dylan, Eric, Ryan, Aiden, Ono_Anna, Sohee. Any other id is refused with INVALID_REQUEST. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| engine | Yes | |
| created | Yes | |
| language | Yes | |
| voiceType | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false and readOnlyHint=false, but the description adds real value beyond them: the exact idempotent response shape (`created: false`), the fact that nothing is created on repeat calls, and the boundary that it cannot clone a real voice. It stops short of stating the auth scope this tool itself requires, which is the one behavioral 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?
Front-loads what the tool does, then idempotency semantics, then when to use it, then the boundary against clone_voice_profile. No sentence is redundant and nothing is buried.
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?
With an output schema present, return values need not be restated, yet the description still flags the `created` field an agent will actually branch on. Triggers, alternatives, idempotency, and the returned id handoff are all covered for a 5-param 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?
Schema description coverage is 100%, so the schema already documents name-matching, engine defaults, language, and the full builtinVoiceId list with the INVALID_REQUEST failure mode. The description adds only the framing that the name match is 'the same uniqueness key the engine enforces', so the baseline 3 is appropriate.
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 precise verb+resource ('Make sure a voice profile with the given name exists'), explains the create-if-absent behavior, and explicitly contrasts itself with clone_voice_profile. An agent can distinguish it from every sibling without opening a schema.
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?
Gives explicit trigger conditions ('when list_voice_profiles comes back empty, or when speak reports NOT_FOUND'), names the alternative (clone_voice_profile) and its differing scope requirement, and tells the agent what to do with the result ('pass the returned id to speak').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_typescriptExecute TypeScriptBDestructiveInspect
Run a short TypeScript program that orchestrates VoiceLabs MCP tools (found via search_tools) in an isolated sandbox. See the server instructions for the full contract.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | A TypeScript program body run in an isolated sandbox. Call the external_* functions search_tools declared; the program must `return` its result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| logs | No | |
| error | No | |
| result | No | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, non-idempotent, and not read-only, so the risk profile is covered structurally. The description adds the meaningful detail that execution happens in an 'isolated sandbox' and that the program must return its result, but it does not say what constraints 'short' imposes (time, memory, tool-call budget) or what happens on sandbox failure.
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 sentences, no padding, with the core operation front-loaded. The closing pointer to server instructions is a necessary redirect for a tool whose full contract is large, though it does consume space without adding local 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?
An output schema exists, so return-value description is not required, and the sandbox/return contract is sketched. However, for a destructive, open-world code-execution tool the behavioral contract is deferred to 'server instructions', leaving resource limits and failure semantics unspecified in the definition itself.
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 is a single parameter with 100% schema description coverage, and the schema already explains that 'code' is a TypeScript body calling declared external_* functions that must return its result. The description only adds the vague 'short' qualifier, so the baseline of 3 for high coverage is appropriate.
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 (Run/Execute) and resource (a TypeScript program) and pins the domain: orchestrating VoiceLabs MCP tools in an isolated sandbox. It also names the sibling 'search_tools' as the discovery path, so an agent can place it relative to the other tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for multi-tool orchestration ('orchestrates VoiceLabs MCP tools') but never states when to prefer this over calling a sibling tool directly, nor any exclusions or limits. The explicit instruction is to consult server instructions, which is an out-of-band dependency rather than guidance in the definition itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_generationCheck a generationARead-onlyIdempotentInspect
Look up a VoiceLabs generation by id to poll its status. Returns status (generating | completed | failed) and, once completed, the audio URL; a failed one carries a short human-readable error and a failureKind. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| generationId | Yes | The id returned by the speak tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | Yes | |
| status | Yes | |
| profile | Yes | |
| audioUrl | Yes | |
| failureKind | Yes | |
| generationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so safety is covered and the trailing 'Read-only' is largely redundant. The description does add real value beyond the annotations by disclosing the state machine (generating | completed | failed) and the failure payload (human-readable error plus failureKind), which helps an agent interpret polling results.
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?
Three tight sentences, front-loaded with the verb and purpose, followed by return semantics and a one-word safety note. No filler or repetition.
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 polling tool with full annotations and an output schema, the description covers purpose, usage context, and the meaningful state values an agent needs. Nothing required to invoke or interpret it is missing.
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 100% and there is a single required parameter whose schema description already explains its origin ('The id returned by the speak tool'). The description adds only 'by id', so the baseline 3 is appropriate.
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 and resource ('Look up a VoiceLabs generation by id') plus the intended purpose ('to poll its status'), which clearly distinguishes it from siblings like speak (creates a generation) and list_captures. An agent can select this tool without ambiguity.
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 phrase 'to poll its status' establishes the context of use — checking on an asynchronously created generation — and the schema ties the id to the 'speak' tool. It does not explicitly state when not to use it or name alternatives, 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.
list_capturesList capturesARead-onlyIdempotentInspect
List the user's recent VoiceLabs captures (dictations, recordings, uploads) with their transcripts, most-recent first. Paginated via limit (1-200) and offset. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| limit | Yes | |
| total | Yes | |
| offset | Yes | |
| captures | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered and the trailing 'Read-only' is largely redundant. The description does add non-annotation behavior: result ordering (most-recent first) and the pagination contract. It says nothing about rate limits, maximum page depth, or what happens with a huge offset.
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?
Three short, front-loaded sentences with no filler, and the scope/ordering comes before the pagination mechanics. The final 'Read-only' clause is redundant with the readOnlyHint annotation, so it is the one phrase that does not fully earn 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?
With an output schema present, return values need not be described, and annotations cover safety; what remains is scope, ordering and pagination, all of which are stated. The only shortfall is the undocumented offset semantics and defaults against a 0%-covered 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%, so the description must compensate: it supplies limit's bounds (1-200) and names offset for pagination, which is real added meaning. However it omits the defaults (50 and 0) and never explains what offset actually counts, leaving one of two parameters only half-specified.
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?
Specific verb (List) plus resource (VoiceLabs captures) and scope (the user's recent ones), with the content types enumerated (dictations, recordings, uploads) and the payload described (transcripts). No sibling tool overlaps this resource, so an agent can select it unambiguously.
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 the usage context ('the user's recent captures', 'most-recent first') and explains pagination, but never states when to reach for this tool versus another (e.g. search-style retrieval) or any exclusions. Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_voice_profilesList voice profilesARead-onlyIdempotentInspect
List the user's VoiceLabs voice profiles — both cloned voices and presets — with language, engine, and usage counts. Read-only. A brand-new account has none yet: an empty list comes back with an emptyState explaining how the user creates their first voice, which is what to relay instead of reporting that the tool failed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| profiles | Yes | |
| emptyState | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior, and the description adds meaningful context beyond that: it discloses the empty-state response and instructs the agent to relay an `emptyState` explanation rather than reporting failure. This is substantive behavioral information not present in the annotations.
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 briefly reinforces read-only behavior, then covers the important empty-state edge case. All content is relevant and compact for a zero-parameter listing 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 simple listing complexity, rich annotations, no input parameters, and an existing output schema, the description is complete. It covers purpose, safety context, and the key edge case an agent might mishandle.
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 schema cannot document parameter semantics and the baseline is 4. The description does not need to add parameter details, and it appropriately adds none.
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 gives a specific verb and resource ('List the user's VoiceLabs voice profiles') and clarifies scope by naming both cloned voices and presets. It also lists returned fields (language, engine, usage counts), making it easy to distinguish from siblings like clone_voice_profile and ensure_voice_profile.
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?
Usage is implied by the tool name and list purpose, and the description gives useful handling guidance for an empty account. However, it does not explicitly say when to choose this tool over alternatives such as ensure_voice_profile or clone_voice_profile, so alternative-selection guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_toolsSearch ToolsARead-onlyIdempotentInspect
Find the VoiceLabs MCP tools this connection can reach, returned as TypeScript declarations to call from execute_typescript. See the server instructions for the full contract.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Case-insensitive substring matched against each tool's name, title and description. Omit to return every tool this connection can reach. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| declarations | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the return format (TypeScript declarations) and the fact that results are limited to this connection's reachable tools, but it pushes the 'full contract' off to server instructions rather than disclosing behavior directly.
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 sentences, front-loaded with the discover-tools purpose, then the return format. No filler and no repetition.
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?
With an output schema present and 100% parameter coverage, the description needn't explain return values, yet it usefully states the TypeScript-declaration form and the connection-scoped result set. The only weakness is leaning on external server instructions for the calling 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?
Schema description coverage is 100% — the single 'query' parameter is fully documented as a case-insensitive substring match with omit-to-return-all semantics. The description adds nothing about the parameter, so the baseline 3 is appropriate.
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 and resource: 'Find the VoiceLabs MCP tools this connection can reach.' It also says what comes back (TypeScript declarations callable from execute_typescript), which distinguishes it from the action-oriented siblings. It stops short of explicitly contrasting itself with those siblings, so not a 5.
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?
Usage is only implied via 'to call from execute_typescript' and the connection-scoping phrase; there is no explicit 'use this when you don't know which tool to call' or when-not guidance. It defers the contract to server instructions rather than stating the selection context itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
speakGenerate speechAInspect
Generate speech from text in one of the user's VoiceLabs voice profiles. Returns a generationId with status "generating"; poll get_generation with that id to retrieve the audio URL once it completes. Pass profileId or profileName to choose the voice.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The text to speak. | |
| language | No | ISO language code (defaults to the profile/engine default). | |
| profileId | No | Voice profile id (takes precedence). | |
| profileName | No | Voice profile name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| profile | Yes | |
| audioUrl | Yes | |
| generationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the safety profile is covered structurally. The description adds the crucial non-obvious behavior that the call is asynchronous, returning a generationId with status 'generating' that must be polled, which the annotations do not convey.
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?
Three tight sentences with no filler: the core action and the async follow-up step are front-loaded, and the optional voice-selection note comes last. Every 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?
Given four parameters, an output schema, and simple annotations, the description covers everything an agent needs: what it produces, that it is asynchronous, and how to retrieve the audio. Nothing essential is missing.
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 100%, so the schema already documents text, language, profileId and profileName, including the note that profileId takes precedence. The description restates voice selection ('Pass profileId or profileName') without adding format, constraints, or default behavior beyond the schema, so baseline 3 applies.
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 and resource ('Generate speech from text') and scopes it to the user's VoiceLabs voice profiles, which cleanly separates it from siblings like transcribe (the inverse direction) and clone_voice_profile (profile creation). An agent can identify this as the text-to-speech entry point without opening any schema.
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?
Gives concrete usage context: it explains the asynchronous flow and names the follow-up tool ('poll get_generation with that id'), and tells the caller to supply profileId or profileName to pick a voice. It stops short of stating prerequisites (e.g. needing an existing profile from ensure_voice_profile) or 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.
transcribeTranscribe audioAInspect
Transcribe an audio file to text using VoiceLabs' Whisper. Give the audio exactly one way: audioUrl, a public https:// URL serving the file itself (wav, mp3, m4a, aac, ogg, flac, aiff or webm; up to 10 MiB), or audioBase64, the file's real bytes (≤10 MiB of base64 text). A payload that is not real audio — under 1 KiB, a bare header, or made-up placeholder bytes — is refused without being transcribed. If the user has an audio file you cannot read the bytes of, ask them for a public link, or to upload it on the Captures page of the VoiceLabs studio (https://app.voicelabs.now/studio). Returns the transcript and the created capture id.
| Name | Required | Description | Default |
|---|---|---|---|
| audioUrl | No | A public https:// URL that serves the audio file itself (wav, mp3, m4a, aac, ogg, flac, aiff or webm; no redirects, up to 10 MiB). Give exactly one of audioBase64 or audioUrl. | |
| language | No | ISO language code (auto-detected when omitted). | |
| audioBase64 | No | The audio file's real bytes as base64 (≤10 MiB of base64 text; at least 1 KiB of audio). Only use this when you actually hold the file's bytes — a made-up or placeholder payload is refused. Give exactly one of audioBase64 or audioUrl. |
Output Schema
| Name | Required | Description |
|---|---|---|
| language | Yes | |
| captureId | Yes | |
| durationMs | Yes | |
| transcript | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark this as a non-read-only, open-world, non-idempotent call; the description goes further by disclosing refusal behavior for non-audio payloads (under 1 KiB, bare header, placeholder bytes), the 10 MiB ceiling, and the side effect that a capture is created (implied by 'the created capture id'). That is meaningful context beyond the structured safety hints.
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?
Front-loaded with the core action, then progressively narrower detail (input modes, size limits, refusal cases, fallback). Every sentence carries information, though the format/size enumerations echo the property descriptions, adding mild 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?
With a 3-parameter schema at full coverage, an output schema, and annotations covering safety, the description supplies everything else an agent needs: which input form to pick, format and size constraints, failure semantics, and the recovery path when the agent lacks file bytes.
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 100%, so the baseline is 3; the description adds rationale the schema lacks — why base64 must be real bytes (placeholder payloads are refused) and the mutual-exclusion rule restated as 'exactly one way'. The format list and size limits largely duplicate the schema, which caps the score.
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 and resource ('Transcribe an audio file to text') plus the underlying engine, which cleanly separates it from sibling speak (synthesis) and the capture/listing tools. An agent can identify the operation without reading the schema.
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?
Gives explicit invocation conditions ('Give the audio exactly one way: audioUrl ... or audioBase64') and a concrete fallback when the bytes aren't readable (ask for a public link or upload via the studio page). It does not name a sibling alternative, so it stops short of a full when/when-not routing statement.
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.
9 tool updates
- First observed
clone_voice_profile - First observed
ensure_voice_profile - First observed
execute_typescript - First observed
get_generation - First observed
list_captures - First observed
list_voice_profiles - First observed
search_tools - First observed
speak - First observed
transcribe
Publisher details
- Operator
- Devino Solutions
- Operator website
- https://devino.ca
- Vendor relationship
- First-party
- Documentation
- https://voicelabs.now/mcp
- Trust center
- Not available
- Restrictions
- Requires a VoiceLabs account. Sign in with OAuth when your client asks.
Related MCP Connectors
Generate AI video, images and audio, and browse your history, from any MCP client.
Generate AI images, video, music, and sound effects, and upscale them, from any MCP client.
Generate AI images and videos from any compatible MCP client.
Generate game-ready 3D models, textures, and audio from natural language, over MCP.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables MCP-compatible clients to generate images and videos, synthesize speech, clone voices, and create custom voices through AI APIs.188 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP-compatible clients to generate images and videos, synthesize speech, clone voices, and design custom voices through a unified server interface.188 npmMIT
- AlicenseAqualityDmaintenanceAn MCP server that enables voice-to-voice AI conversations using ElevenLabs for speech synthesis and recognition, with tools for voice management, text-to-speech, and speech-to-text.7MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server for AI voice synthesis with an inline audio player, allowing users to give their AI assistant a custom cloned voice using DashScope or ElevenLabs.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.