Skip to main content
Glama

Dub Sequence

lab_dub

Dub a sequence into another language: either a ready audio track (en_audio_url — e.g. the one lab_dub_tts just produced) OR a cloned voice reading a line of text (voice_id + dub_text), then a controlled visual lipsync runs over the sequence's own footage (ROI-crop + composite for a long static talking-head shot, or the full-frame veed_v2 path for multi-shot sequences and shots where the mouth is partly hidden). ASYNCHRONOUS: returns a job_id immediately: poll lab_job_status until it completes. Needs a cloned voice first — lab_voice_clone makes one, lab_list_voices shows what a project already has.

Input Schema

NameRequiredDescriptionDefault
seq_idYesSequence id (from lab_create_sequence/lab_list_sequences) — positive integer as string
backendNoLipsync engine. Omit to use the backend default (replicate — ROI-crop, best for one long static talking-head shot). veed_v2 renders the full frame instead and is the pick for multi-shot sequences or a partly hidden mouth. 'inhouse' shares replicate's ROI-crop path.
dub_textNoThe line(s) this cloned voice should read, in the target `language`. Required together with voice_id.
get_costNo`true` reports the price and your balance WITHOUT starting a dub and without spending quota. The number is computed by the same function that later charges you, from THIS sequence: a sound rate per video clip, plus the chosen lipsync engine's own rate over the sequence's running time, plus a surcharge for the cloned-voice reading. `preisbasis` in the answer breaks it into those parts, so you can see which switch moves which share — turning the lipsync pass off removes its whole item. Not drawn from the lab_list_models catalog (that covers image and video models only; the lipsync engine is chosen with `backend` here, and dub has no catalog entry).
languageYesTarget language for the dub, e.g. 'de', 'fr', 'es' — drives the cloned voice's TTS. Required: there is no silent default here.
voice_idNoA cloned voice's id (lab_cloned_voices.id, from lab_voice_clone or lab_list_voices) — positive integer as string. Required together with dub_text, and mutually exclusive with en_audio_url.
einwilligungNoConsent of the person whose mouth this dub re-syncs. Only valid together with eigene_person:true and einwilligung_notiz when there is no likeness_ref — a dub always alters a real person's mouth in existing footage, so a likeness_ref or the own-person form is mandatory, checked before anything is spent. This is a caller attestation, not a registry check like likeness_ref — logged, not verified against likeness.thefilmradar.com, and it covers only YOUR OWN person. Do not set it to be rid of the error — set it because the consent exists.
en_audio_urlNoURL of a READY dub track to lay under the sequence — typically the audio_url lab_dub_tts just returned. Mutually exclusive with voice_id+dub_text: a dub has exactly one audio source, and picking one silently would throw away the other after it was paid for.
likeness_refNoA Likeness Register consent id (likeness.thefilmradar.com) for the person whose mouth this dub re-syncs. Checked live against the register before anything is spent; a revoked or unknown id refuses the call. REQUIRED for every person other than yourself — a plain confirmation no longer stands in for it (DSFA E3, 2026-11-06). Mutually exclusive with eigene_person+einwilligung+einwilligung_notiz — one form of consent is required, not both.
eigene_personNoSet true ONLY if the person whose mouth this dub re-syncs is you, the user ("the person shown and speaking is me"). It is the only way to dub without a likeness_ref and must come with einwilligung:true and einwilligung_notiz. For anyone else, a valid likeness_ref is mandatory: without one the call is refused with dub_fremde_person_braucht_kennung (403) before anything is spent. A declaration, not a proof — logged, not verified. Do not set it for somebody else. Unrelated to nur_eigene_daten, which concerns the third-country data flow.
enable_lipsyncNoWhether to run the visual lipsync pass at all. Omit to use the backend default (on). Off only swaps the audio track and skips the mouth-sync render entirely.
nur_eigene_datenNoOnly for a model that sends inputs to China or a US recipient without a documented basis, when the step carries images, clips, voices or faces. Means: this material shows or contains no real person other than the human using this account. Set it ONLY after the human has said exactly that for THIS step; never assume it, never reuse it for the next step. Not needed when the human has declared this material in the FilmLab app: the backend reads that declaration, also for material derived from it; only the app can store one. An LK reference, a licensed likeness or another person's agreement does not replace it. Without it the backend refuses with drittland_dritte_gesperrt before any charge; then use a non-gated model or text only.
einwilligung_notizNoFree text: who consented, when, and for what — required together with einwilligung. Goes on record with the generated clip.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / nur_eigene_daten / description
      Previous value: -"Only for a model that sends inputs to China or a US recipient without a documented basis, when the step carries images, clips, voices or faces. Means: this material shows or contains no real person other than the human using this account. Set it ONLY after the human has said exactly that for THIS step; never assume it, never reuse it for the next step. An LK reference, a licensed likeness or another person's agreement does not replace it. Without it the backend refuses with drittland_dritte_gesperrt before any charge; then use a non-gated model or text only."New value: +"Only for a model that sends inputs to China or a US recipient without a documented basis, when the step carries images, clips, voices or faces. Means: this material shows or contains no real person other than the human using this account. Set it ONLY after the human has said exactly that for THIS step; never assume it, never reuse it for the next step. Not needed when the human has declared this material in the FilmLab app: the backend reads that declaration, also for material derived from it; only the app can store one. An LK reference, a licensed likeness or another person's agreement does not replace it. Without it the backend refuses with drittland_dritte_gesperrt before any charge; then use a non-gated model or text only."
  2. Changed3 schema fields changed
    • addedInput schema / properties / eigene_person
      Added value: +{
      +  "description": "Set true ONLY if the person whose mouth this dub re-syncs is you, the user (\"the person shown and speaking is me\"). It is the only way to dub without a likeness_ref and must come with einwilligung:true and einwilligung_notiz. For anyone else, a valid likeness_ref is mandatory: without one the call is refused with dub_fremde_person_braucht_kennung (403) before anything is spent. A declaration, not a proof — logged, not verified. Do not set it for somebody else. Unrelated to nur_eigene_daten, which concerns the third-country data flow.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / einwilligung / description
      Previous value: -"Consent of the person whose mouth this dub re-syncs, when there is no Likeness Register id for them yet. Required together with einwilligung_notiz if likeness_ref is not given — a dub always alters a real person's mouth in existing footage, so one of the two consent forms is mandatory, checked before anything is spent. This is a caller attestation, not a registry check like likeness_ref — logged, not verified against likeness.thefilmradar.com. Do not set it to be rid of the error — set it because the consent exists."New value: +"Consent of the person whose mouth this dub re-syncs. Only valid together with eigene_person:true and einwilligung_notiz when there is no likeness_ref — a dub always alters a real person's mouth in existing footage, so a likeness_ref or the own-person form is mandatory, checked before anything is spent. This is a caller attestation, not a registry check like likeness_ref — logged, not verified against likeness.thefilmradar.com, and it covers only YOUR OWN person. Do not set it to be rid of the error — set it because the consent exists."
    • changedInput schema / properties / likeness_ref / description
      Previous value: -"A Likeness Register consent id (likeness.thefilmradar.com) for the person whose mouth this dub re-syncs. Checked live against the register before anything is spent; a revoked or unknown id refuses the call. Mutually exclusive with einwilligung+einwilligung_notiz — one form of consent is required, not both."New value: +"A Likeness Register consent id (likeness.thefilmradar.com) for the person whose mouth this dub re-syncs. Checked live against the register before anything is spent; a revoked or unknown id refuses the call. REQUIRED for every person other than yourself — a plain confirmation no longer stands in for it (DSFA E3, 2026-11-06). Mutually exclusive with eigene_person+einwilligung+einwilligung_notiz — one form of consent is required, not both."
  3. Changed1 schema field changed
    • addedInput schema / properties / nur_eigene_daten
      Added value: +{
      +  "description": "Only for a model that sends inputs to China or a US recipient without a documented basis, when the step carries images, clips, voices or faces. Means: this material shows or contains no real person other than the human using this account. Set it ONLY after the human has said exactly that for THIS step; never assume it, never reuse it for the next step. An LK reference, a licensed likeness or another person's agreement does not replace it. Without it the backend refuses with drittland_dritte_gesperrt before any charge; then use a non-gated model or text only.",
      +  "type": "boolean"
      +}
  4. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  5. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false; the description adds the crucial behavioral facts the agent cannot get elsewhere: the call is asynchronous and returns a job_id that must be polled, a consent gate is evaluated before any spend, and get_cost reports price without consuming quota. It also discloses that the operation alters a real person's mouth in existing footage.

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 verb and resource, then the two modes, then the async/polling contract, then prerequisites — a sensible order. It is dense but nearly every clause carries operational information; the only waste is minor duplication of the backend trade-off that the schema already explains.

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 13-parameter, asynchronous, gated mutation with no output schema, the description covers the call lifecycle, cost preview, and mode selection well. It does not surface the consent/likeness refusal paths (likeness_ref, eigene_person, nur_eigene_daten) or the drittland_dritte_gesperrt gate, leaving those discoverable only inside the schema — a notable omission for a tool this gated.

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 100%, so the baseline is 3; the description still earns an extra point by bundling the mode-selection logic in one place (en_audio_url XOR voice_id+dub_text, backend choice tied to shot composition) rather than leaving the agent to reconcile thirteen separate field descriptions. Much of it does restate what the schema already says about backend and ROI-crop.

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 ("Dub a sequence into another language") and immediately enumerates the two audio-source modes plus the visual lipsync pass over the sequence's own footage. It distinguishes itself from lab_dub_tts (which produces the ready track it consumes) and from lab_voice_clone/lab_list_voices, so an agent can place it in the workflow 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?

Gives concrete routing: use the replicate/inhouse ROI-crop path for one long static talking-head shot, veed_v2 for multi-shot sequences or a partly hidden mouth. It also states the prerequisite chain (a cloned voice exists first, via lab_voice_clone or lab_list_voices) and the follow-up procedure (poll lab_job_status).

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