restore
Bring back cut word ranges from a source clip into the timeline, restoring only the absent material and leaving present content untouched.
Instructions
Un-cut whichever part of these inclusive word ranges is not currently in the timeline.
Same range shape as cut_by_transcript's cut=/keep=. Each range resolves to source time exactly like a cut does; only the part Edit.gaps says is actually absent comes back — material still present in the request is left alone, a request spanning two separate cuts restores both as separate pieces, a request only touching part of one cut restores only that part. Restoring only ever brings back material the source recording already has (bounded by the clip's own registered duration), so the timeline stays a subset of the source throughout — this is not vo_extend (PLAN.md parks that separately), which would add material the source never had.
pad matches cut_by_transcript's own pad: pass the same value used on the original cut to bring back its padding sliver, not just the words.
Unlike a cut, there is no suspect-duration refusal — a boundary that looks like it swallowed a retake is exactly the kind of thing restore exists to bring back, not a mistake to guard against.
Refused if clip_id has no surviving segment anywhere in the edit (nothing left of it to splice the range next to — undo or re-seed instead), or if its segments are not contiguous in the edit (an interleaved multi-source timeline, which restore does not support yet).
plan=True resolves and reports without writing, identically to cut_by_transcript.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pad | No | Pass the same `pad` the original cut used to bring its padding sliver back, not only the words. | |
| path | No | The project directory to act on. Omit it — the usual case — when this server is bound to a project (started as `proofcut -C DIR mcp`, or inside a project; `ping` says which): it then resolves to that one bound project, a relative path resolves against it, and a path outside it is refused by name. Unbound, `path` is the whole address and omitting it refuses rather than guessing. | |
| plan | No | Resolve the whole call and report what it would do, writing nothing. Prefer it over doing the thing and undoing it. | |
| ranges | Yes | Inclusive word ranges, the shape `cut_by_transcript` takes. Only the part the edit says is actually absent comes back; material still present is left alone. | |
| clip_id | Yes | The clip whose cut material to bring back. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||