A video editing and media processing application with AI-powered tools for caption generation, color grading, clip manipulation, and media export
Frontstage provides 14 tools with complete JSON schemas and descriptions. Naming follows verb_noun conventions (add_captions, copy_clip_settings, remove_clips). Most descriptions are substantive (100-400 chars), explaining WHAT the tool does and WHEN to use it. However, parameter descriptions are inconsistent: some parameters lack descriptions entirely (e.g., in add_clips, the 'clips' array items have minimal guidance on required vs optional fields). Error handling is minimal, no recovery guidance or actionable error messages documented. Output schemas are not explicitly documented for most tools. Tool composition is reasonable (each does one thing), but some tools like add_captions conflate multiple modes (transcription vs subtitle import) that could be split. Security considerations (cost confirmation flags, API key handling) are present but not systematically documented.
Generates timed captions from the timeline's spoken-word transcript and places them as text clips on a new video track. Targets explicit clipIds, or auto-detects the dominant speech track. One undo step. Alternatively, pass subtitleMediaRef (a subtitle asset from import_media) to place that SRT/WebVTT file's cues as captions at their authored timecodes — no transcription; mutually exclusive with every other parameter.
Adds one or more clips to the timeline. Each clip references a media entry by id, or a timelineId to nest as a sequence clip. Empty timelines and self/cycle nesting are refused. Nested timelines with audio get a linked audio partner. All clips are one undo step.
Sets the color grade on clips (exposure/contrast/temperature/etc., color wheels, curves, LUT). Rebuilds the color.* effect stack; non-color effects untouched. One undo step.
Adds/updates or removes non-color effects (blur, sharpen, stylize, detail, key) on clips. Rejects color.* — use apply_color. One undo step. Available effects — type: param (range, default): nonColorEffectCatalog()
Copy one clip's static settings to one or more clips of the same media type in a single undoable action. Use for requests such as "make these shots look like that one," "use this title style," or "give these audio clips the same treatment." Choose exactly one target mode. targetClipIds applies to an explicit list and refuses any mismatched media type. targetTrack selects every same-type clip on one stable trackId; add range [startFrame, endFrame) to limit it to clips intersecting that part of the timeline. Track mode excludes the source and mismatched clips, returns compact matched/changed/unchanged/incompatible counts instead of clip IDs, and refuses when no compatible clips match. Video, image, Lottie, and nested-timeline clips copy transform, crop, opacity, blend mode, and the complete effect stack including color. Text clips copy typography/style, text animation, fill mode, position, rotation, flips, opacity, and effects; target text, word timings, and caption membership stay intact. Audio clips copy volume and effects. Settings absent from the source clear the corresponding target setting. This does NOT copy placement, duration, trims, speed, fades, top-level keyframes, media, links, or caption groups. Use set_clip_properties and set_keyframes for temporal changes. Linked audio is a separate audio clip: copy it explicitly.
Parameter descriptions incomplete or missing. Many nested object properties (e.g., animation.preset in add_captions, hueCurves.targets in apply_color) lack descriptions. LLMs cannot infer what these fields control.
Output schemas not documented. Tools return results but no schema is visible for what fields/structure agents should expect. This forces LLMs to guess at response structure and breaks tool chaining.
Error handling and recovery guidance absent. No documented error cases, retryability, or actionable error messages. Tools like remove_clips (DESTRUCTIVE) lack confirmation or dry-run patterns.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Exports the current project's timeline. mode defaults to video, but video export is not yet available from the agent in this build — use the File menu's Export command instead. xml writes XMEML timeline XML; fcpxml writes FCPXML. For timeline interchange, pick the format by the target editor: Premiere Pro -> xml; DaVinci Resolve or Final Cut Pro -> fcpxml (fcpxml also carries text, transforms, crop, opacity, and keyframes that xml cannot). fcpxmlTarget (fcpxml mode only, default resolve) picks DaVinci Resolve vs. Final Cut Pro's crop/position value encoding. srt/vtt write a subtitle file: by default from the timeline's caption clips (chronological, in this run — error if there are none); pass captionsSource.mediaRef to export that media's CACHED transcript instead — cache-only, this never transcribes, so an uncached ref errors naming get_transcript/add_captions. frontstage (self-contained .frontstage project package) is not yet available either. Omit outputPath to open a save dialog (desktop) or picker (web); xml, fcpxml, srt, and vtt finish and report their result inline.
Extracts the soundtrack from a video library asset into a new audio asset in the same folder, named '{source} (audio)'. The source video is unchanged. Requires a host that can demux audio (desktop ffmpeg). One library mutation; not an undoable timeline edit.
Generates image(s) from a text prompt using AI and adds them to the media library. When a fal.ai key is configured, runs as an async background generation (call list_models kind='image' first to pick a model): returns a placeholder asset ID immediately, numImages (1-4) generates a batch from one prompt, and it costs real money and is not undoable. Without a configured fal.ai key, falls back to a synchronous single-image generation.
Renders a timeline frame and reports color scopes (luma/RGB levels, saturation, warm/cool + green/magenta bias, histograms). Optionally compares to a reference frame with actionable gap hints.
Moves one or more clips to new track/frame positions. All moves are one undo step.
Removes one or more clips from the timeline by id. All removals are one undo step.
Splits a clip at the given frame, producing two clips. This is one undo step.
Splits one or more clips, each at a given frame. Each split keeps the left half's id and creates a new right-half clip. All splits are a single undo step.
Trims one or more clips by adjusting their left or right edge by deltaFrames. All trims are one undo step.
add_captions conflates two distinct operations (transcription vs subtitle import via subtitleMediaRef). These should be separate tools so agents can compose them independently.
apply_color has 30+ parameters with minimal constraints. No documented ranges, defaults, or mutual exclusivity rules. LLMs will struggle to pick valid combinations.