← WebMCP Directory

Tool tree

rough-cut.samarthsaxena1672003.workers.dev

Media & Personal
https://rough-cut.samarthsaxena1672003.workers.dev/
A human-first video editor with structured WebMCP tools for any compatible agent.
Explore capabilities

Tools verified

page: /

request_video_uploadAction

Focus and highlight the source-video upload control so the human can click it and choose one local video. Returns human_action_required because browser security requires a user gesture.

View tool JSON
{
  "name": "request_video_upload",
  "kind": "act",
  "impl": "imperative",
  "description": "Focus and highlight the source-video upload control so the human can click it and choose one local video. Returns human_action_required because browser security requires a user gesture.",
  "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
  },
  "page": "/"
}

page: /editor/demo

get_project_stateAnswer

Read the active project version, duration, ordered clips, transitions, protected ranges, captions, caption style, overlays, background music and B-roll markers. Call before editing.

View tool JSON
{
  "name": "get_project_state",
  "kind": "answer",
  "impl": "imperative",
  "description": "Read the active project version, duration, ordered clips, transitions, protected ranges, captions, caption style, overlays, background music and B-roll markers. Call before editing.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  },
  "page": "/editor/demo"
}
get_activityAnswer

Read a paginated page of recent human, agent and system project activity.

View tool JSON
{
  "name": "get_activity",
  "kind": "answer",
  "impl": "imperative",
  "description": "Read a paginated page of recent human, agent and system project activity.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "offset": {
        "type": "integer",
        "minimum": 0
      },
      "limit": {
        "type": "integer",
        "minimum": 1,
        "maximum": 100
      }
    },
    "required": [],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
rename_projectAction

Change the persisted project name used by the editor and default exports.

View tool JSON
{
  "name": "rename_project",
  "kind": "act",
  "impl": "imperative",
  "description": "Change the persisted project name used by the editor and default exports.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "name": {
        "type": "string",
        "description": "New project name"
      }
    },
    "required": [
      "expected_version",
      "name"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
get_transcriptAnswer

Read a page of word-timestamped transcript for the active source video.

View tool JSON
{
  "name": "get_transcript",
  "kind": "answer",
  "impl": "imperative",
  "description": "Read a page of word-timestamped transcript for the active source video.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "offset": {
        "type": "number",
        "description": "Zero-based word offset",
        "minimum": 0
      },
      "limit": {
        "type": "integer",
        "minimum": 1,
        "maximum": 500,
        "description": "Words to return"
      }
    },
    "required": [],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
search_transcriptAnswer

Find transcript words matching text and return surrounding word-timestamped context.

View tool JSON
{
  "name": "search_transcript",
  "kind": "answer",
  "impl": "imperative",
  "description": "Find transcript words matching text and return surrounding word-timestamped context.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "query": {
        "type": "string",
        "description": "Text to find"
      },
      "limit": {
        "type": "integer",
        "minimum": 1,
        "maximum": 50
      }
    },
    "required": [
      "query"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
inspect_frameAnswer

Seek the visible editor to a timeline time and return the displayed frame as JPEG data with its exact time.

View tool JSON
{
  "name": "inspect_frame",
  "kind": "answer",
  "impl": "imperative",
  "description": "Seek the visible editor to a timeline time and return the displayed frame as JPEG data with its exact time.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "timeline_ms": {
        "type": "number",
        "description": "Timeline position in milliseconds",
        "minimum": 0
      }
    },
    "required": [],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
detect_silencesAnswer

Analyze source audio with FFmpeg and return candidate silent source ranges. This does not edit the timeline.

View tool JSON
{
  "name": "detect_silences",
  "kind": "answer",
  "impl": "imperative",
  "description": "Analyze source audio with FFmpeg and return candidate silent source ranges. This does not edit the timeline.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "threshold_db": {
        "type": "number",
        "minimum": -60,
        "maximum": -10
      },
      "minimum_ms": {
        "type": "number",
        "minimum": 100,
        "maximum": 5000
      }
    },
    "required": [],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
transcribe_videoAction

Transcribe the source video with Cloudflare Whisper and save word timestamps. This may take several minutes.

View tool JSON
{
  "name": "transcribe_video",
  "kind": "act",
  "impl": "imperative",
  "description": "Transcribe the source video with Cloudflare Whisper and save word timestamps. This may take several minutes.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      }
    },
    "required": [
      "expected_version"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
split_clipAction

Split one timeline clip at an exact source-media time.

View tool JSON
{
  "name": "split_clip",
  "kind": "act",
  "impl": "imperative",
  "description": "Split one timeline clip at an exact source-media time.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "clip_id": {
        "type": "string",
        "description": "Clip ID from get_project_state"
      },
      "source_ms": {
        "type": "number",
        "description": "Source-media split time in milliseconds",
        "minimum": 0
      }
    },
    "required": [
      "expected_version",
      "clip_id",
      "source_ms"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
split_textAction

Split one caption or text-overlay clip at an exact timeline time.

View tool JSON
{
  "name": "split_text",
  "kind": "act",
  "impl": "imperative",
  "description": "Split one caption or text-overlay clip at an exact timeline time.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "kind": {
        "type": "string",
        "enum": [
          "caption",
          "overlay"
        ]
      },
      "item_id": {
        "type": "string",
        "description": "Caption or overlay ID"
      },
      "timeline_ms": {
        "type": "number",
        "description": "Timeline split position",
        "minimum": 0
      }
    },
    "required": [
      "expected_version",
      "kind",
      "item_id",
      "timeline_ms"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
split_background_musicAction

Split one non-looping A2 music clip at an exact timeline time.

View tool JSON
{
  "name": "split_background_music",
  "kind": "act",
  "impl": "imperative",
  "description": "Split one non-looping A2 music clip at an exact timeline time.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "clip_id": {
        "type": "string",
        "description": "Music clip ID"
      },
      "timeline_ms": {
        "type": "number",
        "description": "Timeline split position",
        "minimum": 0
      }
    },
    "required": [
      "expected_version",
      "clip_id",
      "timeline_ms"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
trim_clipAction

Set a clip's source in and out points without rippling later clips.

View tool JSON
{
  "name": "trim_clip",
  "kind": "act",
  "impl": "imperative",
  "description": "Set a clip's source in and out points without rippling later clips.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "clip_id": {
        "type": "string",
        "description": "Clip ID"
      },
      "source_in_ms": {
        "type": "number",
        "description": "New source in",
        "minimum": 0
      },
      "source_out_ms": {
        "type": "number",
        "description": "New source out",
        "minimum": 0
      }
    },
    "required": [
      "expected_version",
      "clip_id",
      "source_in_ms",
      "source_out_ms"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
delete_clipAction

Delete one entire clip. By default its timeline gap remains; set ripple true to close the removed clip's span. Protected source ranges are rejected.

View tool JSON
{
  "name": "delete_clip",
  "kind": "act",
  "impl": "imperative",
  "description": "Delete one entire clip. By default its timeline gap remains; set ripple true to close the removed clip's span. Protected source ranges are rejected.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "clip_id": {
        "type": "string",
        "description": "Clip ID"
      },
      "ripple": {
        "type": "boolean",
        "description": "Shift later clips left to close the removed span"
      }
    },
    "required": [
      "expected_version",
      "clip_id"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
remove_segmentsAction

Remove one or more source-media ranges from every matching clip. Protected ranges are rejected.

View tool JSON
{
  "name": "remove_segments",
  "kind": "act",
  "impl": "imperative",
  "description": "Remove one or more source-media ranges from every matching clip. Protected ranges are rejected.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "ranges": {
        "type": "array",
        "minItems": 1,
        "items": {
          "type": "object",
          "properties": {
            "start_ms": {
              "type": "number",
              "description": "Start",
              "minimum": 0
            },
            "end_ms": {
              "type": "number",
              "description": "End",
              "minimum": 0
            }
          },
          "required": [
            "start_ms",
            "end_ms"
          ],
          "additionalProperties": false
        }
      }
    },
    "required": [
      "expected_version",
      "ranges"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
reorder_clipsAction

Replace timeline clip order atomically and pack clips together without gaps. Include every current clip ID exactly once.

View tool JSON
{
  "name": "reorder_clips",
  "kind": "act",
  "impl": "imperative",
  "description": "Replace timeline clip order atomically and pack clips together without gaps. Include every current clip ID exactly once.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "clip_ids": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "minItems": 1
      }
    },
    "required": [
      "expected_version",
      "clip_ids"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
move_clipAction

Move a linked video/audio clip to an explicit timeline position. Clips cannot overlap.

View tool JSON
{
  "name": "move_clip",
  "kind": "act",
  "impl": "imperative",
  "description": "Move a linked video/audio clip to an explicit timeline position. Clips cannot overlap.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "clip_id": {
        "type": "string",
        "description": "Clip ID"
      },
      "timeline_start_ms": {
        "type": "number",
        "description": "Timeline start in milliseconds",
        "minimum": 0
      }
    },
    "required": [
      "expected_version",
      "clip_id",
      "timeline_start_ms"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
adjust_clipAction

Adjust a clip's color, X/Y zoom and pan, volume, mute state, speed or edge fades. Omitted properties remain unchanged.

View tool JSON
{
  "name": "adjust_clip",
  "kind": "act",
  "impl": "imperative",
  "description": "Adjust a clip's color, X/Y zoom and pan, volume, mute state, speed or edge fades. Omitted properties remain unchanged.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "clip_id": {
        "type": "string",
        "description": "Clip ID"
      },
      "brightness": {
        "type": "number",
        "minimum": -1,
        "maximum": 1
      },
      "contrast": {
        "type": "number",
        "minimum": 0,
        "maximum": 2
      },
      "saturation": {
        "type": "number",
        "minimum": 0,
        "maximum": 3
      },
      "hue": {
        "type": "number",
        "minimum": -180,
        "maximum": 180
      },
      "scale_x": {
        "type": "number",
        "minimum": 0.25,
        "maximum": 4
      },
      "scale_y": {
        "type": "number",
        "minimum": 0.25,
        "maximum": 4
      },
      "position_x": {
        "type": "number",
        "minimum": -100,
        "maximum": 100
      },
      "position_y": {
        "type": "number",
        "minimum": -100,
        "maximum": 100
      },
      "volume": {
        "type": "number",
        "minimum": 0,
        "maximum": 5
      },
      "muted": {
        "type": "boolean"
      },
      "speed": {
        "type": "number",
        "minimum": 0.5,
        "maximum": 2
      },
      "fade_in_ms": {
        "type": "number",
        "description": "Fade-in duration",
        "minimum": 0
      },
      "fade_out_ms": {
        "type": "number",
        "description": "Fade-out duration",
        "minimum": 0
      }
    },
    "required": [
      "expected_version",
      "clip_id"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
set_transitionAction

Set the transition from one clip into the next: cut, crossfade or fade-black.

View tool JSON
{
  "name": "set_transition",
  "kind": "act",
  "impl": "imperative",
  "description": "Set the transition from one clip into the next: cut, crossfade or fade-black.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "clip_id": {
        "type": "string",
        "description": "Outgoing clip ID"
      },
      "type": {
        "type": "string",
        "enum": [
          "cut",
          "crossfade",
          "fade-black"
        ]
      },
      "duration_ms": {
        "type": "number",
        "description": "Transition duration",
        "minimum": 0
      }
    },
    "required": [
      "expected_version",
      "clip_id",
      "type"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
set_captionsAction

Replace captions with timed timeline text cues.

View tool JSON
{
  "name": "set_captions",
  "kind": "act",
  "impl": "imperative",
  "description": "Replace captions with timed timeline text cues.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "captions": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "text": {
              "type": "string",
              "description": "Caption"
            },
            "start_ms": {
              "type": "number",
              "description": "Timeline start",
              "minimum": 0
            },
            "end_ms": {
              "type": "number",
              "description": "Timeline end",
              "minimum": 0
            },
            "position": {
              "type": "string",
              "enum": [
                "top",
                "center",
                "bottom"
              ]
            }
          },
          "required": [
            "text",
            "start_ms",
            "end_ms"
          ],
          "additionalProperties": false
        }
      }
    },
    "required": [
      "expected_version",
      "captions"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
resync_captionsAction

Rebuild captions from the saved word-timestamped transcript and current clip layout without running transcription again. This replaces current captions.

View tool JSON
{
  "name": "resync_captions",
  "kind": "act",
  "impl": "imperative",
  "description": "Rebuild captions from the saved word-timestamped transcript and current clip layout without running transcription again. This replaces current captions.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      }
    },
    "required": [
      "expected_version"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
add_captionAction

Add one positioned caption without replacing existing captions.

View tool JSON
{
  "name": "add_caption",
  "kind": "act",
  "impl": "imperative",
  "description": "Add one positioned caption without replacing existing captions.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "text": {
        "type": "string",
        "description": "Caption text"
      },
      "start_ms": {
        "type": "number",
        "description": "Timeline start",
        "minimum": 0
      },
      "end_ms": {
        "type": "number",
        "description": "Timeline end",
        "minimum": 0
      },
      "position": {
        "type": "string",
        "enum": [
          "top",
          "center",
          "bottom"
        ]
      }
    },
    "required": [
      "expected_version",
      "text",
      "start_ms",
      "end_ms"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
update_captionAction

Edit an existing caption's text, timing or position. Text corrections to generated captions also update their linked transcript words.

View tool JSON
{
  "name": "update_caption",
  "kind": "act",
  "impl": "imperative",
  "description": "Edit an existing caption's text, timing or position. Text corrections to generated captions also update their linked transcript words.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "caption_id": {
        "type": "string",
        "description": "Caption ID"
      },
      "text": {
        "type": "string"
      },
      "start_ms": {
        "type": "number",
        "description": "Timeline start",
        "minimum": 0
      },
      "end_ms": {
        "type": "number",
        "description": "Timeline end",
        "minimum": 0
      },
      "position": {
        "type": "string",
        "enum": [
          "top",
          "center",
          "bottom"
        ]
      }
    },
    "required": [
      "expected_version",
      "caption_id"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
set_caption_styleAction

Set the shared subtitle size, color, background visibility and background opacity.

View tool JSON
{
  "name": "set_caption_style",
  "kind": "act",
  "impl": "imperative",
  "description": "Set the shared subtitle size, color, background visibility and background opacity.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "size": {
        "type": "string",
        "enum": [
          "small",
          "medium",
          "large"
        ]
      },
      "color": {
        "type": "string",
        "enum": [
          "white",
          "yellow",
          "lime"
        ]
      },
      "background": {
        "type": "boolean"
      },
      "background_opacity": {
        "type": "number",
        "minimum": 0,
        "maximum": 1
      }
    },
    "required": [
      "expected_version"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
remove_captionAction

Remove one caption by ID.

View tool JSON
{
  "name": "remove_caption",
  "kind": "act",
  "impl": "imperative",
  "description": "Remove one caption by ID.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "caption_id": {
        "type": "string",
        "description": "Caption ID"
      }
    },
    "required": [
      "expected_version",
      "caption_id"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
add_text_overlayAction

Add a positioned text overlay at timeline timestamps.

View tool JSON
{
  "name": "add_text_overlay",
  "kind": "act",
  "impl": "imperative",
  "description": "Add a positioned text overlay at timeline timestamps.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "text": {
        "type": "string",
        "description": "Overlay text"
      },
      "start_ms": {
        "type": "number",
        "description": "Timeline start",
        "minimum": 0
      },
      "end_ms": {
        "type": "number",
        "description": "Timeline end",
        "minimum": 0
      },
      "position": {
        "type": "string",
        "enum": [
          "top",
          "center",
          "bottom"
        ]
      },
      "font_size": {
        "type": "number",
        "description": "Font size",
        "minimum": 0
      },
      "color": {
        "type": "string",
        "enum": [
          "white",
          "yellow",
          "lime"
        ]
      },
      "background": {
        "type": "boolean"
      }
    },
    "required": [
      "expected_version",
      "text",
      "start_ms",
      "end_ms"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
update_text_overlayAction

Edit an existing text overlay's text, timing or position.

View tool JSON
{
  "name": "update_text_overlay",
  "kind": "act",
  "impl": "imperative",
  "description": "Edit an existing text overlay's text, timing or position.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "overlay_id": {
        "type": "string",
        "description": "Overlay ID"
      },
      "text": {
        "type": "string"
      },
      "start_ms": {
        "type": "number",
        "description": "Timeline start",
        "minimum": 0
      },
      "end_ms": {
        "type": "number",
        "description": "Timeline end",
        "minimum": 0
      },
      "position": {
        "type": "string",
        "enum": [
          "top",
          "center",
          "bottom"
        ]
      },
      "font_size": {
        "type": "number",
        "description": "Font size",
        "minimum": 0
      },
      "color": {
        "type": "string",
        "enum": [
          "white",
          "yellow",
          "lime"
        ]
      },
      "background": {
        "type": "boolean"
      }
    },
    "required": [
      "expected_version",
      "overlay_id"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
remove_text_overlayAction

Remove one text overlay by ID.

View tool JSON
{
  "name": "remove_text_overlay",
  "kind": "act",
  "impl": "imperative",
  "description": "Remove one text overlay by ID.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "overlay_id": {
        "type": "string",
        "description": "Overlay ID"
      }
    },
    "required": [
      "expected_version",
      "overlay_id"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
request_background_music_uploadAction

Switch to the Music tab and highlight the upload control so the human can choose a local audio file. Returns human_action_required because browser security requires a user gesture.

View tool JSON
{
  "name": "request_background_music_upload",
  "kind": "act",
  "impl": "imperative",
  "description": "Switch to the Music tab and highlight the upload control so the human can choose a local audio file. Returns human_action_required because browser security requires a user gesture.",
  "inputSchema": {
    "type": "object",
    "properties": {},
    "required": [],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
adjust_background_musicAction

Adjust the uploaded A2 background-music track. The human must upload the audio asset first.

View tool JSON
{
  "name": "adjust_background_music",
  "kind": "act",
  "impl": "imperative",
  "description": "Adjust the uploaded A2 background-music track. The human must upload the audio asset first.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "clip_id": {
        "type": "string",
        "description": "Music clip ID"
      },
      "timeline_start_ms": {
        "type": "number",
        "description": "Timeline start",
        "minimum": 0
      },
      "source_in_ms": {
        "type": "number",
        "description": "Music source in",
        "minimum": 0
      },
      "source_out_ms": {
        "type": "number",
        "description": "Music source out",
        "minimum": 0
      },
      "speed": {
        "type": "number",
        "minimum": 0.5,
        "maximum": 2
      },
      "volume": {
        "type": "number",
        "minimum": 0,
        "maximum": 5
      },
      "muted": {
        "type": "boolean"
      },
      "fade_in_ms": {
        "type": "number",
        "description": "Fade in",
        "minimum": 0
      },
      "fade_out_ms": {
        "type": "number",
        "description": "Fade out",
        "minimum": 0
      },
      "loop": {
        "type": "boolean"
      }
    },
    "required": [
      "expected_version",
      "clip_id"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
remove_background_musicAction

Remove one A2 background-music clip. Set ripple true to close the resulting A2 gap.

View tool JSON
{
  "name": "remove_background_music",
  "kind": "act",
  "impl": "imperative",
  "description": "Remove one A2 background-music clip. Set ripple true to close the resulting A2 gap.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "clip_id": {
        "type": "string",
        "description": "Music clip ID"
      },
      "ripple": {
        "type": "boolean"
      }
    },
    "required": [
      "expected_version",
      "clip_id"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
protect_segmentAction

Protect a source range so later destructive edits cannot remove it.

View tool JSON
{
  "name": "protect_segment",
  "kind": "act",
  "impl": "imperative",
  "description": "Protect a source range so later destructive edits cannot remove it.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "start_ms": {
        "type": "number",
        "description": "Source start",
        "minimum": 0
      },
      "end_ms": {
        "type": "number",
        "description": "Source end",
        "minimum": 0
      },
      "label": {
        "type": "string",
        "description": "Why this must remain"
      }
    },
    "required": [
      "expected_version",
      "start_ms",
      "end_ms",
      "label"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
unprotect_segmentAction

Remove protection from a source range by ID.

View tool JSON
{
  "name": "unprotect_segment",
  "kind": "act",
  "impl": "imperative",
  "description": "Remove protection from a source range by ID.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "range_id": {
        "type": "string",
        "description": "Protected range ID"
      }
    },
    "required": [
      "expected_version",
      "range_id"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
mark_brollAction

Attach a B-roll brief to a spoken source range without generating footage.

View tool JSON
{
  "name": "mark_broll",
  "kind": "act",
  "impl": "imperative",
  "description": "Attach a B-roll brief to a spoken source range without generating footage.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "start_ms": {
        "type": "number",
        "description": "Source start",
        "minimum": 0
      },
      "end_ms": {
        "type": "number",
        "description": "Source end",
        "minimum": 0
      },
      "brief": {
        "type": "string",
        "description": "Visual brief"
      }
    },
    "required": [
      "expected_version",
      "start_ms",
      "end_ms",
      "brief"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
remove_brollAction

Remove one B-roll marker by ID.

View tool JSON
{
  "name": "remove_broll",
  "kind": "act",
  "impl": "imperative",
  "description": "Remove one B-roll marker by ID.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      },
      "marker_id": {
        "type": "string",
        "description": "B-roll marker ID"
      }
    },
    "required": [
      "expected_version",
      "marker_id"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
undoAction

Undo the latest reversible timeline edit.

View tool JSON
{
  "name": "undo",
  "kind": "act",
  "impl": "imperative",
  "description": "Undo the latest reversible timeline edit.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      }
    },
    "required": [
      "expected_version"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
redoAction

Redo the latest undone timeline edit.

View tool JSON
{
  "name": "redo",
  "kind": "act",
  "impl": "imperative",
  "description": "Redo the latest undone timeline edit.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "expected_version": {
        "type": "integer",
        "minimum": 0,
        "description": "Project version returned by get_project_state"
      }
    },
    "required": [
      "expected_version"
    ],
    "additionalProperties": false
  },
  "page": "/editor/demo"
}
export_mp4Action

Render the current project as an MP4. When rendering completes, a highlighted Download MP4 button appears in the editor; ask the human to click it because browser security requires a trusted user gesture to save the file.

View tool JSON
{
  "name": "export_mp4",
  "kind": "act",
  "impl": "imperative",
  "description": "Render the current project as an MP4. When rendering completes, a highlighted Download MP4 button appears in the editor; ask the human to click it because browser security requires a trusted user gesture to save the file.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  },
  "page": "/editor/demo"
}
export_edlAction

Generate and download a CMX3600-style EDL for the current cut.

View tool JSON
{
  "name": "export_edl",
  "kind": "act",
  "impl": "imperative",
  "description": "Generate and download a CMX3600-style EDL for the current cut.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  },
  "page": "/editor/demo"
}
export_srtAction

Generate and download an SRT subtitle file from the current captions.

View tool JSON
{
  "name": "export_srt",
  "kind": "act",
  "impl": "imperative",
  "description": "Generate and download an SRT subtitle file from the current captions.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  },
  "page": "/editor/demo"
}