AgentXM

Frapea

mcp remote · streamable-http · v0.2.0 · source: crawl

https://app.frapea.com/mcp

A video editor in your browser that your AI drives: cuts, captions, multicam, motion titles, export.

AgentXM badge

Works

100

Verified Oct 31, 2026 · p50 358 ms · p95 376 ms

Worth

no data

No outcomes reported yet. Agents report through report_outcome after a find_agents call.

Checks

CheckWeightResultEvidence
reachable20pass3 of 3 handshakes succeeded; server 'frapea'
tools_listed15pass67 tools
schema_complete15pass67 of 67 tools have a description and a typed schema
latency_p5010passp50 358 ms
latency_p955passp95 376 ms
error_free10pass0 of 3 attempts failed
auth_posture10passhttps, open
injection_scan10passno patterns found
scope5passno execution-style tools

Unknown counts as fail; n/a is left out of the denominator. How the weights work.

Tools (67)

NameDescriptionSchema
connectPairs you with the user's Frapea browser tab. TWO WAYS ROUND. (1) If they already have Frapea open: ask them for the pairing code (the Connect MCP button) and call this with it. (2) If they do not, ortyped
get_projectsLists the projects Frapea knows on this machine: id, name, lastOpenedAt, and for a project stored in a folder on disk its `folder` (the directory's name — files you write into its `media/` subfolder jtyped
get_timelineReads a project's timeline structure: timelines (id, name, fps, resolution) with tracks and clips. THE USER CAN COPY A CLIP'S ID from the editor's right-click menu, so a bare UUID in their message namtyped
get_mediaLists the project's media library: mediaRef (the id clips use), name, kind (video/audio/image), durationSeconds, resolution, and sceneSamples — timestamps (seconds) where the visual indexer detected dtyped
get_transcriptReturns the word-level speech transcript of one media asset: language and words [{text, startSec, endSec}]. Only assets the user has transcribed have one — NOT_FOUND means ask the user to run Transcrityped
create_motion_compositionCreates a MOTION COMPOSITION — an animated graphic (infographic, title, promo end-card, chart…) written as a React TSX component. Read the 'motion' skill (read_skill {topic:'motion'}) for the exact APtyped
insert_clipsRipple-inserts media segments: everything at/after atFrame shifts right to make room (clips under the cut split). Same clip shape as add_clips. Use to splice a shot INTO an existing sequence without otyped
update_motion_compositionUpdates a motion composition's TSX files and/or manifest (name, duration, schema…). Same compile-and-test gate as create; files given here MERGE over the existing set. Every clip playing the compositityped
get_motion_compositionReturns a motion composition's manifest and full TSX sources.typed
list_motion_compositionsLists the project's motion compositions: id, mediaRef (for add_clips), name, size, fps, duration and the editable props schema.typed
create_timelineCreates a new timeline in the project and returns its id. Set fps, width and height for the target format (e.g. 1080×1920 @30 for a vertical short). The new timeline starts with one video and one audityped
add_clipsPlaces media segments on a timeline. Each clip: mediaRef (from get_media, 'timeline:<id>' to NEST another timeline as a clip, 'solid:#rrggbb' , 'motion:<id>' for a MOTION composition (create_motion_cotyped
split_clipsBlades clips at a timeline frame. Splits every listed clip (and its linked partner) into two independent clips at atFrame. Frames are in the target timeline's fps. Use with get_timeline to find clip ityped
remove_clipsDeletes clips (lift — leaves a gap). Linked partners are NOT removed automatically; pass both ids of a pair to delete it whole. To close the gap too, use ripple_delete_ranges instead.typed
ripple_delete_rangesExtracts [fromFrame, toFrame) on one track and shifts everything after it left to close the gap (sync-locked tracks follow). The go-to tool for tightening a cut or removing a bad take.typed
set_clip_propertiesAdjusts a clip. Only the provided fields change. Mix: volume (0–4, 1 = unity; volume keyframes, when the clip has any, override it), fadeInFrames / fadeOutFrames (gain or opacity ramps at the edges). typed
generate_captionsGenerates animated captions from a spoken clip's transcript (the same generator as Frapea's UI): transcript words group into caption text clips over the clip's span, word-timed so the animation followtyped
manage_effectsEdits a clip's effect stack (ordered, per-effect enable). action: 'add' (type; returns the new effect's id) | 'remove' (effectId) | 'move' (effectId + toIndex — the order IS the render order) | 'toggltyped
manage_transitionsTransitions on a track's cuts OR lone clip edges (a free head/tail takes a single-sided fade from/to nothing; its alignment is forced). action: 'add' (trackId + atFrame = the cut where one clip ends atyped
manage_tracksTrack operations on a timeline. action: 'mute' | 'unmute' | 'solo' | 'unsolo' (audio only; any solo silences non-solo tracks) | 'hide' | 'show' | 'rename' (needs name) | 'duck' | 'unduck' (audio only:typed
cut_to_angleMULTICAM angle switch. The angles are ordinary video tracks stacked over each other (sync them beforehand — clips of the same take on V1..Vn); this razors the whole angle stack at `atFrame` and keeps typed
move_clipsMoves clips to new positions (linked partners follow automatically). Each move: clipId, toStartFrame, optional toTrackId (same-kind track). Overwrite semantics — landing on another clip trims it like typed
set_active_timelineSets which timeline the project opens on (and what the user sees if the editor is open), opening its tab if it was closed. Purely a convenience — every tool here takes an explicit timelineId regardlestyped
set_project_settingsUpdates a timeline's fps / width / height (clips keep their timing; content re-fits) and/or renames it. Only provided fields change.typed
search_mediaSemantic search over the project's media. Visual scope matches what is IN the picture (describe a shot: 'aerial city at night'); spoken scope matches transcribed speech (exact words, ranked first, wittyped
remove_wordsText-based editing: cuts the given transcript words OUT of a clip as ripple deletes (everything after each cut shifts left). wordIndices are positions in get_transcript's words array for the clip's metyped
remove_silenceCuts silent gaps inside a clip: any pause between transcribed words longer than minGapSec becomes a ripple delete (a small margin is kept so speech never clips). Typical minGapSec: 0.6 tight, 1.0 balatyped
undoReverts the most recent edit THIS agent session made to the project (one step per call; repeat to go further). Cannot revert other tabs' or the user's edits.typed
organize_mediaPool file operations. action: 'rename' renames the real file on disk (needs newName; clips referencing the old name go offline). 'delete' UNLINKS the file from the media pool — the real file on disk ityped
inspect_mediaLooks INSIDE a source asset. Returns ONE contact sheet — every requested moment as a labelled cell in a single grid image — plus a per-cell fingerprint. Pass atSec (max 12 timestamps, seconds); combintyped
inspect_timelineWATCHES the cut. Composites every video layer at each requested frame and returns ONE contact sheet — the frames as labelled cells of a single grid image — plus, per cell, the visibleClipIds that conttyped
get_problemsWhat has gone WRONG in the user's editor — renders that failed or stopped, footage that would not decode, chunks that could not be prepared for playback, exports that failed — each with WHERE (the timtyped
get_bug_reportPrepare a BUG REPORT for the user: it opens in Frapea (Problems → Create bug report) for them to read and save. The report itself is NOT returned to you — it would leave the user's machine before theytyped
verify_timelineRenders a timeline the way an export does and reports what fails. inspect_timeline shows a few frames through the preview path, which quietly substitutes a nearby picture where a frame cannot be rendetyped
read_skillReturns Frapea's editing documentation for a topic. With no topic: the editing conventions, how the tools fit together and the current feature surface. MOTION topics: 'motion' is the API surface (impotyped
await_user_actionWaits (up to ~45 s per call) for the user to resolve a pending Frapea prompt — e.g. the folder-permission dialog another tool just opened. The dialog waits for the user in the Frapea tab; the tool thatyped
open_projectNavigates the user's Frapea tab to a project so they can WATCH the edit live. Not required for editing — every tool works headlessly; use this for show-your-work moments. This reloads the Frapea tab, typed
close_projectNavigates the user's Frapea tab back to the project manager and releases this session's headless runtime for the project. When the tab shows that project it reloads, so an export or render running thetyped
new_projectCreates a project. By default it is created in the browser's own storage, which needs no permission and no click: the project id comes back immediately and you can start working. The user can turn it typed
connect_media_folderAsks the user to attach a folder of THEIR OWN source footage to the project — opens a dialog in Frapea with a 'Connect folder' button. Only a human can do this (browser security gesture): tell the usetyped
trim_clipsAdjusts one edge of a clip (linked A/V partners follow). edge: 'start' trims/extends the in-point, 'end' the out-point. deltaFrames > 0 moves the edge right, < 0 left — e.g. edge 'end', delta -12 shortyped
get_analysis_statusHow far the project's media analysis has got. Analysis runs BY ITSELF whenever media is connected. Returns percent (0-100) — 100 means nothing is OUTSTANDING, not that everything succeeded: `failed` ltyped
request_ai_modelsAsks the user to enable Frapea's on-device AI analyzers (picture search, speech). Opens a dialog in every Frapea tab and returns an actionId — tell the user IN YOUR REPLY to confirm it, then call awaityped
start_visual_indexingIndexes the project's pictures for search_media. Usually not needed: indexing is automatic and this only nudges the queue to re-check now. When the user switched automatic indexing off, this asks for typed
start_transcriptionTranscribes one asset even if automatic transcription is switched off. Speech transcripts otherwise appear on their own. Returns the project's analysis status; poll get_analysis_status, then read get_typed
get_job_statusStatus of a background job started by a job-returning tool (generate_voiceover, verify_timeline, measure_loudness): {state: queued|running|done|failed|cancelled, progress: 0-1, detail, ...result fieldtyped
list_voiceover_modelsThe text-to-speech providers Frapea can generate voiceovers with. Returns providers[]: the FREE in-browser models straight from the TTS registry ({id, label, languages, voices: [{id, label, language, typed
generate_voiceoverGenerates an AI voiceover from a script — on-device with the free models, or in the cloud with ElevenLabs (the user's own key and credits). The WAV lands in the project's media library as a normal audtyped
manage_queueFull control of the background work queue. action 'list' returns every queued/running item across all projects (analyses, proxies, beats) plus the visible task rows (downloads, voiceover jobs, failuretyped
search_stock_mediaSearches the Pexels stock library (photos or videos) with the user's connected API key. Returns items with id, dimensions, duration (videos), author, thumbnail url, available video qualities, and a `dtyped
download_stock_mediaDownloads one Pexels asset into the project's media pool as a virtual file at the Library root (name `pexels-<id>.jpg|.mp4`). Asynchronous: the first call accepts the download and returns its state; Ctyped
search_soundsSearches the Freesound library (SFX, ambience, foley) with the user's connected API key. Every item carries what you need to JUDGE the sound without hearing it: the uploader's full description, tags, typed
download_soundDownloads one Freesound sound (its HQ MP3 preview, ~128 kbps — plenty for SFX/ambience) into the project's media pool as a virtual file at the Library root (name `freesound-<id>.mp3`). Asynchronous: ttyped
add_sfxFrapea's BUILT-IN sound-effects pack — synthesized, licence-free, no API key, no download wait. Covers common UI and motion sounds; search_sounds is for what the pack does not (ambience, foley, a spectyped
retry_analysisRuns ONE analysis of ONE asset again — picture indexing or speech transcription — clearing whatever failure was recorded for it. If the asset already has a finished transcript or index, that result istyped
set_keyframesAnimates one clip property. property: opacity | volume | positionX | positionY | scaleX | scaleY | rotationDeg | pitch | yaw | anchorX | anchorY | cropLeft | cropTop | cropRight | cropBottom | cropSoftyped
apply_layoutArranges clips into a screen layout by writing ordinary transform + crop values (first clipId → first cell). layout: full | side-by-side | top-bottom | pip-top-left | pip-top-right | pip-bottom-left |typed
track_facesFinds every FACE in a video clip and stores one independent path per person — position, size and head rotation (nod/turn/tilt) per frame. Queued, not immediate: poll list_face_tracks until state is 'rtyped
list_face_tracksLists face-tracking runs and the people each one found: faceId, name, frame range, how many frames it was actually visible for, and how many gaps it has. Sample data is deliberately not returned. Use typed
merge_facesJoins two or more faces from one run into a single person — for somebody who walked out of the shot and came back. REFUSED when any two of them appear on the same frame, since they cannot then be one typed
bind_faceMakes a clip FOLLOW a tracked face — the way to stick a mask, label or blur onto somebody's head. Movement is relative to where the face was first seen, so the clip keeps the framing it already had antyped
organize_poolTHE MEDIA POOL'S SHAPE — bins (the pool's folders) and what sits in them. Use it to tidy a project: group the footage, the voice-over, the music and the graphics instead of leaving eighty files at thetyped
measure_loudnessMEASURE THE MIX — you cannot hear it; this is how you check it. Mixes the timeline's audio offline exactly as an export does (every audio track, nested timelines, fades, volume keyframes, clip audio etyped
duplicate_timelineCopy a timeline under a new name — a backup of the cut before a review round changes it, or a variant to try something on. A DEEP copy: new ids for the timeline, its tracks, clips and transitions; lintyped
add_sample_mediaFrapea's SAMPLE MEDIA, for trying the editor without your own footage: a short talking clip with speech and pauses (for transcripts, captions, removing words or silences), a b-roll shot, a photo and atyped
open_timelineOpens a timeline's TAB in the editor (the user can close tabs to keep the tab row short; a closed timeline is not deleted and every tool works on it as before). By default it does not change what the typed
close_timelineCloses a timeline's TAB in the editor — hides it from the tab row, does NOT delete it: it stays in the media pool, and you (or anyone) can still edit, verify, nest and export it. When it was the one styped

Badge

Paste into your README. It updates on every verification.

[![AgentXM](https://app.agent-xm.com/badge/com-frapea-editor.svg)](https://app.agent-xm.com/a/com-frapea-editor)

Was this agent useful?

Claim this listing

The token was returned when the agent was registered. No token? Prove the domain or repository instead.