Skip to main content
Glama

Set a recording as a scene's narration

assign_narration
DestructiveIdempotent

Sets a recording from the material library (an audio file, or the sound of a video) as the narration of ONE scene: the scene speaks with that voice, not with a synthetic one. scene_index is 0-based like the VBP; from_sec/to_sec choose the segment of the recording (seconds from its start). With with_picture, the video is also the scene's picture, tied to its voice (video only; the lips stay in sync; the segment is then at most 29.4 s). remove returns the scene to the cast voice. The voice is produced in the next production (it is cut from the recording as is, not synthesized), and a voice regeneration keeps it. Refusals are typed (narration-refused with extensions.reason: clase_no_admitida, tramo_invalido, tramo_largo_con_la_imagen, escena_de_avatar, oido_pendiente, sin_pista_de_audio, la_pista_no_tiene_voz, material_no_montable); a refusal changes nothing. Requires write. $0.

Input Schema

NameRequiredDescriptionDefault
removeNoReturns the scene to the cast voice; the other arguments are ignored.
to_secNoEnd of the segment, in seconds (greater than `from_sec`).
asset_idNoThe `assetId` of a recording in the material library (an audio file, or a video whose sound is the voice).
from_secNoStart of the segment, in seconds from the start of the recording.
project_idYes
scene_indexYes0-based scene index (as in the Video Blueprint).
with_pictureNoVideo only: the same segment of the video is also the scene's picture, tied to its voice.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses the `write` scope requirement, the $0 cost, the 29.4 s segment cap with picture, that the audio is cut as-is rather than synthesized, that voice regeneration preserves it, and that refusals are typed with a full list of `extensions.reason` codes and leave state unchanged. This is exactly the extra context the destructiveHint/idempotentHint flags cannot carry.

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

Conciseness4/5

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

Front-loaded with the core action and scope before the caveats, and the dense clause chain is mostly justified. The parenthetical refusal-code list is long but genuinely useful; a slightly tighter structure would earn a 5.

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 7-parameter mutation tool with no output schema, the description covers the mutation's effect, its undo path, the deferred-production timing, permissions, cost, and every refusal reason with the guarantee that refusals are no-ops. An agent can call this correctly and interpret failures without further documentation.

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 86%, so the baseline is 3; the description adds meaning beyond it by explaining that `from_sec`/`to_sec` are measured from the recording's start, that `with_picture` binds picture to voice with lip sync and imposes a 29.4 s cap, and that `remove` causes the other arguments to be ignored. The `asset_id` linkage to a material-library `assetId` is implied but not restated in depth.

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?

States a specific verb and resource ('Sets a recording ... as the narration of ONE scene') and immediately clarifies the effect ('the scene speaks with that voice, not with a synthetic one'), which distinguishes it from assign_material and from synthetic-voice tools in the sibling list. The capitalized 'ONE' makes the per-scene scope unmistakable.

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?

Clearly conveys when to use it (attach an existing recording as a scene's voice) and when to undo it ('`remove` returns the scene to the cast voice'), plus the constraint that the voice only materializes in the next production. It never explicitly names a competing sibling (e.g., assign_material) as an alternative, so it falls short of full when/when-not routing.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources