Skip to main content
Glama

Animate Batch

lab_animate_batch

Animate MANY images into videos in ONE call (max 25 jobs). Prefer this over looping lab_animate: it validates every job BEFORE spending any quota, so an invalid job 12 of 15 does not leave 11 paid-for generations running. Quota is spent once, collectively (one ledger row); refunds stay per-clip, so a partial failure refunds only that clip. Returns a batch_id — poll lab_batch_status with it instead of polling each id separately. Every job's prompt goes through the Dreamer first: without valid dreamer_signatur on ALL jobs, nothing is generated or charged; the batch returns each dreamer_fassung and signature for human approval (at most four Dreamer calls at once). Repeat with the approved versions and signatures. get_cost: true preflights the whole batch without generating anything.

Input Schema

NameRequiredDescriptionDefault
jobsYesOne entry per clip, max 25. All jobs are validated before any quota is spent
get_costNoPreflight: return the summed price in credits for the WHOLE batch and your balance WITHOUT generating, reading the same catalog as lab_list_models. For a card the user confirms, use lab_propose instead.
project_idYesProject id (from lab_list_projects)
ohne_keyframeNoSkip the keyframe checkpoint on purpose. By default a paid clip only starts from a start image the user has approved (lab_review_asset verdict: accepted) — look at the frame first, then spend on the clip. Set true only when the user explicitly asked to skip the frame check.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / jobs / items / 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. Per clip: it covers only THIS job, never the others in the batch."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. Per clip: it covers only THIS job, never the others in the batch."
  2. Changed1 schema field changed
    • addedInput schema / properties / jobs / items / 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. Per clip: it covers only THIS job, never the others in the batch.",
      +  "type": "boolean"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / jobs / items / properties / apply_grundton
      Added value: +{
      +  "description": "Defaults to TRUE on the backend (the project's ground tone goes right after the prompt). Pass false to opt out for this clip only",
      +  "type": "boolean"
      +}
  4. Changed2 schema fields changed
    • changedInput schema / properties / jobs / items / properties / prop_ids / description
      Previous value: -"Prop ids from lab_list_props, belonging to this project. Adds their descriptions to the shot prompt as text; prop reference images are not sent."New value: +"Prop ids from lab_list_props, belonging to this project (an @prop_ tag in the prompt does the same). On this path their descriptions go into the prompt as text; prop images are sent by lab_generate and lab_reference_motion."
    • changedInput schema / properties / jobs / items / properties / stil_kit_id / description
      Previous value: -"Style kit id for THIS clip (lab_list_stil_kits); omit for the project default"New value: +"Style kit id for THIS clip (lab_list_stil_kits; an @stil_ tag in the prompt does the same); omit for the project default"
  5. Changed1 schema field changed
    • changedInput schema / properties / jobs / items / properties / dreamer_signatur / description
      Previous value: -"Dreamer proof for THIS clip's prompt (lab_prompt_transform). The batch passes it on; run each prompt through the Dreamer first."New value: +"Dreamer proof for THIS clip's prompt (lab_prompt_transform). Without valid signatures on all jobs, the whole batch returns Dreamer versions first and generates nothing."
  6. Changed1 schema field changed
    • addedInput schema / properties / jobs / items / properties / dreamer_signatur
      Added value: +{
      +  "description": "Dreamer proof for THIS clip's prompt (lab_prompt_transform). The batch passes it on; run each prompt through the Dreamer first.",
      +  "type": "string"
      +}
  7. Changed2 schema fields changed
    • addedInput schema / properties / jobs / items / properties / ohne_stil_kit
      Added value: +{
      +  "description": "true switches the project's default style kit off for this one call.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / jobs / items / properties / stil_kit_id
      Added value: +{
      +  "description": "Style kit id for THIS clip (lab_list_stil_kits); omit for the project default",
      +  "type": "string"
      +}
  8. Changed1 schema field changed
    • changedInput schema / properties / jobs / items / properties / prompt / description
      Previous value: -"Motion/camera instruction for this clip"New value: +"Motion/camera instruction for this clip. For a clip of 4 s or longer, write the action as timed beats, one per line under a '// Action Timing' header: '[0-2s] [CAM 01] <framing> -> [ACT] <action> -> [DIAL] <who>: \"<line>\" -> [AUDIO] <sound>'. The spans start at 0 and cover duration_seconds; keep the same CAM number while the camera does not cut. lab_prompt_transform (medium video) writes exactly this form. Murnau's SceneFlow lights each beat while the clip plays, and the crew judges it there."
  9. Changed1 schema field changed
    • addedInput schema / properties / jobs / items / properties / prop_ids
      Added value: +{
      +  "description": "Prop ids from lab_list_props, belonging to this project. Adds their descriptions to the shot prompt as text; prop reference images are not sent.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  10. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  11. Changed1 schema field changed
    • addedInput schema / properties / jobs / items / properties / familie
      Added value: +{
      +  "description": "Pick the MODEL, not the access route: 'seedance-2.0' or 'seedance-2.5'. The server takes the cheapest route that this account may use and that can do the job (OpenRouter only with the user's consent; references, 1080p for 2.5, or audio switched off go to fal) and falls back to fal if a cheaper route fails — the fallback can cost more than the preflight price. Mutually exclusive with tool and intent.",
      +  "enum": [
      +    "seedance-2.0",
      +    "seedance-2.5"
      +  ],
      +  "type": "string"
      +}
  12. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false and destructiveHint=false; the description adds genuine behavioral context beyond that: quota is charged once collectively with per-clip refunds on partial failure, all jobs are validated before any charge, a batch_id is returned for polling, and the Dreamer gate blocks all generation until signatures are valid on every job. It also discloses the concurrency limit (at most four Dreamer calls at once) and the approval round-trip before spending.

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?

It is front-loaded with the action and scope, then layers cost model, polling, and the Dreamer approval loop in a logical order; every sentence carries operational information. It is dense and long, but the length is justified by the amount of non-obvious cost/approval behavior being disclosed.

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 nested-array batch tool with no output schema, the description covers the essential unknowns: return value (batch_id), billing semantics, failure/refund behavior, and the mandatory Dreamer approval cycle. The only soft spot is the retry step after approval ('Repeat with the approved versions and signatures'), which is stated but not spelled out in detail.

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 schema already documents each parameter and the description rightfully avoids repetition. It still adds cross-parameter semantics the schema cannot express: the collective vs per-clip billing model, the all-or-nothing dreamer_signatur requirement, and that get_cost preflights the whole batch rather than one job. It adds value without duplicating field-level 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?

The first sentence names a specific verb, resource, and scope ('Animate MANY images into videos in ONE call (max 25 jobs)'), and the second immediately contrasts it with the sibling it replaces: looping lab_animate. An agent can select this over lab_animate without opening either 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?

It states the primary selection rule ('Prefer this over looping lab_animate') with the reason (validation before quota spend), plus the alternative paths: use lab_batch_status for polling and get_cost:true for a no-generation preflight, and lab_propose for a card the user confirms. When-to-use and when-to-use-something-else are both explicit.

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