Skip to main content
Glama

set_character_voice

Attach a preset Gemini TTS voice to a Flow character for auto-lipsync in future videos.

Synthesizes a short reference audio in the chosen voice and attaches its media_id to
the character's `audio_references`. This is a ONE-TIME setup per character: any
subsequent video generation that references this character will auto-lipsync with this
voice (same mechanism Flow Web uses when you set a voice via its UI).

Calling it again overwrites the voice. Pass sample_text=null for a short default sample
— only the resulting audio is kept as a reference; the content of the text is not used
for later videos.

character_id: entityId from create_character / create_character_from_photo.
account: Google account email that owns this character.
voice: one of list_voices() (default "Algieba").
style: optional delivery hint, e.g. "calm, slow".
sample_text: optional short sentence; default is a short neutral Russian sentence.
project_id: optional project; omit for the account's default.

Returns {entity_id, voice, media_id, audio_url, duration_sec_estimate, audio_references}.

Input Schema

NameRequiredDescriptionDefault
styleNo
voiceNoAlgieba
accountYes
project_idNo
sample_textNo
character_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond annotations: discloses one-time-per-character semantics, overwrite-on-repeat behavior, and the non-obvious fact that the sample_text content is not used for later videos (only the audio is kept). These are meaningful behavioral traits an agent could not infer from the schema or annotations.

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-loads purpose, then setup/behavior details, then a per-parameter block. Every sentence is informative with no filler. It is somewhat long, but the length is justified by the 0% schema coverage it must compensate for.

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

Completeness5/5

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

For a 6-param mutation tool with no output schema, the description covers inputs, side effects, idempotency-like overwrite behavior, and explicitly lists the return shape. Nothing an agent needs to call it correctly is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry all parameter meaning and it does: it documents all six parameters—character_id (entityId from create_character*), account (owning email), voice (from list_voices, default Algieba), style (delivery hint with example), sample_text (default Russian sentence, null behavior), and project_id (default account).

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?

Specific verb and resource: 'Attach a preset Gemini TTS voice to a Flow character for auto-lipsync.' It states the mechanism (synthesizes reference audio, attaches media_id to audio_references) and is clearly distinguishable from siblings like generate_voice and update_character.

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

Usage Guidelines4/5

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

Clear context: it is a ONE-TIME setup per character, subsequent video generation auto-lipsyncs, and calling again overwrites. It points to list_voices() for valid voices. It does not explicitly contrast against the generate_voice sibling for one-off synthesis, but the when-to-use conditions are well stated.

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.