Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
REELWRIGHT_HOMENoDirectory where Reelwright projects are stored. Defaults to ~/Reelwright/projects.
REELWRIGHT_FFMPEGNoPath to an ffmpeg binary to override the one found on PATH.
REELWRIGHT_FFPROBENoPath to an ffprobe binary to override the one found on PATH.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

Reelwright edits video through a JSON timeline. You cannot watch or hear media in real time, so use the perception tools to look and listen, then verify every edit.

Typical loop:

  1. create_project → import_media (absolute paths on the user's machine).

  2. Understand the footage: inspect_media (contact sheet), get_transcript / transcribe, detect_silence, detect_scenes, audio_loudness, audio_waveform.

  3. Edit: add_clip, trim_clip, split_clip, delete_range (ripple), move_clip, remove_silences, add_text, add_music, set_captions. Every edit is one undo step.

  4. Verify: check_frames at the exact times you changed (renders the edited timeline, overlays and captions included), timeline_contact_sheet for the whole edit, render_preview for a low-res MP4 of a range.

  5. export with a preset (youtube, shorts, square, youtube_4k, project).

Times are seconds. Clip src_in/src_out are positions inside the source file; timeline times are positions in the finished video. get_timeline shows both. Check list_notes for human feedback pinned to timeline times.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_projectsB

List existing Reelwright projects.

create_projectB

Create a new project. width/height/fps define the canvas; fit controls how sources with a different aspect ratio are placed (contain = letterbox, cover = crop).

get_timelineC

The full edit: clips with timeline and source times, overlays, music, open notes, assets.

update_settingsC

Change canvas settings (resolution, fps, fit, background colour, font file for text).

undoC

Undo the last edit.

redoC

Redo the last undone edit.

historyC

Undo/redo stack descriptions (oldest first).

import_mediaB

Add media files (video, audio, images) to the project's asset library. Paths must be absolute paths on the machine running this server.

inspect_mediaB

Contact sheet: count evenly spaced frames from [start, end] of a source asset, each labelled with its source timestamp. Use it to see what is in a clip.

detect_scenesB

Shot-change timestamps (source time) in a video asset. Lower threshold = more sensitive.

detect_silenceC

Silent ranges [start, end] (source time) in an asset's audio.

audio_loudnessB

Integrated loudness (LUFS), true peak, and a per-window loudness curve for an asset or a rendered file. YouTube normalises to about -14 LUFS.

audio_waveformC

Waveform image of an asset's or a rendered file's audio, to spot speech, pauses and peaks.

transcribeA

Transcribe an asset with word timestamps (needs pip install reelwright[transcribe]). Results are cached; read them with get_transcript.

import_transcriptA

Attach an existing .srt or .vtt file (in source time) as an asset's transcript.

get_transcriptA

Read a transcript as timestamped lines. With asset_id: source time. Without it: the edited timeline (only words that survive the edit). query filters lines containing text.

add_clipA

Place [src_in, src_out] of an asset on the main track (appends unless index is given). Images default to 5 seconds.

trim_clipC

Change a clip's in/out points (source time). Later clips ripple.

split_clipC

Split the clip under a timeline time into two clips.

delete_clipC

Remove a clip; everything after it ripples left.

delete_rangeA

Ripple-delete [start, end] of the timeline (e.g. a pause, a fumbled sentence). Works across clip boundaries; overlays and notes after it shift left.

move_clipB

Move a clip to a new position on the main track (0 = first).

set_clip_volumeB

Set a clip's audio gain (1.0 = unchanged, 0 = mute).

remove_silencesA

Cut dead air across the whole timeline: detects silence in every clip's audio and ripple-deletes it, keeping padding seconds either side so speech isn't clipped. Use dry_run=True to preview the cuts first.

add_textC

Add a text overlay at timeline times. font_size is relative to a 1080p canvas. Use \n for line breaks.

update_textC

Change any property of a text overlay.

remove_textC

Delete a text overlay.

add_musicA

Lay background audio under the main track from timeline time start. duck=True lowers it automatically whenever the main track has sound (speech).

remove_musicC

Delete a music cue.

set_captionsB

Turn captions on/off. Captions are generated from asset transcripts and follow the edit automatically. burn_in=False exports a sidecar .srt instead of drawing them.

add_noteC

Pin a review note to a timeline time (e.g. a question for the human).

list_notesB

Review notes (human feedback such as "cut this pause"), in timeline order.

resolve_noteC

Mark a review note as handled.

check_framesA

Render frames of the EDITED timeline at the given timeline times (overlays and captions included) and return them as one labelled grid. Use after every edit to verify it.

timeline_contact_sheetC

Evenly spaced frames across the edited timeline (or a range of it) in one image.

render_previewB

Fast low-res MP4 of the edit (or of [start, end]) for review. Returns the file path.

exportB

Final render. Presets set resolution and loudness (-14 LUFS for youtube/shorts/square). Use a GPU encoder (h264_nvenc etc.) if the machine has one. Writes a sidecar .srt when captions are enabled.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3/5.0

Scored across 37 tools

Disambiguation4/5

Most tools map cleanly to one resource+action (clips, text, music, notes, transcripts), and the analysis tools (detect_scenes, detect_silence, audio_loudness, audio_waveform) are clearly separated. The only real blur is the preview trio — check_frames vs timeline_contact_sheet both render grids of the edited timeline, and inspect_media does the same for source assets — plus remove_silences overlaying detect_silence/delete_range. Descriptions do enough to steer an agent, but those pairs could be misselected.

Naming Consistency4/5

Strong verb_noun snake_case pattern: add_clip, trim_clip, split_clip, delete_clip, move_clip, add_text/update_text/remove_text, add_music/remove_music, add_note/list_notes/resolve_note. The deviations are few and readable — noun-phrase analysis tools (audio_loudness, audio_waveform, timeline_contact_sheet) and bare commands (undo, redo, history, export, transcribe). Nothing chaotic, just minor convention drift.

Tool Count3/5

37 tools is heavy for a single server, though the domain (ingest, analyze, edit, overlay, caption, render) genuinely demands breadth and almost every tool is doing distinct work. It still sits well past the comfortable 3-15 range and the preview/inspection cluster in particular feels padded. Borderline heavy rather than gratuitous.

Completeness4/5

Coverage is unusually deep: full clip lifecycle (add/trim/split/delete/move/volume/delete_range), overlays and music CRUD, transcripts, undo/redo/history, preview and final export with caption handling. Gaps are minor but real — no delete_project or asset/media removal, no read-side settings getter, and no transitions or fades between clips. Agents can work around these, but a few lifecycle ends are dead.

Maintenance

ActivityMaintained
ResponsivenessSyncing