Skip to main content
Glama

submit_voice

Destructive

Submit a final TTS generation job. This tool creates an audio asset only; it does not place or replace timeline items. Before using this tool, load/read the voice Skill if you have not already. The voice Skill contains the current TTS contract, voice audition/selection flow, reuse rules, and timeline replacement workflow. manage_voice action="list" is the live source for official and cloned voice candidates. Call this only after the user has selected or confirmed a concrete voiceRef from manage_voice (or a legacy provider + voiceId pair), or after the voice Skill says direct submission is appropriate.

External MCP spend rule: this tool costs ChatCut credits and starts an async generation job. Only call it when the user's request or confirmation clearly covers this exact generation; do not silently create extra variants, longer durations, higher quality, or additional outputs.

Tool call template

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

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

Input Schema

NameRequiredDescriptionDefault
nameNo
textYesText to synthesize. ElevenLabs per-request limits: v2/v4 10000 characters, v3 5000. Preserve the full script when splitting at sentence boundaries.
pitchNoDoubao only. Post-process pitch shift in semitones, -12–12.
speedNoElevenLabs only. 0.7–1.2. Not supported by eleven_v4 or eleven_v4_turbo; omit for those models.
emotionNoDoubao only. Provider emotion label such as happy, sad, angry, surprised, tender, storytelling, or ASMR. Only use voices whose guide says emotion is supported.
modelIdNoElevenLabs only. Defaults to "eleven_multilingual_v2". Read catalog modelGuidance and capabilities.controls.models before choosing. v2 does not support Vietnamese/Thai or audio tags. Ignored for doubao.
voiceIdNoProvider-specific voice id. For fish-audio, pass the ChatCut customVoiceId from manage_voice, never a Fish model id. For official voices, pass voiceId returned by manage_voice action=list.
providerNoTTS engine. Use fish-audio only with a ChatCut customVoiceId returned by manage_voice.
voiceRefNoPreferred: exact voiceRef from manage_voice with supportedUses containing tts. Omit provider and voiceId. Redundant legacy fields are accepted only when they identify the same voice; conflicting fields are rejected. Avatar-only voices cannot generate standalone speech.
projectIdNoProject for this call (full ID or unambiguous prefix). Explicit-timeline calls never change the target of later calls; legacy project selection applies otherwise.
requestIdNoOmit normally: the same project, text, resolved voice, model and speech controls reuse the existing job. For an explicitly requested fresh performance, create one UUID and keep it unchanged on retries. Never change it to recover from a timeout; inspect the existing job first.
stabilityNoElevenLabs only. 0–1, default 0.5. Lower = more expressive, higher = more consistent.
speedRatioNoDoubao only. 0.5–2.0, default 1.0. Mapped to Doubao's percentage delta server-side.
timelineIdNo
emotionScaleNoDoubao only. 1–5 emotion intensity; requires emotion. Official scale is nonlinear and support/ranges vary by voice.
loudnessRatioNoDoubao only. 0.5–2.0, default 1.0. Mapped to Doubao loudness_rate percentage delta.
explicitDialectNoDoubao only. Explicit dialect control; currently only supported by the Vivi preset/raw voice.
explicitLanguageNoDoubao only. Target narration language; use ja for Japanese. Must be supported by the selected voice. Cannot combine ja with explicitDialect.
performancePromptNoDoubao only. Natural-language voice direction for voices with instruction support, e.g. '语速稍慢,痛心但克制' or '欢乐一点,像朋友介绍'.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations cover the safety profile (destructive=true, idempotent=false, openWorld=false), and the description adds context annotations cannot express: the call costs ChatCut credits and launches an async generation job. The gap is what happens after submission — no mention of tracking the job via track_progress or of failure/retry behavior beyond the schema's requestId note.

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

Conciseness4/5

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

Front-loaded with purpose and the timeline-scope limitation, then prerequisites, then the spend rule — a sensible order for an agent that reads top-down. It is on the long side and the Skill paragraph repeats the manage_voice pointer, but no sentence is dead weight.

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

Completeness4/5

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

For a 19-parameter destructive async job with no output schema, the description covers the two things an agent most needs to know before calling: voice selection prerequisites and the credit/spend boundary. It leaves the post-call lifecycle (job tracking, expected return shape) to siblings and the schema, which is a reasonable but not complete handoff.

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

Parameters4/5

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

Schema coverage is already 89%, so the schema carries most per-parameter meaning. The description still adds non-obvious resolution semantics: voiceRef is preferred and provider+voiceId is the legacy path, both must identify the same voice, and voiceRef must come from manage_voice with supportedUses containing tts. That is genuine meaning beyond the schema text.

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

Purpose5/5

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

"Submit a final TTS generation job" gives a specific verb and resource, and the very next clause draws the boundary that matters most among siblings: "creates an audio asset only; it does not place or replace timeline items." An agent can separate this from edit_item, submit_music, or submit_avatar_video 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.

Usage Guidelines5/5

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

Explicit preconditions (load the `voice` Skill first; call manage_voice action="list" for candidates) and an explicit gate ("only after the user has selected or confirmed a concrete voiceRef"). It also names the spend rule and forbids silently creating extra variants, longer durations, or higher quality — real when-not guidance, not just implied context.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.