Skip to main content
Glama

render_edit

Build and check a video edit from a recipe as a job. Use base and changes for versioned edits in Takes, then publish when ready.

Instructions

Build an edit from a recipe, as a job, and check it. First version: recipe={name, cut} (cut = rough_cut's cut) plus what you need: frame {shape '9:16'|'16:9'|'1:1'|'4:5'|'source', crop}, over (picture layers: alpha graphics or b-roll, with at/in/out), music and sfx (file, at, gain_db), steps (commands that make the layers, run in _edit//), cover (a thumbnail). Next version: base= and changes (a JSON merge patch on the newest recipe; a list replaces the whole list; {"name": "hook-vertical"} starts a new line). Takes uses the clean voice once and never uses a finished edit as an input. One render of a name runs at a time: to compare two options, give the second a new name. Returns a job; then publish_edit.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
baseNoThe edit to start from: 'hook' (its newest version), 'hook-v4' or 'edits/hook-v4.mp4'. Required when the session has more than one edit name with a recipe.
recipeNoA whole recipe. For a first version, or to rebuild an edit that has no recipe. Times in over, music and sfx are seconds of the cut (a cover adds its own).
wait_sNoWait up to this many seconds (max 120) and return the finished result inline. Default 0.
changesNoA JSON merge patch on the base recipe. A list replaces the whole list, so repeat the whole entry: {"music": [{"file": "@library/audio/Music/Calm.mp3", "at": 0, "in": 14, "gain_db": -21, "duck_db": 8, "fade_out": 1.5}]}. {"name": "hook-vertical"} starts a new edit line. null removes a field ("cover": null).
go_backNotrue to build on an older version on purpose. Without it, an old base is refused.
sessionYesSession as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare non-readonly/non-destructive/non-openworld, so the description carries real burden and delivers: it is asynchronous ("as a job"), constrained ("One render of a name runs at a time"), consumes the clean voice once, and forbids using a finished edit as input. It does not explain what rendering destroys or overwrites or what the job result contains, but the added behavioral context is substantive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, but the body is a run-on of parenthetical fragments and embedded field lists that are hard to parse on first read. Much of it earns its place given the complexity, yet it could be tightened and ordered more clearly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-param tool with nested objects and no output schema, the description covers the recipe/changes distinction, the concurrency constraint, and the handoff to publish_edit, and hints at the async return ("a job"). It leaves open what the job result looks like and how to retrieve it, but the workflow is essentially complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so baseline would be 3, but the description adds meaning beyond the schema: it enumerates recipe fields (name, cut, frame shapes, over, music, sfx, steps, cover), ties cut to rough_cut, and explains merge-patch semantics including list replacement and null removal. These are genuine additions rather than repeats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Build an edit from a recipe") and frames the operation as producing a job, which distinguishes it from sibling publish_edit and check_edit. The additions "as a job, and check it" and the field-level recipe walkthrough make intent clear, though the sentence is dense enough that the core action is slightly buried.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly routes the agent: recipe for a first version, base+changes for a next version, and names the follow-up step ("Returns a job; then publish_edit"). It even gives an operational rule for comparison ("to compare two options, give the second a new name"). It stops short of explicit when-not-to-use or a contrast against get_edit_recipe/check_edit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.