Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| read_project | 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. |
| update_segment | 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 |
| delete_segment | Delete a segment from the project and save. |
| add_text_segment | 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 |
| get_frames | 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. |
| get_video_info | Get width, height, and duration of a video file via ffprobe. |
| render_preview | 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. |
| analyze_video_clip | 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. |
| index_clip_bank | 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. |
| search_clip_bank | 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. |
| analyze_statonic_library | 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. |
| search_statonic_library | 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. |
| get_clips_by_category | 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. |
| write_statonic_project | Write a Statonic project JSON file. TEXT STYLING & POSITIONING RULES (follow these automatically):
HOOK FORMULA EXAMPLES (proven high-performance):
Example text formatting:
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" }] } ] } |
| get_reference_frames | 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. |
| write_reference_result | 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"). |
| list_templates | List all available video structure templates. Returns id, name, description, and slot count for each template. |
| use_template | Create a Statonic project from a template. Auto-selects clips by category for unfilled slots. Workflow:
|
| generate_hook_options | 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. |
| learn_from_hook_video | 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. |
| add_zoom_keyframes | 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. |
| get_suitable_audio | 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. |
| create_variations | 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:
Each variation is a full copy of the project with:
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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |