MCP server
cuttingfloor
io.github.Mvp2o-ai/cuttingfloor
Checked 26 Oct 2026, 08:29 UTC · Connected to it and listed its tools
Video editing for AI agents: cuts, captions, audio, motion graphics, previews, and exports.
Working at last checkAbout 33,450 tokens per request once connected71 tools
https://api.cuttingfloor.ai/mcp
At a glance
- Type
- MCP server
- Publisher
- Not verified
- Status
- Working at last check
- Tools
- 71
- Token cost
- About 33,450 tokens per request
- Sets up in
- Claude Code, Claude Desktop, Codex, Gemini CLI, Cursor, VS Code, Antigravity, ChatGPT, OpenAI API, Grok
- Last checked
- 26 Oct 2026, 08:29 UTC
Connect it to your agent
Opens the app, which shows the server and asks you to confirm. For other apps, copy the setup below.
Claude Code
claude mcp add --transport http cuttingfloor https://api.cuttingfloor.ai/mcp
Claude Desktop
Settings → Connectors → Add custom connector, and paste the URL.
Codex (config.toml)
[mcp_servers.cuttingfloor] url = "https://api.cuttingfloor.ai/mcp"
Gemini CLI
{"mcpServers":{"cuttingfloor":{"httpUrl":"https://api.cuttingfloor.ai/mcp"}}}
Cursor
{"mcpServers":{"cuttingfloor":{"url":"https://api.cuttingfloor.ai/mcp"}}}
VS Code
{"servers":{"cuttingfloor":{"type":"http","url":"https://api.cuttingfloor.ai/mcp"}}}
Antigravity
agy mcp add cuttingfloor https://api.cuttingfloor.ai/mcp
ChatGPT
Settings → Apps & Connectors → Advanced settings: turn on Developer mode, then Create a connector and paste the URL. Which plans can do this varies.
OpenAI API (Responses tools)
{"type":"mcp","server_label":"cuttingfloor","server_url":"https://api.cuttingfloor.ai/mcp","require_approval":"always"}
Grok (xAI API tools)
{"type":"mcp","server_label":"cuttingfloor","server_url":"https://api.cuttingfloor.ai/mcp"}
Tools
adjustment.add~265 tokens
An empty clip on a video track whose effects (filter.add with its clip_id) change everything below it while it runs: a colour grade or blur over a stretch of the edit. Returns the edit result (see the server instructions).audio.fade~219 tokens
Fade a clip's sound in from its start and out to its end. null removes a fade. Returns the edit result (see the server instructions).audio.set_gain~374 tokens
Volume of an audio clip (or a video clip's linked audio) in dB; keyframes ride it up and down. The preview is a waveform of the clip with the measured loudness. Returns the edit result (see the server instructions).audio.set_master~264 tokens
Gain (dB) and limiter ceiling on the whole mix. The ceiling caps sample peaks (dBFS); the true peak between samples can land above it, most on dense, bright sound, and qa.check measures it (dBTP). Audio edits preview with the measured loudness. Returns the edit result (see the server instructions).audio.set_pan~193 tokens
Place a clip's sound left (-1) to right (1). Returns the edit result (see the server instructions).caption.add~1284 tokens
Captions on a video track from segments (with optional word timings for highlights), from SRT/VTT text, or in_clip: segments timed in seconds of a clip's media, such as transcript word times, placed where they play. One clip per caption; returns their clip_ids. A style field you leave out takes theclip.add~867 tokens
Place media on the timeline. A/V media lands as a linked pair on a video and an audio track. Default: the whole media, after the last clip, overwriting. A picture is scaled to fit the frame (a small logo fills it edge to edge); clip.set_transform {fit: "none"} keeps its own pixel size. Returns the eclip.freeze~416 tokens
Hold the frame at at_frame for duration_frames: the clip splits there, a freeze frame goes in, and later clips on its tracks move later. Freezing a clip's last frame holds it after the clip, with silence under the hold. Returns the edit result (see the server instructions).clip.link~163 tokens
Make clips move, trim and split together. Returns the edit result (see the server instructions).clip.move~416 tokens
Move a clip (and its linked clips) to a frame and optionally another track. Returns the edit result (see the server instructions).clip.remove~347 tokens
Remove a clip and the clips linked to it; ripple closes the gap. Returns the edit result (see the server instructions).clip.replace~237 tokens
Swap the media in a clip, keeping its place, length, speed and look. Starts at source_in (default 0). Returns the edit result (see the server instructions).clip.roll~210 tokens
Move the cut between a clip and the clip right after it: one gets longer, the other shorter, nothing else moves. Returns the edit result (see the server instructions).clip.set_animation~499 tokens
Entrance, exit and loop presets layered over the clip transform (video://catalog/animations): e.g. in {name: "pop", duration_frames: 12}, loop {name: "float"}. null removes one. Returns the edit result (see the server instructions).clip.set_blend~228 tokens
How a video clip mixes with the tracks below: normal, multiply, screen, overlay and more (video://catalog/blend_modes). Returns the edit result (see the server instructions).clip.set_enabled~170 tokens
A disabled clip stays on the timeline but renders as a gap. Returns the edit result (see the server instructions).clip.set_mask~742 tokens
Show only part of a video clip: rectangle (rounded), ellipse, linear, mirror, heart, star or polygon, with feather and invert. Position, size, rotation and feather animate like transform values. null removes the mask. Returns the edit result (see the server instructions).clip.set_speed~598 tokens
Speed up, slow down, ramp or reverse a clip and its linked clips. rate is constant; curve is a speed ramp over the clip. The clip keeps its source and its length changes; ripple (default) moves later clips. Pitch is kept unless preserve_pitch is false. Returns the edit result (see the server instrucclip.set_transform~983 tokens
Position, scale, rotate, fade, flip, crop or fit a video clip over the tracks below (picture-in-picture, overlays, punch-ins). fit none shows a graphic at its own pixel size, so scale 1 is its real size; the default contain scales it to touch the frame edges. Any number takes a constant or {keyframeclip.slide~188 tokens
Move a clip between its neighbours: the clip before it and the clip after it change length so nothing else moves. Returns the edit result (see the server instructions).clip.slip~196 tokens
Show earlier or later source in a clip without moving or resizing it. Returns the edit result (see the server instructions).clip.split~170 tokens
Cut a clip (and its linked clips) in two at a frame. Returns the edit result (see the server instructions).clip.trim~445 tokens
Move the start or end edge of a clip. side: video or audio trims one half of a link group (J/L cuts). Returns the edit result (see the server instructions).clip.unlink~152 tokens
Break the link group a clip belongs to. Returns the edit result (see the server instructions).create.cutout~292 tokens
A subject without its background, local: ProRes 4444 with alpha and the sound, or a PNG, to lay over a new background. subject any (BiRefNet) cuts out products, animals or objects; people (MODNet) is fast enough for long video. Long-running: a task, or {job_id, media_id} for job.get.create.lipsync~966 tokens
Make a person on camera say different words: their mouth is redrawn to match the speech you give (a re-recorded line, a create.voiceover, a word taken from elsewhere in the take). Runs at the user's lip-sync provider on their own key (sync. labs), and the provider bills them for each second sent. Tocreate.matte~284 tokens
A solid or gradient picture (PNG, any length on a timeline): backgrounds, slugs, colour washes with clip.set_blend. Gradients work like CSS: angle 180 runs top to bottom; radial reaches the corners; colours may carry alpha (#RRGGBBAA). Long-running like every create.* tool, but quick.create.motion~609 tokens
Render animated HTML to a video with alpha, frame-exactly: lower thirds, animated titles, callouts, logo stings, kinetic type, generated graphics. Place the media_id with clip.add on a track above the video. Up to 60 s, and width × height × fps × seconds up to 30 s of 1080p30. Runs in the sandbox: ncreate.stabilized~421 tokens
A steadied copy of shaky video, local (vid.stab): one pass measures the camera shake over the whole media, a second moves each frame against a smoothed camera path. New media, ProRes with the sound, to put on the timeline in place of the shaky clip (clip.replace keeps its place and timing). Long-runcreate.stems~508 tokens
The sound of a video or audio file pulled apart into stems, each new audio media for clip.add: vocals (voices, spoken or sung), drums, bass, other (everything else: guitars, keys, effects, room noise) and no_vocals (all but the voice, in one file). Laid together at the same time, the four stems makecreate.still~436 tokens
Render an HTML page to a PNG: title and end cards, thumbnails, overlays, designed text. Transparent where nothing is painted. Capture waits for fonts, and for window.__ready if the page sets it to a promise (up to 10 s). Runs in the sandbox: no network (inline everything, load libraries from lib/; acreate.voiceover~322 tokens
English text spoken by a natural voice (Kokoro, local; the model downloads once) as WAV media. words (default) times each word into the media transcript (media.get include transcript). Long-running: a task, or {job_id, media_id} for job.get.edit.batch~461 tokens
Apply many edits as one change: one new timeline_id, one preview. All apply or none do. Use {"$ref":"ops[N].clip_id"} (or track_id, clip_ids[M]) to use an id an earlier op made. Returns the edit result plus results: [{tool, clip_id?, clip_ids?, track_id?}] per op.export.timeline~396 tokens
Write the edit for another editor: fcpxml (Final Cut Pro, DaVinci Resolve), otio (Premiere, Resolve, OpenTimelineIO apps), edl (CMX 3600, one video track), or srt/vtt (the captions). Best effort: warnings lists what the format could not carry (masks, blend modes, effects, animated transforms, ramps,export.video~667 tokens
Render the timeline to a file. Presets: web_1080p_h264 (MP4, fits 1920x1080), master_prores_422hq (MOV, sequence size), social_9x16_h264 (9:16 sequences, 1080x1920), web_1080p_av1 (MP4, AV1/Opus), gif (640 px, 15 fps), review_h264 (MP4, fits 854x854 with sound: small and quick, to watch a cut), audifilter.add~344 tokens
Apply an effect from video://catalog/effects (colour, LUT, blur, vignette, chroma key, glitch; EQ, compressor, denoise, pitch and more) to a clip, every clip on a track, or the whole timeline. Number params take keyframes. Returns its id as clip_id. Returns the edit result (see the server instructiofilter.remove~148 tokens
Take an effect off. Returns the edit result (see the server instructions).filter.set~202 tokens
Change an effect's params (merged) or turn it off and on. Returns the edit result (see the server instructions).job.cancel~81 tokens
Stop a running job. Finished jobs are left as they are.job.get~240 tokens
Status, progress and, once completed, the result of long-running calls (media.import, media.analyze, create.*, export.video, qa.check). Same record as tasks/get. status_message says what it is doing, or, while it waits, where it stands in the queue and what it waits for. It answers at once with wherjob.list~75 tokens
Your recent jobs, newest first.judge.ask~1505 tokens
Ask TypeSafe Jev, a fast judgment model (preview), your questions about a state you give, and get typed answers back in about a second. Jev sees exactly the state: each entry under its name, and your questions refer to entries by name in backticks ("in `passage`"). An entry is text (a string, or a Jmedia.analyze~2357 tokens
Find what is in imported media, or in the sound of an edit, as data for edits. transcript: every word with its time (whisper.cpp on the CPU; the model downloads once). For English the word edges are then aligned to the sound (wav2vec2 forced alignment): a word starts and ends within about 0.05 s ofmedia.correlate~753 tokens
Find how far one recording sits from another: the sync offset of b against a, by cross-correlating their sound, with how strongly they match. Use it to line up a camera with a separate microphone, two cameras of the same moment, or a re-recorded line against the original. Each side is imported mediamedia.deleteDeletes data · ~199 tokens
Delete a media for good, so an old or wrong version stops turning up: its file here, proxy, mezzanine and media.analyze results go, and its room comes back to the storage cap. A path import leaves the original in its folder; exports made from it stay. Timelines that use it keep their ids and edits bmedia.get~643 tokens
Status, where it came from (origin: the import source, the export of which timeline_id and preset, or the create.* tool and the media it was made from), a signed download url for the file (media is kept 7 days after last use: save the file from it to keep it, and media.import it again later) and a pmedia.import~1078 tokens
Import the user's own video, audio, image or font to edit with or place as is: probe, fingerprint, conform if needed (VFR, rotation, HDR → BT.709), 540p proxy and integrated loudness. A reference image to recreate needs no import: rebuild it with create.motion or create.still. Long-running: returnsmedia.list~174 tokens
What the user has here: imported and created media, and files they sent that aren't imported yet (through media.upload, or dropped on their account page at cuttingfloor.ai/account), with names, sizes and when each expires, plus the account's storage used and its cap. When the user mentions a file thmedia.listen~994 tokens
Find when something can be heard in a video or audio file, or in an edit as it plays, from what you describe in plain words, so you go straight to it instead of listening to it all: laughter, applause, a cough, a door slamming, a phone ringing, a dog barking, music starting, someone typing, a car pamedia.seek~1355 tokens
Find the moments in a video, or in an edit as it renders, that match what you describe in plain words, so you go straight to them instead of watching it all. Name each criterion and say what a matching frame shows; you get back the stretches of time where each one holds, with the time and picture ofmedia.upload~301 tokens
A signed URL to send one of the user's files to this server, for files on their machine that the server can't read: PUT the file there (curl --fail -T interview.mp4 '<url>'), then media.import {source: {upload_id}}. The URL needs no other credentials and works for a day. A broken upload resumes: HEAqa.check~647 tokens
Measure the rendered timeline: gaps in the picture, offline media, rendered against expected frame count, integrated loudness (LUFS) and true peak (dBTP), plus black and silent stretches when you give their settings. With speech {min_probability}, every cut is listed with speech facts: the speech prrange.extract~274 tokens
Remove everything in a frame range on the given tracks (default all unlocked) and close the gap. For cutting out silences, filler words or mistakes across all tracks at once. Returns the edit result (see the server instructions).range.lift~250 tokens
Remove everything in a frame range on the given tracks (default all unlocked), leaving a gap. Returns the edit result (see the server instructions).render.frames~486 tokens
Look at a timeline (or a media file): up to 16 frames as one contact-sheet image (layout grid) or one image each (single). Media frames are numbered at the media frame rate; a picture that can be see-through (alpha or a palette) is shown over a light checkerboard, so transparency shows as checks andskills.get~116 tokens
The whole skill as Markdown: when to use it, what it needs, numbered Steps naming the tools to call, a decision table and the rules to keep. Follow the Steps in order.skills.search~259 tokens
Find step-by-step instructions for a common job, written for you to follow with these tools: cutting the pauses, ums and restarts out of a talking video, for one. Search in the user's words; every skill comes back best first with its score (roughly 0 to 1). Below 0.1 is unrelated; a real fit usuallytext.set~804 tokens
Change a title's or caption's text, or restyle many at once (clip_ids, or every one on track_id). The style is merged; null turns an outline, shadow, box or highlight off. Highlight modes and fonts: video://catalog/text and video://catalog/fonts. Returns the edit result (see the server instructions)timeline.create~380 tokens
Start an empty timeline. Returns its timeline_id and its tracks (ids for track_id). Timelines are immutable: every edit returns a new timeline_id, and older ids stay valid for 24 hours after last use. For work longer than a day, keep the timeline.get document on your side and restore it with timelintimeline.diff~117 tokens
Which clips, tracks and settings differ between two timelines.timeline.get~142 tokens
The full timeline: tracks, clips (frames, end exclusive), link groups and the media it uses. The server keeps a timeline 24 hours after last use: for work longer than a day, save this document on your side (it is the edit) and restore it with timeline.load.timeline.history~118 tokens
The chain of edits that made this timeline, newest first. To go back, keep using an older timeline_id.timeline.load~1718 tokens
Restore a timeline from the document timeline.get returned, e.g. after it expired (24 h after last use). Its media must still be here: media expires 7 days after last use, so import saved files again with media.import and swap them in with clip.replace.timeline.set_sequence~329 tokens
Change resolution, frame rate or audio format. Clip times are kept in time, so they survive a rate change. Returns the edit result (see the server instructions).title.add~864 tokens
Text on a video track, over the tracks below: styled with font, size, colour, outline, shadow and box, placed by x/y, revealed with a typewriter or word animation. A style field you leave out takes the published default (video://catalog/text: bold white Inter at 9% of the frame height, centred, withtrack.add~179 tokens
Add an empty video or audio track. New video tracks go on top. Returns the edit result (see the server instructions).track.remove~150 tokens
Remove a track and its clips. Returns the edit result (see the server instructions).track.set~194 tokens
Rename, mute (audio), hide (video) or lock a track. Returns the edit result (see the server instructions).transition.add~576 tokens
Transition at the cut after a clip, into the clip that touches it (video://catalog/transitions). Linked audio gets a crossfade at the same cut. kind crossfade is sound only: on a video clip it crossfades the linked audio and the picture cuts hard (use mode handles for that). mode overlap (default) otransition.remove~159 tokens
Remove a transition; the cut becomes a hard cut. Returns the edit result (see the server instructions).transition.set~251 tokens
Change a transition's kind or duration. Returns the edit result (see the server instructions).
Browse
Related MCP servers
- Brix36
Films and music videos. You're the star. No subscription. - PageToVid
Turn any web page into a narrated video: films the real site, writes, voices and captions it - BlitzReels Video Editor
Create, edit, reframe, caption, organize, generate, and export short-form videos with BlitzReels. - CueFrame
Turn footage into finished video: reframing, captions behind the subject, motion graphics, renders. - Clypmint
Edit videos with AI: cuts, captions, B-roll and motion in a style you pick or copy from any video. - Switchapp Switch
Generate, manage and explore your Switch AI image and video library, scoped to your account. - Hermoso
AI marketing agent and AI ad generator: 1035 tools, usable alone. No markup on models. - Frapea
A video editor in your browser that your AI drives: cuts, captions, multicam, motion titles, export.
Badge for your README
[](https://aptlynx.net/servers/io.github.Mvp2o-ai/cuttingfloor)
Listing text is written by the maker; AptLynx lists tools and does not vouch for them. Find another tool · Browse by topic · For agents