59 tools, and one of them looks at the result.
Frapea is a full video editor with an MCP server in front of it. Point any MCP client at the endpoint below, pair it with the code in the editor header, and your agent has the whole timeline: cutting, captions, multicam, faces, stock footage, narration and animated titles it writes itself.
- Endpoint
- https://app.frapea.com/mcp
- Transport
- Streamable HTTP — JSON over POST
- Auth
- An 8-character code from the editor. No API key, no sign-up.
- Claude Code
- claude mcp add -s user --transport http frapea https://app.frapea.com/mcp
A call that changes the cut
Every pause over 0.6 s inside one clip becomes a ripple delete. Fourteen of them, and the whole thing is a single undo step.
→ remove_silence{ "projectId": "cebu-teaser", "timelineId": "tl_main", "clipId": "clip_04", "minGapSec": 0.6} ← { "ok": true, "cuts": 14 }A call that checks it
The agent composites its own timeline and reads the result back. Frame 512 returns nothing visible and a black fingerprint — so it finds the hole in the edit itself, rather than you finding it on export.
→ inspect_timeline{ "projectId": "cebu-teaser", "timelineId": "tl_main", "frames": [0, 96, 240, 388, 512], "pixels": false} ← { "cells": [ { "label": "f0", "visibleClipIds": ["clip_title", "clip_01"], "fingerprint": { "nonBlankRatio": 0.98 } }, { "label": "f96", "visibleClipIds": ["clip_01"], "fingerprint": { "nonBlankRatio": 0.99 } }, { "label": "f240", "visibleClipIds": ["clip_02", "clip_04"], "fingerprint": { "nonBlankRatio": 0.97 } }, { "label": "f388", "visibleClipIds": ["clip_04"], "fingerprint": { "nonBlankRatio": 0.99 } }, { "label": "f512", "visibleClipIds": [], "fingerprint": { "nonBlankRatio": 0.00 } } ], "note": "Fingerprints only (pixels:false). nonBlankRatio near 0 means an empty or black frame."}01
Can it actually cut, or only suggest?
It cuts. Everything the timeline does is a call an agent can make — blade, ripple, trim, insert, move, retime — and the result is a real edit in a real project, not a plan for one. Eighteen of the fifty-nine tools are here, which is roughly the shape of the job itself.add_clipsPuts footage on the timeline.
insert_clipsDrops something in and pushes the rest right, splitting whatever was under the cut.
split_clipsBlades at a frame.
trim_clipsPulls one edge. Linked audio follows on its own.
move_clipsMoves clips; linked partners come along.
remove_clipsLifts a clip out and leaves the gap.
ripple_delete_rangesTakes a range out and closes the hole behind it.
remove_silenceCuts the dead air between spoken words — the pass that turns an hour of talking head into forty minutes.
remove_wordsDeletes words from the transcript and the picture goes with them. Text-based editing, on any clip with speech.
cut_to_angleMulticam. Switches to another angle at the playhead.
set_clip_propertiesPosition, scale, crop, opacity, blend, speed, volume.
set_keyframesAnimates any of those over time.
manage_transitionsTransitions on cuts, or a single-sided fade on a loose edge.
manage_effectsThe effect stack on a clip, in order, each one switchable.
manage_tracksAdds, removes, locks and reorders tracks.
apply_layoutSplits the frame — side by side, picture in picture, a 2×2 grid.
generate_captionsWord-timed captions from the transcript, styled and animated.
create_timelineA new timeline in the same project.
02
Can it see what it made?
This is the part people do not expect.inspect_timeline renders real frames of the cut and hands them back, so the agent looks at its own work before it claims to be finished — a caption that overflows, a title that lands on the wrong beat, a shot that was black. None of that is knowable from reading the project file, which is why so much automated editing looks automated.inspect_timelineRenders frames of the cut and looks at them.
inspect_mediaLooks inside a source clip before using it.
get_timelineReads the structure back — tracks, clips, timing.
get_mediaThe library, with scene samples for each asset.
get_transcriptWord-level speech, with timings.
search_media“The drone shot over the reef.” Semantic search across everything in the project.
get_analysis_statusHow far the background analysis has got, and what failed.
manage_queueControl of that background work.
get_projectsWhat projects exist on this machine.
03
Where does it get what it doesn't have?
It goes and finds it. Stock footage and photographs, sound effects and ambience, and narration in a voice you pick — sourced, downloaded into the project and cut in, without you opening another tab. Voices are generated on your own machine by default, with no key at all. Stock footage and sounds use your own free Pexels and Freesound keys — the editor asks once and links you straight to them, and a paid premium voice provider is there if you want it.search_stock_mediaSearches Pexels for footage and stills.
download_stock_mediaPulls one into the project.
search_soundsSearches Freesound for effects, ambience and foley.
download_soundBrings one in.
add_sfxThe built-in effects pack — synthesised, licence-free, nothing to download and no key.
generate_voiceoverNarration from a script, in a voice you choose.
list_voiceover_modelsWhich voices are available to it.
organize_mediaRenames, moves and relinks files in the pool.
organize_poolBins and what sits in them.
connect_media_folderAsks you to attach a folder of footage.
04
Who makes the titles?
The agent writes them, as code. A motion composition is an animated graphic — a title, an end card, an infographic — authored as React and dropped into the media pool like any other clip, then dragged onto the timeline. It is the same engine as Motion, living inside the editor: the graphic and the cut share one timeline instead of one being rendered somewhere else and imported.create_motion_compositionWrites a new animated graphic from scratch.
update_motion_compositionEdits one that exists.
get_motion_compositionReads its source back.
list_motion_compositionsWhat is in the project, and which properties you can tweak by hand.
05
What am I doing while it works?
Watching, if you want to.open_project points your tab at the project so the edit happens in front of you, clip by clip. Nothing is hidden and nothing is queued somewhere else — and every step the agent takes is one undo away.open_projectOpens the project in your tab so you can watch.
new_projectStarts one.
close_projectHands the tab back.
set_active_timelineChooses which timeline you are looking at.
set_project_settingsFrame rate, resolution, name.
undoOne step back, as many times as you like.
await_user_actionWaits for you when it needs a decision, instead of guessing.
export_projectRenders the timeline to an MP4 in the project's exports folder. The full codec range — WebM, H.265, VP9, AV1 — is on the export panel, not on this call.
06
Can it follow a person?
One pass over the footage finds every face and stores a separate path for each — position, size and which way the head is turned, frame by frame. Somebody who walks out of shot and comes back is two sightings until you say they are one person, which is a single call. Then a label, a blur or a mask can be stuck to their head and it stays there.track_facesFinds every face in a clip and follows each one.
list_face_tracksWho it found, for how long, and where it lost them.
merge_facesTwo sightings, one person.
bind_faceSticks a clip to a face so it follows the head.
07
How does it know what good looks like?
It reads first.read_skill serves fourteen guides — how to cut at all, then how to cut the thing you asked for, how narration is built, how to prove the cut works before exporting, and the craft of motion. It also carries the creative mandate: how far to run with a one-line brief before coming back to ask. An agent that only knows the API produces something that renders correctly and looks made by a machine, and that difference is most of what this layer is for.read_skillFourteen guides: craft, formats, voiceover, verification, and the whole Motion set.
request_ai_modelsAsks you to switch on the analysers it needs.
start_transcriptionTranscribes a clip on demand.
start_visual_indexingIndexes the picture for search. Rarely needed — it happens by itself.
retry_analysisRuns one failed analysis again.
get_job_statusProgress on anything long-running.
Point your agent at it.
Setup is one command or one config file, and the editor is free while you try it.