Tool tree
gradeNot graded
get_project_stateAnswer
MANDATORY FIRST STEP for any video editing, review, or enhancement request. Returns the full project: clips, durations, zooms, overlays, audio, plus the Director Playbook and the autonomous decision tree for vague requests like 'edit this video'. All timestamps are CURRENT TIMELINE seconds; check timelineRevision — if it changed since your last read, your cached observations are stale and you MUST re-ingest.
View tool JSON
{
"name": "get_project_state",
"kind": "answer",
"impl": "imperative",
"description": "MANDATORY FIRST STEP for any video editing, review, or enhancement request. Returns the full project: clips, durations, zooms, overlays, audio, plus the Director Playbook and the autonomous decision tree for vague requests like 'edit this video'. All timestamps are CURRENT TIMELINE seconds; check timelineRevision — if it changed since your last read, your cached observations are stale and you MUST re-ingest.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}list_clipsAnswer
Returns all timeline video clips with cumulative start/end timestamps, durations, speeds, and transitions. All times are CURRENT TIMELINE seconds.
View tool JSON
{
"name": "list_clips",
"kind": "answer",
"impl": "imperative",
"description": "Returns all timeline video clips with cumulative start/end timestamps, durations, speeds, and transitions. All times are CURRENT TIMELINE seconds.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}list_scenesAnswer
Returns all timeline segments (scenes) with cumulative timeline start/end timestamps, duration, speed, and transitions. All times are CURRENT TIMELINE seconds.
View tool JSON
{
"name": "list_scenes",
"kind": "answer",
"impl": "imperative",
"description": "Returns all timeline segments (scenes) with cumulative timeline start/end timestamps, duration, speed, and transitions. All times are CURRENT TIMELINE seconds.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}get_silence_intervalsAnswer
Detects audio silence and dead-air intervals where the speaker is inactive, returned in CURRENT TIMELINE seconds. Use for ripple trimming: dead air >= 1.5s is a cut candidate ({op:'cut', dropSilence:true}). Requires transcription — call generate_captions first if status is PENDING_TRANSCRIPTION.
View tool JSON
{
"name": "get_silence_intervals",
"kind": "answer",
"impl": "imperative",
"description": "Detects audio silence and dead-air intervals where the speaker is inactive, returned in CURRENT TIMELINE seconds. Use for ripple trimming: dead air >= 1.5s is a cut candidate ({op:'cut', dropSilence:true}). Requires transcription — call generate_captions first if status is PENDING_TRANSCRIPTION.",
"inputSchema": {
"type": "object",
"properties": {
"minDurationSec": {
"type": "number",
"description": "Minimum silence duration threshold in seconds (default 1.0)."
}
}
},
"page": "/"
}get_transcriptAnswer
Returns the spoken transcript with timestamps in CURRENT TIMELINE seconds. If empty, call generate_captions to transcribe. Re-fetch this after any cut/delete/speed change — earlier timestamps go stale when the timeline shifts.
View tool JSON
{
"name": "get_transcript",
"kind": "answer",
"impl": "imperative",
"description": "Returns the spoken transcript with timestamps in CURRENT TIMELINE seconds. If empty, call generate_captions to transcribe. Re-fetch this after any cut/delete/speed change — earlier timestamps go stale when the timeline shifts.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}inspect_timelineAction
Detailed inspector of all clips, timeline timestamps, transitions, speed, zooms, and overlays. All times are CURRENT TIMELINE seconds.
View tool JSON
{
"name": "inspect_timeline",
"kind": "act",
"impl": "imperative",
"description": "Detailed inspector of all clips, timeline timestamps, transitions, speed, zooms, and overlays. All times are CURRENT TIMELINE seconds.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}get_click_logAnswer
Returns cursor telemetry in CURRENT TIMELINE seconds. Default response is COMPACT: per-20s attention buckets (where the mouse was active), click counts, and suggested zoom timestamps — plus exact cursor (x, y) interpolation via atTimestamp. Pass detail:'full' for the raw point list (token-heavy; rarely needed). Click clusters are prime zoom candidates; a parked cursor (no recent events) is NOT a good zoom target.
View tool JSON
{
"name": "get_click_log",
"kind": "answer",
"impl": "imperative",
"description": "Returns cursor telemetry in CURRENT TIMELINE seconds. Default response is COMPACT: per-20s attention buckets (where the mouse was active), click counts, and suggested zoom timestamps — plus exact cursor (x, y) interpolation via atTimestamp. Pass detail:'full' for the raw point list (token-heavy; rarely needed). Click clusters are prime zoom candidates; a parked cursor (no recent events) is NOT a good zoom target.",
"inputSchema": {
"type": "object",
"properties": {
"atTimestamp": {
"type": "number",
"description": "Optional: interpolate and return the exact cursor (x, y) at this timeline timestamp"
},
"detail": {
"type": "string",
"enum": [
"summary",
"full"
],
"description": "'summary' (default) returns attention buckets only; 'full' also includes the raw point list."
}
}
},
"page": "/"
}export_clipAction
Renders and exports the edited video locally in the browser via WebCodecs. Prompts the human for confirmation before encoding. Returns a downloadable Blob URL and file metadata upon completion.
View tool JSON
{
"name": "export_clip",
"kind": "act",
"impl": "imperative",
"description": "Renders and exports the edited video locally in the browser via WebCodecs. Prompts the human for confirmation before encoding. Returns a downloadable Blob URL and file metadata upon completion.",
"inputSchema": {
"type": "object",
"properties": {
"format": {
"type": "string",
"enum": [
"mp4",
"webm"
],
"description": "Video container format. 'mp4' (H.264) is most compatible; 'webm' (VP9) is smaller."
},
"resolution": {
"type": "string",
"enum": [
"720p",
"1080p",
"4k"
],
"description": "Export resolution. '1080p' is standard HD, '720p' is faster, '4k' is ultra high-res."
},
"fps": {
"type": "number",
"enum": [
24,
30,
60
],
"description": "Output frame rate (default 30)."
}
},
"required": [
"format",
"resolution"
]
},
"page": "/"
}propose_zoom_pointsAction
Proposes zoom-in keyframes at specific timeline timestamps. Proposals appear as ghost diamond markers on the timeline for human review — they are NOT applied until commit_staged_changes. Timestamps are CURRENT TIMELINE seconds.
View tool JSON
{
"name": "propose_zoom_points",
"kind": "act",
"impl": "imperative",
"description": "Proposes zoom-in keyframes at specific timeline timestamps. Proposals appear as ghost diamond markers on the timeline for human review — they are NOT applied until commit_staged_changes. Timestamps are CURRENT TIMELINE seconds.",
"inputSchema": {
"type": "object",
"properties": {
"timestamps": {
"type": "array",
"items": {
"type": "number"
},
"description": "Timeline seconds where zoom-in keyframes should be placed."
},
"scale": {
"type": "number",
"minimum": 1.2,
"maximum": 5,
"description": "Zoom magnification depth (default 2.2). Range 1.2 to 5.0."
},
"focalX": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Normalized focal X center (0 to 1, default 0.5)."
},
"focalY": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Normalized focal Y center (0 to 1, default 0.5)."
}
},
"required": [
"timestamps"
]
},
"page": "/"
}add_text_overlayAction
Stages a styled text caption or annotation overlay at a specific timeline timestamp and screen position. Supports custom fonts, sizes, colors, backdrops, and entrance/exit animations. Staged overlays appear for review until committed. Timestamps are CURRENT TIMELINE seconds.
View tool JSON
{
"name": "add_text_overlay",
"kind": "act",
"impl": "imperative",
"description": "Stages a styled text caption or annotation overlay at a specific timeline timestamp and screen position. Supports custom fonts, sizes, colors, backdrops, and entrance/exit animations. Staged overlays appear for review until committed. Timestamps are CURRENT TIMELINE seconds.",
"inputSchema": {
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The text content to display (no emojis)."
},
"timestamp": {
"type": "number",
"description": "When the text should appear (timeline seconds)."
},
"duration": {
"type": "number",
"description": "Duration in seconds (default 3.0)."
},
"position": {
"type": "string",
"enum": [
"top",
"bottom",
"center"
],
"description": "Vertical position on screen (default 'bottom')."
},
"fontSize": {
"type": "number",
"description": "Font size in pixels (e.g. 24, 36, 48)."
},
"fontFamily": {
"type": "string",
"description": "Font family (e.g. 'Inter', 'Outfit', 'Montserrat', 'Playfair Display', 'Fira Code')."
},
"fontWeight": {
"type": "string",
"enum": [
"normal",
"bold",
"600",
"800",
"900"
],
"description": "Font weight (e.g. 'bold', '600', '900')."
},
"fontStyle": {
"type": "string",
"enum": [
"normal",
"italic"
],
"description": "Font style ('normal' or 'italic')."
},
"color": {
"type": "string",
"description": "Text color hex or rgba (e.g. '#ffffff', '#facc15')."
},
"backgroundColor": {
"type": "string",
"description": "Backdrop pill color (e.g. 'rgba(15,23,42,0.85)', '#1e293b')."
},
"borderRadius": {
"type": "number",
"description": "Backdrop corner radius in pixels (e.g. 8, 12)."
},
"animation": {
"type": "string",
"enum": [
"none",
"fade",
"pop",
"slide-up",
"slide-down",
"zoom-in",
"typewriter",
"bounce"
],
"description": "Entrance/exit animation (default 'fade')."
}
},
"required": [
"text",
"timestamp"
]
},
"page": "/"
}set_backgroundAction
Stages a background color or gradient change. Fills the stage padding area around the video when aspect ratio padding is visible.
View tool JSON
{
"name": "set_background",
"kind": "act",
"impl": "imperative",
"description": "Stages a background color or gradient change. Fills the stage padding area around the video when aspect ratio padding is visible.",
"inputSchema": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"solid",
"gradient"
],
"description": "Background type: 'solid' (single color) or 'gradient' (two-stop linear gradient)."
},
"color": {
"type": "string",
"description": "Hex color for solid background, e.g. '#0a0a0a'."
},
"stops": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of two hex colors for gradient, e.g. ['#007cf0', '#7928ca']."
}
},
"required": [
"kind"
]
},
"page": "/"
}generate_captionsAction
Transcribes the video's audio (camera/mic + screen tracks separately) and generates timestamped additive subtitle phrases across the timeline — same pipeline as the manual Auto-Generate button. Always call this first if get_transcript is empty — cuts, zooms and silence detection all depend on speech timestamps.
View tool JSON
{
"name": "generate_captions",
"kind": "act",
"impl": "imperative",
"description": "Transcribes the video's audio (camera/mic + screen tracks separately) and generates timestamped additive subtitle phrases across the timeline — same pipeline as the manual Auto-Generate button. Always call this first if get_transcript is empty — cuts, zooms and silence detection all depend on speech timestamps.",
"inputSchema": {
"type": "object",
"properties": {
"language": {
"type": "string",
"description": "Audio language: 'auto', 'hinglish', 'en', 'hi', 'es', 'fr', 'de', 'ja', 'zh'. Default 'auto'."
},
"includeSpeakerLabels": {
"type": "boolean",
"description": "Prefix captions with 'Speaker:' / 'Screen:' (default true, matches the manual Speaker toggle)."
},
"presetId": {
"type": "string",
"description": "Caption style preset id: viral, clean, outline, subtitles, electric, highlighter (default 'viral')."
},
"speakerFontSize": {
"type": "number",
"description": "Font size px for Speaker captions (default 36)."
},
"screenFontSize": {
"type": "number",
"description": "Font size px for Screen captions (default 28)."
}
}
},
"page": "/"
}split_clipAction
Splits the clip at a timeline timestamp into two segments. Use before delete_clip to remove an unwanted range. Timestamps are CURRENT TIMELINE seconds. The response includes the new clip map — use it, not your pre-split observations.
View tool JSON
{
"name": "split_clip",
"kind": "act",
"impl": "imperative",
"description": "Splits the clip at a timeline timestamp into two segments. Use before delete_clip to remove an unwanted range. Timestamps are CURRENT TIMELINE seconds. The response includes the new clip map — use it, not your pre-split observations.",
"inputSchema": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timeline second where the split cut should occur."
}
},
"required": [
"timestamp"
]
},
"page": "/"
}split_segmentAction
Splits the video clip at the given timeline timestamp. Timestamps are CURRENT TIMELINE seconds. The response includes the new clip map.
View tool JSON
{
"name": "split_segment",
"kind": "act",
"impl": "imperative",
"description": "Splits the video clip at the given timeline timestamp. Timestamps are CURRENT TIMELINE seconds. The response includes the new clip map.",
"inputSchema": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timeline second where the split should occur."
}
},
"required": [
"timestamp"
]
},
"page": "/"
}delete_clipSensitive Action
Deletes a clip segment and ripple-joins the adjacent clips. THIS SHIFTS THE TIMELINE: every timestamp after the deleted range moves earlier. The response flags timelineShifted — you MUST re-ingest get_project_state and get_transcript afterwards and never reuse pre-delete timestamps. Cannot delete the only remaining clip.
View tool JSON
{
"name": "delete_clip",
"kind": "transact",
"impl": "imperative",
"description": "Deletes a clip segment and ripple-joins the adjacent clips. THIS SHIFTS THE TIMELINE: every timestamp after the deleted range moves earlier. The response flags timelineShifted — you MUST re-ingest get_project_state and get_transcript afterwards and never reuse pre-delete timestamps. Cannot delete the only remaining clip.",
"inputSchema": {
"type": "object",
"properties": {
"clipIndex": {
"type": "number",
"description": "0-based index of the clip segment to delete."
},
"segmentId": {
"type": "string",
"description": "Optional direct segment ID."
}
}
},
"page": "/"
}set_clip_transitionAction
Sets the incoming transition effect and duration on a clip segment. Does not shift timestamps.
View tool JSON
{
"name": "set_clip_transition",
"kind": "act",
"impl": "imperative",
"description": "Sets the incoming transition effect and duration on a clip segment. Does not shift timestamps.",
"inputSchema": {
"type": "object",
"properties": {
"clipIndex": {
"type": "number",
"description": "0-based index of the clip segment."
},
"transition": {
"type": "string",
"enum": [
"cut",
"fade",
"dipToBlack",
"slide-left",
"slide-right",
"zoom-in",
"wipe"
],
"description": "Transition style effect."
},
"duration": {
"type": "number",
"description": "Transition duration in seconds (default 0.45)."
}
},
"required": [
"clipIndex",
"transition"
]
},
"page": "/"
}set_clip_speedAction
Sets playback speed for a clip segment (0.5x, 1x, 1.5x, 2x, 3x with pitch-preserved WSOLA audio). THIS SHIFTS THE TIMELINE: the segment's duration changes, so later timestamps compress or expand. Re-ingest after calling.
View tool JSON
{
"name": "set_clip_speed",
"kind": "act",
"impl": "imperative",
"description": "Sets playback speed for a clip segment (0.5x, 1x, 1.5x, 2x, 3x with pitch-preserved WSOLA audio). THIS SHIFTS THE TIMELINE: the segment's duration changes, so later timestamps compress or expand. Re-ingest after calling.",
"inputSchema": {
"type": "object",
"properties": {
"clipIndex": {
"type": "number",
"description": "0-based index of the clip."
},
"speed": {
"type": "number",
"enum": [
0.5,
1,
1.5,
2,
3
],
"description": "Playback speed multiplier."
}
},
"required": [
"clipIndex",
"speed"
]
},
"page": "/"
}set_speedAction
Sets playback speed multiplier for the selected segment (0.5x, 1x, 1.5x, 2x). THIS SHIFTS THE TIMELINE — re-ingest after calling.
View tool JSON
{
"name": "set_speed",
"kind": "act",
"impl": "imperative",
"description": "Sets playback speed multiplier for the selected segment (0.5x, 1x, 1.5x, 2x). THIS SHIFTS THE TIMELINE — re-ingest after calling.",
"inputSchema": {
"type": "object",
"properties": {
"speed": {
"type": "number",
"enum": [
0.5,
1,
1.5,
2
],
"description": "Playback speed multiplier."
}
},
"required": [
"speed"
]
},
"page": "/"
}set_aspectAction
Sets the stage aspect ratio preset ('16:9', '9:16', '1:1', '4:3', or 'source'). Does not shift timestamps.
View tool JSON
{
"name": "set_aspect",
"kind": "act",
"impl": "imperative",
"description": "Sets the stage aspect ratio preset ('16:9', '9:16', '1:1', '4:3', or 'source'). Does not shift timestamps.",
"inputSchema": {
"type": "object",
"properties": {
"preset": {
"type": "string",
"enum": [
"16:9",
"9:16",
"1:1",
"4:3",
"source"
],
"description": "Aspect ratio preset."
}
},
"required": [
"preset"
]
},
"page": "/"
}add_musicAction
Adds or moves an audio track on the timeline at a specified start timestamp (timeline seconds).
View tool JSON
{
"name": "add_music",
"kind": "act",
"impl": "imperative",
"description": "Adds or moves an audio track on the timeline at a specified start timestamp (timeline seconds).",
"inputSchema": {
"type": "object",
"properties": {
"trackId": {
"type": "string",
"description": "ID of the audio track."
},
"startT": {
"type": "number",
"description": "Timeline start offset in seconds."
}
},
"required": [
"trackId",
"startT"
]
},
"page": "/"
}get_director_guidelinesAnswer
Returns the authoritative Video Director reasoning playbook: multimodal heuristics, zoom scales, text overlay rules (no emojis), keepouts, the staleness contract, and the autonomous decision tree for vague requests like 'edit the reaction video'.
View tool JSON
{
"name": "get_director_guidelines",
"kind": "answer",
"impl": "imperative",
"description": "Returns the authoritative Video Director reasoning playbook: multimodal heuristics, zoom scales, text overlay rules (no emojis), keepouts, the staleness contract, and the autonomous decision tree for vague requests like 'edit the reaction video'.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}get_video_summaryAnswer
Returns the complete semantic summary of the loaded video in CURRENT TIMELINE seconds: transcript phrases, scene breakdown, silence intervals, dead air, facecam corner, and the Director Playbook. Call this to understand the video before editing; call generate_captions first if the transcript is missing.
View tool JSON
{
"name": "get_video_summary",
"kind": "answer",
"impl": "imperative",
"description": "Returns the complete semantic summary of the loaded video in CURRENT TIMELINE seconds: transcript phrases, scene breakdown, silence intervals, dead air, facecam corner, and the Director Playbook. Call this to understand the video before editing; call generate_captions first if the transcript is missing.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}get_scene_detailAnswer
Lazy drill-down: returns raw click coordinates, bounding box, and word-level timestamps for a single scene. Windows are in CURRENT TIMELINE seconds.
View tool JSON
{
"name": "get_scene_detail",
"kind": "answer",
"impl": "imperative",
"description": "Lazy drill-down: returns raw click coordinates, bounding box, and word-level timestamps for a single scene. Windows are in CURRENT TIMELINE seconds.",
"inputSchema": {
"type": "object",
"properties": {
"sceneId": {
"type": "number",
"description": "Scene index"
}
},
"required": [
"sceneId"
]
},
"page": "/"
}probe_framesAction
Samples video frames at timeline timestamps: returns deterministic feature summaries and base64 snapshot images with an optional A1..C3 alphanumeric 3x3 grid for visual grounding. Snapshot rendering can take seconds on long recordings — request only the timestamps you need and set includeSnapshot:false when you only need features. Use the grid cells to reference screen regions in locate_visual_target. Timestamps are CURRENT TIMELINE seconds.
View tool JSON
{
"name": "probe_frames",
"kind": "act",
"impl": "imperative",
"description": "Samples video frames at timeline timestamps: returns deterministic feature summaries and base64 snapshot images with an optional A1..C3 alphanumeric 3x3 grid for visual grounding. Snapshot rendering can take seconds on long recordings — request only the timestamps you need and set includeSnapshot:false when you only need features. Use the grid cells to reference screen regions in locate_visual_target. Timestamps are CURRENT TIMELINE seconds.",
"inputSchema": {
"type": "object",
"properties": {
"timestamps": {
"type": "array",
"items": {
"type": "number"
},
"description": "List of timeline timestamps to query"
},
"includeSnapshot": {
"type": "boolean",
"description": "Whether to generate base64 image snapshots for visual inspection (default: true)"
},
"gridOverlay": {
"type": "boolean",
"description": "Whether to overlay a 3x3 alphanumeric grid (A1..C3) on the snapshot (default: true)"
}
},
"required": [
"timestamps"
]
},
"page": "/"
}locate_visual_targetAction
Grounds a visual target into a safe zoom focal point via a 3-tier hierarchy: (1) click telemetry near the timestamp (confidence 1.0), (2) parse VLM output — Gemini-style 0-1000 bbox, 3x3 grid cell (A1..C3), or normalized x/y — from probe_frames snapshots, (3) fallback center with guidance. Timestamps are CURRENT TIMELINE seconds.
View tool JSON
{
"name": "locate_visual_target",
"kind": "act",
"impl": "imperative",
"description": "Grounds a visual target into a safe zoom focal point via a 3-tier hierarchy: (1) click telemetry near the timestamp (confidence 1.0), (2) parse VLM output — Gemini-style 0-1000 bbox, 3x3 grid cell (A1..C3), or normalized x/y — from probe_frames snapshots, (3) fallback center with guidance. Timestamps are CURRENT TIMELINE seconds.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Target element description, e.g. 'elephant' or 'search bar'"
},
"timestamp": {
"type": "number",
"description": "Timeline timestamp to search in"
},
"scale": {
"type": "number",
"description": "Desired zoom depth (default: 2.2)"
},
"vlmOutput": {
"type": "string",
"description": "Raw VLM response containing bbox or grid cell (if already called)"
}
},
"required": [
"query",
"timestamp"
]
},
"page": "/"
}propose_editsAction
The main editing tool: applies one atomic batch of edit ops in a single call. STAGE BASELINE (automatic): every batch applies the signature look — gradient backdrop, 28px stage padding, 16px rounded frame corners — unless the batch carries its own {op:'bg'}. ZOOMS PERSIST: zoom windows auto-extend until the next scene boundary or a sustained cursor move to a different region (minimum 4s hold). Ops (times in CURRENT TIMELINE seconds): {op:'cut', t0, t1} removes the exact window — the deterministic form, pass the intervals from get_silence_intervals; {op:'cut', t, dropSilence:true} expands t to the matching silence interval; a cut without a window or matching silence is REJECTED, never silently skipped. Also: {op:'zoom', t0, t1, cx?, cy?, scale?, ease?}; {op:'text', t, text, pos?:'top'|'bottom'|'center', dur?, fontSize?, fontWeight?, color?, backgroundColor?, animation?}; {op:'cam', corner:'tl'|'tr'|'bl'|'br', shape?, size?}; {op:'bg', kind:'solid'|'gradient', c0, c1?}; {op:'trans', at, kind, dur?}; {op:'speed', t0, t1, mult}. mode 'replace' clears prior agent zooms/overlays but NEVER Whisper captions. MANDATORY RULES: (1) NO emojis in text. (2) Multi-stage sequential pans (1.6x-1.8x) for long content. (3) Invert overlay position vs zoom half. (4) Verify targets via probe_frames, not a parked cursor. AFTER CUTS: the response sets cutsApplied and timelineShifted — re-ingest get_project_state + get_transcript before any further op batch. CHECK rejectedOps: a rejected cut means dead air was NOT removed.
View tool JSON
{
"name": "propose_edits",
"kind": "act",
"impl": "imperative",
"description": "The main editing tool: applies one atomic batch of edit ops in a single call. STAGE BASELINE (automatic): every batch applies the signature look — gradient backdrop, 28px stage padding, 16px rounded frame corners — unless the batch carries its own {op:'bg'}. ZOOMS PERSIST: zoom windows auto-extend until the next scene boundary or a sustained cursor move to a different region (minimum 4s hold). Ops (times in CURRENT TIMELINE seconds): {op:'cut', t0, t1} removes the exact window — the deterministic form, pass the intervals from get_silence_intervals; {op:'cut', t, dropSilence:true} expands t to the matching silence interval; a cut without a window or matching silence is REJECTED, never silently skipped. Also: {op:'zoom', t0, t1, cx?, cy?, scale?, ease?}; {op:'text', t, text, pos?:'top'|'bottom'|'center', dur?, fontSize?, fontWeight?, color?, backgroundColor?, animation?}; {op:'cam', corner:'tl'|'tr'|'bl'|'br', shape?, size?}; {op:'bg', kind:'solid'|'gradient', c0, c1?}; {op:'trans', at, kind, dur?}; {op:'speed', t0, t1, mult}. mode 'replace' clears prior agent zooms/overlays but NEVER Whisper captions. MANDATORY RULES: (1) NO emojis in text. (2) Multi-stage sequential pans (1.6x-1.8x) for long content. (3) Invert overlay position vs zoom half. (4) Verify targets via probe_frames, not a parked cursor. AFTER CUTS: the response sets cutsApplied and timelineShifted — re-ingest get_project_state + get_transcript before any further op batch. CHECK rejectedOps: a rejected cut means dead air was NOT removed.",
"inputSchema": {
"type": "object",
"properties": {
"ops": {
"type": "array",
"description": "Array of EditOp objects (see description for the exact shapes)",
"items": {
"type": "object"
}
},
"plan": {
"type": "string",
"description": "Concise explanation of your editorial strategy"
},
"mode": {
"type": "string",
"enum": [
"replace",
"append"
],
"description": "replace (default) or append"
}
},
"required": [
"ops"
]
},
"page": "/"
}commit_staged_changesAction
Commits ALL staged ghost proposals (from propose_zoom_points, add_text_overlay, set_background, generate_captions) permanently. Shows the staged diff dialog for human confirmation. Edits already applied via propose_edits need no commit.
View tool JSON
{
"name": "commit_staged_changes",
"kind": "act",
"impl": "imperative",
"description": "Commits ALL staged ghost proposals (from propose_zoom_points, add_text_overlay, set_background, generate_captions) permanently. Shows the staged diff dialog for human confirmation. Edits already applied via propose_edits need no commit.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}discard_staged_changesAction
Clears all pending ghost edit proposals without modifying the committed project.
View tool JSON
{
"name": "discard_staged_changes",
"kind": "act",
"impl": "imperative",
"description": "Clears all pending ghost edit proposals without modifying the committed project.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}cloud_transcribeAction
Transcribes project audio using Cloud Whisper Large v3 with word timestamps (Requires Pro or BYOK). Prefer generate_captions first — it both transcribes and stages caption overlays.
View tool JSON
{
"name": "cloud_transcribe",
"kind": "act",
"impl": "imperative",
"description": "Transcribes project audio using Cloud Whisper Large v3 with word timestamps (Requires Pro or BYOK). Prefer generate_captions first — it both transcribes and stages caption overlays.",
"inputSchema": {
"type": "object",
"properties": {
"language": {
"type": "string",
"description": "Optional ISO language code (e.g. 'en')"
}
}
},
"page": "/"
}ai_auto_directorAction
Hosted 1-click auto-director: sends the video digest to a cloud model (Claude Haiku / Gemini Flash) which returns a full edit plan, applied via the same snapping pipeline as propose_edits (Requires Pro or BYOK). Air-gapped mode blocks it — use the local tool pipeline instead.
View tool JSON
{
"name": "ai_auto_director",
"kind": "act",
"impl": "imperative",
"description": "Hosted 1-click auto-director: sends the video digest to a cloud model (Claude Haiku / Gemini Flash) which returns a full edit plan, applied via the same snapping pipeline as propose_edits (Requires Pro or BYOK). Air-gapped mode blocks it — use the local tool pipeline instead.",
"inputSchema": {
"type": "object",
"properties": {
"instruction": {
"type": "string",
"description": "Optional user creative guidance"
}
}
},
"page": "/"
}