# Eziclip MCP server

98 tools that let an agent edit a real video project.

- Hosted (streamable HTTP): `https://mcp.eziclip.com/s/<token>`
- Local (stdio): `npx -y eziclip mcp`

## Plan the edit

- `start_edit_brief` — Step 1 of every edit — returns the intake questions (goal, platform, length, tone, captions, music, inserts, ending, checkpoints; Plus also asks to save as board default) with s…
- `submit_edit_brief` — Save the brief and get a concrete recipe (target length, grade, music, inserts, checkpoints).
- `submit_edit_plan` — Step 2, REQUIRED before any structure cut (keep_time_windows / assemble_from_plan / remove_pauses / cut_source_range / trim / split refuse without it).
- `approve_script` — Only when the brief asked for a script checkpoint: record that the user approved the plan's beats.
- `approve_rough` — Only when the brief asked for a rough checkpoint: record that the user approved the rough cut after get_edit_preview.
- `get_edit_flow_status` — Where you are in the edit flow (brief → plan → [script checkpoint] → structure → [rough checkpoint] → polish → export) and the next required step.

## See the project

- `get_project_digest` — Read the whole project: canvas size/fps, every clip on the timeline (main / overlays / audio / titles) with timings and effects, the media bin, captions state, and the transcrip…
- `get_state` — Quick studio state: the open project, playhead, current selection, running jobs, and whether writes are enabled.
- `list_media` — List the media in the project's bin: id, name, kind, duration, transcript flag, and portable source (Google Drive file id / desktop path) when set — sources sync across devices…
- `get_frame` — Render and return a preview frame at timeline second `t` (defaults to the current playhead) so you can SEE the video.
- `get_filmstrip` — WATCH a video: one contact-sheet image of up to ~20 deduped frames with burned-in timestamps (reading order left→right, top→bottom), sampled across the media's SOURCE time (opti…
- `get_edit_preview` — One image of the CURRENT EDIT — N frames across the timeline (default 6), timestamps burned in.
- `describe_video` — TEXT-ONLY models: this is your eyes.
- `get_visual_map` — See the STRUCTURE of footage without speech (b-roll, sports attempts, montage material) — samples frames along a media's source time and returns scene/cut boundaries plus per-se…
- `get_pose_map` — Body transcript for sports / action — on-device Pose (heavy) over the media's SOURCE time.
- `find_pose_matches` — Find every SOURCE window where the body pose matches the pose at refSrcSec (same media).
- `get_audio` — Return the ACTUAL audio of a media's source window [start,end] as a WAV clip you can listen to — hear exactly what was said, catch a mumble or wrong word, decide a cut by ear.
- `get_audio_levels` — 'Hear' the audio as data: an RMS-energy envelope (one number per `binMs`, default 50ms) plus the detected silent spans over a media's source-time window [start,end].
- `get_mix_audio` — Listen to the MIXED timeline as WAV (≤~12s window).
- `get_beat_map` — Inspect one media's SOURCE tempo grid (BPM, beats, strong beats).
- `get_timeline_beats` — Board beat clock in TIMELINE seconds — union of strong/weak hits from every audio track (same grid the Snap magnet uses).

## Bring media in

- `import_media` — Bring a NEW file the user gave you INTO the project by URL — the browser fetches it, ingests it and (by default) adds it to the timeline.
- `import_media_bytes` — Import media from base64 into the open Studio board (chunked: chunkId + chunkIndex + chunkTotal).
- `convert_media` — Convert a camera-codec library item (ProRes, DNxHD, CineForm, 10-bit 4:2:2 HEVC…) this browser can't decode into an editable H.264+AAC copy.
- `add_to_timeline` — Add a bin media item to the timeline (video/image → main track, audio → an audio track).
- `remove_media_from_project` — Remove a media file from the ACTIVE BOARD (every sheet's library).
- `search_stock_video` — Search free STOCK FOOTAGE.
- `search_stickers` — Search the built-in visual-asset library (Klipy).
- `add_sticker` — Add a hit from search_stickers onto the video.
- `search_audio` — Search the built-in stock sound library (Freesound, CC0-only — safe for any use).
- `add_audio_asset` — Import a track/effect from search_audio (pass its `url`) and lay it on the Music or SFX track.

## Cut and structure

- `remove_pauses` — Cut silences out of a main clip using the real audio waveform (RMS), falling back to transcript gaps when audio can't be decoded.
- `cut_source_range` — Non-destructively cut a source-time range [start,end] in seconds out of a main clip.
- `restore_cuts` — Remove every cut on a main clip (restore the whole clip).
- `nudge_cut_boundary` — Fine-tune one edge of a text-cut join when autocut landed off the real audio.
- `seek_to_word` — Seek the playhead to a SOURCE second on a main clip (and scroll the timeline).
- `review_cut_join` — Review a text-cut join for headless agents: returns join timings + a short mix WAV around the cut + JPEG frames just before/after.
- `trim_clip` — Trim a clip's in or out edge to a source-time value in seconds.
- `split_clip` — Split a clip into two at a source-time point in seconds.
- `reorder_main` — Reorder the main track.
- `remove_clips` — Delete clips by id.
- `move_clip` — Move a clip: { track:'main', index } reorders Video 1; { tlStart } sets absolute timeline start for main (sticker), overlay, audio, or title.
- `assemble_from_plan` — Build the main track from the submitted edit plan in one step: one clip per beat, in order, with that beat's source window.
- `keep_time_windows` — Set keep islands on a main clip in one shot (SET_CLIP_KEEP).
- `suggest_highlight_windows` — Suggest high-confidence sports highlight windows from pose ∪ high-motion scenes.
- `set_clip_speed` — Set constant Speed on a video or audio clip.
- `snap_to_beats` — Snap existing clips onto the board beat grid.
- `arrange_on_beats` — Montage pack: place clipIds in order on successive board beats (default which=strong, beatsPerClip=1).
- `split_on_beats` — Split a main, audio, or overlay clip on the board beat grid (timeline hits from all / filtered audio tracks).

## Captions

- `transcribe` — Transcribe a media item's speech with word-level timings so cut-by-text and captions can work.
- `enable_captions` — Turn burned-in captions on or off for the project.
- `set_caption_source` — Choose which layer's audio drives the captions: 'all', 'main', 'ov:<lane>' or 'tr:<trackId>'.
- `set_caption_style` — Style the captions.
- `set_caption_segment` — Override one caption line's text and/or timing directly (without touching the transcript) — the escape hatch for a single wrong displayed caption.
- `translate_captions` — Show the captions TRANSLATED into another language (in-browser opus-mt; word timings stay the spoken ones).
- `align_captions` — Re-align word timings to the actual audio energy — the fix when karaoke highlights or text-cuts land a beat off (Whisper's timestamps drift).
- `fix_transcript_word` — Correct a word Whisper mis-heard.
- `reclean_transcript` — Re-run transcript cleanup (decoder loops, artifacts, split suffixes, timing clamps, caption line grouping) over the words already recognised — seconds, no re-transcription, fix_…

## Look and sound

- `auto_color` — One-tap colour correction on a clip, analysed from its current frame: white balance voted by near-neutral pixels only (a genuinely golden or blue scene stays that way), exposure…
- `set_color` — Adjust a clip's colour.
- `match_grade` — Copy color + film look from sourceClipId onto target clip ids (stock B-roll matching the plate).
- `copy_props` — Copy ALL properties of sourceClipId onto target clips (the context menu's Copy/Paste properties): a video's framing + speed + color + effects + sound, an audio clip's sound, a t…
- `set_effect` — Set a per-clip effect directly (escape hatch): effect ∈ blur | radialBlur ({ amount: 0-100, softness?: 0-100, shape?: round|edges, x?, y?, stretchX?, stretchY?, size?: 10-200 }…
- `lock_on_point` — CapCut-style Camera tracking: follow a face, full body, or high-contrast custom spot and keep it in frame with a virtual camera (zoom + soft follow).
- `stabilize_clip` — Steady a shaky handheld clip.
- `set_camera_move` — Add a procedural CAMERA MOVE to a clip — the shot gets life without touching the user's own transform or keyframes.
- `set_transform` — Position / scale / rotate / fade a clip (main OR overlay/PiP).
- `animate` — Animate a clip property with keyframes.
- `add_title` — Add a text title at a timeline second (defaults to the playhead).
- `update_title` — Edit an existing title/text clip — `patch` sets text and/or style (fontSizePx, color, align, fontWeight) and/or transform.
- `enhance_audio` — Clean up bad audio on a clip — on-device noise/hiss/hum removal, room echo/reverb removal on spoken voice, + a voice EQ.
- `generate_voice` — Synthesize a voiceover ON-DEVICE and place it on an audio track at the playhead (or the nearest later free gap).
- `mute_track` — Mute or unmute an audio track by trackId (from get_project_digest).
- `set_audio_props` — Set a clip's audio properties (volume/gain, fades, …) — `patch` merges.
- `duck_music` — Lower every Music-track clip by amountDb (default 18) so dialogue stays intelligible.

## Canvas, boards and projects

- `set_format` — Resize the canvas to a social format preset: '16:9', '9:16', '1:1', '4:5' or '4:3'.
- `set_canvas` — Set the canvas width/height/fps/background colour, or previewQuality ('auto' | 'economy' | 'draft' | 'balanced' | 'full' — playback decoder cap; full = original resolution on th…
- `set_doc_name` — Rename the project.
- `list_sheets` — List the project's PAGES (sheets) — id, name, size, clip count, and which is active.
- `create_sheet` — Create a new blank page (sheet) and switch to it — for a fresh variation or a new part of the project.
- `switch_sheet` — Open a page (sheet) by id (from list_sheets), making it the active timeline for subsequent edits.
- `duplicate_sheet` — Duplicate the ACTIVE page into a new sheet, optionally at a new size — the clean way to make a per-format variant (e.g.
- `delete_sheet` — Delete a page (sheet) by id.
- `list_projects` — List the user's PROJECTS (isolated boards) — id, name, page count, and which is active.
- `create_project` — Create a new project (a fresh, empty isolated board) and switch to it.
- `switch_project` — Open a project by id (from list_projects), making its board active for all subsequent edits.
- `rename_project` — Rename a project by id.
- `delete_project` — Delete a project (its whole board and media) by id.

## Export and plan

- `export_video` — Render the project to a file and hand it back to you so you can give it to the user directly in the conversation — no upload, no cloud.
- `get_plan_status` — Read-only: the plan ('free'|'plus'), watermark (never), and the AGENT TASK allowance — limit, used, left, resetAt over a rolling 30 days (null when Plus).

## Control

- `dispatch` — Escape hatch — run ANY studio command directly, so you can do anything the UI can even without a named tool (overlays/PiP, audio, transforms, transitions, caption tweaks, librar…
- `undo` — Undo the last change.
- `redo` — Redo the last undone change.
- `checkpoint` — Save a checkpoint you can roll back to.
- `restore_checkpoint` — Roll the project back to a checkpoint id returned by `checkpoint`.
- `get_guide` — Read the studio's editing doctrine for a topic — how to do it WELL.
- `get_style_profile` — AI board notes + remembered style (Plus).
- `set_style_profile` — Update AI board notes / style (Plus).
