Statonic MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Statonic MCP Analyze the reference frames and identify the video structure."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Statonic MCP
A Model Context Protocol server that connects Claude to the Statonic video editor, enabling vision-based reference video analysis, AI-driven project authoring, and variation generation from clip library state.
How it works
The server exposes four tools to Claude:
get_reference_frames— reads a set of video frames sampled by the editor and returns them as base64 images for vision analysis. Claude identifies the structure of the video (hook, techniques, CTA) and writes the result back viawrite_reference_result, which the editor picks up via a file watcher and renders into an interactive slot assignment UI.write_statonic_project— writes a complete project JSON to the editor's watched load path. The editor detects the file change and loads the project immediately, allowing Claude to author or modify projects directly.create_variations— readsvariation-context.json(written by the editor on session start, containing the current project and filtered clip library) and writes variation JSON files to the variations folder. Each file triggers a live update in the editor's variations panel.
Related MCP server: Resolve Claude MCP
Stack
@modelcontextprotocol/sdkfor the MCP server transportAnthropic SDK for vision calls within
get_reference_framesNode.js
fsfor file-based communication with the editor process
Available Tools
23 toolsadd_text_segmentA
Add a new text overlay to the project and save. Reuses an existing text track if one exists, otherwise creates one.
Position reference (x, y): ( 0, 0) = canvas center (-1, 0) = left edge, (1, 0) = right edge ( 0, 1) = top, (0,-1) = bottom
Inputs: path (required), text (required), start_sec (required), duration_sec (required), +9 more.
add_zoom_keyframesA
Add scale/zoom animation keyframes to a video segment. Creates smooth zoom in/out effects.
Examples: • "zoom in 20% for the hook" - adds keyframes to scale from 1.0 to 1.2 over the segment • "zoom out 10% from 2s to 4s" - adds keyframes at specific times • "subtle push in" - gentle 1.0 to 1.15 scale animation
The zoom animation interpolates linearly between keyframes. Keyframes are relative to the segment's start time.
Inputs: path (required), segment_id (required), keyframes (required).
analyze_statonic_libraryB
Analyze clips in Statonic's app library (~/Library/Application Support/Statonic/clip-library/clips/). Returns unanalyzed clips for Claude to analyze. After analysis, call this again with metadata to save. Convenient way to analyze the app's managed clip library without specifying full paths.
Inputs: clip_id, metadata, force.
analyze_video_clipA
Extract keyframes from a video clip for analysis. Returns frames as images for Claude to analyze and generate metadata. After Claude provides analysis, saves metadata JSON file next to the video. Use this to understand what's in a clip before selecting it for a project.
Inputs: video_path (required), category, keyframe_count, metadata.
create_variationsA
Generate project variation files from the currently open project's variation session.
IMPORTANT: Do NOT call get_reference_frames or any other tool before this one. Go straight to create_variations — all the information you need (project structure, segment IDs, available clips) is already in variation-context.json.
The user must have clicked "Variations" in the editor toolbar first, which writes variation-context.json to ~/Library/Application Support/Statonic/. Read that file to get:
project: the full project JSON with all segment IDs
clips: the available clip library with id, name, path, category, duration
variationsFolder: where to write the output files
Each variation is a full copy of the project with:
textChanges: find/replace rules applied to ALL text segment "text" fields (case-insensitive)
clipOverrides: swap specific video segments by segmentId — use the segment IDs from project.tracks[].segments[].id and clip paths from the clips array
Writes each variation as [name].json to the variationsFolder. The editor picks them up automatically.
IMPORTANT: After calling create_variations, do NOT call write_statonic_project, render_preview, get_suitable_audio, or any other tool. Just return the summary and stop — the editor handles everything from here.
Inputs: variations (required).
delete_segmentC
Delete a segment from the project and save.
Inputs: path (required), id (required).
generate_hook_optionsA
Generate 5 high-quality hook text options for a given topic, using proven formulas from hook-knowledge.json.
Returns formatted hook texts ready to paste into write_statonic_project. Call this before creating any project to get the best hook text.
Inputs: topic (required), count.
get_clips_by_categoryB
Get clips from Statonic library filtered by category (hook/gizmo/showcase). Automatically uses the currently active account in Statonic app. Returns full clip details including path, duration, and dimensions needed to build projects.
Inputs: category (required).
get_framesA
Extract frames from a video file at specified timestamps and return them as images. Use this to visually inspect video content. Claude can see and describe the returned frames. Frames are scaled to 640px wide. Limit to ≤6 frames per call for speed.
Inputs: video_path (required), times_sec (required).
get_reference_framesA
Read the pending reference video analysis request and return each scene frame as an image for you to analyze.
After the user clicks "Copy Reference" in the editor and selects a video, call this tool to see the extracted frames. Then call write_reference_result with your analysis.
Inputs: no named parameters.
get_suitable_audioA
Find audio tracks suitable for a video project based on timing requirements. Returns audios where the drop point occurs after the hook ends and the audio is long enough to cover the entire video. Calculates exact audio positioning so the drop hits at the transition point. Use this when creating projects that need audio synced to clip transitions.
Inputs: hook_duration_sec (required), total_duration_sec (required), prefer_closest.
get_video_infoB
Get width, height, and duration of a video file via ffprobe.
Inputs: video_path (required).
index_clip_bankA
Scan a folder (recursively) and analyze all video clips, building a searchable index. Generates metadata for clips that don't have it yet. Creates/updates index.json in the folder root.
Inputs: folder_path (required), regenerate.
learn_from_hook_videoA
Analyze a trending video file to extract its hook formula and text. Appends the learned example to hook-knowledge.json for future use.
Use this to build up your hook knowledge base from high-performing videos.
Inputs: video_path (required).
list_templatesA
List all available video structure templates. Returns id, name, description, and slot count for each template.
Inputs: no named parameters.
read_projectA
Read a Statonic project JSON file. Returns a human-readable summary of all tracks and segments, plus the full JSON for reference. Use this first to understand the project before making edits.
Inputs: path (required).
render_previewA
Render a composite preview frame of the project at a specific time — all video layers cropped and positioned, text overlays drawn on top. Returns a JPEG image so you can see exactly what the canvas looks like: where subjects are, where overlays sit, what's obstructed. Use this before repositioning elements so you can make informed placement decisions.
Inputs: project_path (required), time_sec.
search_clip_bankB
Search the clip bank for clips matching a description. Returns clip metadata for Claude to rank and select the best matches. Use this to find the best clip for a specific video segment.
Inputs: index_path (required), query (required), category.
search_statonic_libraryA
Search Statonic's analyzed clip library for clips matching a query. Returns all analyzed clips with their metadata for Claude to rank by relevance. Use this to find the best clips for a specific purpose.
Inputs: query (required), category, account_id.
update_segmentA
Update one or more properties of an existing segment (video or text) and save.
Video segment writable properties: clipX, clipY — canvas position (-1=left/bottom, 0=center, 1=right/top) clipScale — scale (1.0 = fill canvas height, <1 = smaller, >1 = larger) scaleKeyframes — array of {timeMs: number, scale: number} for zoom animations (use add_zoom_keyframes tool instead) cropLeft, cropRight, cropTop, cropBottom — crop fractions 0–1 startUs, durationUs — timeline position / length in microseconds sourceStartUs, sourceDurationUs — source trim in microseconds
Text segment writable properties: text, x, y, fontSize, color, bold, italic, strokeEnabled, strokeColor, textAlign, textScale, startUs, durationUs
Inputs: path (required), id (required), patch (required).
use_templateA
Create a Statonic project from a template. Auto-selects clips by category for unfilled slots.
Workflow:
Call list_templates to see available templates
Get clips with get_clips_by_category to know what's available
Call use_template with slot overrides (clip_id + text per slot)
Verify with render_preview
Inputs: template_id (required), project_name, slots.
write_reference_resultA
Write your analysis of the reference video frames back to the editor. The editor modal will automatically populate with the detected slots.
Call this after get_reference_frames. For text that appears across MULTIPLE consecutive slots (e.g. hook text while background clips change, or "Students who follow me and use:" over all technique slots), put it in spanning_texts — NOT in each slot's detectedText. Each slot's detectedText should only contain the unique text for that slot (e.g. "GAMIFICATION", "PAST PAPERS").
Inputs: slots (required), spanning_texts, hookTextY, spanningTextY, +1 more.
write_statonic_projectA
Write a Statonic project JSON file.
TEXT STYLING & POSITIONING RULES (follow these automatically):
Font size: 75-100px (use 85-90 for multi-line text, adjust based on text length)
Break text into 2-3 lines using \n to prevent going off screen
Position: y = 0.25 to 0.31 (lower middle of top half), x = 0 (centered)
Coordinate system: x=0,y=0 is center; y=1 is top; y=-1 is bottom
After creating project, use render_preview to verify text doesn't block subjects
If blocking subject's face/upper body, adjust y down to 0.22-0.25
HOOK FORMULA EXAMPLES (proven high-performance):
"how to [VERB] so fast it feels illegal" (CAPS on key verb, e.g. "how to LEARN\nso fast it\nfeels illegal")
"99% of [audience] do X the WRONG way" (specific number creates credibility)
"the [topic] trick nobody talks about"
2-3 lines, 4-7 words each — NOT one long sentence
Use CAPS for ONE emphasis word per line, not the whole text
Use generate_hook_options tool to get 5 high-quality hook variants before writing
Example text formatting:
"how to study chemistry" → "how to study\nchemistry and get\n99/100" (fontSize: 90)
"ACTIVE RECALL 🤫" → single line is fine (fontSize: 75-100)
IMPORTANT: VideoSegment requires: src (not sourceFilePath), name, fileDurationUs, sourceWidth, sourceHeight. Track requires: label. See example:
{ "name": "My Video", "canvas": {"width": 1080, "height": 1920}, "tracks": [ { "id": "track-1", "label": "Base", "type": "video", "segments": [{ "id": "seg-1", "type": "video", "src": "/path/to/video.mp4", "name": "clip-name", "startUs": 0, "durationUs": 4200000, "sourceStartUs": 0, "sourceDurationUs": 4200000, "fileDurationUs": 5000000, "sourceWidth": 1080, "sourceHeight": 1920, "clipX": 0, "clipY": 0, "clipScale": 1, "cropLeft": 0, "cropRight": 0, "cropTop": 0, "cropBottom": 0 }] }, { "id": "track-2", "label": "Text", "type": "text", "segments": [{ "id": "text-1", "type": "text", "text": "Hello", "startUs": 0, "durationUs": 2000000, "x": 0, "y": 0, "fontSize": 80, "color": "#ffffff", "fontFamily": "Arial" }] } ] }
Inputs: project (required), filename (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 23 tools
Most tools have distinct purposes, but there is some overlap between analyze_video_clip, get_frames, and get_reference_frames, all involving frame extraction for analysis, which could cause confusion. However, their descriptions clarify specific contexts (clip analysis, general inspection, reference video analysis), mitigating ambiguity.
Tool names consistently follow a verb_noun pattern (e.g., add_text_segment, analyze_video_clip, create_variations) with no deviations in style or convention. This predictability makes the set easy to navigate and understand at a glance.
With 23 tools, the count is borderline high for a video editing server, potentially overwhelming. While the domain is complex, some tools like analyze_statonic_library and search_statonic_library feel redundant, suggesting the set could be streamlined without losing functionality.
The tool set comprehensively covers the video editing domain, including project creation (use_template), editing (add/update/delete_segment), analysis (analyze_video_clip, learn_from_hook_video), rendering (render_preview), and library management (index_clip_bank, search_clip_bank). No obvious gaps exist for core workflows.
Maintenance
Related MCP Connectors
The agentic video editor for ChatGPT and Claude. Ask in your chat and it cuts, captions, adds music, titles and motion graphics on a real timeline you can open and adjust.
Connect Claude or any MCP client to Wireflow, the AI canvas for image, video and audio workflows. List, build, inspect and run your workflows and published apps, browse templates, check models, prices and credits, edit a video node's timeline, and plan or schedule social posts. Drafts and edits cost no credits; run tools spend the user's credits.
Edit your own videos by chatting in Claude or ChatGPT: cut, caption, add music and export.
Valmera — the world’s most advanced AI video editor. Edit recorded tutorials, podcasts, interviews and webinars through Claude, ChatGPT or another compatible MCP client. Cut footage, add captions, reframe, review a preview, revise specific sections and export MP4. Hosted editing with OAuth; an eligible paid Valmera plan is required.
Related MCP Servers
- AlicenseAqualityDmaintenanceAllows AI assistants like Claude to directly interact with and control DaVinci Resolve through the Model Context Protocol, providing capabilities for project management, timeline manipulation, media management, and Fusion integration.1480MIT
- AlicenseBqualityDmaintenanceConnects DaVinci Resolve Studio to Claude AI via the Model Context Protocol, enabling natural language control over video editing, color grading, Fusion compositing, AI features, and more.53396MIT
- AlicenseAqualityDmaintenanceEnables Claude to drive Adobe Premiere Pro directly through natural-language requests, supporting import, timeline editing, markers, effects, transitions, and export.6238,109 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables prompt-driven video editing in Adobe Premiere Pro, allowing Claude to transcribe footage, decide cuts, build motion graphics, and assemble timelines via natural language.-