Apply Timeline Manifest
lab_timeline_applyWrite a WHOLE cut into a sequence in one call — clips in order with their lengths, an optional dissolve between them, an optional bed underneath. This is the counterpart to lab_get_sequence: that one reads the timeline, this one writes it. Prefer it over a chain of lab_add_clip calls whenever you already know the whole cut: a chain that breaks in the middle leaves half a sequence behind, this either applies or refuses. Costs nothing — it validates and writes rows, it generates nothing. Every video_id is checked against the project BEFORE anything is written, so a wrong id is a refusal here and not a gap in the cut nobody notices. Pass sequence_id to write into THAT sequence; omit it and a new one is created. Pass sequence_id WITHOUT a manifest to read back the stored cut as a manifest — for an agent that already has the sequence_id and wants to see what is in there before changing it. (The Resolve bridge does NOT go through here: it talks to the FilmLab server directly with its own bridge key and does not know this MCP.) Reworking a cut you read back? Keep each clip's clip_id. A clip that comes back with its identity keeps its track, its in-point in the source and its scene, and the shots bound to it stay bound; a clip without one is treated as new and gets a fresh identity, which orphans whatever pointed at the old one. Two honest limits: the Resolve bridge applies the clips but reports uebergang and the bed's level/fade as not applied (its scripting API has neither a transition call nor a clip volume property). The FilmLab sequence render applies the bed with its level and fade, but NOT uebergang yet — dissolves are stored and render as hard cuts (checked 2026-10-03).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Title for the sequence created when `sequence_id` is omitted | |
| manifest | No | The cut as one object. Omit it only together with a `sequence_id`, to read back what is stored | |
| project_id | Yes | Project id (from lab_list_projects) — positive integer as string | |
| sequence_id | No | Sequence to write into (from lab_create_sequence/lab_list_sequences). Omit to create a new one. Given WITHOUT a manifest, the stored manifest is read back instead of written | |
| erwartete_revision | No | The `revision` you read (from lab_get_sequence or this tool's read-back). The cut is written only if the sequence still has exactly that content — otherwise nothing is written and you get `revision_veraltet` with the current revision: read again, merge, write again. Without it this tool still protects the moment between its own read and write, but not the time since YOU read the sequence. |