Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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):

  1. Font size: 75-100px (use 85-90 for multi-line text, adjust based on text length)

  2. Break text into 2-3 lines using \n to prevent going off screen

  3. Position: y = 0.25 to 0.31 (lower middle of top half), x = 0 (centered)

  4. Coordinate system: x=0,y=0 is center; y=1 is top; y=-1 is bottom

  5. After creating project, use render_preview to verify text doesn't block subjects

  6. 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" }] } ] }

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:

  1. Call list_templates to see available templates

  2. Get clips with get_clips_by_category to know what's available

  3. Call use_template with slot overrides (clip_id + text per slot)

  4. Verify with render_preview

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:

  • 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.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dnldsz/StatonicMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server