Add zoom
add_zoomPROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Zoom on a time range of the FINAL edited video (output seconds) only when a named event needs the camera to move: a reveal, a UI target, a punchline, an explicit user beat. A talking-head already in frame does NOT need a punch-in. strength 0.05-4.5 (default 0.15; above 1.0 is a dramatic 2x+ punch). mode: 'ease' (default, smooth ramp — use this), 'push_in' / 'pull_out' (continuous Ken Burns drift), 'punch' (instant snap — ONLY the single biggest peak or an explicit punch-in request, never every few seconds). TWO ways to aim, and they answer different requests: rect=[x0,y0,x1,y1] (fractions of the output frame, read off look_at's grid) FRAMES A REGION — the tool solves strength and centre so that box fills the frame with margin, THE way to 'zoom into the message / that button / this panel', and its result reports where the region lands on screen. cx/cy instead PIN A POINT: that point keeps its exact screen position while everything magnifies around it — right for emphasis on a subject that is already well-composed, and wrong for framing a thing near an edge (an edge point stays at the edge at any strength — it never slides to centre). Pass rect OR cx/cy, not both; if both arrive the rect wins (it already determines the centre) and the call still succeeds. Omitting all targets uses the frame center and returns a quality advisory. Coordinates may come from look_at, the filmstrip, user direction, or the editor's own judgment; no prior evidence call is required. Zero zooms is often correct. Do not sprinkle punches on 'important sentences'. punch_in_on_emphasis is only for an explicit punch-in-on-stressed-words request. If the zoom should MOVE while pushed in — 'then move it to X', 'keep it and go to the next message', 'follow the cursor' — that is ONE add_zoom_path (its keyframes take rect too), never a chain of static zooms.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cx | No | ||
| cy | No | ||
| end | Yes | ||
| mode | No | ||
| rect | No | ||
| start | Yes | ||
| purpose | No | The nameable narrative or visible reason for this zoom. | |
| strength | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. | |
| target_evidence_ids | No |