Frame Job gives an agent 125 tools. This page names every one and links to its full reference, and says how a client can read what each one takes.
The 125 tools come in two kinds.
- 69 edit tools. Each makes one kind of edit to the project, as one undo step. These also take
scope, which aims the edit inside a nest by the nest’s id.
- 56 app tools. These work with files, read things, change what the app is showing, or run a whole command such as
record_screen or make_vertical_version.
Every tool takes project, which says which open project it acts on. Leave it out for the front project. See How tool calls behave.
Each tool publishes its arguments as JSON Schema, in the inputSchema of tools/list. That’s where a client reads every argument’s name, its kind, its closed list of values, its bounds and which arguments are required. The helper answers tools/list even when Frame Job isn’t running. See The helper and the socket.
Each tool’s description says what it’s for and what it returns. An argument that isn’t in the schema stops the call before the tool runs, with a message listing what the tool does take: “trim_start does not take at. It takes alone, clip, to, project and scope.”
A few arguments read differently from what their kind suggests:
| Argument |
What’s different |
| Every boolean |
May also be sent as the string "true", "1", "false" or "0". |
text on add_text_clip, shape on add_shape_clip |
May be a plain string: the words, or the kind of shape. |
kind on set_transition, region on add_zoom_action |
Must be sent even when null, because null means something: no transition, or zoom back out. |
rate on set_speed and add_speed_ramp |
Published as ×0.1 to ×1000. A rate outside that is brought into range, with no error. Zero or less stops the call. |
fps on set_canvas |
Each of its two numbers must be at least 1. |
clips on every tool but set_selection, groups on paste_attributes, ranges on ripple_delete_ranges and copy_pieces |
Can’t be empty: the call stops and names the argument. On set_selection, an empty clips selects nothing. |
at on split, paste, freeze_frame and add_marker |
Optional. It takes the playhead when left out. |
focus on switch_layout |
May be null or left out, and the tool then fills it from the camera’s cached person masks. |
Four tools need at least one of their optional arguments, because a call that names nothing to change stops with an error: set_track, set_marker, set_canvas and set_transition_style.
Frame Job fills a few values itself, from what only it can read, so the tools don’t publish them and sending one stops the call: a graphic’s schema, a relinked file’s details, and the faces and turns reframe_clip follows.
The groups run in the order of the sidebar. Each tool links to its own entry, with its arguments, what it returns and what can stop it.
| Tool |
What it does |
Takes scope |
open_project |
Opens a package, or a movie, sound file or picture as a new untitled project. |
|
new_project |
Creates a blank 1920 × 1080, 30 fps project. |
|
new_project_from_range |
Opens a new project holding one span of the timeline. |
|
save_project |
Saves a project, or writes it to a new path. |
|
close_project |
Closes a project and its window. |
|
get_project |
Returns the whole project as JSON. |
|
undo |
Undoes one step. |
|
redo |
Redoes one undone step. |
|
| Tool |
What it does |
Takes scope |
set_playhead |
Moves the playhead and seeks the preview. |
|
set_range |
Sets or clears the in and out range. |
|
set_selection |
Selects clips. |
|
set_scope |
Chooses which nest the app is looking inside. |
|
| Tool |
What it does |
Takes scope |
import_media |
Reads a movie, sound file or picture, or each media file in a folder, and adds it to the media list. |
|
add_media |
Adds a media entry from a description you supply. |
Yes |
relink_media |
Points a media entry at a file that moved. |
Yes |
remove_media |
Removes a media entry. |
Yes |
consolidate_media |
Copies every file the project uses into its package. |
|
set_media_color |
Sets how a file’s camera log footage is converted to the project’s colour. |
Yes |
set_media_speech |
Saves where a file’s speech is, for ducking by speech. |
Yes |
| Tool |
What it does |
Takes scope |
move_clip |
Shifts clips along the timeline, and optionally onto another track. |
Yes |
trim_start |
Moves a clip’s start, keeping the content in place. |
Yes |
trim_end |
Moves a clip’s end. |
Yes |
slip |
Slides the source under a clip that stays where it is. |
Yes |
roll |
Moves a cut, so one clip grows by what the other loses. |
Yes |
set_enabled |
Turns a clip’s picture or sound on or off. |
Yes |
| Tool |
What it does |
Takes scope |
duplicate |
Copies clips onto the same tracks, right after the originals. |
Yes |
paste |
Inserts a clipboard payload’s clips. |
Yes |
paste_attributes |
Copies one clip’s property groups onto other clips. |
Yes |
nest |
Collapses clips into one clip that stands for the group. |
Yes |
unnest |
Opens a nest clip back out onto the timeline. |
Yes |
| Tool |
What it does |
Takes scope |
set_speed |
Changes a clip’s rate, or fits it to a duration. |
Yes |
rate_stretch |
Stretches a clip to a new end by changing its speed. |
Yes |
add_speed_ramp |
Makes a speed ramp preset on a clip. |
Yes |
retime_range |
Plays a range faster or slower on every unlocked track. |
Yes |
set_reversed |
Plays a clip back to front, or forward again. |
Yes |
freeze_frame |
Holds one frame of a clip. |
Yes |
| Tool |
What it does |
Takes scope |
set_video |
Changes clips’ picture properties: position, scale, crop, colour, effects and more. |
Yes |
| Tool |
What it does |
Takes scope |
set_text |
Changes a text clip’s words and typography. |
Yes |
set_shape |
Changes a shape clip’s geometry and paint. |
Yes |
set_clip |
Names or labels clips. |
Yes |
text_behind_subject |
Puts a title behind the person in a clip. |
|
| Tool |
What it does |
Takes scope |
add_action |
Adds an animation span to a clip. |
Yes |
add_zoom_action |
Adds an animation that zooms the picture to a rectangle. |
Yes |
set_action |
Moves or re-times an action, or changes its curve. |
Yes |
set_action_end |
Sets what an action animates to. |
Yes |
remove_action |
Removes an action. |
Yes |
| Tool |
What it does |
Takes scope |
set_audio |
Changes clips’ sound properties: volume, fades, ducking, noise reduction and more. |
Yes |
| Tool |
What it does |
Takes scope |
detach_audio |
Splits a clip’s sound onto its own clip. |
Yes |
attach_audio |
Merges a detached pair back into one clip. |
Yes |
normalize_clip |
Sets each clip’s volume to a target loudness or peak. |
|
enhance_voice |
Sets clips up for speech from their own measurements. |
|
match_audio |
Matches clips to a reference clip’s loudness and tone. |
|
sync_audio |
Lines up clips by their sound. |
|
| Tool |
What it does |
Takes scope |
detect_silence |
Reports the quiet stretches of the timeline, changing nothing. |
|
detect_fillers |
Reports the filler words in the timeline’s speech, changing nothing. |
|
transcribe_for_fillers |
Re-transcribes one media file with AssemblyAI so its fillers can be found. |
|
| Tool |
What it does |
Takes scope |
get_media_analysis |
Returns an analysis of a media file, made on this Mac. |
|
analyze_cutout |
Reports where Remove Background stands, and makes its masks now. |
|
| Tool |
What it does |
Takes scope |
reframe_clip |
Frames one clip on the current canvas. |
Yes |
switch_layout |
Lays out a camera clip and the screen recording behind it. |
Yes |
make_vertical_version |
Makes a vertical, 4:5 or square version of the timeline. |
|
| Tool |
What it does |
Takes scope |
copy_pieces |
Copies pieces of a clip onto another track at the same times. |
Yes |
switch_angle |
Re-picks one shot from another camera angle. |
|
switch_by_speaker |
Cuts a Program track from synced cameras, showing whoever talks. |
|