Six scene clips in one agent turn: script_run with a paid-call cap
Fan out six scene generations in one script_run on Sume's MCP, cap them with max_paid_calls, then wait on the child jobs. Sketch, limits and failure behavior.

Use one script_run that loops over six scene prompts and calls generate_video through sume.call, with max_paid_calls set to 6. The run returns a calls[] journal and the child jobs[], and you then jobs_wait on them in a later step. That keeps a six-scene storyboard to one agent turn instead of six.
The behavior below is from the MCP tools and gates doc, read 2026-10-02. The sketch is not tested against your account, so run it once with dry_run first.
What does the script look like?
script_run runs JavaScript on the Sume side. Each paid create needs its own idempotency_key, so build it from the scene index. This sketch uses dry_run so it previews all six.
const scenes = [
"Product on a kitchen counter, morning light",
"Hand opens the box, close up",
"Product in use, over the shoulder",
"Detail shot of the texture",
"Product beside a window, slow push in",
"Closing shot, product centered",
];
const out = [];
for (const [i, prompt] of scenes.entries()) {
out.push(await sume.call("generate_video", {
idempotency_key: `storyboard-v1-scene-${i + 1}`,
dry_run: true,
payload: { prompt, duration: 5 }, // confirm fields with tools_schema
}));
}
return out;What are the limits?
The run is bounded by three numbers.
| Bound | Value | Why it matters |
|---|---|---|
timeout_seconds | 5 to 55 | Submit only; do not wait for renders inside |
max_calls | Set per run | Caps every tool call in the script |
max_paid_calls | Set per run | Stops a loop from creating more paid jobs than planned |
How do I wait for the clips?
The response lists the child jobs[]. Pass those ids to jobs_wait, which returns in slices, so call it again until every job is done. Discovery tools and script_run itself cannot be called from inside a script.
When is one turn per scene better?
When scenes depend on each other. If scene two needs the last frame of scene one, a loop cannot see it. Use this pattern for independent shots, and check the first dry run before you remove dry_run.
Sources
Related posts
More in Developers
- Cartesia sonic-3.6-2026-08-27 snapshot: which id Sume accepts
Cartesia's dated snapshot ids never change, but Sume's TTS Router lists only sonic-3.6, 3.5, 3, latest and preview. Here is what that means for repeat takes.
- Sonic 3.5 to 3.6 on Sume TTS: change model, keep the voice id
Cartesia says Sonic 3.6 keeps the voice ids of 3.5. On Sume's TTS Router, move a call from sonic-3.5 to sonic-3.6 by changing only the model field.
- sonic-preview voice_model_mismatch: use sonic-3.6 for clones
A TTS job on sonic-preview fails with voice_model_mismatch when the voice is a pro voice clone. Send model sonic-3.6 to the Sume TTS Router instead.
- Sora API ended Sept 24: which Sume video model to point code at
The Decoder reported the Sora API ends 2026-09-24. If your code called it, Sume's POST /v1/videos takes a model id; here is how to pick one and re-test.
Written by Sume