Valmera — agentic AI video editor
Server Details
AI video editor for real footage: cut, caption, reframe, add music and b-roll, preview, export MP4.
- Status
- Healthy
- Uptime
- 76.4% over 69 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- ABO3SKRALMASAOODI/valmera-mcp
- GitHub Stars
- 0
- Server Listing
- Valmera MCP Server
TDQS
Scored across 216 tools
The set has many overlapping tool families: add_text, add_title_card, add_typeset, add_typography_scene, and add_motion_graphic all place on-screen type; add_stylize, add_finish, add_custom_filter, and set_color_grade all affect look; add_overlay, insert_media, and start_media_sequence all bring media into the program. The verbose descriptions contain helpful guardrails, but with 216 tools the agent must parse a lot to avoid misselection.
Names are consistently snake_case, which is readable. However, the verb convention is mixed: add_, set_, remove_, get_, list_, apply_, look_at, watch_video, project_state, and ask_user do not follow one predictable pattern. The set is understandable but not uniformly structured.
216 tools is far beyond a well-scoped surface for any single server, even a rich video editor. Many tools are paired add/remove variants and fine-grained setters, creating an extreme surface that is hard to browse or select from reliably.
The surface covers the full lifecycle: project creation and listing, uploads, analysis, transcript/shots/audio reads, editing, captions, effects, audio mixing, rendering, export, audits, and removal/undo operations. It is difficult to identify an obvious missing workflow for an agentic video editor.
Available Tools
216 toolsadd_accentAdd accentAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. 1-N-frame punctuation on the speech: negative, white_hit (peak + decay), colour_hit (the outgoing shot's hue), threshold, posterize, mono, mirror, hue_step, rgb_slice, box_invert; kind='matte_flash' fills the subject. Place with at= (program seconds) or on=stress|word|phrase_end|cut (beat|downbeat|onset only on a track the USER supplied) inside start/end, shaped by density: sparse (strongest, >=2s apart), pulse, accelerate (gaps shrink into the payoff), 8ths/16ths (beat grids). scope='all' inverts the type too. region {shape:'card'} clips to the picture card. Flash safety keeps <=3 full-frame flashes a second unless the user asked for strobing. Adds no sound or zoom. One punctuation family per section; never inside a payoff hold.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| on | No | ||
| end | No | ||
| kind | Yes | ||
| seed | No | ||
| bands | No | ||
| count | No | ||
| scope | No | ||
| start | No | ||
| colour | No | ||
| frames | No | ||
| region | No | FxRegion: {shape: card|face|rect|ellipse|polygon|glyph, box?, points?, ref?, invert?, feather_px?} | |
| decay_f | No | ||
| density | No | ||
| intensity | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this non-readonly/non-destructive, and the description adds genuinely new behavioral context beyond them: it acts only on the explicit project_id and returns the project identity, it caps flashes for safety, and it adds neither sound nor zoom. It does not disclose reversibility or undo semantics, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the project-scoping constraint, which is good, but the rest is a dense run-on wall of jargon-heavy clauses with inconsistent structure. Most clauses carry information, but readability suffers and some (e.g. re-listing kind values already in the enum) partially duplicate structured data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-param, nested-object, no-output-schema mutation, the description covers scoping, placement, density, and safety but leaves more than half the parameters undocumented. An agent could place accents correctly but could not confidently set intensity, count, or seed without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 13% across 16 params, so the description must compensate, and it does explain at (program seconds), on (beat|downbeat|onset restricted to user-supplied tracks), density (sparse = strongest, >=2s gaps), scope='all', and region {shape:'card'}. However many params — intensity, count, seed, bands, colour, frames, decay_f, start/end — get no explanation anywhere, leaving substantial gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('1-N-frame punctuation on the speech') and enumerates concrete accent kinds, and it distinguishes itself from siblings by declaring 'Adds no sound or zoom' (vs add_sfx/add_zoom/add_strobe). The heavy jargon makes the core action slightly opaque on first read, but the resource and effect family are identifiable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives actionable when/when-not rules: 'One punctuation family per section; never inside a payoff hold', 'beat|downbeat|onset only on a track the USER supplied', and 'Flash safety keeps <=3 full-frame flashes a second unless the user asked for strobing'. It does not name sibling alternatives to route between, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_aspect_shiftChange aspect ratio mid-videoAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. CHANGE THE ASPECT RATIO MID-VIDEO, SMOOTHLY — THE tool for 'go vertical for this bit' / 'squeeze to square here and back'. At at_output_s the visible frame MORPHS to ratio over duration_s (0.1-4s, 0.8 default) with an eased close-in, and stays there until the next shift; add another with ratio='source' to open back out. The rendered file keeps ONE resolution — it has to, that is what a video file is — so the change is the frame itself closing in, which is exactly what a smooth aspect change looks like and is why it cannot desync audio or move a caption. zoom=true (default) pushes the picture in as the frame narrows so the subject holds its size. color is the bars' colour. For changing the aspect of the WHOLE video use set_frame or auto_reframe instead. Remove one with remove_aspect_shift.
| Name | Required | Description | Default |
|---|---|---|---|
| zoom | No | ||
| color | No | ||
| ratio | Yes | ||
| duration_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| at_output_s | Yes | ||
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (readOnlyHint false, destructiveHint false), so the description carries the full burden. It discloses the morph mechanism, single-resolution constraint, audio/caption safety, zoom behavior, default duration, and the return of project identity – far beyond annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but well-structured, front-loaded with project scope and core action. Every sentence adds value – no fluff, efficient use of space for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a complex tool: explains behavior, parameters, alternatives, removal, and return value. No output schema, but description covers everything an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers only 29% of parameters (project_id and motion_motif). The description explains at_output_s, ratio, duration_s (with range and default), zoom (default and effect), color, and motion_motif's purpose, comprehensively filling the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: changes aspect ratio mid-video. Clearly describes the morph effect and distinguishes from whole-video tools (set_frame, auto_reframe) and the removal tool (remove_aspect_shift). The action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (mid-video aspect shifts) and names alternatives for whole-video changes and removal. Provides clear routing criteria, leaving no ambiguity about selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_breakdownAdd breakdownCInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. The edit explaining itself: its real timeline (cut, graphics, devices, world, camera, sound lanes, true names) with a live playhead, drawn from the EDL at render. A meta beat.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| end | No | ||
| start | No | ||
| title | No | ||
| follow | No | ||
| position | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write (readOnlyHint=false), non-destructive, and non-idempotent, so the safety profile is covered. The description adds two genuinely useful behavioral facts: the call is strictly project-scoped and it returns the project identity with the result. It still doesn't say what the operation mutates or whether a project must be open, so it earns only partial credit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The front-loaded 'PROJECT-SCOPED' clause is well-placed, but the remaining two sentences are opaque metaphor ('a meta beat', 'explaining itself') that consume space without conveying actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A non-idempotent write tool with 7 undocumented parameters and no output schema needs the description to carry meaning, and it largely doesn't — parameter behavior, target of the edit, and result shape beyond 'project identity' are all unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Seven parameters with 14% schema coverage; only project_id is described. The prose ('cut, graphics, devices, world, camera, sound lanes, true names') gives no meaning to start, end, title, follow, id, or the position enum. The description does not compensate for the schema gap at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The tool name and title say 'Add breakdown', but the description never states plainly what is added or where — it instead riffs on what a breakdown conceptually is ('the edit explaining itself', 'a meta beat'). Against siblings like add_title_card or add_captions, an agent cannot tell what asset this creates or how it differs. The 'PROJECT-SCOPED' prefix is the only concrete framing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance relative to the many add_* siblings, nor prerequisites beyond the project scoping note. The scoping directive ('acts only on the explicit project_id... never used to guess') is useful but is about parameter mechanics, not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_captionsAdd captionsAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Burned captions. mode='from_transcript' (word-timed from the real transcript, recommended) or mode='off', or items=[{text,start,end,style?}] (source seconds) for text the user dictates. PREMIUM PRESETS (style.preset) are professionally designed looks with real fonts. SAFE DEFAULTS: 'clean' (white Plus Jakarta Sans, complete short phrases, size-only hierarchy), 'documentary' (restrained subtitles on a translucent contrast panel), and 'broadcast' (left-aligned news/explainer lower third). SOCIAL/CREATIVE: 'reels' (FLAGSHIP short-form system: tight two-line hierarchy, warm hero word and multi-stage elastic word landings), 'podcast' (bold white words land on screen as spoken, keywords light up in the accent color, get a highlight box or serif italics, numbers render HUGE), 'beast' (loud MrBeast-style: ALL-CAPS impact font, centered, the spoken word pops in the accent color), 'karaoke' (an accent box follows each spoken word), 'spotlight' (ONE glowing word at a time, centred, uppercase — the modern single-word look for hype/motivation/fast talking; the ONLY preset that belongs mid-frame), 'elegant' (calm lower-third, serif-italic accents — interviews/luxury), 'lyric' (phrase-led music/quote typography), plus stacked/iridescent/chrome/editorial/fashion/luxe/impact/retro/neon composed looks; 'classic' is the plain legacy look. MOTION LOOKS (style.motion_look, browser-drawn, the premium default where available): 'editorial' (bold grotesk + big serif-italic emphasis word tucked above/below the line, hard pops — podcasts, reels, premium), 'clean' (calm sentence case rising out of a blur — interviews, tutorials), 'lockup' (small caps connectors over ONE huge hero word), 'pop' (outlined hype punches), plus box/serif/glow/stack/mono; words reveal in place on their spoken onset and phrases clear on pauses. If style is omitted, the tool chooses a coherent treatment deterministically from the measured format, speech pace and brief (a motion look for short-form/podcast/premium briefs, with the preset kept as the fallback) — it does not make every project wear the same caption skin. PLACEMENT: multi-word presets default to the BOTTOM, clear of the face — do not move them to 'middle'; only a single-word-at-a-time look may sit centred. With a preset, sparse emphasis is AUTO-SELECTED from the KEPT transcript when emphasis_words is omitted; measured vocal stress leads on short-form/cached audio, with numbers and semantic outcome words as fallback. pass a verbatim list only when specific words are required, or [] to explicitly disable hierarchy. highlight_color sets the accent (default warm yellow); uppercase overrides the preset's casing; position bottom/top/middle overrides its placement and LOCKS that band for the whole video (no shot-by-shot position changes); anchor_y similarly locks an exact vertical frame fraction. Omit both to let collision-aware placement adapt by shot. Other style fields: color '#RRGGBB', size s|m|l|xl (presets are already big at 'm'), size_scale 0.5-3.0, dynamic:true (legacy karaoke, no preset), animation fade|pop|slide_up|punch|blur_in|whip|flash|rise|drop|elastic|bounce|swing|zoom_blur, or 'none' to turn a preset's animation OFF (instant words), single_line:true to guarantee one rendered row per transcript-caption state regardless of the preset's normal flow/stack layout, max_words_per_caption 1-16. Without a motion look the default modern preset is 1-2 words at a time, stacked levels, fade in (preset 'stacked', max_words_per_caption 2) — not a sentence subtitle; a motion look groups its own phrases (pass max_words_per_caption only to narrow them). Example — premium reel captions: {mode:'from_transcript', style:{motion_look:'editorial', preset:'stacked'}}. Example — dictated title card: {items:[{text:'CHAPTER ONE', start:0, end:2.5, style:{preset:'beast'}}]}. Stack presets (stacked/iridescent/chrome/fashion/luxe/editorial/impact) compose 1-2 words across lines of very different SIZES; font picks a bundled family, emphasis 'big' enlarges keywords WITHOUT recolouring them, leading below 1.0 overlaps the lines so a smaller word fades in behind the hero. Production controls include outline_color/outline_width, shadow, background_color/background_opacity, tracking and text_align.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| items | No | ||
| style | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. | |
| emphasis_words | No | ||
| max_words_per_caption | No | ||
| min_words_per_caption | No | Preferred minimum for static phrase presets such as clean; QA flags unavoidable fragments. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description usefully adds that the call is project-scoped and returns project identity, that it deterministically auto-selects a treatment when style is omitted, and that position/anchor_y 'lock' placement for the whole video. It does not state what happens to pre-existing captions or whether repeated calls stack, which is a real gap for a non-idempotent mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
This is a ~600-word wall of prose with no bullets, paragraphs or line breaks, forcing an agent to parse dense run-on sentences to find anything actionable. Capitalized section markers (PROJECT-SCOPED, PREMIUM PRESETS, MOTION LOOKS, PLACEMENT, SAFE DEFAULTS) give some structure, but the sheer length and lack of scannability are a serious usability defect for a tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a complex tool with 8 parameters and a ~22-field nested style object plus no output schema, the description covers an unusually complete surface: modes, preset catalog, motion looks, default-selection behavior, placement rules, emphasis auto-selection, production controls, and two worked examples. Nothing an agent needs in order to invoke it correctly appears to be missing, even if the presentation is unwieldy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 38% and enums carry no descriptions, so the description must compensate — and it largely does, explaining mode values, items shape, the meaning of every major preset and motion_look, plus style fields like highlight_color, uppercase, single_line, size_scale, animation and max_words_per_caption. Coverage is broad but not exhaustive (e.g. outline_color/outline_width/shadow/background_* are only name-dropped), and it does not cover min_words_per_caption or motion_motif beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — 'Burned captions' — and pins the scope ('acts only on the explicit project_id and returns the project identity with its result'). An agent can tell it produces burned-in captions, but the purpose sentence is buried under a torrent of preset/motion detail rather than front-loaded, and it never explicitly distinguishes itself from siblings like add_text, set_caption_style or audit_captions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is substantial usage guidance: mode='from_transcript' is marked recommended, emphasis_words should be passed verbatim 'only when specific words are required, or [] to explicitly disable hierarchy', and multi-word presets 'default to the BOTTOM... do not move them to middle'. It lacks explicit when-to-use-this-vs-alternative-tool guidance and any exclusion conditions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_collageAdd collageCInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. A living wall of REAL footage: mosaic (tiles pop on 'at' beats, breathe, collapse tile by tile into the hero tile, then the title), scroll_wall (rows of thumbnails scrolling), flatlay (cutouts dropped on a surface). tiles: asset: | source: | . Up to 64; video plays.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| id | No | ||
| end | No | ||
| hero | No | ||
| kind | Yes | ||
| start | Yes | ||
| tiles | Yes | ||
| title | No | ||
| kicker | No | ||
| layout | No | ||
| backdrop | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| collapse_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation/safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the bar is lower, and the description adds real context on top: the PROJECT-SCOPED constraint (acts only on explicit project_id, never the active-project pointer), a hard 'Up to 64' tile cap, and the fact that the project identity is returned with the result. It does not say what happens to existing elements or the required permissions, but multiple concrete behaviors beyond the annotations are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The PROJECT-SCOPED constraint is front-loaded, which is good, but the body is dense marketing prose ('A living wall of REAL footage', 'tiles pop on ... breathe, collapse tile by tile') and ends with the cryptic fragment 'video plays'. Some of the descriptive language does carry information, but the structure buries concrete parameter guidance inside it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter mutation tool with 8% schema coverage and no output schema, the description is not complete enough: most parameters are undocumented, return behavior is only hinted at ('returns the project identity'), and effects on existing timeline content are unstated. It covers the highest-value fields (kind, tiles) but leaves clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 8% (just project_id), so the description must carry the load and only partially does. It documents the critical 'tiles' syntax ('asset:<key> | source:<seconds> | <storage key>'), the 64-tile limit, and the three 'kind' enum meanings, and hints at 'at' (beats) and 'hero' (hero tile) — but 8 of 13 parameters (id, start, end, title, kicker, layout, backdrop, collapse_at) go unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys the resource (a collage of 'REAL footage') and enumerates the three modes (mosaic, scroll_wall, flatlay), so an agent knows roughly what gets created. However, it never states the core act plainly — that a collage element is added to the timeline between 'start' and 'end' — instead leading with the impressionistic 'A living wall of REAL footage'. There is no differentiation from the many sibling add_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given, and no alternatives are named despite dozens of sibling add_* tools (add_overlay, add_motion_graphic, compose_panels, etc.) that a user might confuse this with. Usage is only implied by the description of the visual effect, leaving the agent to infer when a collage is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_color_screenAdd color screenAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Cut to a full-frame SOLID or GRADIENT colour screen for a moment, then return to the footage — NO text, NO image generation, built instantly. Use for a plain white/black flash, a coloured interstitial, or a gradient backdrop. color is '#RRGGBB' (default black; '#FFFFFF' is white); pass color2 for a two-colour gradient with direction vertical/horizontal/diagonal/radial. at_output_s is PROGRAM seconds; everything after it shifts later by duration_s. motion adds a slow Ken Burns push on the screen. For a card WITH a word on it use add_title_card; to put text over this screen afterwards, add_text at the same window.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | ||
| color2 | No | ||
| motion | No | ||
| direction | No | ||
| duration_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| at_output_s | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no safety hints (readOnlyHint false, destructiveHint false), so the description carries the burden. It discloses 'built instantly', returns project identity, and describes motion behavior ('slow Ken Burns push'). It does not detail side effects on existing footage, but it adds useful behavioral context beyond the schema and does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed but efficiently structured: scoping note first, then core behavior, use cases, parameter details, and alternatives. Each sentence adds value; however, it is somewhat long, but the density of information justifies the length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters, no output schema, and minimal annotations, the description covers all parameter semantics, return behavior, scope, and alternatives. It also gives timing details and color syntax, making it complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 14% (only project_id described), yet the description explains every parameter: color format and default, color2 for gradient, direction enum, at_output_s as program seconds, duration_s shift, and motion effect. This fully compensates for the sparse schema, adding meaning to all parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: cutting to a solid or gradient color screen, with explicit exclusions ('NO text, NO image generation'). It distinguishes from siblings by naming add_title_card and add_text as alternatives for different needs. The verb 'cut' and resource 'colour screen' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases ('plain white/black flash, a coloured interstitial, or a gradient backdrop') and names alternatives with conditions ('For a card WITH a word on it use add_title_card'). Also clarifies scope ('acts only on the explicit project_id'), giving clear guidance on when to use versus siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_corrupt_screenAdd corrupt screenAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Cut to a full-frame CORRUPT / glitch screen for a beat, then return to the footage — a datamosh-style transition BETWEEN sections (e.g. podcast -> CORRUPT -> the next scene). Synthesized locally like the colour cards: NO image or video generation, always available, costs no generation credits. style: 'digital' (vivid datamosh macroblocks + horizontal tearing, the default), 'vhs' (tracking band + scanlines + chroma bleed), or 'static' (TV snow / no-signal). at_output_s is PROGRAM seconds; everything after shifts later by duration_s. Keep it SHORT (0.3-1s reads as a hit; longer feels genuinely broken). intensity 0-1 = how harsh (default 0.7). Silent by default (sound effects are optional, never rules) — the program pauses on it with no sound; sound=true lays the approved library glitch recording under it (glitch_1, or glitch_2 on a screen over 0.7s) when the break earns one. No captions ever land on it (inserted media).
| Name | Required | Description | Default |
|---|---|---|---|
| sound | No | ||
| style | No | ||
| intensity | No | ||
| duration_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| at_output_s | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (not read-only, not destructive, not idempotent); the description goes well beyond by disclosing no generation cost, always-available synthesis, no image/video generation, project-scoped return of project identity, silent-by-default with optional library SFX selection logic, and that captions never land on it. These are exactly the operational facts an agent needs that annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the project-scoped constraint and the core action, and nearly every clause carries real information (enum meanings, defaults, cost, timing). It is long for a single paragraph and some clauses could tighten, but little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description notes the return carries the project identity, and it fully covers timing semantics, defaults, cost, and caption behavior for a non-destructive insertion tool. An agent has everything required to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at 17%, the description carries the burden and does: it defines all three style enum values, intensity's 0-1 range and 0.7 default, the SHORT duration guidance, at_output_s as PROGRAM seconds with downstream shift behavior, sound's default and its glitch_1/glitch_2 selection rule, and reiterates project_id's scoping immutability. This is richer than the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Cut to a full-frame CORRUPT / glitch screen for a beat") and distinguishes it from lookalikes by naming the analogue ("Synthesized locally like the colour cards") and by clarifying it is a transition BETWEEN sections rather than a section replacement. An agent can separate it from add_color_screen, add_strobe, or add_screen_takeover without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use context ("a datamosh-style transition BETWEEN sections (e.g. podcast -> CORRUPT -> the next scene)") and practical constraints ("Keep it SHORT (0.3-1s reads as a hit)", sound optional). It does not, however, explicitly route the agent to or away from a named sibling tool, so it stops short of full alternative-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_custom_filterAdd custom filterAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. WRITE YOUR OWN ffmpeg video filter chain and apply it to the program picture — for the look no preset makes. Presets FIRST: apply_look / add_stylize / set_color_grade / enhance_video cover the common asks; reach here when the user wants something none of them says (a CRT phosphor look, posterize, a slow hue drift, selective channel work). Rules: ONE chain on the single video stream — filters separated by commas, NO ';' or '[labels]', no file access — and it must keep the frame's size and rate. The chain is DRY-RUN on the real footage before it stores: a broken chain returns ffmpeg's own error (fix it, never retry the identical string); an over-heavy one returns its measured cost. start/end are PROGRAM seconds (omit both = whole video; windowed moments follow their footage through later cuts). label = short human name for the look ('CRT green') shown in diffs. Example chain: "hue=s=0.3,curves=green='0/0 0.5/0.6 1/1',noise=alls=8:allf=t". After it lands, LOOK at the window on the next preview — a chain that parses can still look wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| chain | Yes | ||
| label | No | ||
| start | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (all false flags), so the description carries the full burden of behavioral disclosure. It comprehensively reveals: project-scoping, return of project identity, dry-run behavior, error responses (ffmpeg's own error, measured cost for heavy chains), the requirement to preserve frame size/rate, and the caution to visually inspect the result. This is exceptionally transparent, going far beyond basic expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficiently structured. It front-loads the scoping constraint, states purpose, provides presets routing, and then enumerates rules, parameter semantics, an example, and a post-action caution. Every sentence serves a distinct purpose; nothing is redundant. The length is justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, write-oriented tool with no output schema and low schema coverage, the description is complete. It covers purpose, constraints, error behavior, parameter meanings, and a follow-up verification step. An agent can correctly invoke the tool and anticipate outcomes without additional information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (2/6 parameters have descriptions). The description compensates richly by explaining start/end (program seconds, omit for whole video), label (short human name shown in diffs), chain (syntax rules, example), and project_id context (explicit scope). It adds meaning beyond the schema for all key parameters, making the tool effectively usable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'WRITE YOUR OWN ffmpeg video filter chain and apply it to the program picture.' It explicitly differentiates from sibling tools by naming presets (apply_look, add_stylize, set_color_grade, enhance_video) and specifying when to use this custom filter instead. The purpose is unambiguous and distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool vs alternatives: 'Presets FIRST... reach here when the user wants something none of them says.' It also gives concrete examples of custom looks and detailed rules for constructing the filter chain, including syntax constraints, error handling, and parameter semantics (start/end, label). This fully equips the agent with selection and invocation guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_depth_effectAdd depth effectAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Depth devices from the shot's measured depth: parallax (a 2.5D move through a still: asset_key, a main-video second src_t, or the frame at start — archive photos come alive), ken_burns (2D move), dof (subject sharp, world soft), rack_focus (focus pulls from focus_from to focus, landing ON word), fog / light (through depth), point_cloud (LiDAR-style cloud of the person or scene), push_through (a camera push through text; only when the user asked for a push). word binds it to a spoken word; a held frame (parallax/ken_burns on the main video) starts as the word ENDS and never sits over speech (allow_speech overrides). Ideas, not decoration: one per moment that earns it.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| end | No | program s | |
| blur | No | ||
| kind | Yes | ||
| move | No | {path: push_in|pull_out|drift_left|drift_right|rise|fall|orbit_left|orbit_right, amount 0.05-1, ease} | |
| text | No | ||
| word | No | ||
| focus | No | ||
| src_t | No | ||
| stage | No | ||
| start | No | program s | |
| amount | No | ||
| colour | No | ||
| density | No | ||
| rack_at | No | program s | |
| backdrop | No | ||
| strength | No | ||
| asset_key | No | ||
| focus_from | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| user_asked | No | ||
| allow_speech | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (not read-only, non-destructive, non-idempotent, closed-world), and the description adds substantial context beyond them: the PROJECT-SCOPED immutability of project_id, that the project identity is returned with the result, and temporal behavior (word binding, held frames starting at word end, allow_speech override). No return format detail or rate limits, but the added context is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scope statement is front-loaded, which is good, but the body is a single dense run-on paragraph of stacked parentheticals with no grouping by device or parameter. It contains no filler, yet the density and lack of structure make it harder to parse than the information warrants.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 22-param mutation tool with low schema coverage and no output schema, the description covers scope, returned value, device semantics and temporal rules, which is solid. It still omits many parameter meanings and any sibling differentiation, so it is adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 23% on 22 params, so the description must compensate and it does for the semantically hard ones: it glosses kind's enum values, asset_key, src_t, word, focus_from/focus and allow_speech. Many parameters remain unexplained in both schema and description (blur, move, rack_at, density, strength, backdrop, stage, threshold-like numerics), leaving the coverage gap only partially closed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('add depth effect') and enumerates the distinct devices it produces (parallax 2.5D move, ken_burns 2D move, dof, rack_focus, point_cloud, push_through), which lets an agent distinguish variants internally. However it never names or contrasts a sibling tool (e.g. add_zoom, animate_still, add_subject_effect), so the boundary against neighbours is left for the agent to infer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real when-to-use conditionals per device: push_through 'only when the user asked for a push', held frames 'start as the word ENDS and never sit over speech', and the editorial rule 'one per moment that earns it'. It is missing explicit when-NOT/exclusion guidance naming an alternative tool, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_device_stageAdd device stageCInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. A recording (screen: asset: | source: | ) inside a drawn laptop, phone, tablet or monitor, its light spilling on the stage; breakout [x0,y0,x1,y1] (screen fractions), or breakout_element=true (the element a web recording clicked near breakout_at), lifts that part of the UI out.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| end | No | ||
| start | Yes | ||
| title | No | ||
| device | No | ||
| screen | Yes | ||
| breakout | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| breakout_at | No | ||
| breakout_element | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, idempotent=false, openWorld=false, so the safety profile is covered. The description does add genuine non-annotation context — the call is project-scoped on an explicit project_id and returns project identity with the result — but it says nothing about the mutation semantics that idempotent=false implies (does each call stack a new stage? does it replace?) or about timeline side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only two sentences, but they are dense run-ons loaded with inline syntax notation, and the front-loaded content is a scope caveat rather than the action. The reader must parse past 'PROJECT-SCOPED' and a list of device nouns to grasp what the tool even does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, low-coverage, annotation-only tool with no output schema, the description should carry more weight. It omits the required 'start' parameter, ignores id/title/end, and gives no guidance on how this stage relates to or replaces existing device stages, so an agent cannot call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 10% with 10 parameters, so the description is expected to compensate, and it does explain the non-obvious ones: screen source syntax (asset:<key> | source:<seconds> | <storage key>), breakout as [x0,y0,x1,y1] screen fractions, and breakout_element with breakout_at. However, required parameter 'start' and the id/title/end parameters are left entirely unexplained, leaving real gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gestures at the resource — a screen recording placed inside a drawn laptop/phone/tablet/monitor mockup — but never states the verb plainly and wraps the core idea in poetic phrasing ('its light spilling on the stage'). An agent can roughly infer 'add a device-framed screen,' yet nothing crisply distinguishes it from siblings like add_screen_frame, set_screen_frame, or suggest_devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, sequencing, or prerequisite guidance. The alternative flows (e.g. suggest_devices for choosing a frame, set_screen_frame for adjusting an existing one) are never referenced, so selection between device-related siblings is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_elementAdd elementAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. A procedural element or a light device, one family verb. light_dissolve (the figure turns to light, embers off its edge), light_trail, light_rim; embers/sparks/dust/confetti/snow/fireworks (emit edge|point|box|frame; at = burst times); lightning (box = from x0,y0 to x1,y1; at = strikes); doodles arrow/underline/circle/scribble/burst/star/check/cross/bracket/spiral; orbit (text on a ring); shapes; pictogram (from pose); sprites (images). attach rides it on the world ('head', 'hand.index_tip', 'track:tr1', or words like 'round his head'). Light composites as light; nothing here adds a sound or a zoom.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| at | No | ||
| id | No | ||
| box | No | ||
| end | No | ||
| emit | No | ||
| kind | Yes | ||
| text | No | ||
| count | No | ||
| start | Yes | ||
| style | No | ||
| attach | No | ||
| colour | No | ||
| images | No | ||
| palette | No | ||
| intensity | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| dissolve_embers | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations present, the description still adds real behavioral context beyond them: it declares the call is PROJECT-SCOPED, acts only on the explicit project_id (never the active-project pointer), and returns the project identity with its result. It also explains attach semantics ('rides it on the world') and clarifies that light composites as light. It does not discuss reversibility or failure modes, but the annotation-covered mutation profile plus this added scope/return detail is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The PROJECT-SCOPED constraint is correctly front-loaded, and the dense kind catalogue is reasonably compact for 19 parameters. But the body is a semicolon-chained run-on laden with project-specific jargon ('one family verb', 'embers off its edge'), which makes it harder to parse than its length warrants.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 19-parameter mutation tool with no output schema and near-zero schema descriptions, the definition covers scope, return identity, the kind taxonomy, key modifier semantics, and exclusions. It still omits units/defaults for timing parameters and the meaning of several secondary parameters, so it is close to but not fully sufficient on its own.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 5% (1 of 19 params documented), so the description must compensate and largely does: it explains emit targets (edge|point|box|frame), 'at = burst times', 'box = from x0,y0 to x1,y1' for lightning, and attach values ('head', 'hand.index_tip', 'track:tr1', or natural-language phrases). Several parameters (start, end, count, intensity, colour, palette, style, text, images, id) remain unexplained and units for start/end are unstated, so it is strong but not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool adds a 'procedural element or a light device' and enumerates the concrete kind families (light effects, particle emitters, doodles, lightning, orbit, shapes, pictogram, sprites), so an agent can tell what gets created. It also separates itself from siblings by declaring it adds no sound and no zoom. The opening phrase 'one family verb' is cryptic, but the resource and scope are otherwise clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives usable selection context by describing what each kind does (e.g. 'light_dissolve (the figure turns to light)', 'lightning (box = from x0,y0 to x1,y1; at = strikes)') and an implicit exclusion ('nothing here adds a sound or a zoom'), which routes agents away from add_sfx/add_zoom. However it never names an alternative tool or states a when-to-use/when-not condition explicitly, leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_finishAdd finishBInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. A picture finish over [start, end): lcd/crt/led re-photography, halftone, xerox, band_tear, film, or a live variant (thermal, xray, blueprint, line_art, solarise, posterise, kaleidoscope, pixel_stretch, night_vision). Variants are metaphors (mechanism, inside the body, data), never decoration. matte_weighted makes the person hot (thermal) or clips the X-ray to them. stage over_type finishes the type too. Short luminance flips count as flashes.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| end | No | program s | |
| kind | Yes | ||
| scale | No | ||
| stage | No | ||
| start | No | program s | |
| origin | No | ||
| region | No | FxRegion: {shape: rect|ellipse|polygon|glyph|face|card, box|points|ref} | |
| palette | No | ||
| strength | No | ||
| direction | No | ||
| ramp_in_f | No | frames 0-48 | |
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| ramp_out_f | No | frames 0-48 | |
| matte_weighted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond annotations: the call is PROJECT-SCOPED and returns the project identity with its result, matte_weighted alters the subject in thermal/xray, stage=over_type also finishes the type, and 'short luminance flips count as flashes' warns of a flashing safety constraint. Annotations only declare non-readonly, non-destructive, non-idempotent; the description usefully extends this, though it omits permission/auth needs and mutation-reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the important PROJECT-SCOPED constraint, which is good structure. However the middle is dense jargon, and sentences like 'Variants are metaphors (mechanism, inside the body, data), never decoration' and the trailing flash note are cryptic rather than crisp, so it neither wastes fully nor earns every line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter, nested-region effect tool with no output schema and only 40% param coverage, the description establishes scope and a few key behaviors but leaves many parameters and the return shape unexplained. It is adequate but leaves clear gaps an agent would need filled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 15 params at 40% schema coverage, the description carries some of the burden: it explains matte_weighted and stage=over_type, and implies start/end range semantics. But the kind list merely restates the schema enum, and id, scale, origin, region, palette, strength, direction, ramp_in_f and ramp_out_f remain undocumented in both places, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: it applies a 'picture finish' over a [start, end) range and enumerates the finish kinds (lcd/crt/led, halftone, film, thermal, etc.). An agent can tell it adds a named finish effect. However, it never contrasts itself with near-neighbours like add_stylize, add_custom_filter, or apply_look, so sibling differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance appears. There is no mention of alternatives (add_stylize, apply_look) or prerequisites beyond the project-scoping note. The claim that variants are 'metaphors ... never decoration' is stylistic doctrine, not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_freeze_frameAdd freeze frameAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. FREEZE the picture and hold it; audio_mode='hold' is the payoff hold before the end card. Optionally with a line of text over the held frame — the 'pearl' / power-phrase move: the frame stops, blurs and darkens behind big centred words, then the video continues. at_output_s is the moment in the EDITED video to freeze; duration_s 2-4s reads well; blur 0-1 and darken 0-0.85 treat the still (0.45/0.35 is the classic look, 0/0 keeps it clean); motion zoom_in/zoom_out/pan_left/pan_right gives the still a slow drift so it does not sit dead; text + subtitle are burned centred and BOUND to the frozen frame. audio_mode='pause' (default) is a real cut: the program pauses and everything after shifts. audio_mode='continue' freezes ONLY the picture as a full-frame cover while the original speech, music and timeline continue — use it when a visual must hold over an ongoing phrase without stretching or desynchronizing the audio. audio_mode='hold' is the PAYOFF HOLD: at the programme's end (or on a cut) the frame the viewer sees — exactly as composed, crop/card/grade — stops for duration_s (default 1.0; 0.8-1.5 lets a punchline or laugh land before the end card) over the source's own room tone, the last words fading into it; darken dims it under a payoff graphic, which (like any graphic or zoom ending with the programme) holds over it. Use it only when the source has no natural tail to extend (restore_range first).
| Name | Required | Description | Default |
|---|---|---|---|
| blur | No | ||
| font | No | ||
| text | No | ||
| color | No | ||
| darken | No | ||
| motion | No | ||
| subtitle | No | ||
| template | No | ||
| audio_mode | No | ||
| duration_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| at_output_s | Yes | ||
| accent_color | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only covering the safety profile (not read-only, not destructive, not idempotent), the description carries the load and delivers: it states that 'pause' is a real cut that shifts everything after it, that 'continue' keeps speech/music/timeline intact while covering only the picture, that text/subtitle are burned and bound to the frozen frame, and that project scope is never guessed from the active pointer. These are non-obvious, consequential behaviors that go well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the project-scope guarantee and the core action well, and most sentences carry real information. However it is a single dense ~200-word paragraph with editorializing flourishes ('the pearl / power-phrase move') and repeated restatement of the audio_mode semantics, making it harder to scan than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter mutation with no output schema, the description covers the effect, all three audio modes, numeric ranges, and the binding behavior of text. The notable gap is the entire typography sub-system (font, template, color, accent_color) and any indication of how the inserted freeze frame is identified or removed later.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 8% across 13 parameters, so the description must compensate, and it largely does: it defines at_output_s as the moment in the edited video, gives duration_s ranges and defaults (2-4s, default 1.0, 0.8-1.5 for a laugh), constrains blur to 0-1 and darken to 0-0.85 with classic values, enumerates motion behaviors, and explains all three audio_mode values. It leaves font, template, color, and accent_color entirely undescribed, which prevents a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and effect ('FREEZE the picture and hold it') and immediately scopes it as project-bound. An agent knows this creates a held-frame moment with optional burned text. It does not explicitly distinguish itself from close siblings like add_time_effect, add_zoom, or add_title_card, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real conditional guidance inside the parameter prose: audio_mode='continue' is for holding over an ongoing phrase without desyncing audio, audio_mode='hold' is the end-of-programme payoff, and it explicitly says to use 'hold' only when the source has no natural tail and to run restore_range first. The strongest exclusion/alternative pairing exists, though it is buried rather than framed as tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_hudAdd hudCInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Frame furniture through the piece: corner labels (tl/tr/bl/br), REC dot, timecode, brackets, crosshair, grid — small, steady, in the brand colour, clear of the corner mark. Defaults to the whole program.
| Name | Required | Description | Default |
|---|---|---|---|
| bl | No | ||
| br | No | ||
| id | No | ||
| tl | No | ||
| tr | No | ||
| end | No | ||
| rec | No | ||
| grid | No | ||
| start | No | ||
| accent | No | ||
| colour | No | ||
| brackets | No | ||
| timecode | No | ||
| crosshair | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark this as a non-idempotent, non-destructive mutation. The description adds genuinely useful context beyond the annotations: that the call is strictly project-scoped via explicit project_id and that it returns the project identity with the result (helpful since there is no output schema). It stops short of saying what is modified when re-invoked or how the added furniture interacts with existing overlays.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Reasonably short, but the scope statement is front-loaded while the actual purpose sentence is buried in stylized phrasing ('small, steady, in the brand colour, clear of the corner mark'). That stylistic clause costs space without adding callable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter mutation with 7% schema coverage and no output schema, the description covers a good share of the boolean furniture flags and discloses both the project scope and the return shape. It leaves several string parameters (id, accent) and the start/end range semantics unexplained, so an agent still cannot configure the call confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 7%, so the description must carry the load and it partially does: it maps tl/tr/bl/br, rec, timecode, brackets, crosshair, grid, and colour (brand colour) to their intent. However it says nothing about id, accent, or start/end, and gives no format guidance for the corner-label or colour strings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description never states a plain verb+resource ('adds an HUD overlay'), instead using framing jargon like 'Frame furniture through the piece'. The enumerated elements (corner labels, REC dot, timecode, brackets, crosshair, grid) do let an agent infer the resource, but only after parsing. No differentiation from siblings such as add_overlay, add_title_card, or set_screen_frame.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only scope guidance is 'Defaults to the whole program', which implies a range default but not when to reach for this tool versus add_overlay/add_screen_frame. There are no stated prerequisites, exclusions, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_kinetic_textAdd kinetic textAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. CHOREOGRAPH THE SPOKEN WORDS onto the screen in ONE pass — the signature move of top creator reels: each phrase of the transcript appears AT the instant it is spoken, placed in the empty space around the speaker, alternating sides, animated, and holding until the next phrase replaces it. Use it for 'edit this' talking-head footage, promo/educator reels, and whenever the house style calls for speech-carried typography — instead of dozens of add_text calls. start/end (PROGRAM seconds) scope it; default whole program. emphasis_words get the accent color, a size bump and a pop. zone: 'upper' (beside/above the head — default), 'lower', 'sides'. Mutes bottom captions over its window so words never print twice. Each phrase is a normal text item — inspect with get_edl, remove_text by id, or remove and re-run to restyle. AFTER rendering, LOOK at the frames: wrong zone for this framing -> re-run with another zone. motion_style='composed' (default) uses one restrained settle language across the pass and a controlled overshoot only for semantic emphasis; 'preset' restores the legacy named entrances; 'still' removes phrase animation.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| font | No | ||
| zone | No | ||
| color | No | ||
| start | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| size_scale | No | ||
| accent_color | No | ||
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. | |
| motion_style | No | ||
| emphasis_words | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false (readOnlyHint, openWorldHint, idempotentHint, destructiveHint), so the description carries the full burden. It discloses that the tool is project-scoped (only acts on explicit project_id), that it mutes bottom captions over its window to avoid duplication, that each phrase becomes a normal text item (inspectable via get_edl, removable via remove_text), and that motion_style has three distinct behaviors (composed, preset, still). It even warns that the agent should visually verify the zone after rendering and re-run if needed. This is exemplary transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured, starting with the core purpose, then usage context, then parameter behavior, then post-render workflow. Every sentence adds value; there is no filler. It is not concise in word count, but it is efficiently organized and front-loaded with the most critical information. The length is justified by the tool's complexity (11 parameters).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 11 parameters, no output schema, and no nested objects, the description is remarkably complete. It covers purpose, usage conditions, parameter semantics, behavioral side effects (caption muting, text item creation), and even the verification workflow (look at frames, re-run with another zone). It also explains how to inspect or remove the generated text items. Nothing essential for correct invocation or post-call evaluation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 18%, so the description must compensate. It does explain the semantics of start/end (program seconds, default whole program), emphasis_words (accent color, size bump, pop), zone (upper default, lower, sides), and motion_style (composed, preset, still). It does not detail font, color, size_scale, accent_color, or motion_motif, but the most impactful parameters are covered. For the low schema coverage, this is a strong effort, though not exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb-resource statement: 'CHOREOGRAPH THE SPOKEN WORDS onto the screen in ONE pass.' It explicitly contrasts with the alternative of dozens of add_text calls and specifies the use cases (talking-head footage, promo/educator reels, speech-carried typography). This sharply distinguishes it from sibling tools like add_text, add_captions, and set_text_motion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states precisely when to use the tool (for speech-synced typography over talking-head footage, promo/educator reels) and when not to (instead of dozens of add_text calls). It also provides post-render guidance: inspect frames, and if the zone is wrong, re-run with another zone. The description names alternatives and the conditions that select this tool, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_library_musicAdd library musicAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Place the CC0 library track the USER picked, by exact slug (from list_music_library). Agents never choose music: offer 2-4 tracks with ask_user and place the one they pick (a mood or 'some music' is not a pick). The track is copied into this project once, registered with its licence, and placed like add_music — OUTPUT seconds, whole program by default, ducked under speech, looped to fill. Under a voice keep the bed around -18 to -22 dB (the default -18 dB is used when gain_db is omitted); with no speech it becomes the lead at -4 dB.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| duck | No | Omit to duck under speech only; with no speech the track plays undiminished as the lead. | |
| loop | No | ||
| slug | Yes | ||
| start | No | ||
| gain_db | No | ||
| purpose | No | ||
| offset_s | No | Seconds into the track to start. Omit to start where the track's body begins (skipping a quiet intro); 0 plays it from the very start. | |
| fade_in_s | No | ||
| user_pick | No | MCP: the pick token ask_user returned plus the user's own words. | |
| fade_out_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare non-readonly, non-idempotent, non-destructive, closed-world, but the description adds real behavioral substance: the track is copied once and registered with its licence, it is project-scoped and returns project identity, placement mirrors add_music (whole program by default, ducked under speech, looped to fill), and default gains are disclosed (-18 dB ducked, -4 dB as lead). It does not clarify what happens on an invalid/duplicate slug, which is the one gap for a non-idempotent mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the critical PROJECT-SCOPED constraint, then routing, then behavior, with essentially no filler sentences. It is dense and slightly long for a single paragraph, but each clause carries a distinct constraint or default.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, no-output-schema mutation tool with only 33% schema coverage, the description covers scope, provenance, agent workflow, placement semantics and audio defaults well. It is not fully complete because several numeric placement/fade parameters remain unexplained outside the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must carry more weight. It explains slug provenance, the gain_db default of -18 dB, duck semantics, and loop-to-fill, but leaves start, end, purpose, fade_in_s and fade_out_s undocumented in both places. Baseline 3 is appropriate given partial compensation for a low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (place a CC0 library track by slug) and immediately differentiates itself from siblings by naming list_music_library as the source and add_music as the placement analogue. An agent can tell this apart from add_music, swap_music, or list_music_library without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing rules: get the slug from list_music_library, never choose music yourself, offer 2-4 tracks via ask_user and place the one the user picks, with a concrete exclusion ('a mood or some music is not a pick'). This is a genuine when/when-not with a named alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_motion_graphicAdd motion graphicAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Place a browser-rendered, After-Effects-grade motion graphic on the PROGRAM clock: spring/blur entrances, glow, gradients, 3D depth, masks, icon/emoji pops, counters, UI cards. One call = a finished composition, silent by default; pass sfx=true only for a moment that earns sound (its template cues map to the approved sound library and are levelled against the voice at their landings; CHECK lines flag a bright cue on a payoff word's onset or more than 1-2 sounds in a talking short). start/end are program seconds; end defaults to the template's natural duration. Cue it to the exact word/beat it amplifies (use word times from get_kept_transcript). layer='above_captions' (default for designed moments) or 'below_captions'. layer='behind_subject' is the premium depth signature: the graphic (a giant hero word, a number, a shape) is drawn INTO the shot and the speaker stays in FRONT of it — the person is measured out of the footage like add_text_behind (same rules: one continuous take, no speed ramp, >=0.4s; refused with the measured reason when there is no clear subject), and the reply reports how much of the graphic the subject crosses. Use it for 1-2 hero moments per short, with BIG type placed where the speaker's head/shoulders cross it. CAPTIONS: leave mute_captions unset — the captions drop exactly the spoken words this graphic shows (its number, slammed word, quoted kicker or rows) and keep every other spoken word (every heard word reaches the screen once — a lockup's rows no longer get micro bridge lines: the words they leave out are captioned beside it), moved to a band clear of the box it draws, the face and any card layout while it is up; the reply NOTEs the words captioned beside it and the words it must mute because no band is clear (then carry them on it, e.g. as a kicker, or move it off the caption band). mute_captions=true no longer hides a whole window; false keeps them all running (a number or starred word it shows is still not repeated). template='html' takes your own HTML/CSS/JS on the MG runtime in html. The write is rejected if the composition errors or draws nothing. HEADLINE BAND: template='headline' is PERSISTENT — the standing claim headline of a card or letterbox layout, one per program (end omitted = the program end; y omitted = centred in the free band above the card or picture). It yields its band on its own at render time (fades out before any graphic in the band lands, back after it leaves), never mutes captions and is silent; the reply lists the windows it yields. FACE KEEP-OUT: the write measures where the graphic draws against the speaker's face and mouth over its window (through the crop, zooms and cards) and the 9:16 safe area (6% side margins, the right 12% clear between y 0.5 and 0.85, nothing below y 0.80); a graphic that covers the face or leaves the safe area is MOVED to the nearest clear zone with its own y (and x/align/side where it has them) — above the head, below the chin, beside the face — and the reply says what moved (KEEP-OUT) or why nothing fits (NOTE). allow_face_overlap=true keeps a deliberate design over the face. NUMBERS land on their word: a counter completes 20 ms before its spoken number's onset in the transcript (the write sets its land; a count really counts, 0 -> value over ~0.4 s into the word, its window opening 0.45 s before it so it never runs across the setup; a 'reveal' starts on the word; a spoken range is value '30–40', each figure landing on its own word) and a word_slam whose hero is a figure ('32%', '$1.2B'; not a name like 'GPT-4') moves onto it — the reply says NUMBER LANDED, and NOTEs a moved window that now overlaps a neighbour. THE WINDOW: a word-timed graphic (phrase_build, marker_text over a spoken line) starts on its first visible word (WINDOW), and an entrance or exit within 0.15 s of a cut moves onto the cut frame so the change is one event (CUT-SNAP; never more than 0.15 s off its word; a number's entrance stays on its number). ONE TYPE SYSTEM: an accent/color you do not pass comes from the short's Look (the captions' highlight colour, else the accent its graphics wear; LOOK in the reply), and the reply NOTEs (look) a second accent, a fourth type role or broadcast furniture in an editorial Look, with the fix. phrase_build sets only its rows (at most 4, at most 3 sizes: SIZES); back-to-back slams of one style are a SERIES sharing one size per line. TIERS (word_slam tier, optional): 'hook' is the opening title as a headline (main line at 7%+ of the frame height, lead-in small above it) that owns its zone: the captions wait until it exits (HOOK; mute_captions=false keeps them); 'payoff' locks a number and its noun up in the accent ('140 / characters') — the short's largest lockup (NOTE (payoff) names a taller one); 'hero' is ONE giant word per short, behind the speaker by default on a measured person matte, drawn as a face-safe display slam above the picture when no person matte can be had (HERO FALLBACK). THE COVER (one call): template='cover_headline', start=0, end ~2.5-3, params {text: a strong curiosity title, 3-10 words, stars for the accent} sets the short's opening frame as a thumbnail: huge centred condensed caps, complete on frame 0, then it fades into the talk; it owns its zone like the hook tier (the captions wait until it exits; COVER). For SOME shorts, never every one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| box | No | Optional capture region hint [x0,y0,x1,y1] frame fractions. | |
| end | No | ||
| sfx | No | ||
| html | No | ||
| layer | No | ||
| start | Yes | ||
| params | No | Template parameters (see list_motion_templates). | |
| purpose | No | ||
| template | Yes | Template name from list_motion_templates, or 'html'. | |
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| mute_captions | No | Omit (default): captions drop the words it shows; every other heard word stays captioned beside it. true = the same (no graphic mutes a whole window: every heard word reaches the screen once), muting only where no band is clear of it; false = captions keep running (a shown number/*starred* word is still not repeated). | |
| allow_face_overlap | No | Keep a deliberate placement over the face (skips the keep-out move). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the basic safety profile; the description adds substantial non-obvious behavior: project-scoped return identity, write rejection when the composition errors or draws nothing, caption-drop behavior, face keep-out moves, NUMBER LANDED/CUT-SNAP replies, and headline-band yielding. None of this contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The uppercase section labels provide structure, and the core purpose is front-loaded, but the description is extremely long and dense. Several points, especially mute_captions semantics, are repeated from the schema, and the sheer volume of edge cases makes it far from concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and lack of an output schema, the description is highly complete: it explains return reporting, caption interactions, face keep-out, number landing, cut snapping, tiers, headline bands, and cover behavior. An agent has enough context to invoke it without surprises.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 46%, but the description compensates for most critical parameters: start/end are program seconds, end defaults to template duration, layer values are explained, mute_captions has detailed semantics, and sfx/html/headline/cover parameters are covered. It still leaves id and purpose unexplained, and box is handled only by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: "Place a browser-rendered, After-Effects-grade motion graphic on the PROGRAM clock." It also clarifies project scoping and output identity, but does not clearly differentiate itself from sibling graphic tools such as add_vector_graphic or add_kinetic_text; it only references add_text_behind as a behavioral analogue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides rich in-tool guidance: sfx=true only for a moment that earns sound, layer defaults, 1-2 hero moments per short, and cover usage for some shorts but never every one. It lacks explicit tool-level alternatives among the many graphic siblings, so an agent still has to infer when to use this rather than add_vector_graphic/add_kinetic_text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_musicAdd musicAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Mix music into the edit. The defaults are CONTEXT-AWARE: under speech the track sits low as a bed (-18dB, ducked); when NO speech survives under the window the music is the LEAD audio (-4dB, no ducking) so the user actually hears it. Pass gain_db/duck only to override that. storage_key is an exact key from list_assets(kind='music') — the user's own uploads or a track fetch_url just downloaded — never invent one. Agents never choose music: a library track is placed only by add_library_music after the user picks it. Choose from the user's direction, metadata, context and measured get_audio_analysis evidence. start/end are OUTPUT-timeline seconds and DEFAULT TO THE WHOLE VIDEO, so omit them for 'add some music'. Fades in/out by default. loop=true (the default) repeats a short track to fill the span; offset_s starts partway into the track, e.g. to skip a slow intro. Ducking is SMOOTH by default (a sidechain dip that follows the voice; set_music_fit(duck_mode='step') restores the legacy hard -12dB duck).
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| duck | No | ||
| loop | No | ||
| start | No | ||
| gain_db | No | ||
| purpose | No | Why this music belongs in this program/window, including the story turn or energy role it supports. | |
| offset_s | No | ||
| fade_in_s | No | ||
| fade_out_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| storage_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a non-read-only, non-destructive, non-idempotent, closed-world tool. Beyond that, the description discloses context-aware audio defaults (-18dB bed with ducking vs -4dB lead with no ducking), default fades, default looping, default smooth sidechain ducking, and the set_music_fit alternative. These are meaningful behavioral traits an agent needs in order to predict the edit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but appropriately sized for an 11-parameter editing tool with low schema coverage. It front-loads scope and purpose, then layers defaults, overrides, and routing constraints without wasting sentences. Every clause contributes to correct invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, low schema description coverage, and lack of an output schema, the description supplies the missing scope, default behavior, override rules, prerequisite asset sourcing, and sibling routing. It even notes that the result includes project identity. An agent has enough context to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 18%, so the description must carry parameter meaning, and it does. It explains start/end as output-timeline seconds defaulting to the whole video, loop and offset_s behavior, gain_db/duck override semantics, storage_key provenance, and default fades. It adds substantial meaning beyond the bare parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Mix music into the edit.' It also clearly distinguishes add_music from the sibling add_library_music by stating that library tracks are placed only by add_library_music after the user picks them. The PROJECT-SCOPED framing further clarifies scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when defaults apply, when to override with gain_db/duck, where storage_key must come from, and that agents must never choose music themselves. It also names add_library_music as the alternative for library selections. Omission guidance for start/end is given directly: omit them for 'add some music'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_overlayAdd overlayAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Draw an image or video clip OVER the program picture for a window of PROGRAM time — picture-in-picture, a corner logo, or fit='cover' for a FULL-FRAME B-ROLL CUTAWAY. fit='picture' fills only frame.picture, preserving portrait bars and headline space. The picture switches to the asset while the program's audio (the speaker, the music) keeps playing — THE way to show what the speaker is talking about without touching the timing. asset_key from list_assets (kind='clip'/'image') or a generated/fetched/recorded asset. duration_s defaults: image 4s, video the clip's length (bounded by the program end); b-roll reads best at 2-6s. x/y = the overlay's CENTER as fractions of the frame (ignored with fit='cover') — pass a keyframe list [{t,v}] (t = seconds from the overlay's own start) for a slow drift/slide. scale = overlay width as a fraction of the frame width (0.05-1.0, default 0.4; ignored with fit='cover'). opacity 0.05-1.0 (omit = opaque). entrance/exit: fade, slide_left, slide_right, slide_up. source_start_s seeks into a video overlay. HONEST LIMITS: a video overlay's audio does NOT play (silent), overlays render above footage but BELOW captions (captions stay visible over b-roll), and they do NOT track objects in the footage. insert_media PAUSES the talk and adds time; fit='cover' does not — pick by whether the speech should continue. Assets may be reused whenever the edit benefits from repetition or a different source window.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| fit | No | ||
| exit | No | ||
| scale | No | ||
| start | Yes | ||
| opacity | No | ||
| entrance | No | ||
| asset_key | Yes | ||
| duration_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. | |
| source_start_s | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover mutation/safety flags, and the description goes well beyond them with a dedicated 'HONEST LIMITS' block: video overlay audio is silent, overlays render above footage but BELOW captions, and they do not track objects. It also discloses project scoping and that the project identity is returned, plus asset reuse rules.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the scoping rule and core action, and each sentence carries distinct information (no filler). It is nonetheless a dense block of capped emphasis that an agent must parse carefully; slightly more structure would help, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter mutation tool with no output schema, the description covers behavior, limits, defaults, and most parameters, and notes the project identity comes back with the result. The main gap is motion_motif, which is unexplained despite being a non-trivial parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 15% schema description coverage across 13 parameters, the description carries the burden and delivers: fit semantics and frame.picture interaction, duration defaults per asset type, x/y as center fractions plus the [{t,v}] keyframe format, scale/opacity ranges and defaults, entrance/exit values, and source_start_s. Only motion_motif and the exact meaning of `start` are left unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Draw an image or video clip OVER the program picture for a window of PROGRAM time' — and immediately names concrete instantiations (picture-in-picture, corner logo, full-frame b-roll cutaway). An agent can distinguish it from add_screen_takeover or insert_media without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative and the deciding condition: 'insert_media PAUSES the talk and adds time; fit=cover does not — pick by whether the speech should continue.' It also frames the tool's raison d'etre ('THE way to show what the speaker is talking about without touching the timing') and where asset_key comes from.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_region_effectAdd region effectBInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. One effect inside a region over start-end (EDL.fx region): negate, solarise (colour = duotone), mono, posterize, threshold, blur, pixelate, exposure (ev), tint (colour), or a glass material: ribbed_glass, refraction, heat (scale). Outside the region the picture is untouched. glyph: works inside a graphic's letters; stage defaults to pre_captions (over_type for glyphs).
| Name | Required | Description | Default |
|---|---|---|---|
| ev | No | ||
| id | No | ||
| end | Yes | ||
| scale | No | ||
| stage | No | ||
| start | Yes | ||
| colour | No | ||
| effect | Yes | ||
| region | Yes | face|card|glyph:<motion id>|rect:x0,y0,x1,y1|ellipse:x0,y0,x1,y1, or FxRegion JSON (polygon points, keyframed keys) | |
| strength | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only declaring the safety profile (not read-only, not idempotent, not destructive), the description adds real context: the call is PROJECT-SCOPED, acts only on the explicit project_id (never the active-project pointer), returns the project identity with the result, and leaves everything outside the region untouched. This bounded, non-guessing mutation behavior is valuable beyond annotations. It still omits overlap/interaction behavior with existing effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scoping constraint is front-loaded in caps, and the sentence is dense with parameter-to-effect mappings rather than filler. It is somewhat run-on in the effect list, but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-idempotent mutation with 11 parameters, 18% schema coverage, and no output schema, the description covers scope, affected area, and effect-parameter pairings but omits defaults for non-required parameters, behavior on repeated/invalid regions, and interaction with existing region effects. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 18% over 11 parameters, so the description must carry more weight. It does map key parameters to effects (colour for solarise/tint, ev for exposure, scale for heat) and gives the stage default plus the glyph:<id> region form, but strength, id, and the exact start/end semantics are left unexplained. Partial compensation, not full.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it adds exactly one effect inside a region over a start-end span, and it enumerates the supported effect values, which tells an agent precisely what this tool produces. It does not explicitly differentiate itself from near-neighbours like blur_region, isolate_colour or add_stylize, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no named alternative. The only conditional content is scoping behavior ('outside the region the picture is untouched', 'stage defaults to pre_captions'), which is a behavioral trait, not a routing rule. An agent must infer when this beats siblings like blur_region or add_stylize.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_screen_takeoverAdd screen takeoverAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. PUSH INTO A SCREEN IN THE SHOT AND LET WHAT IS ON IT BECOME THE WHOLE VIDEO — THE tool for 'zoom into the laptop and continue with the other scene', 'make it go into the phone screen', 'transition into the monitor smoothly', and every request that describes the camera travelling INTO a device and the content taking over. It is ONE continuous move, not a zoom plus a cut: the asset is corner-pinned onto the glass so it plays ON the screen inside the shot, the camera pushes in, the picture flattens out of the screen into the full frame, and the clip cuts in on the SAME frame the push ends on — which is why the join cannot be seen. Do NOT build this out of add_zoom + insert_media: an overlay is drawn ABOVE the zoom, so the content sits flat and still while the shot pushes past it, and the cut lands as a jump. at_output_s is where in the FINAL video the takeover FINISHES and the asset is full screen (the push happens in the duration_s before it). The device shot may be the MAIN footage or a SPLICED-IN video clip: point at_output_s inside an inserted clip that shows the device and the push rides that clip's tail, arriving exactly where it ends (I snap there and say so). duration_s 0.4-5, default 1.2 — 1.0-1.5 is the move people mean. I find the corners THREE ways, in order of trust: first I MATCH the content's own pixels against the filmed glass (the laptop was almost always filmed displaying that very recording — a feature homography gives exact corners INCLUDING rotation and keystone, and the pinned clip then grows out of the very pixels it was filmed playing on, living on the glass from the window's start); else I MEASURE a screen-shaped region from the pixels; else I READ the corners with the vision model. When the corners are matched the content is on the glass the whole window; when they are only measured or read, the glass shows what was FILMED until the push is ~half done and the content dissolves on late (a scene switch visible in a wide shot of the room is the #1 thing users call 'not smooth'), fully there before the picture lands. Momentum carries through the cut either way (a brief settle past full frame); ease='accelerate' dives with speed peaking at the cut. Pass corners only to override all of that (8 numbers x0,y0,x1,y1,x2,y2,x3,y3 as FRACTIONS of the frame in the order top-left, top-right, BOTTOM-LEFT, bottom-right — or a {x,y,w,h} rectangle). clip_start_s picks where in the asset the takeover starts playing; hold_s is how long the asset stays full screen afterwards (default: the rest of it). push 0-1 is how far the camera travels (1 = all the way, the default — there is no further zoom past 1; a push that feels weak is usually a short duration_s, so lengthen the move instead). ease: 'smooth' (default), 'accelerate', 'linear'. settle:false turns OFF the through-cut momentum (the brief zoom past full frame after the handoff that settles back) — use it when the user says the video 'keeps zooming after the transition' or 'zooms then returns', or asks for a dead-flat landing. It REFUSES rather than guessing when it cannot measure the screen, and refuses when the screen is under 8% of the frame (the push would be a >12x blowup). TO CHANGE AN EXISTING TAKEOVER (flat landing, different ease/length), call this again at the SAME arrival: it REPLACES that takeover in one write — parameters you omit are inherited, and its accepted pin corners are reused instead of re-measured (pass corners to force a re-measure). remove_screen_takeover is only for taking the transition OUT.
| Name | Required | Description | Default |
|---|---|---|---|
| ease | No | ||
| push | No | ||
| hold_s | No | ||
| settle | No | ||
| corners | No | ||
| asset_key | Yes | ||
| duration_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| at_output_s | Yes | ||
| clip_start_s | No | ||
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries full burden and delivers extensively: it discloses the refusal conditions (cannot measure screen, screen under 8% of frame), the replacement semantics (REPLACES existing takeover, inherits omitted params, reuses pin corners), the momentum/settle behavior, and the three-way corner detection order. The description's write semantics ('replaces... in one write') are consistent with readOnlyHint=false — no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a ~700-word wall of text that is front-loaded well but poorly structured: ALL-CAPS emphasis, long parenthetical asides, and repeated explanations (corner matching is covered in a ~150-word digression with redundant phrases like 'living on the glass from the window's start' and 'fully there before the picture lands'). The same operational facts could be delivered in roughly half the length; the verbosity taxes the agent's context window despite the valuable content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (11 params, 18% schema coverage, no output schema, all-false annotations), the description is exhaustive: every parameter is explained, refusal and replacement behavior is stated, corner-detection strategy is documented, and the distinction from remove_screen_takeover is drawn. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 18%, so the description must compensate and does so thoroughly: it defines at_output_s (where the takeover FINISHES), duration_s (0.4-5, default 1.2, recommended 1.0-1.5), corners (8 fractions in top-left, top-right, BOTTOM-LEFT, bottom-right order or a rect), clip_start_s, hold_s (default rest of asset), push (0-1, 1=all the way), ease (three values), and settle. This far exceeds what the sparse schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource ('camera travels INTO a device and the content takes over') and gives concrete user-phrase examples ('zoom into the laptop and continue with the other scene'). It explicitly differentiates from siblings add_zoom and insert_media, explaining that an overlay drawn ABOVE the zoom makes the content sit flat while the shot pushes past. An agent can unambiguously select this tool for device-screen takeover transitions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use ('every request that describes the camera travelling INTO a device'), an explicit when-NOT-to-use ('Do NOT build this out of add_zoom + insert_media' with the failure reason), and the alternative for removal ('remove_screen_takeover is only for taking the transition OUT'). It also documents the idempotent-replacement pattern (call again at the same arrival to change an existing takeover). Nothing about selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_sfxAdd sfxAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Punctuate a MOMENT with a one-shot sound effect — a whoosh into a real turn, a click on a shown button press, an impact on the payoff. OPTIONAL, never a rule: choose it only when the moment clearly earns a sound (a podcast or talking short carries zero by default and at most 1-2; sounds with no clear on-screen reason make an edit look childish). Each needs a visual partner (something on screen changes within ~50 ms of its hit), never sits as a bright sound (ding, pop, click, shutter) on the onset of a payoff or emphasis word, and never puns on the spoken word (a shutter on 'pictures', a cash register on 'money' with nothing on screen showing it). Analysis, metadata, and deterministic preview AUDIO CHECK are useful evidence; uncertainty is something to judge rather than a reason the tool becomes unavailable. storage_key is 'sound:' for an approved library recording (list_sound_library), or an exact key from list_assets(kind='music') for a sound the user supplied — never invent one, never a web sound. at is an OUTPUT-timeline second (the edited program, not source time). For a library recording at is the moment it HITS — the visual frame its peak belongs on: the tool starts it early by its measured peak (a riser therefore ends on at; typing starts at at), skips into the file when the hit is too close to 0s, and reports where the peak lands and the span it plays — never pre-roll by hand. Any other sound starts at at. This is NOT background music: it plays once and never ducks. offset_s starts inside source audio — use it when an extracted clip contains the requested hit late in a long track. purpose records the nameable visible/editorial event for later final-mix review; do not add anonymous decorative sounds. dur_s (seconds from where it starts playing) stops a long recording (typing) when its on-screen event stops, with a short fade; long library tails (impact_1) already stop at their measured fade point unless dur_s asks for more. gain_db: leave it UNSET for a library recording — the tool measures the voice's short-term loudness at the hit and sets the gain for the sound's role (whoosh/swish ~8 dB under the voice, ding/pop/click/tick/shutter ~10 under, typing 14 under, an impact louder only below 150 Hz) and reports a MIX line; an explicit gain_db wins and is reported the same way. Other sounds default to -6dB. The result's CHECK lines flag a sound with no visual partner, on a payoff word's onset, a literal pun, a reflexive opening whoosh, a level that is inaudible or too hot, and more than 1-2 sounds in a talking short; a bright library sound on a payoff word's onset is NUDGED to a visual partner in the neighbouring speech gap when one is within reach (a pun, or a sound whose action is shown on that frame, is reported and left where it is).
| Name | Required | Description | Default |
|---|---|---|---|
| at | Yes | ||
| dur_s | No | ||
| gain_db | No | ||
| purpose | No | ||
| offset_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| storage_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the annotations (which only cover safety flags) by disclosing behavior an agent could not otherwise predict: the tool pre-rolls a library recording to land its measured peak on `at`, skips into the file near 0s, auto-measures voice loudness and sets gain by sound role unless gain_db is given, adds a short fade for dur_s, and reports CHECK/MIX lines plus NUDGE behavior on payoff-word onsets. Idempotency and side effects are consistent with the non-readonly annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening PROJECT-SCOPED clause and the core purpose are front-loaded, and nearly every sentence carries operational detail. It is nonetheless a dense ~350-word block; a few enforcement clauses (pun, bright-sound-on-payoff rule) are restated in both the setup and the CHECK sentence, which costs some length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation with no output schema, the description covers input semantics, the auto-gain/peak-alignment behavior, and what the result reports (CHECK lines, MIX line, peak position and played span), so an agent can call it and interpret the response without further information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 14% (only project_id is described), so the description carries the burden and does: storage_key's two valid forms ('sound:<id>' vs. list_assets(kind='music') key) with an explicit 'never invent one', `at` as an OUTPUT-timeline seconds value distinct from source time, offset_s as source-internal offset, purpose's review role, dur_s's fade semantics, and gain_db's unset/default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Punctuate a MOMENT with a one-shot sound effect' — and immediately distinguishes itself from the nearest sibling by declaring 'This is NOT background music: it plays once and never ducks,' which separates it from add_music/add_library_music. The examples (whoosh into a turn, click on a button press) make the intent concrete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the tool as OPTIONAL and never a rule, gives quantitative guidance ('a podcast or talking short carries zero by default and at most 1-2'), and states the visual-partner precondition, so an agent knows both when and when not to call it. It also directs the agent to list_sound_library / list_assets for the storage_key and names remove_sfx/move_sfx territory implicitly through scoping.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_stock_mediaAdd stock mediaAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. DOWNLOAD one saved search_stock or research_broll result and save it as a project asset. id must exactly match a result returned for THIS PROJECT; handles survive later turns and MCP worker processes. The clip is SILENT and is NOT in the video yet — place it with add_overlay(fit='cover') for a cutaway that keeps the speech running, or insert_media to splice it in. Representative frames from the ACTUAL downloaded rendition are automatically attached; inspect them before placement. Always tell the user which shot you used.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond the annotations: the clip is SILENT, not yet in the video, representative frames from the actual downloaded rendition are attached, and handles survive later turns and MCP worker processes. It does not contradict the annotations (readOnlyHint=false, destructiveHint=false, etc.), and actually reinforces them by describing a non-destructive, additive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but each sentence contributes essential information. It front-loads the project-scoped warning and uses clear directives (DOWNLOAD, place it, inspect, tell the user). It could be slightly more compact, but the structure is logical and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description gives a hint of the result ('returns the project identity with its result') and mentions attached frames. It covers all critical call requirements: id matching, project_id sourcing, placement guidance, and user notification. Minor details like error handling are absent but not essential for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite the schema having only 50% coverage (id lacks description), the description thoroughly explains both parameters: id must exactly match a project result and handles persist, while project_id is a required immutable scope copied from project state, not guessed from the active pointer. This compensates fully for the schema's gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'DOWNLOAD one saved search_stock or research_broll result and save it as a project asset.' It specifies the resource (stock media) and the verb (add), and distinguishes itself from other add_* tools by focusing on downloading and saving stock media. The project-scoped warning further clarifies its specific scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool and how to use it correctly: it is project-scoped, requires an exact id match, and provides placement guidance by naming alternatives like add_overlay(fit='cover') and insert_media. It also advises inspecting frames before placement, giving clear conditional usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_strobeAdd strobeAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. A frame-exact strobe over start-end: images held hold (1-8) frames each, cycled by pattern (sequence|pingpong|random). frames: project media keys, 'src:' (a clip frame), 'program' (the live picture), colours, or {source, hold_f, negate}; variant_set {t, kinds} uses make_variant_set. negate: none|alternate|all. fit: cover|contain|register (register = every image on the first one's pixels). A timeline-neutral cover: sound and timing untouched. More than 3 changes a second needs the user's ask (flash safety).
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| fit | No | ||
| hold | No | ||
| start | Yes | ||
| frames | No | ||
| negate | No | ||
| pattern | No | ||
| as_insert | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| variant_set | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only carry the safety profile (not readOnly, not destructive, not idempotent). The description adds genuinely non-structured traits: project scoping ('acts only on the explicit project_id and returns the project identity'), timeline-neutrality ('sound and timing untouched'), and a flash-safety policy requiring the user's consent above 3 changes/second.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scoping constraint is front-loaded and every clause carries information (frames formats, enums, safety). It is dense and slightly packed, but there is little filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with nested objects and no output schema, the description covers the effect model, most parameter formats, scoping, and the safety policy. Remaining gaps are start/end time units and as_insert behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 10% schema coverage the description must compensate, and it largely does: it explains frames entry types (media keys, 'src:<seconds>', 'program', colours, {source, hold_f, negate}), hold range, pattern cycling, negate values, fit including 'register', and that variant_set uses make_variant_set. Gaps remain: start/end units are ambiguous and as_insert is undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('A frame-exact strobe over start-end') and defines the effect precisely (images held hold frames, cycled by pattern). It does not explicitly differentiate itself from the many add_* effect siblings (add_finish, add_stylize, add_corrupt_screen), so sibling disambiguation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the effect semantics and one constraint is given ('More than 3 changes a second needs the user's ask'), but there is no explicit when-to-use vs alternatives guidance or which sibling to prefer. An agent can infer the context but is not routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_stylizeAdd stylizeAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Layer a windowed finishing effect on the program picture: 'grain' (film grain), 'vignette' (darkened corners), 'glow' (soft bloom), 'halation' (warm red-orange highlight bloom like exposed film), 'chromatic' (RGB fringe), 'dream_blur' (soft dreamy diffusion), 'vhs' (tape look), 'flash' (strobe pop), 'shake' (adds camera shake), 'sharpen' / 'denoise' (picture quality — prefer enhance_video, which orders them correctly), 'motion_blur' (real frame blending; only reads on movement, does nothing on a static shot), 'stabilize' (smooths modest HANDHELD wobble via deshake; mirrored edges may soften and it cannot fix a whip, a walk or rolling shutter; say that rather than promising stabilization). Stabilize is whole-video only. For other kinds start/end are PROGRAM seconds — omit both for the whole video. intensity 0.05-1.0 (default 0.5). Content-anchored: a stylized moment follows its footage through later cuts. One or two layered effects read as a look; five read as a broken TV.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| kind | Yes | ||
| start | No | ||
| intensity | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With minimal annotations, the description carries the burden and does so thoroughly. It discloses content-anchoring ('a stylized moment follows its footage through later cuts'), explains effect limitations (motion_blur 'only reads on movement, does nothing on a static shot'), and warns about layer stacking ('five read as a broken TV'). It also notes the return behavior ('returns the project identity with its result'). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph, but every sentence earns its place. It front-loads the project scope, then lists effects with inline clarifications. While long, the semicolon-separated list keeps it readable. It could be split into clearer sections, but it remains efficient for the information conveyed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 13 effect variants and subtle caveats, the description is remarkably complete. It explains the whole-video vs. program-seconds behavior, intensity constraints, effect-specific limitations, and the content-anchored nature. It also gives an alternative (enhance_video) and sets expectations about layered effects. An agent has all the information needed to decide and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, but the description adds significant meaning: it explains start/end as program seconds, intensity range and default, and describes each effect kind. project_id and motion_motif are already described in the schema. The description does not explicitly tie parameter names to their explanations, but it covers the critical ones. It compensates well for the coverage gap, though a few parameters like motion_motif are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Layer'), resource ('program picture'), and scope ('PROJECT-SCOPED: acts only on the explicit project_id'). It enumerates all effect kinds and distinguishes from siblings like remove_stylize and enhance_video. An agent can immediately understand what this tool does and how it differs from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided for when to use this tool versus others: 'sharpen'/'denoise' → 'prefer enhance_video, which orders them correctly'; 'stabilize' is 'whole-video only' and cannot fix a whip, walk, or rolling shutter. It also clarifies start/end semantics ('PROGRAM seconds — omit both for the whole video') and intensity range, so the agent knows how to invoke correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_subject_effectAdd subject effectAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Effects bounded by the person cut-out (the subject matte). kind: fill (subject flat colour 1-2 frames, decays), poster (subject on a flat field: colour = field, style.silhouette draws the subject flat), glow (light around the subject), outline (sticker stroke), negate / exposure / isolate (scope subject or background; isolate keeps colour on scope, mono elsewhere, hue 'auto'|#hex joins a hue key), echo (clones from k frames back). Time it with start+end, start+frames, or on=stress|word|phrase_end|cut (speech clock) or beat|downbeat|onset (a track the user added) with count (per='shot': count on every shot). Earns its place on payoffs, structural beats and section changes, never decoration. No sound, no zoom. Without a measured matte previews show a stand-in.
| Name | Required | Description | Default |
|---|---|---|---|
| on | No | ||
| end | No | ||
| hue | No | isolate: auto|#rrggbb | |
| per | No | ||
| echo | No | {mode: echo|clone|twin|trail, offsets_f: [4, 8], opacity, decay, tint} | |
| kind | Yes | ||
| count | No | ||
| scope | No | ||
| start | No | ||
| style | No | radius, width_px, ev, saturation, decay_f, silhouette, hue_op, stage (world|screen) | |
| colour | No | white|black|accent|#rrggbb | |
| frames | No | ||
| region | No | FxRegion: limit to a rect/ellipse/polygon/glyph/face/card | |
| intensity | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give readOnly=false/destructive=false/idempotent=false, so the description earns credit for disclosing project scoping, that the project identity is returned, and the non-obvious fallback that without a measured matte the preview shows a stand-in. It does not address repeat-call behavior or permissions, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the project-scoping constraint and the matte boundary before the dense kind list; every clause carries information. It is one long run-on paragraph of terse shorthand, which costs some scanability for an agent, but there is little filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-param, nested-object, no-output-schema mutation tool, the description covers scoping, effect taxonomy, timing/trigger model, and matte prerequisites. Remaining gaps are secondary params (region, intensity, echo/style subfields) and whether it stacks with or replaces an existing subject effect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 40% schema coverage across 15 params, the description compensates heavily: it defines each kind's visual semantics (fill decays in 1-2 frames, poster colour=field, isolate keeps colour on scope with mono elsewhere, echo clones k frames back), the three timing forms, the on= trigger taxonomy split into speech clock vs added track, and count/per='shot'. This is meaning the schema enum labels alone cannot convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource (adds an effect bounded by the person cut-out / subject matte) and enumerates the eight effect kinds it can produce, so an agent knows exactly what family of operation this is. It differentiates from siblings by scoping ('bounded by the person cut-out') and by explicit exclusions ('No sound, no zoom'), pointing away from add_sfx/add_zoom.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Earns its place on payoffs, structural beats and section changes, never decoration" gives an explicit when-to-use and when-not-to-use rule, and 'No sound, no zoom' rules out adjacent tools. It stops short of naming an alternative tool (e.g. add_region_effect) for non-matte effects, so it is clear context rather than full routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_textAdd textAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Burn a designed motion-graphics TEXT template over a PROGRAM-time window — separate from captions (spoken words) and overlays (media). Templates: 'title' (big centered opening card), 'subtitle' (support line under a title), 'lower_third' (name/context bar, interviews), 'callout' (short pointed label), 'big_number' (a huge stat — '10x', '$40K'), 'quote' (a quoted line), 'chapter' (section marker). x/y override the template's position (fractions of the frame); size_scale 0.4-3.0; color/accent_color '#RRGGBB'; font size can instead use font_size .012-.3 of the canvas short side, with max_width .1-.96 for its text column; font from the bundled families (exact name, e.g. 'Anton'); outline_width/shadow 0-12 override template edges (0 for clean flat type on a graphic panel); entrance/exit: 'none' (INSTANT — the text is simply there at frame one and simply gone at the end, no animation at all; use when the user wants no effect), fade, pop, slide_up, blur_in, whip, rise, drop, plus 'typewriter' (entrance only); uppercase forces casing; box adds a backing panel. motion is the general primitive for authored x/y/scale/rotation/opacity curves in LOCAL seconds: it can express a coherent drift, arc, settle, punch, spin or fade instead of choosing a named preset. When motion is present, omit entrance/exit. Use for text the user dictates — titles, labels, stats; spoken-word captions stay with add_captions. This text item owns caption suppression for its live window, so enabling captions before or after cannot stack two word layers and removing the text restores those captions automatically. Pass mute_captions=false for an independent headline or label in a separate visual area so dialogue captions remain visible. Inspect their geometry together.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| box | No | ||
| end | Yes | ||
| exit | No | ||
| font | No | ||
| text | Yes | ||
| color | No | ||
| start | Yes | ||
| motion | No | Element-local motion curves. t is seconds from this text's own start; x/y are frame fractions, scale is relative, rotation is degrees, opacity is 0..1. | |
| shadow | No | ||
| entrance | No | ||
| template | No | ||
| font_size | No | ||
| max_width | No | ||
| uppercase | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| size_scale | No | ||
| accent_color | No | ||
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. | |
| mute_captions | No | ||
| outline_width | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-idempotent, non-destructive, non-open-world write. The description still adds real behavioral context beyond them: project scoping, the caption-suppression ownership rule and its automatic restoration on removal, and the instant 'none' entrance/exit semantics. It stops short of describing rendering cost, auth/permission needs, or failure modes, so it is useful but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is dense and long, but for a 22-parameter tool the length is largely earned, and it front-loads the project-scoping constraint and core purpose. A few clauses (e.g. the full template glossary) are verbose, keeping it just under top marks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 22 parameters, no output schema, and very low schema coverage, the description covers nearly everything an agent needs: scoping, template choices, geometry, styling, animation, and the motion-vs-preset tradeoff. It notes the call returns the project identity with its result, but is thin on error/verification behavior, which is the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 14% across 22 parameters, so the description must carry the load — and it does, documenting x/y as frame fractions, size_scale range, color/accent_color hex format, font_size and max_width ranges, bundled font families, outline/shadow overrides, entrance/exit presets, uppercase and box behavior, and the motion curve primitive. Some params (motion_motif, project_id) are only covered by their schema descriptions, leaving a small gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — burning a motion-graphics TEXT template over a program-time window — and explicitly carves itself out from captions (spoken words) and overlays (media). The template enumeration and the 'use for text the user dictates' framing let an agent distinguish it from siblings like add_captions, add_title_card, and add_typeset without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing: dictated titles/labels/stats go here while spoken-word captions stay with add_captions, and it warns to omit entrance/exit when motion is present. It also spells out the mute_captions decision (false for an independent headline so dialogue captions remain visible), which is precisely the kind of when/when-not guidance that prevents misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_text_behindPut text behind the subjectAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Put words BEHIND the moving subject — the person walks IN FRONT of the letters, the way a title painted on the street or the wall behind them would. This is the 'text behind me walking' / 'name behind the subject' move, and it is a REAL depth composite, not a fade: a person-matting model that carries temporal state between frames cuts the subject out of every frame — dark clothes on a dark wall, handheld wobble and a moving camera are all fine, and the mask holds steady instead of flickering — and the renderer lays them back over the words. PEOPLE occlude the words (with whatever they carry); static objects — furniture, walls — do NOT: over those the words read as an ordinary title, which is what keeps the occlusion steady. Say so if the user asks about an object. Same styling arguments as add_text (template/x/y/size_scale/color/font/entrance/exit); at_output_s + duration_s are where in the EDITED video the words appear. REQUIREMENTS I check and refuse on, so read the reply: a PERSON must be visible in the window (nothing to go behind otherwise — I say so and you offer add_text instead). Follow crops, cuts and speed ramps in the window are fine: the program matte keeps the words behind the speaker, and a stretch it cannot measure renders as a face-safe slam that the reply names. I also report how much of the text the subject actually crosses — if that is near zero the user will see a plain title, so move the text or the window. BIG TYPE IS THE LOOK: the subject should cross the MIDDLE of tall glyphs with their tops and bottoms staying readable — that is what reads as depth. A small line sits entirely inside the body and whole words vanish, so titles default to size_scale 2.4 here; NEVER shrink the text to 'fix' hidden letters — enlarge it or shorten the phrase. Do NOT put a zoom or a stabilize pass over the window. Remove it with remove_text like any other text.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| box | No | ||
| exit | No | ||
| font | No | ||
| text | Yes | ||
| color | No | ||
| entrance | No | ||
| template | No | ||
| uppercase | No | ||
| duration_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| size_scale | No | ||
| at_output_s | Yes | ||
| accent_color | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only generic write annotations (readOnlyHint=false, destructiveHint=false), the description carries the burden and delivers: project scoping, the temporal matting behavior, refusal conditions, occlusion semantics for people vs static objects, defaults (size_scale 2.4), the zoom/stabilize prohibition, and cleanup path. This is far beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long but front-loaded with the project scope and the core composite concept, and most sentences carry distinct rules (refusals, occlusion, defaults). It leans narrative in the middle, which costs a little density, but little is pure padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex creative tool with no output schema and near-zero schema descriptions, the definition covers requirements, failure modes, defaults, alternatives, and removal. An agent has everything needed to call it correctly or decline.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 7% across 15 params, so the description must compensate, and it does for most: it maps styling args (template/x/y/size_scale/color/font/entrance/exit), defines at_output_s/duration_s as positions in the EDITED video, and states the size_scale default. It leaves box, uppercase, and accent_color unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the exact operation ('put words BEHIND the moving subject') and contrasts it with the plain title behavior of add_text when no person is present. It is unambiguously distinguishable from siblings like add_text and add_kinetic_text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (a person must be visible in the window), when-it-refuses ('a PERSON must be visible... I say so and you offer add_text instead'), and prerequisites (follow crops/cuts/speed ramps are fine). It also routes to the sibling add_text and to remove_text for cleanup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_time_effectAdd time effectAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Picture-only time devices (audio and program length never move): reverse, echo (trails), posterize (step-print, frames 2-8), stutter (loop frames x repeats), interpolate (smooth slow motion in a slowed window), remap (curve ease_in|ease_out|ease_in_out|hold_then_catch). ramp (factor 0.25-0.9) is a real speed change: an eased ramp that slows picture AND sound, every later item re-anchored, plus its interpolation. Reverse/remap/stutter/ramp refuse spoken words unless allow_speech.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| end | No | program s | |
| echo | No | {count 2-8, spacing_f 1-6, decay 0.2-0.9} | |
| kind | Yes | ||
| word | No | ||
| curve | No | ||
| start | No | program s | |
| factor | No | ||
| frames | No | ||
| repeats | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| allow_speech | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic mutation profile (readOnly=false, destructive=false, idempotent=false), and the description adds substantial context beyond that: project scoping, that the result echoes project identity, that most kinds never move sound/length while ramp re-anchors every later item, and that reverse/remap/stutter/ramp refuse spoken words without allow_speech. Error behavior and reversibility are not covered, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense paragraph, but it is front-loaded with the most important constraint (PROJECT-SCOPED) and every clause carries concrete information rather than filler. Readability suffers slightly from the run-on structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter tool with a nested echo object, two enums, and no output schema, the description covers the critical operational facts: scoping, kind semantics, sound-handling differences, and speech-refusal rules. It omits the timing parameters and exact return shape, but it is largely sufficient to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must compensate. It usefully documents kind semantics, factor range (0.25-0.9), posterize frames 2-8, stutter frames x repeats, remap curve values, and allow_speech, but leaves start, end, id, and word entirely unexplained. Partial compensation lands at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete verb+resource (add time effect) and enumerates the seven kinds (reverse, echo, posterize, stutter, interpolate, remap, ramp) with a gloss of each, so the agent understands the tool's domain well. It does not explicitly differentiate itself from siblings like set_speed_ramp or add_freeze_frame, which limits it to a 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when each kind applies (e.g., 'ramp is a real speed change' vs 'picture-only devices') and states the allow_speech condition, but it never says when to pick this tool over alternatives such as set_speed or set_speed_ramp. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_title_cardAdd title cardAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Cut to a STANDALONE full-frame card showing only this text, then return to the footage — the 'show the term on a blank screen' move. One call does all of it: builds the solid-colour card, splices it into the program at at_output_s, and centres the text on it. Because the card is a real cut (not an overlay), spoken-word captions never appear on it, so nothing overlaps. at_output_s is PROGRAM seconds and everything after it shifts later by duration_s (2-3s reads well). bg_color is the card colour ('#000000' default); subtitle adds a smaller second line under the title. Use add_text instead when the text should sit OVER the footage rather than replace it.
| Name | Required | Description | Default |
|---|---|---|---|
| exit | No | ||
| font | No | ||
| text | Yes | ||
| color | No | ||
| bg_color | No | ||
| entrance | No | ||
| subtitle | No | ||
| template | No | ||
| duration_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| size_scale | No | ||
| at_output_s | Yes | ||
| accent_color | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false (readOnly=false, destructive=false, etc.), so the description carries the full burden and does a good job: it discloses that the card is a real cut (not overlay), that spoken-word captions never appear on it, that it shifts subsequent content, and that it returns the project identity. Minor gaps remain—it doesn't discuss reversibility or effects on other tracks—but the disclosed behavior is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficiently organized: it front-loads the critical scope, then explains the behavior, then parameter hints, then the alternative. Every sentence adds value—no filler—though it could be tightened slightly by moving the explicit alternative to the end, which it already does. It's appropriately sized for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 13 parameters, 4 enums, and no output schema, the description is not complete. It doesn't explain the enum options (entrance, exit, template, font) or their effects, doesn't specify defaults for duration_s or size_scale, and doesn't detail the return value beyond 'project identity'. The description covers only the core behavior and a couple of params, leaving too much for an agent to guess or investigate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 8%, and the description compensates for only a few parameters: at_output_s (program seconds), bg_color (default '#000000'), subtitle (adds a second line), and text (implied as the main text). The remaining 10 parameters (exit, font, color, entrance, template, duration_s, size_scale, accent_color, project_id, etc.) are unexplained, leaving the agent to infer or open the schema for each. This is insufficient for a low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb+resource ('add_title_card' builds a standalone full-frame card with text) and immediately scopes it as project-limited. It also distinguishes itself from the sibling add_text by explaining the difference (card replaces footage vs. text overlays on it), so an agent can tell them apart without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('when the text should sit OVER the footage rather than replace it' is the exclusion for add_text) and clarifies the timing semantics (at_output_s is program seconds, everything shifts later by duration_s). It also notes the project_id is immutable and copied from specific sources, giving clear invocation guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_typesetAdd typesetAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Poster-scale type for one spoken phrase, solved for this frame: a type voice chosen for the story beat (never the same voice twice running), a layout family in the free space around the face, each word landing on its spoken onset. It replaces the captions for its words. Use it for a hook, a turn or a payoff, not for dense explanations. depth=behind sets it behind the subject.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| end | No | program s | |
| exit | No | ||
| text | No | the phrase as printed, in spoken order; *star* the one accent word. Omit to set the words said in start..end | |
| verb | No | ||
| depth | No | ||
| orbit | No | arc: rad/s | |
| start | No | program s | |
| voice | No | ||
| accent | No | #rrggbb | |
| layout | No | ||
| mirror | No | ||
| region | No | ||
| flip_at | No | item s: ink/accent swap | |
| emphasis | No | ||
| material | No | ||
| position | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| callback_of | No | the typeset id a repeated line rhymes with |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations give the safety profile (non-destructive mutation, non-idempotent), and the description adds traits beyond that: project-only scoping with an echoed project identity, a side effect ('replaces the captions for its words'), a stateful 'never the same voice twice running' constraint, and depth layering. It does not cover return payload detail or failure behavior, but it meaningfully exceeds the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the critical PROJECT-SCOPED constraint, then gives purpose, behavior, and usage in tight order. Some phrasing is adjective-heavy ('solved for this frame', 'in the free space around the face'), but each sentence carries actionable content rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, 19 params at 42% coverage, and a mutation tool — the description covers scope, side effects, and usage well but does not explain the majority of parameters or the render/return behavior. Adequate for calling it at a basic level, incomplete for full configuration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 42% with 19 params, so the description should compensate. It adds real meaning for depth ('depth=behind sets it behind the subject'), voice (chosen per story beat), layout ('free space around the face'), and text timing ('each word landing on its spoken onset'), but leaves most of the 19 params (exit, verb, material, region, orbit, flip_at, etc.) undocumented, so the coverage gap is only partly closed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('poster-scale type for one spoken phrase') and scopes it to a spoken phrase that replaces captions. It differentiates somewhat from dense-text siblings by contrasting with 'dense explanations', but never names a concrete alternative (e.g. add_text), leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives both a positive condition ('Use it for a hook, a turn or a payoff') and an explicit exclusion ('not for dense explanations'), which is real routing guidance. It stops short of naming the sibling to use instead, so the agent must find the alternative itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_type_windowAdd type windowAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Giant condensed letters that are windows (template type_window + its composite, one item). fill_source fills the glyphs: footage (an asset key), next (the shot after the cut: the cross-cut reveal), a colour. field='black' sets footage-in-letters on black; fill_mode outside makes the letters windows onto the picture with the fill around them. reveal: hold, words (one word per hard cut), open (a letter grows into the full frame, eased), words_open. Use for a title or a scene change, never as decoration.
| Name | Required | Description | Default |
|---|---|---|---|
| y | No | ||
| id | No | ||
| end | No | ||
| font | No | ||
| text | Yes | ||
| field | No | ||
| start | No | ||
| reveal | No | ||
| open_at | No | ||
| fill_mode | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| fill_source | Yes | next|previous|program[:s]|black|white|accent|#rrggbb|source:<s>|<asset key>[+loop], or FxSource JSON |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false), so the lower bar applies. The description adds real non-annotation context: it is PROJECT-SCOPED, acts only on the explicit project_id, and 'returns the project identity with its result.' It still doesn't say whether repeated calls are cumulative or what happens to an existing item, so it's not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scoping constraint is front-loaded and every sentence conveys a distinct behavior (scope, template, fill semantics, reveal modes, intended use). The prose is dense and jargon-laden but does not pad or repeat itself.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter mutation with no output schema and low schema coverage, the description covers the creation intent, project scoping, return-identity note, and the primary visual enums. Missing details are the coordinate/timing parameters and behavior on repeated or conflicting calls, so it is strong but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17% (just project_id and fill_source), so the description must carry the load, and it does explain the meaningful enums with effect semantics: reveal values (hold, words one word per hard cut, open a letter grows to full frame eased, words_open), fill_mode outside making letters windows onto the picture, and field='black' setting footage-in-letters on black. It leaves y, end, start, font, id, and open_at entirely unexplained, so it is not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource effect ('Giant condensed letters that are windows', tied to template type_window + its composite, one item) rather than restating the tool name, so an agent understands this is a typography-as-window element distinct from plain text additions. It does not explicitly compare itself to close siblings like add_text, add_kinetic_text, or add_title_card, which keeps it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use for a title or a scene change, never as decoration' gives both a positive use context and an explicit exclusion. It stops short of naming an alternative tool to pick when the goal is, say, plain text or a kinetic rather than window treatment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_ui_sceneAdd ui sceneBInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. WRITE: an explainer told through interface. scenes=[{at (s into the item) or word, layout stack|grid|focus|thread|row, focus?, objects:[{id, kind card|pill|comment|metric|bars|window|media|text, ...}]}]. The SAME id in consecutive scenes is one object that morphs; from= opens a new object as an iris from it. pill state idle|live|done lights its words as they are said; a metric counts to its value landing on the spoken number. Numbers come only from data (CSV or {name: number}; bind) or the words — never invented. media={slot: {asset_key|src_t, offset_s}} plays real recordings in media slots. backdrop solid|dim|none.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| end | No | ||
| data | No | CSV text, rows or {name: number} | |
| media | No | ||
| start | No | ||
| theme | No | ||
| accent | No | ||
| scenes | Yes | [{at|word, layout, focus?, objects: [{id, kind, title|body|text|label|name|value|delta|state|from|bind|rows|rows_from|lines|aspect}]}] | |
| backdrop | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a non-read-only, non-idempotent write with no open-world access. Beyond that, the description adds real behavioral context: it is project-scoped to an explicit project_id and echoes back project identity, and it discloses morphing semantics (same id across scenes = one morphing object, from=<id> iris transitions) and data-provenance rules. 'WRITE:' merely restates readOnlyHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scope and write nature are correctly front-loaded, but the bulk is a dense wall of bracketed DSL tokens (scenes=[{...}], objects:[{...}], media={...}) that is hard to parse and mixes syntax, behavior, and constraints. Every clause is informative, yet the packing costs readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-param nested write tool with no output schema, the description covers the core scenes/media structures and the required project scoping. It is silent on time framing (start/end), theming (theme/accent, id), and any failure/validation behavior, leaving meaningful gaps for an agent composing a call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 30% across 10 params, so the description must compensate, and it does explain the scenes DSL, layout values, object kinds, bind/state, media slot format, and the backdrop enum. However, it leaves several top-level params (start, end, theme, accent, id) and many nested object fields (title, body, value, delta, rows, etc.) to the schema, so the compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific purpose — building an 'explainer told through interface' — and the object kinds (card, pill, comment, metric, bars, window, media, text) make concrete what a UI scene contains. It does not name the sibling it contrasts with (e.g. add_title_card, add_typeset, set_typography_scene), so sibling differentiation is left to the reader.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is a hard constraint ('numbers come only from data... never invented') and a scope note, but no statement of when to choose this tool over the many adjacent add_* / set_* typographic tools. An agent must infer the 'explainer-through-interface' niche on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_vector_graphicAdd vector graphicAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Add a renderer-native VECTOR graphic over a PROGRAM-time window. Kinds: rectangle (panel/highlight), ellipse, line (underline or connector), arrow, ring (point at a real visible subject/UI target), progress (a truthful completion indicator). x/y are frame-fraction centres; width/height are frame fractions. color/stroke_color/background_color are #RRGGBB; stroke_width is a fraction of the short frame edge; rounding is 0-0.5 of the shape's short side; progress value is 0-1. motion uses the same LOCAL x/y/scale/rotation/opacity keyframes as designed text. These are compositional primitives, not decoration quotas: use a panel to support hierarchy, a line to connect, and arrows/rings only when the frame contains the thing they identify. Preview the whole path before accepting it.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| end | Yes | ||
| kind | Yes | ||
| color | No | ||
| start | Yes | ||
| value | No | ||
| width | No | ||
| height | No | ||
| motion | No | Element-local motion curves. t is seconds from this text's own start; x/y are frame fractions, scale is relative, rotation is degrees, opacity is 0..1. | |
| opacity | No | ||
| rounding | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. | |
| stroke_color | No | ||
| stroke_width | No | ||
| background_color | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false) but not scoping or side effects. The description adds that the call is PROJECT-SCOPED, acts only on the explicit project_id, and returns the project identity with its result — genuinely useful behavior beyond the annotations. It does not mention auth requirements, undo semantics, or what happens on invalid geometry, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scoping constraint is front-loaded and each subsequent sentence adds parameter or usage information rather than filler. It is dense and long, but the length is justified by the 17-parameter surface; a slightly tighter phrasing of the kind semantics could shave words without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 17 parameters, nested motion objects, low schema coverage, and no output schema, the description covers geometry units, color formats, rounding bounds, progress range, motion keyframe model, and project scoping. Missing pieces such as start/end timing semantics and how motion_motif interacts with the Blueprint motif system keep it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 18% (17 params, effectively two documented), so the description must carry the load — and it largely does: it defines x/y as frame-fraction centres, width/height as frame fractions, color/stroke_color/background_color as #RRGGBB, stroke_width as a fraction of the short frame edge, rounding as 0-0.5, progress value as 0-1, and motion as LOCAL x/y/scale/rotation/opacity keyframes. It still leaves start/end window semantics and opacity/motion_motif partially implicit, so it compensates well but not completely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add a renderer-native VECTOR graphic over a PROGRAM-time window') and enumerates the six supported kinds with their intended semantic roles (panel/highlight, underline/connector, etc.). This is enough to distinguish it from siblings like add_motion_graphic, add_ui_scene, and add_custom_filter without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real when-to-use guidance per kind ('use a panel to support hierarchy, a line to connect, and arrows/rings only when the frame contains the thing they identify') plus the workflow caveat 'Preview the whole path before accepting it.' It stops short of naming sibling alternatives (set_vector_graphic, remove_vector_graphic, add_motion_graphic) to route between them, so it is clear context rather than full when/when-not/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_voiceoverAdd voiceoverAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Lay an uploaded audio file OVER the whole program from start_output_s (a position in the FINAL edited video, default 0). duck_others (default true) lowers all other audio 12dB while it plays. source_offset_s seeks into the file in place (use it to start a narration/song excerpt at the right moment; never create an externally trimmed workaround). duration_s ends the excerpt after exactly that many seconds. To reuse dialogue from the MAIN source over an inserted/second scene, pass asset_key='main', its SOURCE start as source_offset_s, the sentence length as duration_s, and the destination scene's OUTPUT time as start_output_s. Otherwise use a storage_key from list_assets(kind='music').
| Name | Required | Description | Default |
|---|---|---|---|
| gain_db | No | ||
| asset_key | Yes | ||
| duration_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| duck_others | No | ||
| start_output_s | No | ||
| source_offset_s | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (no readOnly, destructive, etc.), so the description carries the burden. It discloses key behaviors: project-scoped, duck_others lowers other audio by 12dB, source_offset_s seeks into the file, and it returns the project identity. No contradictions found with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured: it opens with the critical scope note, then explains each parameter with examples and use cases. While it is longer than a typical description, every sentence serves a purpose and it is logically organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters and no output schema, the description covers all essential aspects: what it does, how to use it, parameter meanings, and even the return value. It lacks explicit details on edge cases (e.g., what happens if duration_s is omitted), but overall it is complete enough for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 14% (only project_id is described), but the description compensates by explaining start_output_s, duck_others, source_offset_s, duration_s, and asset_key in detail. gain_db is not explicitly explained but is self-explanatory from its name. Overall, it adds substantial meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: lay an uploaded audio file over the whole program, with parameters for timing and ducking. It distinguishes itself from siblings like add_music and add_sfx by focusing on voiceover and the explicit project-scoped behavior, and it even describes a specific reuse case for main-source dialogue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear guidance on when to use the tool, including a specific scenario for reusing dialogue and an explicit instruction to use storage_key from list_assets(kind='music') for music. It also advises against external trimming workarounds. It doesn't explicitly list exclusions vs. alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_zoomAdd zoomAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Camera move (sub-pixel, eased) on a time range of the FINAL edited video, in output seconds. OPTIONAL, never a rule: a steady, well-framed picture is the default, and a zoom needs a clear editorial reason (the word the story turns on, a real cut between ideas, a thing the viewer must look at) — zooms where nothing calls for them make an edit look childish, so never one on every cut, sentence or hold. When a move is earned, each one has a job and lands on a real beat: 'punch' = fast expo snap in (~0.15s), held, hard cut back out at end — THE punch-in on a stressed word, number or payoff; end it on the next cut or sentence turn so the step back reads as a second camera, and add overshoot 0.05-0.15 for a slam that settles on the biggest beats. 'landing' = starts pushed in (strength 0.12-0.18) and settles to the wide in ~0.35s — start it EXACTLY on a cut (end ~start+0.4) so the new shot arrives with momentum. 'push_in' = slow continuous push (strength 0.05-0.12) across a long hold (3s+) that builds toward something; 'pull_out' = the release/reveal. 'ease' (default) = smooth ramp in, hold, ramp out — a gentle push onto a subject mid-shot. An edge within 4 frames of a cut lands ON the cut and holds through it: no ramp straddles a cut, and a punch/ease starting on a cut is in on its first frame (it ramps from the wide instead when the frame before the cut is already pushed in about as far). 'pulse' = 1 -> 1+strength -> 1 in ~0.3s on a beat or hit word (strength 0.05-0.08). 'shake' = a decaying impact shake (strength unused; shake 0.3-0.8). Vary mode, strength and spacing — never the same punch on a metronome. Knobs: ramp_s = how long the move takes (punch ramp_s=0 is a hard one-frame step; a landing or pulse needs >= 0.06), overshoot 0-0.5 (punch/ease), rotate = degrees of roll riding the move (+ clockwise, 1-3 for a dynamic punch), shake 0-1 with shake_hz/shake_decay on ANY mode (punch + shake 0.4 = an impact hit). strength 0.05-4.5 (default 0.15; pulse 0.07; above 1.0 is a dramatic 2x+), capped so the footage is never enlarged past 3x in total (framing x zoom — the result says when). TWO ways to aim, and they answer different requests: rect=[x0,y0,x1,y1] (fractions of the output frame, read off look_at's grid) FRAMES A REGION — the tool solves strength and centre so that box fills the frame with margin, THE way to 'zoom into the message / that button / this panel', and its result reports where the region lands on screen. cx/cy instead PIN A POINT: that point keeps its exact screen position while everything magnifies around it — right for a punch on a face that is already well-composed, and wrong for framing a thing near an edge (an edge point stays at the edge at any strength — it never slides to centre). Pass rect OR cx/cy, not both; if both arrive the rect wins (it already determines the centre) and the call still succeeds. Omitting all targets uses the frame center and returns a quality advisory. Coordinates may come from look_at, the filmstrip, user direction, or the editor's own judgment; no prior evidence call is required. punch_in_on_emphasis places punches on the measured vocal stress peaks in one call. If the zoom should MOVE while pushed in — 'then move it to X', 'keep it and go to the next message', 'follow the cursor' — that is ONE add_zoom_path (its keyframes take rect too), never a chain of static zooms.
| Name | Required | Description | Default |
|---|---|---|---|
| cx | No | ||
| cy | No | ||
| end | Yes | ||
| mode | No | ||
| rect | No | ||
| shake | No | ||
| start | Yes | ||
| ramp_s | No | ||
| rotate | No | ||
| purpose | No | The nameable narrative or visible reason for this zoom. | |
| shake_hz | No | ||
| strength | No | ||
| overshoot | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| shake_decay | No | ||
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. | |
| target_evidence_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare non-readonly/non-destructive/non-idempotent. The description adds substantial context beyond that: the hard 3x total-enlargement cap, conflict resolution ('if both arrive the rect wins and the call still succeeds'), the frame-center fallback with a quality advisory, and what the result reports. It also confirms behavior on edge cases without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded correctly with scope then core behaviour, and most sentences carry real information, but the block is far larger than a typical tool description and reads partly as an editorial style guide (metronome punches, childish edits, overshoot for a 'slam'). It is dense and hard to scan; a leaner version would serve tool selection better.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter mutation tool with no output schema, it is very complete on invocation: aiming modalities, mode semantics, caps and failure/fallback behaviour are all covered. It only gestures at the response ('the result says when', 'its result reports where the region lands') without describing the return shape, leaving a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 18% schema coverage across 17 params, the description compensates heavily: it defines every mode value (punch, landing, push_in, pull_out, ease, pulse, shake) with duration and strength guidance, gives strength ranges/defaults, ramp_s semantics, overshoot/rotate/shake ranges, and the mutually exclusive rect vs cx/cy aiming model and their distinct behaviours. Only purpose, motion_motif and target_evidence_ids are left to the schema, and two of those carry schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Camera move ... on a time range of the FINAL edited video, in output seconds') and immediately scopes it ('PROJECT-SCOPED: this call acts only on the explicit project_id'). It also distinguishes itself from siblings add_zoom_path, punch_in_on_emphasis, remove_zoom and remove_zoom_path with explicit routing rules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use and when-NOT-to-use guidance ('OPTIONAL, never a rule ... never one on every cut, sentence or hold'), details the editorial conditions that earn a zoom, and names the alternatives ('that is ONE add_zoom_path, never a chain of static zooms'; 'punch_in_on_emphasis places punches on the measured vocal stress peaks in one call').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_zoom_pathAdd zoom pathAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. A ZOOM THAT MOVES — THE tool for 'make the zoom follow the cursor' / 'move the zoom between buttons' / 'stay zoomed and then move to the next thing' on ANY footage, including a screen recording the user made themselves. Any request where ONE zoom should hold, travel, or visit several subjects in sequence is THIS tool — never a chain of static add_zoom calls, which cut out and back instead of moving. keyframes is a list of at least two points, each {t, rect, strength} or {t, cx, cy, strength}: t is OUTPUT-timeline seconds; rect=[x0,y0,x1,y1] FRAMES the thing to look at there (fractions of the frame from look_at's grid — the same solver as add_zoom rect, so edge subjects come out framed, and omitting strength on a rect keyframe picks the strength that fits it); cx/cy instead PIN a point ((0,0) = top-left). strength 0-4.5 interpolates between keyframes, so the frame can push in as it arrives and ease out as it leaves; to HOLD on a subject, repeat its keyframe at the hold's start and end times. The window runs from the first t to the last. NO ramp is added at the edges: give the first and last keyframe strength 0 for a seamless entry and exit (a strength-0 rect keyframe still aims where the move is going). ease: 'cubic_in_out' (default — settles at each keyframe, the right answer for stopping at buttons) or 'linear' (constant speed, for a steady scan across a wide screenshot). It re-anchors across later cuts exactly like add_zoom, so cutting elsewhere never strands it. Remove the whole move with remove_zoom_path.
| Name | Required | Description | Default |
|---|---|---|---|
| ease | No | ||
| purpose | No | ||
| keyframes | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. | |
| target_evidence_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation (readOnlyHint false) with no destructive hint, and the description aligns by describing a mutating effect. It discloses key behaviors: acts only on explicit project_id, interpolates between keyframes, holds by repeating keyframes, adds no ramp at edges, and re-anchors across cuts. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but densely packed with necessary details. It front-loads the purpose and usage guidance, then systematically explains parameters and edge cases. While it could be trimmed, every sentence contributes to correct usage for a complex tool. It earns a 4 rather than 5 due to length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with six parameters, no output schema, and complex keyframe semantics, the description is remarkably complete. It covers parameter formats, interpolation behavior, hold strategies, easing options, edge-case handling, and even cleanup (remove_zoom_path). An agent has enough to call it correctly without further lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must compensate. It thoroughly explains keyframes (structure, t, rect/cx/cy, strength semantics, hold behavior) and ease values. It also clarifies project_id as explicit scope. However, it does not explain purpose, motion_motif, or target_evidence_ids, which remain underdocumented. Given the critical parameters are covered, a 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-resource pair and clearly defines the tool's niche: moving a single zoom across multiple subjects in sequence, contrasted with static add_zoom calls. It even gives example phrasings ('make the zoom follow the cursor') and differentiates from add_zoom and remove_zoom_path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (one zoom that holds, travels, or visits several subjects) and when not (never a chain of static add_zoom calls). It also names the removal counterpart (remove_zoom_path). This gives the agent clear decision criteria without opening other tool schemas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
align_lyricsAlign lyricsBRead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: the user's lyrics text aligned to the singer's timing on their track (after separate_music).
| Name | Required | Description | Default |
|---|---|---|---|
| lyrics | Yes | ||
| music_id | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world). The description adds real behavioral context beyond them: the call is strictly project-scoped to the explicit project_id, it returns the project identity alongside the result, and it presupposes separate_music has run. It does not explain why idempotentHint is false, which is the one noteworthy trait left undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded with the highest-value information (scope first, then what is read and its prerequisite). The uppercase labels are terse and functional rather than wasteful, though slightly telegraphic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema the description must convey returns, and it does say the result comes back with the project identity. However, it never states what the aligned output actually contains or whether alignment is persisted to the project, and it leaves the required lyrics parameter's expected shape unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%: project_id is well documented in the schema, but the required 'lyrics' parameter and optional 'music_id' have no type, format, or usage detail in either place. The description says only 'the user's lyrics text', which leaves the critical question of expected lyric format (plain lines, timestamps, syllable breaks) unanswered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (align) and resource (the user's lyrics text) and states the alignment target (the singer's timing on their track). The parenthetical 'after separate_music' links it to a specific sibling and workflow stage, though it doesn't contrast with near-neighbours like get_syllables, get_words, or beat_align_cuts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied through the 'READ' label and the 'after separate_music' ordering prerequisite, which is genuinely useful sequencing information. There is no explicit statement of when to prefer this over alternatives such as get_syllables or get_words, nor any when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_musicAnalyze musicARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: the structure of the user's track — tempo, beats, bars, sections, drops, gaps, kicks/snares/hats, 808s, filter openings — with program positions. Refuses when the user supplied no track (never choose music; the speech prosody grid is the clock then).
| Name | Required | Description | Default |
|---|---|---|---|
| music_id | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, destructiveHint=false, openWorldHint=false), so the bar is lower. The description nonetheless adds real behavior: the project scoping constraint, that the result carries the project identity, and an explicit refusal path when no track was supplied — none of which the annotations convey. It does not explain pagination or result granularity, keeping it out of 5 territory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the two operative labels (PROJECT-SCOPED, READ) so the agent can triage scope and operation type immediately. Dense but each clause carries information; the em-dash enumeration is long yet specific. No filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only analysis tool with no output schema, the description takes on the return-value burden and does so by enumerating the structural elements returned with program positions. Safety is covered by annotations and the refusal rule is stated. The remaining hole is music_id semantics, which is left entirely unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 50% schema coverage, the description needs to compensate. It reinforces the project_id scope ('acts only on the explicit project_id'), which the schema already documents, but the second parameter music_id is undocumented in both the schema and the description — an agent gets no guidance on when or how to supply it. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'READ: the structure of the user's track' — and enumerates the returned elements (tempo, beats, bars, sections, drops, gaps, drum hits, 808s, filter openings). This is far more than a tautology. It does not, however, explicitly differentiate itself from sibling get_audio_analysis, which an agent would plausibly confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Refuses when the user supplied no track (never choose music; the speech prosody grid is the clock then)' gives a concrete when-not condition and names the fallback clock instead of leaving the agent to guess. It stops short of pointing at the actual sibling tool (e.g. get_audio_analysis) to call when a track does exist, so it is clear context with an exclusion rather than full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_referenceAnalyze referenceARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: 'make it like this' — a reel the user uploaded, read for its device classes in order (negatives, flashes, B&W with a kept colour, strobes, type on black, fast cuts) and mapped onto this edit's moments; never its text, logos or footage.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_key | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the read-only safety profile, so the description earns credit by adding the project-scope constraint and explicit scope exclusions ('never its text, logos or footage'), which tell the agent what the analysis will and won't capture. It does not explain the non-idempotent hint, leaving one annotation trait unexplained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the two most decision-relevant markers (PROJECT-SCOPED, READ) followed by the scope exclusions. The parenthetical device-class list is dense but each item conveys a concrete visual pattern, so it largely earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry the return burden, yet 'returns the project identity with its result' is vague about what the result contains. For an analysis tool feeding downstream edits, the description should say more about the returned mapping.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (asset_key is undocumented), and the description only implicitly identifies asset_key as the uploaded reel. project_id is already well documented in the schema. It adds marginal, informal meaning rather than compensating for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (READ) and resource (an uploaded reference reel) and specifies what it extracts: device classes mapped onto the edit's moments. It distinguishes itself from the nearest sibling analyze_music by being about visual devices, though the 'device classes' vocabulary is idiosyncratic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The trigger phrase 'make it like this' gives an implicit usage context, and PROJECT-SCOPED frames the scope. However, it never explicitly says when to prefer this over look_at_asset, analyze_music, or compare_uploaded_media, so routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
animate_stillAnimate stillBInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. WRITE: a photo that sits dead still on screen moves: a cover image overlay becomes a moving still (push/pull toward a face it finds, pan a panorama, rise a tall scan, drift), an image insert gets a camera move, a moving still is re-aimed.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| fit | No | ||
| ease | No | ||
| path | No | ||
| amount | No | ||
| focus_x | No | ||
| focus_y | No | ||
| treatment | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and the description consistently states WRITE, so no contradiction. Beyond annotations it adds genuinely useful behavioral context: the call is project-scoped, acts only on the explicit project_id, and returns the project identity with its result. It stops short of disclosing reversibility or what happens to pre-existing motion on re-aim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the two constraints that matter (PROJECT-SCOPED, WRITE) before the effect narrative, and packs the media/effect detail into a single dense sentence. Slightly run-on, but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-param write tool with no output schema and sparse schema descriptions, the definition covers scope, operation type, and return identity but leaves most tuning parameters (fit, ease, amount, focus coordinates, treatment) unexplained. Adequate to understand intent, insufficient to invoke confidently with non-default parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 11% across 9 params, so the description must carry the load. It does map several path behaviors (push/pull toward a detected face, pan a panorama, rise a tall scan, drift), which gives semantic meaning to the path enum, but fit, ease, amount, focus_x, focus_y, and treatment remain entirely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: a still photo (cover image overlay, image insert, moving still) gets motion via push/pull, pan, rise, or drift. It is concrete enough to separate from generic siblings like set_overlay_motion or add_zoom by naming the input media type and effects, but it never names an alternative tool, so the differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description describes what gets animated (a photo sitting dead still, a cover overlay, an image insert) but gives no when-to-use vs alternative guidance, no prerequisites, and no exclusions. A sibling set containing set_overlay_motion, add_zoom, add_zoom_path, and add_kinetic_text demands explicit routing that is absent here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_edit_batchApply edit batchAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Apply a complete group of ordinary edits atomically, with no render wait. Read get_edl first; base_version must be current. operation_id is a unique 16-80 character retry id (letters/digits/hyphens/underscores); reuse it on transport retry. Each operation is {action,layer,value?,id?}. set replaces one complete layer; upsert patches or adds a named item; remove deletes a named item; reorder accepts all insert ids for a canvas sequence. Layers: keep,speed,inserts,frame,captions,caption_mutes,texts,vectors,music,sfx,voiceover,volume,master,effects,overlays,canvas,motion (motion graphics by id: {id,template,start,end,params}; graphics placed this way are silent and cannot sit behind the subject — use add_motion_graphic for those). Use existing EDL field shapes and project media keys. All times describe the RESULTING timeline: include dependent caption/music/text timing changes in the same batch. Unknown fields or invalid media reject the whole batch. This saves an edit; it does not certify picture/audio quality. Review changed moments, then the finished edit. Layer fx holds the creative devices (silhouette flashes, punctuation frames, junctions, grade windows, finishes) by id: read_skill('devices') for their exact shapes.
| Name | Required | Description | Default |
|---|---|---|---|
| operations | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| base_version | Yes | ||
| operation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations covering the safety profile, the description adds substantial behavior beyond them: atomic all-or-nothing semantics, no render wait, that unknown fields or invalid media reject the entire batch, that operation_id is a retry id to be reused on transport failure, that times describe the RESULTING timeline, and that motion graphics placed here are silent and cannot sit behind the subject. It even sets expectations honestly ('saves an edit; it does not certify picture/audio quality') and points to read_skill('devices') for layer fx shapes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the scope constraint and the core action, and every sentence carries information relevant to calling the tool correctly. It is dense and long, with several heavily parenthesized clauses, but for a tool with four interlocking required parameters and 18 layers the length is largely earned rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex atomic-mutation tool with no output schema and thin schema descriptions, the definition covers scope, prerequisite read, retry semantics, failure mode, action semantics, layer set, timeline-coordinate convention, and the fact that project identity is returned. It deliberately defers exact value shapes to get_edl and read_skill, which is the right place for that detail, leaving no operationally necessary gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at only 25%, the description carries the burden and does so well: it specifies operation_id's character class and 16-80 length, that base_version must be current, the {action,layer,value?,id?} operation shape, the meaning of each action (set replaces one complete layer; upsert patches or adds by id; remove deletes by id; reorder takes all insert ids), and enumerates the layers with anchor semantics (motion by id, fx by id). This goes well beyond what the schema itself documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Apply a complete group of ordinary edits atomically, with no render wait') and scopes it explicitly to the project (PROJECT-SCOPED, acts only on project_id). It is clear what the tool does, but it never names its closest sibling 'apply_short_edit_batches', leaving the agent to infer the boundary between the two batch tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives real prerequisites ('Read get_edl first; base_version must be current') and routes one specific case to an alternative ('graphics placed this way are silent and cannot sit behind the subject - use add_motion_graphic for those'). However, it offers no guidance on when to choose this over the per-layer siblings (set_text, add_music, etc.) or over apply_short_edit_batches, so the primary selection decision is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_format_packApply format packAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. WRITE: a genre pack — A manifesto, B trend desk, C typographic portrait, D creator essay, E UI/product explainer, F visual essay, G sizzle, H lyric film, I documentary, J edit about the edit: its frame when it has one (a chosen frame is kept unless aspect=true), its craft brief, and its proposals (or picks=[numbers] from suggest_story) in ONE batch; E-J without picks list them for you to pick. Devices solved against the footage (montage, drop on the payoff, loop) come back as the next calls. Never picks music, a zoom or a sound.
| Name | Required | Description | Default |
|---|---|---|---|
| pack | No | ||
| picks | No | ||
| aspect | No | ||
| intensity | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare write/non-idempotent/non-destructive; the description adds real behavioral context beyond them: it is project-scoped to the explicit project_id (no active-project guessing), it mutates the frame unless aspect=true, it returns the project identity, and it explicitly does NOT pick music, zoom, or sound. Those exclusions materially shape expectations for a batch WRITE.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the two most important tags (PROJECT-SCOPED, WRITE), which is good, but the middle is a run-on enumeration of A–J and nested clauses that is genuinely hard to parse in one read. It is information-dense rather than concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, no output schema, and low coverage, the description should carry more burden. It conveys scoping and write behavior and hints at the return (project identity plus result), but without an output schema it never describes the returned frame/brief/proposals structure, and it leaves intensity and two pack enum values unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% (project_id documented), so the description must compensate. It explains picks and aspect behavior and the pack letters, but omits the intensity enum values (calm/designed/charged) and the meaning of pack='auto' and pack='none', leaving half the parameters under-specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (apply) and resource (a genre/format pack) and enumerates the pack options A–J with their intent, and routes the agent to suggest_story for picks. The dense jargon ('edit about the edit', 'craft brief') makes it harder to gist than it needs to be, but an agent can distinguish it from siblings like suggest_story or set_frame.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies a workflow: use picks=[numbers] from suggest_story, and E–J without picks return items for you to pick. But it never states when to choose this tool over apply_look, apply_recipe, suggest_story, or apply_edit_batch, leaving the selection decision largely inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_lookApply lookAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. One call sets a whole premium look: captions, grade, texture, transitions and optional music. PREMIUM SYSTEMS (best for reels/shorts) — 'editorial': ivory sans captions whose key words turn gold serif italic, matte filmic grade (lifted blacks, soft highlights, gentle desaturation), light grain + vignette, soft white dips; 'creator_punch': bold uppercase pop captions with a yellow active word, vibrant punchy grade, zoom-punch scene transitions; 'cinematic_doc': clean sentence-case captions that rise in word by word, warm teal/orange cinematic grade, vignette + fine grain, unhurried dips to black; 'mono_noir': noir: deep contrast with the colour pushed down, stacked captions whose hero word slams in (key words red), heavy grain + vignette, glitch transitions; black and white comes as a device on its moment, never as the whole short; 'clean_minimal': large clean white captions that rise in as spoken, near-neutral polish grade, no texture, hard cuts. A system draws captions with the browser motion engine, REPLACES the earlier look's custom grade and whole-video texture, never puts a fade from black on a vertical short, and returns hero-moment templates to place next with add_motion_graphic. A look places NO sound unless transition_sounds=true (sound effects are optional, never rules): then a spaced few of its transitions take an approved library sound. CLASSIC looks: 'hype' (beast xl captions, vibrant, zoom_punch cuts), 'clean' (clean white size-led captions, ungraded), 'cinematic' (elegant captions, cinematic grade + warmth, dip_black), 'luxury' (luxe captions, warm), 'meme' (impact xl captions, flash cuts, grain); their fades apply to landscape only. Transitions fire only at real scene changes (B-roll/inserts/new shots), never on jump cuts. music= takes only the exact slug of a library track the USER picked (offer tracks with ask_user; never 'auto' or a mood — agents never choose music) and lays it as a ducked CC0 bed (-18 to -22 dB) when the edit has no music yet; otherwise omit music. Preserves existing emphasis_words, else picks them from the transcript. Never touches cuts. Every component can be adjusted afterwards with its own tool.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| music | No | Exact slug of the library track the user picked (ask_user offers them). Omit to leave music unchanged. | |
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| transition_sounds | No | Opt in to library sounds on a spaced few of the look's scene transitions — only when the user asked for transition sounds. Omit (default) to place none; false removes the look's earlier ones. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only declaring the non-read-only/non-destructive profile, the description carries the real behavioral burden and delivers: it REPLACES the earlier look's custom grade and whole-video texture, places no sound unless transition_sounds=true, ducks music to -18 to -22 dB, never puts a fade from black on a vertical short, and preserves existing emphasis_words. These are exactly the side-effect details an agent needs before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the PROJECT-SCOPED constraint and the core purpose before the long look catalog, and each block does real work. It is nonetheless a very dense, run-on block of prose whose length is only partly justified, so it is efficient without being tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a composite, mutating 4-param tool with no output schema, the description covers the return shape ('returns the project identity with its result', hero-moment templates), the mutation scope, sound behavior, and music rules. Nothing an agent needs to invoke it correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single enum param has ten values and the description characterizes each one concretely ('editorial': ivory sans captions turning gold serif italic, matte filmic grade; 'meme': impact xl captions, flash cuts, grain), which is far beyond the bare enum strings. It also adds music semantics (exact library slug, ducked CC0 bed levels, never 'auto') and transition_sounds semantics (opt-in, false removes earlier ones) on top of the ~75% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a crisp verb+resource: 'One call sets a whole premium look: captions, grade, texture, transitions and optional music.' That clearly distinguishes it from the many single-component siblings (add_captions, set_color_grade, set_transitions). It stops short of naming the nearest analogs (apply_recipe, apply_format_pack), so there is no explicit sibling routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when each look is appropriate ('best for reels/shorts' for premium systems, fades only on landscape for classic looks), gives hard when-not rules for music ('offer tracks with ask_user; never auto'), for transition_sounds (opt in only when the user asked), and for transitions (only at real scene changes, never on jump cuts). It also tells the agent where to go next ('place with add_motion_graphic') and that every component can be re-tuned with its own tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_recipeApply recipeBInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Write ONE recipe from suggest_recipes, solved on this cut (or on the spoken moment nearest at). Once per short; flash-safe unless the user asked for flashing; B&W only as a device. Returns the item ids (rc_*), removable with the department removers.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| name | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (destructive=false, idempotent=false). The description adds genuinely useful behavior beyond that: it discloses the return shape (rc_* item ids) and an undo path ("removable with the department removers"), plus a once-per-short guard. No contradiction with annotations, but disclosure of failure modes is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single compact paragraph with the scoping constraint front-loaded, so nothing is wildly over-long. But the density of idiomatic terms ("short", "cut", "department removers", "B&W only as a device") makes each sentence costly to parse, hurting the front-loading goal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does state the return (rc_* item ids) and the undo mechanism, so an agent has the essentials. It is nonetheless incomplete on the operational meaning of the arguments and on how it relates to other apply_* tools, leaving real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must carry weight, and it partially does: it explains name as coming from suggest_recipes, at as "the spoken moment nearest at", and project_id as an explicit immutable scope. It still leaves the enum values and the exact semantics of "nearest at" to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Write ONE recipe from suggest_recipes" gives a specific verb+resource and names the source sibling, so the core action is inferable. However, the operation is wrapped in opaque jargon ("solved on this cut", "B&W only as a device") and never distinguishes itself from close siblings like apply_look or apply_edit_batch. Purpose is decipherable but not cleanly stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides real usage constraints — "Once per short" and "flash-safe unless the user asked for flashing" — which imply when the tool is appropriate. But it gives no guidance on when to prefer this over alternatives such as apply_look, and no prerequisites beyond the project scoping statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_short_edit_batchesApply edits to selected shortsAIdempotentInspect
Save caller-authored edits for up to 30 shorts in one request, without running another model or rendering. project_id is the parent; every child must belong to it. Each batch uses apply_edit_batch's operations and current base_version, and has its own unique retry operation_id. Each child is atomic; results explicitly report partial failures. All times describe that child's resulting timeline. Read and inspect each short first. Saved edits still require changed-moment and final quality review. This tool never exports finals.
| Name | Required | Description | Default |
|---|---|---|---|
| batches | Yes | ||
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral detail beyond the annotations: per-child atomicity, explicit partial-failure reporting, timeline semantics, the fact that it never exports finals, and the requirement for later review. It is consistent with the idempotentHint and destructiveHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence carries operational weight: scope, parent-child requirement, retry semantics, atomicity, timing guarantees, prerequisites, follow-up reviews, and non-export behavior. It is front-loaded with the most important capability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex batched mutation with no output schema and no parameter descriptions, the description covers the critical semantics: limits, atomicity, partial failures, timeline interpretation, and review obligations. It is slightly incomplete only in that operation subfield meanings are delegated to apply_edit_batch and the exact failure response shape is not described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains project_id as the parent that all child batches must belong to, base_version as the current version, operation_id as a unique retry identifier, and operations as reusing apply_edit_batch semantics. It does not describe the action/layer/value subfields in detail, but it provides enough orientation for a capable agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb ('Save') and resource ('caller-authored edits for up to 30 shorts') and immediately distinguishes this from rendering/model-generation workflows. It also references apply_edit_batch's operations, making the batch-vs-single relationship clear without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: use this to save authored edits without rerunning a model or rendering, after reading/inspecting each short, and knowing that reviews are still required. It does not explicitly say 'use apply_edit_batch for a single short,' but the batch framing strongly implies the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_userAsk userAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Ask the user a specific question and wait for their reply (ends this turn). Use whenever a material choice genuinely belongs to the user — background music always does: list 2-4 exact library track titles and place the one they pick.
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover only the safety profile (readOnlyHint=false, non-destructive, non-idempotent), so the description carries the real burden. It discloses the blocking semantics ('wait for their reply, ends this turn'), project scoping, and the returned project identity, all of which are not in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the scoping constraint and the core action before the usage rule. The music example is verbose but earns its place as the only concrete instance, so only minor trimming is possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must say what comes back, and it does ('returns the project identity with its result'). Combined with the blocking behavior and scoping, an agent has what it needs, though the shape of the reply payload is only loosely specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: project_id is documented in the schema, but the question parameter is not. The description compensates by prescribing the question's content and format for the music case ('list 2-4 exact library track titles'), giving real semantic guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Ask the user a specific question and wait for their reply') and adds the terminal behavior ('ends this turn'), which no sibling tool shares. An agent can immediately distinguish this from all the add_*/set_* editing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use whenever a material choice genuinely belongs to the user') plus a concrete mandated case (background music) with a prescribed procedure. It stops short of naming an alternative or an explicit 'do not use' bound, so it lands below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attachAttachBInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Attach a motion graphic to the world (MotionItem.anchor): it rides a face part, the head, a fingertip, both hands' frame, a joint, a tracked point, an object or a plane. pin = the graphic's own point set on the anchor ([0.5,1] = bottom centre); follow adds scale / rotation; occluders = what passes in front (person, hands, object:); lost = hold|hide|static. clear=true detaches.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | face, face.<eye_l|eye_r|iris_l|iris_r|nose|mouth|chin|forehead|ear_l|ear_r>, head, hand.<index_tip|thumb_tip|palm|wrist|pinch|frame>, pose.<chest|shoulder_l|...>, track:<id>, object:<id>, plane:<id>, screen | |
| pin | No | ||
| lock | No | ||
| lost | No | ||
| clear | No | ||
| place | No | ||
| which | No | any|left|right (on screen)|0..7 | |
| follow | No | ||
| offset | No | ||
| shadow | No | ||
| smooth | No | ||
| motion_id | Yes | ||
| occluders | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly=false, destructive=false), and the description adds real behavioral context: it is project-scoped and never guesses the active-project pointer, it returns the project identity, and clear=true detaches. It does not mention idempotency or what happens to existing anchors, but it meaningfully exceeds the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense run-on paragraph; the important PROJECT-SCOPED scope note is front-loaded, which is good, but the sentence chain mixes scope, anchor options, and parameter semantics with no structural separation, making it harder to parse than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter mutation tool with no output schema and 21% schema coverage, the description covers the anchor and a handful of semantics but leaves roughly half the parameters unexplained. The scope and detach behavior are covered, so it is adequate but not complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 21%, so the description must carry meaning, and it does explain several parameters (pin's [0.5,1] origin, follow options, occluders, lost=hold|hide|static, clear detaches). However several of the 14 parameters (lock, place, which, offset, shadow, smooth, motion_id) get no coverage in either place, so compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Attach a motion graphic to the world (MotionItem.anchor)" gives a specific verb and resource, and enumerates the anchor kinds (face part, head, fingertip, joint, tracked point, object, plane). It does not explicitly name a sibling like pin_to_plane or place_in_world to differentiate, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to reach for attach versus the many related siblings (pin_to_plane, place_in_world, set_motion_graphic, track_point). Usage must be inferred from the parameter dump; no exclusions or alternative routing are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_audio_mixAudit audio mixBInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Deterministic audit of the CURRENT EDL's authored music, voiceover and SFX roles, files, program windows, source offsets, gains, ducking and mastering. Each music item includes its persisted raw provider provenance, rights-capability signals and downloaded SHA-256, with explicit null/unknown values. Detects the same asset playing twice or a likely song misfiled as voiceover. Each library sound effect reports where it sits against the measured voice at its hit (and its role level there) plus its placement checks: visual partner, payoff-word onset, literal pun, opening whoosh, the 1-2 budget of a talking short. This state is ground truth; deterministic preview AUDIO CHECK can measure the rendered mix without relabeling roles.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set readOnlyHint=false, destructiveHint=false, idempotentHint=false, so the safety profile is given. The description adds real behavioral context (deterministic, ground truth, explicit null/unknown provenance, duplicate/misfile detection) and even describes the result payload. But given the tool is named 'audit' yet declares readOnlyHint=false, the description never clarifies whether the call mutates project state - a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The important scoping constraint is front-loaded, which is good. But the body is dense, jargon-heavy and hard to parse ('the 1-2 budget of a talking short', 'literal pun, opening whoosh'), packing domain detail that an agent selecting the tool does not need. Sizeable trimming is possible without losing selection-relevant signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does describe the audit payload in detail (roles, provenance, rights signals, SHA-256, placement checks). It is nearly complete for an inspection tool, with the only real hole being the unexplained mutation/readOnly semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is a single required parameter, so the schema already documents project_id fully (including the 'never guess the active project' warning). The description's 'acts only on the explicit project_id' restates the same scoping constraint, adding no syntax or format beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource: a deterministic audit of the current EDL's authored music/voiceover/SFX roles, files, windows, offsets, gains, ducking and mastering. An agent can distinguish it from audit_captions/audit_motion by the 'audio mix' scope. It stops short of explicitly contrasting siblings, keeping it at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It positions itself against the rendered 'AUDIO CHECK' preview ('This state is ground truth... without relabeling roles'), which implies when to prefer authoritative role inspection over rendered measurement. However there is no explicit when-to-use/when-not guidance against the other audit_* tools, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_captionsAudit captionsAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Mechanically compile and audit the CURRENT caption track using the exact ASS artifact ffmpeg burns. Reports first-caption lateness, missing spoken-word coverage (words a graphic shows count as covered), sound_off_gaps (speech over 0.6 s with no caption and no graphic showing it, with cause and fix), heard_unshown (every such span however short: every heard word should reach the screen once), true distinct-state overlaps, max_words_seen, max_lines_seen, declared-density and single-line wrap violations, exact event pages and up to 16 high-information output times for rendered pixel QA. Call after adding or restyling captions and after render_preview; this is stronger timing evidence than a visual critic.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (non-destructive, closed-world), and the description adds real substance beyond them: hard project scoping, that the project identity is echoed with the result, and an enumeration of what the audit computes (lateness, sound_off_gaps, heard_unshown, overlap/density/wrap violations). It does not clarify why readOnlyHint=false / idempotentHint=false on an audit-shaped call, leaving ambiguity about whether the compile step persists anything.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scope constraint is correctly front-loaded and there is no filler, but the middle section is a dense run-on of enumerated checks. Given there is no output schema, that enumeration largely earns its place as a substitute for a return-value contract.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of describing the returned findings, and it covers scope, ordering relative to render_preview, and purpose. The remaining gap is that limit/offset and any pagination of the report are never addressed, which matters for a tool that can emit up to 16 output times plus event pages.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%: project_id is documented in the schema, and the description merely restates its scope constraint rather than adding syntax or semantics. limit and offset are undocumented in both the schema and the description, so paging behavior is left entirely unspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource pair ('compile and audit the CURRENT caption track using the exact ASS artifact ffmpeg burns') and names concrete outputs. It is easily separable from siblings like check_speech, audit_audio_mix, find_burned_text and audit_motion without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Call after adding or restyling captions and after render_preview') and positions itself against an alternative evidence source ('stronger timing evidence than a visual critic'). It stops short of naming the visual-critic tool by name or stating when not to use it, so it is not fully 5-level routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_motionAudit motionARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ, no render: the device ledger against the project's intensity, flash safety, each device's expected rung, and the restraint rules (one punctuation family per section, no device on consecutive shots, nothing inside the payoff hold) as findings.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotation already covers readOnlyHint/destructiveHint, but the description adds genuine value beyond them: it confirms 'no render', states the call is strictly project-scoped on the explicit id, specifies that it returns the project identity alongside the result, and characterizes the output as 'findings'. This is meaningful behavioral context absent from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the scope constraint front-loaded, and no filler. It is dense with domain vocabulary (payoff hold, punctuation family, rung) that an agent may need prior context to parse, which slightly offsets the efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one fully documented parameter, no output schema, and annotations covering the safety profile, the description supplies the missing pieces: what is audited, what the findings cover, and that the project identity is echoed back. It does not describe finding severity or response shape, a minor gap for a single-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the sole project_id is fully documented in the schema (including the 'never guess from active-project pointer' rule). The description restates the same scoping constraint but adds no syntax or format detail beyond it, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (audit) and resource (the project's motion device ledger) and enumerates exactly what it checks: intensity, flash safety, each device's expected rung, and restraint rules. It is distinguishable from other audits (audit_audio_mix, audit_captions) by domain, though it does not explicitly contrast itself with related siblings like proof_device or justify_verification_findings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'READ, no render' and 'PROJECT-SCOPED' tell the agent this is a non-rendering diagnostic tied to an explicit project, but there is no explicit when-to-use or when-not-to-use guidance relative to proof_device, suggest_devices, or the other audit tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_reframeReframe for a vertical or square platformAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. THE tool for 'make it 9:16 / vertical / for TikTok'. It samples frames across the kept footage and MEASURES two things before writing the frame: where the subject is (faces found in the pixels; vision or a detail-energy estimate only when there is no face), and whether a crop is the right operation at all — how much of the picture's detail would survive the crop window. With mode='auto' (default) footage with a subject gets a crop aimed at it, and footage whose content runs to the edges (gameplay, screen recordings, wide scenes) is FITTED into the new frame over a blurred backdrop so nothing is cut off — cropping those is the 'it just truncated my video instead of adjusting it' complaint. Low-resolution footage a crop would enlarge past ~2.5x (480p/archival 4:3) is FITTED as a window instead, with the free headline band reported. A crop slides off a burned-in inset or border that would leave a thin sliver at its edge (an EDGE BAND note asks you to look when it cannot). FOLLOW (default on): inside each shot the crop follows the speaker's face, measured on the kept footage (4 fps) — it holds STILL while they sway and glides (eased, speed-limited, never a whip, never across a cut) only when they move far enough that a still crop would cut the head or lose the composition; a re-aim that can land on a jump cut happens on the cut. A speaker who stays put gets no motion; a shot with two or more people keeps its aim. follow=false keeps one aim per shot. A tight close-up whose speaker TURNS keeps the leading edge of the face (the nose side) clear of the frame edge — the re-aim happens when the face nears the edge, never on every sway; a turned head the detector loses is tracked through the turn. SCREEN INSETS: a burned-in screen or picture-in-picture box the crop would cut through is slid out of the crop when the speaker stays framed (SCREEN INSET CLEARED), else named with the calls that show it legibly (a speaker + screen stack per camera shot, or for a beat set_picture_card source='inset'). A crop that shows NO FACE for over a second while someone speaks is named with the fix. Pass mode explicitly to force one. Read what it reports and repeat THAT.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| ratio | Yes | ||
| follow | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare a non-readonly, non-destructive, non-idempotent mutation; the description adds deep context the annotations cannot — frame sampling, face/detail-energy measurement, the ~2.5x enlargement threshold for fitting low-res footage, follow easing/speed limits, edge-band and screen-inset handling, and the 'no face while speaking' named fix. It also correctly frames itself as project-scoped with an immutable project_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The critical scoping and default information is front-loaded, but the body is a dense all-caps wall of edge-case prose that reads as accumulated caveats rather than prioritized guidance. Several clauses (screen inset, turned-head tracking) could be compressed without losing actionable meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description does the necessary work of stating what it returns ('the project identity with its result') and what diagnostic notes come back (EDGE BAND, SCREEN INSET CLEARED). It is complete enough to call and interpret, though the sheer density could obscure the primary path.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 25% schema coverage, the description compensates well for mode ('auto' default, and forcing crop/fit) and follow (default on, false keeps one aim per shot), which are the two behaviorally complex params. It adds little for ratio's enum values and gives no guidance on 'source', leaving a gap, but overall it carries most of the semantic burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource and immediately positions itself as 'THE tool for make it 9:16 / vertical / for TikTok', which lets an agent distinguish it from siblings like add_aspect_shift, deliver_aspects, or apply_format_pack without opening a schema. The framing is unambiguous about what it produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: mode='auto' is the default and picks crop vs fit per footage, follow defaults on, and 'Pass mode explicitly to force one' tells the agent when to override. It does not, however, name a competing sibling tool or state when-not to use this one, so it stops short of explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beat_align_cutsSnap cuts to the musical beatAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. THE tool for 'cut to the beat'. Slides each INTERNAL cut (never the program's first start / last end) onto the nearest beat within tolerance_s (default 0.35s), skipping any move that would land inside a word. WHICH beat: when the edit has music it uses the SONG the viewer hears, in program time — that is what 'the beat' means; source='video' forces the footage's own audio instead. If the USER tells you the tempo ('there's a beat every second', 'it's 120 BPM'), pass every_s=1 or bpm=120 — their tempo is data and skips the confidence gate. With no music, no stated tempo and no clear pulse in the footage it refuses honestly rather than 'syncing' to noise — never invent a tempo yourself. Cuts must already exist: this MOVES boundaries, it does not create them (to cut ON every beat, build the spans with keep_segments from the beat times get_audio_analysis reports, then call this to tighten them). One EDL version; reports moved/skipped counts.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| source | No | ||
| every_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| tolerance_s | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite minimal annotations, the description fully discloses behavior: it moves boundaries, skips word-interior moves, refuses to sync to noise, never invents a tempo, returns project identity plus moved/skipped counts, and notes it operates on a single EDL version. No contradiction with annotations (destructiveHint=false aligns with 'moves boundaries, does not create').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence carries necessary information. It is front-loaded with scope and core behavior, then covers edge cases and workflow. Slightly verbose in phrasing, but justified by the tool's complexity and the absence of an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description covers the return (project identity, moved/skipped counts) and behavior in edge cases. It also integrates with sibling tools (get_audio_analysis, keep_segments) to give a complete workflow. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% (only project_id described), but the description explains every parameter: tolerance_s default (0.35s), source enum meaning (video forces footage audio), every_s and bpm as tempo hints that skip the confidence gate, and project_id as immutable scope. This fully compensates for the sparse schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('slides each INTERNAL cut') and resource (cuts), and explicitly frames itself as 'THE tool for cut to the beat'. It distinguishes from siblings by noting it does not create cuts and skips moves that would land inside a word, making it clear vs. keep_segments and cut_silences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: describes when to pass tempo hints, when it refuses (no music/tempo/pulse), and gives a workflow with keep_segments and get_audio_analysis for cutting on every beat. It also states it only moves existing cuts, not creates them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bind_motion_motifBind motion motifAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Bind an EXISTING renderer-visible movement to the exact motif id it was designed to execute in the active Blueprint v3 motion language. This records causal provenance; it does not create an effect or require a count. target_type: zoom, text, vector, overlay, insert, speed, aspect_shift, stylize, custom, transition or captions. Pass id for item targets; transition/captions are track-level. Pass motion_motif='clear' to remove a binding. Static targets and the reserved stillness decision 'hold' are rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| target_type | Yes | ||
| motion_motif | Yes | Active Blueprint motion motif id this event executes; never 'hold'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, and the description aligns by stating it records provenance without creating an effect. It adds valuable context: project-scoped side effects, return of project identity, rejection of 'hold' and static targets. No contradiction found, and it discloses the key non-creation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place. It front-loads the project-scoped constraint, then quickly states the core purpose, clarifies target semantics, and ends with clear rejections. No redundant wording or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description covers all essential details: required parameters, scoping, valid target types, special values, and rejection rules. It also states the return includes project identity, which addresses the output gap. An agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 50% schema coverage, the description compensates substantially. It explains that target_type values map to specific domains (transition/captions are track-level, id is for item targets), clarifies motion_motif can be 'clear' and that 'hold' is rejected, and emphasizes project_id is an immutable scope that must be copied from a source, never guessed. These go well beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('bind'), a precise resource (an existing renderer-visible movement to a motif id), and distinguishes it from creation tools by clarifying it records provenance rather than creating an effect. It also enumerates target types and explicitly rejects static targets and 'hold', leaving no ambiguity about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly scopes the call to a project_id, explains it acts on EXISTING movements, and differentiates track-level vs item targets. It does not explicitly name alternative sibling tools, but the behavioral constraints (e.g., 'does not create an effect') make the usage context clear. The 'clear' option and rejection rules further guide correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blur_regionBlur regionAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Put a VISIBLE censor over a fixed RECTANGLE of the original footage — blur, mosaic or a black bar. Use it when the user WANTS the covering to show: a face, a document, a phone number, a plate. To make something GO AWAY instead — burned-in captions, a watermark, a username, an object — use erase_region / erase_burned_text, which repaint the pixels and rebuild the picture behind them; a blur where the user asked for removal reads as a workaround. x,y = TOP-LEFT corner and w,h = size, all as FRACTIONS (0-1) of the SOURCE frame — exactly the frames look_at shows you; a 9:16 or other output reframe moves the censored footage with it automatically, and spliced-in clips/images are never censored. Example — a username in the top-right corner: x=0.6, y=0.02, w=0.38, h=0.1. FIRST look_at the video asking exactly where the text sits (corner? edge? how big?), then blur_region, then render_preview and CHECK the sheet — if text still shows, remove_blur and place a bigger region. start/end (output seconds) optionally limit when it applies; omit both for the whole video. mode: 'blur' (soft, default), 'pixelate' (mosaic), 'black' (solid bar). The rectangle does NOT track motion — text that moves with the camera may leave it; verify and tell the user honestly.
| Name | Required | Description | Default |
|---|---|---|---|
| h | Yes | ||
| w | Yes | ||
| x | Yes | ||
| y | Yes | ||
| end | No | ||
| mode | No | ||
| start | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provide behavioral hints (all false), so the description carries full burden. It discloses the coordinate system (fractions of source frame), the non-tracking nature, that spliced clips are never censored, optional timing, and the project-scoped behavior. This goes well beyond what annotations offer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but each sentence adds essential context: scope, purpose, usage alternatives, coordinate system, example, workflow, mode, and limitation. It's front-loaded with the project scope and purpose, and while lengthy, it's structured with bold labels and an example, so it's not wasteful. Slightly over-wordy but justified for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, no output schema, and no annotation hints, the description covers all necessary details: how to specify the region, coordinate system, modes, timing, verification workflow, and edge cases (motion, spliced clips). It even includes a concrete example. Nothing critical is missing for an agent to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 13% (only project_id described). The description explains x/y/w/h as fractions, start/end as output seconds, mode meanings, and project_id scoping. It adds substantial meaning for every parameter, fully compensating for the sparse schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool's function: placing a visible censor (blur, mosaic, black bar) over a fixed rectangle of the original footage. It distinguishes itself from siblings (erase_region/erase_burned_text) by contrasting visible covering vs removal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly specifies when to use it (user wants covering to show) and when not (when removal is desired, pointing to erase tools). Provides a step-by-step workflow (look_at, blur_region, render_preview, check, adjust) and notes the limitation about motion tracking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_speechCheck speechARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: deterministic listening over a program window (up to 60 s: a whole short) — audible transcript words, untranscribed sound (an 'um', a cut word's tail, a breath), clipping, clicks, all on the program clock; a window across cuts reads each kept span's own sound, and a cut inside a word that still sounds is named with the sound-safe edge to move it to (the edge keep_segments, the render's MID-WORD AUDIT and critique_short name). Measured, never guessed; use it before and after a cut. Omit start/end to read the whole short.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| start | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint already present, the description still adds useful behavioral context: it is project-scoped, deterministic, capped at 60 seconds, reads each kept span across cuts, and flags cuts inside words with the sound-safe edge. It is consistent with the annotations and adds substantial value, though it remains somewhat opaque about exact output shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads scope and purpose, and most clauses carry relevant information. However, it is a dense run-on with nested parentheticals and jargon, making it harder to parse than necessary for an agent selecting and invoking the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It covers scope, max window length, output content, and cross-cut behavior well enough for a complex read tool with no output schema. The unresolved required-versus-omittable start/end conflict and the lack of exact time units or output shape leave an important gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, with project_id documented but start and end left as bare numbers. The description adds meaning by calling start/end a program-clock window capped at 60 seconds, but it also says they can be omitted to read the whole short while the schema marks both as required, creating a direct invocation conflict.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific read operation: deterministic listening over a program window that surfaces transcript words, untranscribed sounds, clipping, and clicks. It also distinguishes the tool from related siblings such as keep_segments and critique_short, though the phrasing is dense rather than immediately plain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: 'use it before and after a cut' and 'Omit start/end to read the whole short.' It does not explicitly state when not to use the tool or fully compare it against alternatives, so it stops short of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_uploaded_mediaCompare uploaded mediaAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. YOUR OWN EYES on SEVERAL uploaded clips/images in ONE story-wide comparison. Pass every relevant exact storage_key together; each candidate is represented on dynamically built labeled pages, with representative real frames, CLIP seconds and exact sentence/shot IDs. Use this instead of serial look_at_asset calls when choosing/order-casting a reel, montage, B-roll library or multi-clip story. It does not rank by upload order, does not silently shortlist, and explicitly allows leaving a weak/redundant asset unused. Then use source_asset_key + the returned evidence_ids in sequence_map.
| Name | Required | Description | Default |
|---|---|---|---|
| question | No | ||
| asset_keys | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| samples_per_asset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries the burden. It discloses that the call acts only on the explicit project_id, does not rank by upload order, does not silently shortlist, and explicitly allows leaving weak/redundant assets unused. It also mentions dynamically built labeled pages and returned evidence_ids. It doesn't detail side effects or performance, but the key behavioral traits are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and somewhat disorganized, with unusual capitalization and run-on phrasing ('YOUR OWN EYES on SEVERAL uploaded clips/images in ONE story-wide comparison'). It front-loads the project-scope constraint but buries the key usage guidance mid-paragraph. It could be tightened into clearer, shorter sentences without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a comparison tool with no output schema, the description covers the main operational needs: what to pass, how it behaves, and what to do with the result ('use source_asset_key + the returned evidence_ids in sequence_map'). It doesn't explain the 'question' or 'samples_per_asset' parameters, which is a gap, but the core workflow is complete enough for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, so the description must compensate. It explains asset_keys ('Pass every relevant exact storage_key together') and project_id ('Required immutable scope... Copy the id from list_projects/open_project/project_state'), but it does not explain the 'question' or 'samples_per_asset' parameters. The description adds meaning for two of four parameters, which is partial compensation for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Compare') and resource ('uploaded media'), and clarifies it operates on multiple assets at once. It distinguishes itself from serial look_at_asset calls, though the name 'compare_uploaded_media' is somewhat generic and the description's unusual formatting makes the core purpose less crisp than it could be.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this instead of serial look_at_asset calls when choosing/order-casting a reel, montage, B-roll library, or multi-clip story. It also states what it does not do ('does not rank by upload order, does not silently shortlist'), giving clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_panelsCompose panelsAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. PROJECT-SCOPED: build ONE 16:9 clip that shows 2 or 3 independent videos side-by-side on a solid BLACK canvas — the signature multi-panel athlete/action wall. Do NOT fake this with pad_blur inserts plus small PIP overlays. columns is either a list of 2–3 asset_keys or a list of columns, each a list of {asset_key, start, duration} clips that play in that column (when one clip ends the next one in that column starts). duration_s caps the result (1–20s, default 8). The file is saved as a video_clip and is NOT in the program until insert_media (use fit='pad'). Audio is omitted — add_music for the bed.
| Name | Required | Description | Default |
|---|---|---|---|
| columns | Yes | ||
| duration_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the bare annotations, the description discloses meaningful behavior: it is project-scoped to the explicit project_id, saves a video_clip, does not place it in the program until insert_media, omits audio, and caps duration at 1-20s. This gives the agent clear expectations about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence serves a purpose: scope, core behavior, anti-pattern warning, parameter semantics, and post-processing notes. It is front-loaded with project-scoping, though the repeated 'PROJECT-SCOPED' phrasing is somewhat redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers composition rules, duration limits, file persistence, insertion status, and audio behavior. However, with no output schema, it only vaguely says 'returns the project identity with its result'—it does not specify the exact response shape or whether the operation is synchronous or asynchronous, leaving some uncertainty for an agent invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only lists `columns` as a bare array and `duration_s` as a number, with 33% description coverage. The description compensates by explaining the two valid formats for columns (list of asset_keys or list of column clip-lists) and defining each clip's structure as {asset_key, start, duration}, plus the valid range/default for duration_s.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states precisely what the tool does: 'build ONE 16:9 clip that shows 2 or 3 independent videos side-by-side on a solid BLACK canvas'. It also distinguishes itself from the naive approach ('Do NOT fake this with pad_blur inserts plus small PIP overlays'), making its unique purpose clear relative to sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives strong context for when to use the tool—creating the signature multi-panel athlete/action wall—and explicitly warns against faking it with pad_blur inserts and PIP overlays. It also points to follow-up steps: insert_media with fit='pad' and add_music for audio. It doesn't name specific alternative tool names, but the guidance is usable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
conceal_jump_cutsConceal jump cutsAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. OPTIONAL cut hygiene — never a default. mode='report' FIRST: it lists every same-shot jump cut (how visible the jump is, what already covers it — a graphic in/out, a caption change, a step — the hook and stutter flags, and the options: leave it, move a graphic change onto it, restore or re-cut the join, or a step) and writes nothing. mode='scale_step' hides same-angle jump cuts that VISIBLY POP (pause removal on one camera: the head or hands jump inside a constant frame) with HARD, non-animated framing steps. Each selected cut steps the framing by step (0.10-0.15, default 0.12; under ~10% a step stutters) and holds it to the next cut, where it steps back, so consecutive cuts alternate tight/wide like a second camera. Full-frame footage gets a cut-step zoom (ramp 0, aimed at the face); a source picture card alternates its SOURCE crop (stepping wide instead of tight when the source is near its upscale cap, e.g. 480p archival, or when tighter would crop the speaker's head). Only bare same-angle cuts that measurably pop are touched (a head jump, or a picture change well above the speaker's own motion); at = [program seconds] names cuts you saw pop instead. This is not an expressive zoom and not a rule: a bare jump cut is fine, so use it only when the render shows cuts popping (typically a static archival or single-camera talk tightened by pause removal), after the cut is final. Re-running replaces earlier steps; mode='off' removes them all.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| mode | No | ||
| step | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations covering the safety profile (readOnly=false, destructive=false), the description adds real behavioral detail beyond them: report 'writes nothing', re-running 'replaces earlier steps', and 'off' removes them all, so reversibility and mutation semantics are clear. It is silent on prerequisites such as whether a prior analysis/render pass is required and on any permission or scope failure modes, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and long, but the load-bearing facts are front-loaded (scope, then 'report FIRST', then the mechanics and the when-to-use caveat). Some clauses are expendable or repetitive ('This is not an expressive zoom and not a rule' restates 'never a default'), and the single run-on paragraph with nested parentheticals hurts scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter, no-output-schema tool of high complexity, the description supplies the missing return information ('lists every same-shot jump cut — how visible the jump is, what already covers it, the hook and stutter flags, and the options'), the parameter semantics, and the scope/mutation model. An agent has everything needed to pick a mode and call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (project_id alone is documented), so the description carries the burden and does: mode's three values are each defined, step gets a range and default ('0.10-0.15, default 0.12') plus a failure threshold ('under ~10% a step stutters'), and `at` gets a format and purpose ('[program seconds] names cuts you saw pop instead'). Only project_id is left to the schema, and the schema documents it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific action on a specific resource (conceal jump cuts via framing steps) and explicitly distinguishes itself from neighbors: 'This is not an expressive zoom' separates it from add_zoom/add_zoom_path, and 'a bare jump cut is fine... only when the render shows cuts popping' separates it from a blanket transition tool. The mode vocabulary (report / scale_step / off) makes the three behaviors legible without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit workflow ('mode=report FIRST'), an explicit trigger condition ('use it only when the render shows cuts popping — typically a static archival or single-camera talk tightened by pause removal'), an explicit ordering constraint ('after the cut is final'), and enumerates alternatives ('leave it, move a graphic change onto it, restore or re-cut the join, or a step'). It even states when NOT to use it ('never a default', 'not a rule').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectCreate a projectAInspect
Create an empty project and select it for navigation. Copy the returned project_id into every later call. Upload a video into it with upload_start, or build a canvas program from generated/uploaded assets. kind='shorts' creates a Podcast to Shorts intake project. After its main video finishes analyzing, read the podcast and call make_shorts with your explicit story arcs; selection does not start automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Default 'edit'. Use 'shorts' for a long podcast/video that should fan out into multiple generated short projects. | |
| title | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries the full burden. It discloses that the tool selects the new project for navigation, returns a project_id that must be copied into later calls, and that selection does not start automatically for shorts. It also explains the required explicit story arcs for make_shorts. This is exceptionally transparent about side effects and workflow requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph with multiple sentences, but each sentence earns its place by covering a distinct aspect: creation, side effect, usage options, and the shorts workflow. It front-loads the primary purpose and then adds necessary detail. It is concise relative to the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with significant behavioral nuance (selection, shorts workflow, required project_id usage), the description covers the main points thoroughly. It does not explicitly mention the default kind ('edit') or error/edge cases, but the schema covers the default and the description provides enough to call the tool correctly in typical scenarios. Given the absence of an output schema, the mention of the returned project_id is helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (only kind has a description). The tool description adds context for kind ('shorts' creates a Podcast to Shorts intake project) but this largely repeats the schema's own description. For title, no additional meaning is provided beyond the schema's bare string type. The description adds some value for kind but does not compensate for the missing title semantics, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('create'), resource ('empty project'), and a side effect ('select it for navigation'). It clearly differentiates from siblings like open_project and list_projects by focusing on creation and selection, and it also explains the special 'shorts' kind. This is a precise, non-tautological purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage context: after creation, upload with upload_start or build a canvas program; for shorts, it outlines the post-analysis workflow with make_shorts. It does not explicitly say 'use this instead of open_project', but the creation vs. existing distinction is implicit and clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
critique_shortCritique shortARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: judge the newest render of the current edit (final, else preview; or asset_key) like a demanding editor against the reference reels: rhythm and dead stretches, the type ladder, restraint (ledger, graphics share, owner rules), B&W as a device never a look, brand integrity (end card, corner mark), flash safety on the rendered frames, type on faces, late words, matte flicker, stuttering slow motion, and range (a house style re-used across shorts, strong moments with nothing on them). Returns a score, ranked findings with concrete fixes and the exact apply_edit_batch ops; never writes.
| Name | Required | Description | Default |
|---|---|---|---|
| deep | No | faces, late words and flicker passes (default true) | |
| board | No | ||
| format | No | the pack the short follows (A-J, as apply_format_pack): its rhythm band | |
| variant | No | ||
| asset_key | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, non-idempotent), so the bar is lower; the description adds real context by stating 'never writes', the project scoping, and that output includes exact apply_edit_batch ops for fixing findings. It does not address the non-idempotent hint, but adds value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scoping note is front-loaded, which is good, but the second sentence is a sprawling checklist of a dozen critique criteria (rhythm, type ladder, B&W, flash safety, matte flicker, etc.) that is over-stuffed and mostly irrelevant to tool selection. It is not appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly describes the return (a score, ranked findings with concrete fixes, and apply_edit_batch ops), which is what an agent needs. Coverage is nearly complete for a read-only tool of this complexity, with only the board/deep parameters left ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, and the description compensates by explaining the render-selection chain '(final, else preview; or asset_key)', which adds semantics beyond what the variant enum alone conveys. However, 'deep' and especially 'board' remain unexplained in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('judge/critique') and resource ('the newest render of the current edit'), and clearly labels itself as READ-only scoring. It reads as the holistic editor-critique pass, distinct from the narrow audit_* siblings, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied ('like a demanding editor', checking an edit before finalizing) and the render-selection rule (final, else preview; or asset_key) is given. But there is no explicit when-to-use vs the many audit_*/analyze_* siblings and no stated exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cut_output_rangeCut a range of the finished editAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Cut a span of the ASSEMBLED program — OUTPUT seconds, the clock the viewer and the scene map use — no matter what plays there. Kept footage under the span is cut in source time; an inserted clip it crosses is SPLIT around it (or removed when fully covered); one version write, everything re-anchored. THE tool for 'cut 12-15 of the video' / 'cut that part of the second scene' — never answer that cutting inside an insert is impossible, and never fake it with set_insert_window (that changes WHICH part plays, it cannot remove a middle). One range per call; batch several calls for several ranges.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| start | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries the full burden. It discloses that the call is project-scoped, that it splits inserts it crosses, removes footage fully covered, and re-anchors everything in one version write. This goes well beyond the minimal annotations and gives the agent a precise mental model of the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence adds value: scope, behavior, insert handling, use cases, and warnings. It is front-loaded with the project-scoped note and structured logically. It could be slightly tighter but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex operation with no output schema, the description covers the essential aspects: what it does, how it handles overlapping inserts, when to use it, and what it returns (project identity). It even addresses a common misconception (that cutting inside an insert is impossible). Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 33% schema coverage, the description compensates by explaining that start and end are in OUTPUT seconds and that the range applies to the assembled program. It also clarifies project_id is required and immutable, and that one range per call is allowed. This adds meaning the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it cuts a span of the ASSEMBLED program in OUTPUT seconds, distinguishing from source-time cuts and explicitly contrasting with set_insert_window. The verb 'cut' and resource 'output range' are specific, and the mention of 'the clock the viewer and the scene map use' adds precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names the alternative set_insert_window and explains why it is inappropriate ('that changes WHICH part plays, it cannot remove a middle'). It also provides example user requests ('cut 12-15 of the video') and advises batching multiple calls for multiple ranges, leaving no ambiguity about when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cut_rangeCut rangeAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove ONE source-time range from the current keep set (a local edit — the rest of the edit is untouched). Creates a new EDL version. Each cut edge it writes (keep_segments: every edge of the list) lands audio-safe on the source's sound: out of any word it falls in, onto the quietest point within ~80 ms (a word's release or lead-in up to 0.25 s), never into the word beyond; the result reports every move and any cut that joins running speech. snap_to_words:true first moves edges outward to word edges with a breath; snap_to_words:false keeps your exact times (a stutter cut). SOURCE seconds of the main video ONLY — when the user gives times of the EDITED video ('cut 12-15 of the video'), or the span sits inside an inserted clip, use cut_output_range.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| start | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| snap_to_words | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the safety profile (non-read-only, non-idempotent, non-destructive), and the description adds substantial behavior: each cut edge lands audio-safe on the source's sound, moves report in the result, and running-speech joins are flagged. It does not cover failure modes (e.g., out-of-range times, project mismatch) or rate/permission constraints, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the PROJECT-SCOPED constraint and the core action, and every sentence carries content. However, it is a dense wall of clause-heavy prose (the audio-safe sentence packs several nested conditions) that could be split for faster parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by stating that the result reports every move and any cut joining running speech. Combined with the scope constraint, snapping behavior, and sibling routing, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (project_id alone documented), so the description must compensate and does: start/end are SOURCE seconds of the main video only, and snap_to_words is defined bidirectionally (true = move edges outward to word edges with a breath; false = keep exact times, a stutter cut). This is meaning well beyond the bare number/boolean types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Remove ONE source-time range from the current keep set' — plus the side effect ('Creates a new EDL version') and the scope ('a local edit'). It explicitly distinguishes itself from the sibling cut_output_range, so an agent can route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use rule ('SOURCE seconds of the main video ONLY') and a concrete when-not with the alternative named: if the user gives times of the edited video or the span sits inside an inserted clip, use cut_output_range. It even supplies a sample utterance ('cut 12-15 of the video') to disambiguate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cut_silencesCut silencesAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. ONE-CALL silence trim — THE tool for 'cut the silences' / 'tighten this up' / 'remove the dead air'. Cuts every detected pause at least min_silence_s long (default 0.5s), keeping padding_s (default 0.12s) of breathing room around speech and snapping to word edges so no word is clipped. Do this in one call instead of many cut_range calls; then get_kept_transcript to verify. If at least half of the gaps contain audible material and the pass would remove 25%+ of the program, it refuses without changing the EDL. Set allow_nonquiet=true ONLY when the user explicitly permits discarding those non-speaking music/game/room-performance moments.
| Name | Required | Description | Default |
|---|---|---|---|
| padding_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| min_silence_s | No | ||
| allow_nonquiet | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations being sparse (all false), the description fully discloses behavior: trimming mechanics (min_silence_s, padding_s), word-edge snapping to avoid clipping, refusal logic (>=50% audible gaps and 25%+ removal), and the requirement to set allow_nonquiet only with user permission. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place. Key scoping and single-call positioning are front-loaded, defaults are given inline, and the safety guardrails are stated without redundancy. Dense but efficiently organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 params, no output schema, and important failure/refusal behavior, the description covers everything an agent needs: scope, defaults, edge-case refusal, and the recommended verification step. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (only project_id described), but the description compensates by explaining min_silence_s (default 0.5s), padding_s (default 0.12s), and allow_nonquiet (permission gating). It adds semantic meaning beyond the raw schema, which is exactly what's needed at low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it cuts silences in a project with a specific verb+resource. Explicitly distinguishes itself from cut_range ('Do this in one call instead of many cut_range calls') and identifies itself as 'THE tool' for silence trimming, making it unmistakable among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: the intended use case ('cut the silences', 'tighten this up'), the alternative (cut_range) to avoid, and the follow-up verification tool (get_kept_transcript). Also specifies the condition for allow_nonquiet and the refusal conditions. No guesswork needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deliver_aspectsDeliver aspectsAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ/WRITE: re-solve this edit for other aspects (16:9, 4:3, 1:1, 4:5, 9:16) — UI scenes re-laid out, graphics and captions measured again at render, overlays re-fitted with their own proportions, the crop aim kept (source space). Without apply it lists what each master changes; apply= rewrites the edit to that master (export it, then the next).
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | ||
| ratios | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so safety is partly covered; the description adds genuinely new context — it is project-scoped, returns the project identity with the result, enumerates what gets recomputed, and notes the crop aim is preserved in source space. It does not, however, discuss cost, reversibility, or how repeated calls interact (non-idempotent).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the two key labels (PROJECT-SCOPED, READ/WRITE), which is good structure, and every clause carries information about what changes. It is dense and sentences are long with heavy em-dash use, but there is little outright filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return burden and does so ('returns the project identity with its result'), and it explains both modes and the scope constraint for a moderately complex mutation-adjacent tool. The remaining gap is the unexplained `ratios` parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only project_id is documented), so the description must compensate. It explains the `apply` parameter well (apply=<ratio> rewrites to that master), but the `ratios` parameter is only gestured at via the ratio list and never mapped to the parameter, leaving its semantics ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation — re-solving the edit for alternate aspects (16:9, 4:3, 1:1, 4:5, 9:16) with UI scenes re-laid out, graphics/captions re-measured, and overlays re-fitted. This is a clear verb+resource that an agent can distinguish from generic add/remove tools, though it never names a specific sibling (e.g. add_aspect_shift, remove_aspect_shift, apply_format_pack) to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly splits the two invocation modes: with no apply it lists what each master changes, and with apply=<ratio> it rewrites the edit to that master, including the sequencing hint 'export it, then the next'. That is real usage context, but it stops short of naming alternatives or stating when NOT to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_urlGet a download link for a renderBRead-onlyInspect
A temporary URL for watching or downloading a render of an explicit project, with a durable receipt. asset_id recovers a historical render. kind 'preview' (complete draft/approval), 'preview_check' (changed sections), or 'final' (a completed export). This tool cannot create a final export.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| asset_id | No | ||
| project_id | Yes | ||
| edl_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=false, and the description stays consistent with them. It adds genuinely useful behavioral context absent from annotations: the URL is temporary, a 'durable receipt' accompanies it, and asset_id can recover historical renders. It omits idempotency/expiry specifics, so the added value is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded and the kind semantics are packed into one compact clause. There is little waste, though the opening fragment lacks a verb and the ordering (limitation placed last) buries the useful sibling-routing cue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety and no output schema to explain, the description covers the tool's primary behavior and kind semantics. It still omits meaning for project_id/edl_version and any pagination/expiry detail for the returned URL, leaving gaps an agent might need for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full parameter burden. It fully explains 'kind' (all three enum values) and 'asset_id' (recovers a historical render), but leaves the required project_id and edl_version undocumented. Half the parameters are covered, which is partial compensation for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (a temporary render URL) and its core action (watching/downloading). It also distinguishes itself from export_final by stating 'This tool cannot create a final export.' It stops short of explicitly naming render_preview or other siblings, so differentiation is partial rather than complete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives usable selection criteria for the 'kind' values (preview = draft/approval, preview_check = changed sections, final = completed export) and notes the export limitation. However, it never states the overall condition for choosing this tool over render_preview or get_video_info; usage is implied rather than framed as when/when-not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enhance_cursorEnhance cursorAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. MAKE THE MOUSE POINTER BIGGER AND STEADIER — THE tool for 'the cursor is too small' / 'too jittery' on a screen recording. It finds the pointer in the source frames, repaints the original out, and redraws it at scalex (1-4; 2 is the usual answer) along a path filtered to remove hand tremor — smoothing 0-1, where fast deliberate moves stay sharp at any setting. click_times is a list of SOURCE-video seconds that get an expanding ripple: I CANNOT see clicks in the pixels (nothing distinguishes a press from a hover), so either pass the times record_website_demo reported, or ask the user when the clicks were — never guess them. Set click_highlight=false to skip the ripples. This bakes into the source copy the render reads, so every cut keeps it and no timestamp moves; it reports what fraction of frames the pointer was actually found in and refuses outright on footage that has no visible cursor. Undo with remove_cursor_enhance.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | ||
| smoothing | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| click_times | No | ||
| click_highlight | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say not read-only and not destructive, so the description carries the burden. It discloses that it bakes into the source copy, reports fraction of frames found, refuses on no-visible-cursor, and cannot detect clicks in pixels. This is rich, accurate behavior disclosure beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence adds value: scope, purpose, mechanics, parameter meanings, limitations, and side effects. It is dense but efficiently organized, with the most critical constraints (project-scoped, don't guess clicks) front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and low schema coverage, the description covers everything needed: what it does, when to use, parameter semantics, side effects, undo path, and failure conditions. An agent can call it correctly without ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% (only project_id has a description). The description explains scale (1-4, 2 usual), smoothing (0-1, hand tremor), click_times (source-video seconds, must be provided or asked), and click_highlight (skip ripples). It fully compensates for the sparse schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (enhance cursor), the target (small/jittery pointer on screen recording), and differentiates from the undo sibling remove_cursor_enhance. It names the exact problem it solves, making selection unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (for small/jittery cursor on recordings) and when it refuses (no visible cursor). It instructs on click_times (pass from record_website_demo or ask user, never guess) and mentions undo via remove_cursor_enhance. Lacks a direct 'use X instead' but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enhance_videoEnhance videoAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. PICTURE QUALITY, not a look — the right answer to 'make it clearer / sharper / better quality / HD / enhance this'. sharpen 0-1 (default 0.5) recovers detail the camera's encoder smeared; denoise 0-1 (default 0) cleans grainy low-light footage and should be raised BEFORE sharpening noisy video. start/end are PROGRAM seconds; omit both for the whole video. It cannot add resolution — say that plainly instead of promising HD from a small source. Never answer a clarity request with a colour grade.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| start | No | ||
| denoise | No | ||
| sharpen | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries the burden of behavioral disclosure. It adds useful context: the call is project-scoped, returns the project identity with the result, and cannot add resolution. However, it does not disclose whether the operation is asynchronous (e.g., requiring wait_for_job), side effects on existing media, or reversibility. Given the mutation nature (readOnlyHint=false), more disclosure would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loads the critical scope and purpose. It is a single block but effectively organized: scope, purpose, parameter details, and limitations. No wasted sentences, though the lack of formatting makes it slightly harder to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with no output schema, it covers the essential usage, parameter semantics, and key limitations. The main gap is the absence of information about asynchronous behavior or the exact shape of the result beyond 'project identity with its result'. This is a minor omission given the overall richness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 20% schema coverage, the description compensates fully. It explains sharpen (0-1, default 0.5, purpose), denoise (0-1, default 0, purpose and ordering relative to sharpen), and start/end (program seconds, omit both for whole video). project_id is already described in the schema. All parameters gain meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: enhancing picture quality via sharpening and denoising. It explicitly distinguishes itself from look-based tools ('PICTURE QUALITY, not a look') and names the exact user intents it addresses ('make it clearer / sharper / better quality / HD / enhance this'). It also states it is project-scoped, which is a precise scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit when-to-use guidance by mapping to user phrases and warns against using it for resolution increases or colour grading. It also gives operational advice like raising denoise before sharpen on noisy footage. It does not name specific sibling tools as alternatives, but the differentiation is clear enough for an agent to select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
erase_burned_textErase burned-in text from the pictureAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. TRULY REMOVE burned-in captions (or watermarks) — one call: it measures every matching region and REPAINTS THE PIXELS, reconstructing the picture that was behind the text. This is real removal, not a blur or a bar: say 'removed'. Use it for 'remove the captions' / 'take the subtitles off' / 'get rid of the watermark' on footage that arrived with text burned in, and BEFORE add_captions when the user wants a different caption font or style — with the old text gone, new captions cannot stack on it. Cuts, timings, transcript and captions are unaffected; the video is unchanged except that the text is gone. scope defaults to 'captions'.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| scope | No | ||
| start | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=false, so the description carries the full burden. It discloses that it repaints pixels, reconstructs the original picture, is real removal (not blur), and that other elements (cuts, timings, transcript, captions) remain unaffected. It also mentions the scope default and project identity return. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with the key distinction (real removal vs blur) and project-scoping. It's slightly verbose with emphatic caps ('TRULY REMOVE', 'REPAINTS THE PIXELS') but each sentence contributes purpose, usage, or behavior. It could be trimmed without losing value, but it's well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, it covers purpose, usage, behavior, side effects, and return (project identity with result). It mentions scope default. The main gap is lack of explanation for start/end parameters, but they are likely self-explanatory. Overall, it gives sufficient context for an agent to decide and call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only project_id has a description). The description adds meaning to scope ('scope defaults to captions') and reinforces project_id as explicit scope. However, start and end parameters are not mentioned in the description, leaving their semantics undocumented. It partially compensates for the low schema coverage but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('TRULY REMOVE') and resource ('burned-in captions or watermarks'), and clarifies it repaints pixels rather than blurring or barring. It explicitly distinguishes from add_captions and implies it's for text burned into footage, making it distinct from siblings like erase_region or remove_text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly lists when to use: for 'remove the captions' / 'take the subtitles off' / 'get rid of the watermark' on burned-in text, and before add_captions to avoid stacking. It also states exclusions ('Cuts, timings, transcript and captions are unaffected') and mentions the project-scoped requirement. However, it doesn't explicitly say when NOT to use alternatives like remove_text or erase_region, so it's clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
erase_regionErase regionAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. TRULY REMOVE whatever is inside a rectangle — repaints those pixels and reconstructs the background, so the thing is GONE, not covered. Use it for a word, a sign, a sticker, a logo, a person's name on screen, or any object the user wants taken out. SEVERAL marks (a watermark AND a handle AND a caption bar) go in ONE call as regions=[{x,y,w,h,fill?,start?,end?}, ...]. The repaint costs time proportional to the WINDOW you erase, not the video — so pass start/end around when the mark is actually visible and the erase lands in seconds; earlier erases are never redone. x,y = TOP-LEFT corner, w,h = size, all FRACTIONS (0-1) of the SOURCE frame — get them from find_burned_text rather than estimating. fill: 'text' (default — repaints only the letter strokes and keeps the picture behind them; best for captions/handles) or 'box' (repaints the whole rectangle; use for an OBJECT or a solid graphic). start/end (SOURCE seconds) limit it to a window; omit both for the whole video. Reconstruction is excellent for thin text and for anything on a steady shot; a large object on a moving, detailed background can leave a soft patch — the result is measured and reported back to you, so check it before you promise anything.
| Name | Required | Description | Default |
|---|---|---|---|
| h | No | ||
| w | No | ||
| x | No | ||
| y | No | ||
| end | No | ||
| fill | No | ||
| start | No | ||
| regions | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims the tool 'TRULY REMOVE[s]' content, which is a destructive operation, but the annotations declare destructiveHint: false. This directly contradicts the annotation. Since the description contradicts the structured metadata, it scores 1 per the rules, even though the description is otherwise rich with behavioral detail (repaint, reconstruction, performance, return of project identity). The contradiction is flagged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence serves a purpose—scoping, behavior, use cases, parameter details, performance, and limitations. It is front-loaded with the most critical information ('PROJECT-SCOPED' and 'TRULY REMOVE'). It is well-structured with clear punctuation and logical flow. It is slightly verbose but not wasteful, so a 4 rather than 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 9 parameters, no output schema, and low schema coverage, the description is remarkably complete. It covers all parameters, explains performance trade-offs, advises on coordinate sourcing, discloses limitations, and notes that the result is measured and reported back. An agent has everything needed to decide when to use it and how to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11% (only project_id has a description), so the description must carry the burden of parameter semantics. It does so excellently: x,y,w,h are defined as top-left corner and fractions of the source frame; fill is explained with 'text' vs 'box' meanings; start/end are described as source-second windows; and the regions array is explained. It even tells the agent to get coordinates from find_burned_text. This fully compensates for the sparse schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool 'TRULY REMOVE whatever is inside a rectangle — repaints those pixels and reconstructs the background, so the thing is GONE, not covered.' It names specific use cases (word, sign, sticker, logo, person's name) and distinguishes itself from siblings like blur_region or erase_burned_text by emphasizing true removal rather than covering. This is a clear, specific verb+resource with strong differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'Use it for a word, a sign, a sticker, a logo, a person's name on screen, or any object the user wants taken out.' It also advises getting coordinates from find_burned_text rather than estimating, and explains that multiple marks go in one call. It mentions limitations (large objects on moving backgrounds may leave a soft patch) but does not explicitly name alternative tools or say 'do not use for X', so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
expand_toolsetList, describe or call any current toolAInspect
Load additional tool schemas for the NEXT reasoning step when the compact catalog does not expose a capability you need. Over MCP it lists current tools by domain and reaches tools your cached list lacks: describe=[names] returns their current schemas, call={name, arguments} runs one exactly like a direct call. This changes no media or EDL and is not a tool limit: request any relevant domains, then continue immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| call | No | {"name": <tool>, "arguments": {...}} runs that tool exactly like a direct tools/call of it (same project_id rule, gates, charges and errors) and returns its result. For a tool missing from your client's cached list. | |
| domains | No | ||
| describe | No | Exact tool names: returns each one's CURRENT description and inputSchema, including tools your client's cached list lacks. | |
| project_id | No | Optional. With call, it must equal call.arguments.project_id; nothing runs otherwise. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses that call runs a tool exactly like a direct call with the same gates, charges, and errors, and that the meta-call itself changes no media or EDL. That is useful behavioral context. It doesn't describe return payloads for the list/describe modes, but call mode is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the trigger and followed by mode-specific behavior and constraints. Every sentence carries information; phrasing is dense but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a meta-tool with no output schema, it covers the main modes and the key rule that it's not a tool limit and doesn't mutate media. The openWorldHint=false annotation and schema descriptions fill remaining gaps; a mention of error behavior when describe names are unknown would make it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, and the description reinforces semantics: domains select which catalog sections, describe=[names] returns current schemas, call={name, arguments} executes. It also notes the project_id constraint is covered in the schema description. Minor room to clarify the interplay when both describe and call are supplied or when domains is empty.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific meta-tool that loads additional tool schemas and can list, describe, or call any tool by domain or name. It clearly distinguishes itself from the many concrete editing siblings (add_*, remove_*, set_*). The purpose is clear, though the opening phrase 'load additional tool schemas' slightly undersells the call capability that is elaborated later.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger: use when the compact catalog does not expose a capability you need, and it prescribes the workflow (request relevant domains, then continue immediately). It also clarifies scope with 'this is not a tool limit' and 'changes no media or EDL', so an agent knows when to reach for it and when not to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_finalExport the finished videoAIdempotentInspect
Export a reviewed edit as a full-resolution MP4 when the user asks for the finished video. Pass the explicit project_id and reviewed edl_version. Uses the same ownership, upload, timeline, quality and watermark checks as Studio, and refuses an edit whose last picture before the end card is held (a freeze-frame, a still, a slowed or time-effect tail), naming the fix. Repeated requests reuse an existing current export or its running job. A queued job is NOT a finished video: call wait_for_job, then download_url(kind='final', edl_version=...) to deliver the file. Never claim delivery until a download link is returned.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| edl_version | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it non-read-only, idempotent, and non-destructive, but the description adds substantial behavior: Studio-equivalent ownership/upload/timeline/quality/watermark checks, refusal of held last pictures with a named fix, reuse of current exports or running jobs, and queued-vs-finished semantics. No annotation contradiction is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, then parameters, then checks/refusals, then the export-to-delivery workflow. It is dense but every sentence carries operational information, including the important idempotency and queued-job caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex export tool with no output schema, it covers the trigger, required inputs, validation checks, idempotent reuse, queued-job handling, and required delivery step. The main remaining gap is that the exact return shape is only implied by 'running job' and the download-link instruction, not explicitly described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It names both required parameters and adds that project_id must be explicit and edl_version must be the reviewed version, but it does not explain acceptable edl_version values, how to obtain the reviewed version, or what happens with stale versions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb, resource, format, and scope: export a reviewed edit as a full-resolution MP4 when the user asks for the finished video. This distinguishes it from preview/rendering tools and from delivery tools without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger (user asks for the finished video), requires explicit project_id and reviewed edl_version, and explains the follow-up path: call wait_for_job, then download_url(kind='final', edl_version=...). It also handles repeated requests and warns never to claim delivery before a download link is returned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_audioExtract audioAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Take ONLY the sound out of an uploaded VIDEO and save it as an audio file — THE answer to 'use the song from this clip', 'put this video's audio on my video', 'I want the sound but not the picture'. Users hand you songs as videos because a TikTok or Reel download is the only file they have; that is normal and it works. The clip's picture is never shown. asset_key is a [video_clip] storage_key from list_assets. Returns a new storage_key for add_music / add_sfx / add_voiceover — nothing is in the edit until you place it. Passing a clip's key DIRECTLY to those tools does the same thing in one step; call this when you want the file first (e.g. to get_audio_analysis its beats). If the clip is silent it says so — never claim a sound was added.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_key | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no hints (all false), so the description carries the burden. It discloses project-scoping ('acts only on the explicit project_id and returns the project identity'), that the picture is never shown, and that silent clips are reported rather than claiming sound was added. These are valuable behavioral traits beyond the schema. It does not explicitly mention side effects like file creation, but the description implies saving an audio file, and destructiveHint=false covers safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but every sentence adds value: project-scoping note, purpose, examples, usage guidance, and edge-case behavior. It is front-loaded with the critical scope constraint and remains focused without redundancy. Slightly verbose but justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description provides everything needed: how to obtain the asset_key, what the return value is (a new storage_key), how to use that key, when to use this tool vs. direct placement, and handling of silent clips. It fully equips the agent to call this tool correctly without additional lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes project_id in detail, but asset_key is only a bare string. The description compensates by stating 'asset_key is a [video_clip] storage_key from list_assets,' which is essential for correct invocation. Since schema coverage is 50%, this added meaning raises the score from baseline 3 to 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action: 'Take ONLY the sound out of an uploaded VIDEO and save it as an audio file,' with concrete user-phrase examples ('use the song from this clip'). It clearly distinguishes from sibling tools like add_music by explaining that this tool returns a storage_key for later placement, so the agent knows exactly what this tool does and what it does not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: 'call this when you want the file first (e.g. to get_audio_analysis its beats)' and contrasts with the alternative of passing the clip key directly to add_music/add_sfx/add_voiceover, which achieves the same in one step. It also notes that nothing enters the edit until placed, preventing misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_urlFetch urlAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Download media from a LINK the user gave you and save it as a project asset — a video, a song, or an image. Works with direct file links (Dropbox, Drive, a CDN, a stock library) and with page links (YouTube, TikTok, Vimeo, SoundCloud). Use this whenever the user pastes a URL for something they want in the edit; never tell them to upload a file you could have fetched. The file type is detected automatically — pass as_kind only to force audio-only from a video page ('music'). The result is saved to the project but is NOT in the video until you add it with insert_media (clip/image) or add_music (audio). Fetching verifies neither ownership nor license: the returned RIGHTS CHECK must be relayed; a downloadable file is not permission to republish.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| as_kind | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations. Annotations indicate mutation (readOnly=false) and non-idempotency, but the description adds critical details: it saves the asset but does not add it to the video until later, it returns a RIGHTS CHECK that must be relayed, and it verifies neither ownership nor license. Also clarifies the project_id scoping behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficiently organized. It leads with the scope, then the purpose, supported link types, usage rule, as_kind behavior, next steps, and rights caveat. Every sentence adds value, though it could be slightly tighter by trimming redundancy (e.g., the phrase 'download media' appears twice).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the essential operational context: what it does, what it doesn't do (not added to video), what to do next, and the rights caveat. Lacks details on return structure beyond 'project identity' and 'RIGHTS CHECK', and no error handling or rate-limit info, but these are minor for a fetch tool. The output schema is absent, so description must carry this weight, which it does adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only project_id has a description), but the description compensates fully. It explains what URL formats are accepted (direct links vs page links), clarifies that as_kind is optional and only for forcing audio extraction, and reinforces project_id immutability. This adds meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (download media from a LINK), the resource (URL) and the action (save as project asset). It also specifies the project scope. However, it does not explicitly differentiate from the sibling tool download_url, which could overlap in purpose. The phrase 'for something they want in the edit' narrows it to project assets, but a direct comparison is missing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: 'Use this whenever the user pastes a URL for something they want in the edit; never tell them to upload a file you could have fetched.' It also explains when to use as_kind ('only to force audio-only from a video page') and what to do next (insert_media/add_music). This is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_burned_textFind burned textARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. MEASURE where text is burned into the footage — subtitle bands, watermarks, handles, on-screen labels. Reads the actual frames and returns EXACT rectangles as frame fractions, plus when each is visible. Use this INSTEAD of estimating a rectangle from look_at: an estimated box is what puts a bar next to the text instead of over it. Read-only. scope: 'captions' (wide subtitle lines whose words change), 'watermark' (a small mark identical in every frame), 'text', or 'all' (default). start/end limit the scan to a source-time window.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| scope | No | ||
| start | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that it reads actual frames, returns exact rectangles as frame fractions, and includes visibility times. It also notes project-scoping and that the project identity is returned. Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds valuable detail about output format and scope without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph where each sentence contributes: scoping, purpose, behavioral detail, alternative usage, read-only note, and parameter explanations. No filler or redundancy; it is appropriately front-loaded with the most critical scoping constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage alternatives, behavioral expectations, and parameter semantics. It even specifies the return format (exact rectangles as frame fractions, visibility times) despite having no output schema. The only minor gap is that start/end units are not explicitly stated, but 'source-time window' strongly implies seconds, so the tool is sufficiently complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 25% schema description coverage, the description compensates by explaining the scope enum values (captions, watermark, text, all) with their meanings, describes start/end as a source-time window, and gives specific guidance for project_id (copy from list_projects/open_project/project_state, never guess from active pointer). This adds meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (measure where text is burned into footage), lists concrete examples (subtitle bands, watermarks, handles, on-screen labels), and explicitly contrasts with look_at for estimating rectangles, making the tool's purpose unambiguous and distinct from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It directly instructs 'Use this INSTEAD of estimating a rectangle from look_at' and explains the consequence of using the alternative. It also defines each scope value (captions, watermark, text, all) with behavioral distinctions, providing clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_footageFind footageARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Find REAL footage of a NAMED topic on the web — the b-roll move: the speaker mentions Elon Musk, the cut shows his rocket. Query the concrete THING ('spacex starship launch', 'tesla factory'), not a mood — search_stock covers generic visuals ('busy city'), THIS covers named people, companies, products, events. Returns candidate links best-guess first; pick real footage of the subject (short clips), then fetch_url(url, as_kind='clip'), look_at_asset for the right seconds, and a cutaway or insert at the mention. Tell the user what footage you used (title + channel).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds valuable behavioral context beyond annotations: the call is project-scoped (acts only on explicit project_id), returns project identity with the result, and returns candidate links 'best-guess first'. This enriches the agent's understanding of the tool's scope and output ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the most critical constraint (project-scoped), then moves to the core purpose, usage pattern, and output handling. Each sentence earns its place: it differentiates from siblings, gives concrete query guidance, and specifies the follow-up actions. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a search tool with specific usage pattern), the annotations cover read-only safety, and there is no output schema, the description is remarkably complete. It explains what it returns (candidate links best-guess first), the intended workflow (fetch_url, look_at_asset, cutaway), how to handle the results, and what to tell the user. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% (query has no schema description), but the description fully compensates by explaining that query must be a concrete named thing (e.g., 'spacex starship launch') and not a mood, with explicit examples. It also reinforces project_id's role as an immutable scope, which aligns with the schema's description. The description adds meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('find'), a resource ('real footage of a NAMED topic on the web'), and the project-scoped nature. It explicitly contrasts with search_stock, which covers generic visuals, so an agent can distinguish this from siblings without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit when-to-use vs when-not-to-use guidance: 'search_stock covers generic visuals... THIS covers named people, companies, products, events.' It also outlines the downstream workflow (fetch_url, look_at_asset, cutaway) and how to report usage, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_shotsFind shotsBRead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: recall shots in the main video and the project's clips: like a moment (program seconds or key@seconds: the same framing on another day), night true/false, circles, faces close|medium|wide|none, or a word query over the storyboard.
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | ||
| like | No | ||
| faces | No | ||
| night | No | ||
| query | No | ||
| circles | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description still adds real behavioral facts not present in the annotations: that it acts only on an explicit project_id (never the active-project pointer) and that the result carries the project identity — useful scoping and return context. It does not, however, explain the notable idempotentHint=false on a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the two most important framing facts (project scoping, read-only) and then lists query modes. It is a single dense run-on sentence, but little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should carry return-shape burden; it only says the project identity is returned and says nothing about result count, ordering, or the 'k' cap. For a read-only search tool with annotation coverage this is adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is very low (14%), so the description must compensate, and it partially does: it gives semantics for 'like' (program seconds or key@seconds, same framing on another day), 'night' (true/false), 'faces' (close|medium|wide|none), and 'query' (word over the storyboard). But 'circles' and 'k' are enumerated with no meaning, leaving clear gaps against the 7 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource — 'recall shots in the main video and the project's clips' — and frames it as a filter-based recall over footage. An agent can tell it retrieves shots rather than editing them, though it never explicitly names the nearest siblings (get_shots, find_visual_moments, find_footage) to differentiate scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use/when-not guidance and no comparison to alternatives like get_shots or find_visual_moments. The 'PROJECT-SCOPED'/'READ' prefixed labels hint at context, but nothing tells the agent which of several shot-finding tools to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_silencesFind silencesARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Silences of at least min_seconds (start/end: a SOURCE-seconds range), with midpoints and surrounding words — cut points should snap to these midpoints or word boundaries.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| start | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| min_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so the bar is lower, yet the description still adds real context: the call is project-scoped, returns the project identity alongside the result, and reports midpoints with surrounding words. It omits any note on ordering, limits, or volume of silences returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with the project-scoping constraint front-loaded and no filler. The parenthetical about start/end is compressed but readable; structure is appropriate for the content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully describes what comes back (midpoints, surrounding words, project identity), and annotations cover safety. Minor gaps remain around result size/ordering and range inclusivity, but an agent can invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, so the description must carry the load and largely does: it defines min_seconds as a threshold and frames start/end as a SOURCE-seconds range. It leaves unit precision, inclusivity of the range, and default behavior unspecified, so not quite a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('find silences of at least min_seconds') plus the returned artifacts (midpoints and surrounding words), which is more than a restatement of the name. It does not explicitly name the sibling cut_silences to differentiate the read-only find from the mutating cut, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not guidance and no named alternative, even though cut_silences is an obvious sibling. The clause 'cut points should snap to these midpoints or word boundaries' implies a downstream use but leaves the choice between finding and cutting to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_songFind songARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Find web links for a SPECIFIC song the user NAMED ('add Blinding Lights by The Weeknd') — the case a generic catalog cannot serve, because named commercial tracks need exact discovery. Returns candidate links best-guess first; pick the real thing (artist's own/'- Topic' channel or 'Official Audio'; no lyric/sped-up/loop/cover versions unless asked; never a full album/mix — one track only), then fetch_url(url, as_kind='music') downloads the pick. Always tell the user which version you grabbed. Search can verify the likely recording, NOT a usage license; a public/downloadable upload does not grant republication rights, so disclose that. For a genre/vibe request ask for a user-supplied file or link; a trending platform sound can only be provided by the user.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=true), the description discloses project-scoped behavior, returns project identity with result, candidate link ordering, version-selection criteria (artist's own/'- Topic' channel, no covers), and the need to disclose licensing limitations. This is rich context not in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence adds value: scoping, purpose, selection rules, follow-up steps, and caveats. It is front-loaded with PROJECT-SCOPED and then the core purpose. Some redundancy exists but it remains organized and purposeful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains that it returns candidate links best-guess first and describes the pick criteria, but it does not specify the exact structure of the result (e.g., fields or error handling). Overall it is quite complete for agent use, but a little more on return format would make it fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers project_id well with a detailed description, but query has no schema description (50% coverage). The description compensates by explaining query is the named song, adding meaning beyond the bare schema. However, it could be more explicit about query format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds web links for a specific named song, with an example ('add Blinding Lights by The Weeknd'), and explicitly contrasts it with generic catalog scenarios. This distinguishes it from siblings like add_music or fetch_url.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it (named songs), when not to (genre/vibe requests should ask for user-supplied file/link), and what to do after (fetch_url with as_kind='music'). It also warns about licensing verification, giving clear decision guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_visual_momentsFind visual momentsARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: focused semantic search across the COMPLETE indexed main-video filmstrip. Use once for a long source when requested highlights are visual rather than transcript-searchable (gameplay saves/fails, a gesture, a product appearing, action moments). query names one concrete visible event. It returns coarse SOURCE timestamps after scanning all tiles in parallel; verify useful candidates with ONE batched look_at call, then WRITE. Never replace it with serial whole-video look_at probing.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| query | Yes | ||
| start | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds behavioral detail: it 'returns the project identity with its result', 'scans all tiles in parallel', and produces 'coarse SOURCE timestamps' – useful expectations not implied by the schema. It also frames the query as naming 'one concrete visible event', clarifying the semantic requirement. No contradiction with annotations; the description enriches beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with key markers 'PROJECT-SCOPED' and 'READ'. Every sentence adds value: scope, behavior, usage, output, and verification steps. It is slightly long but not wasteful; the use of caps and semicolons aids scanning. It earns a high score for structure and efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, no output schema, and no nested objects, the description covers purpose, usage, output format (coarse timestamps), and a verification workflow. It does not specify how start/end or max_results affect results, nor error handling, but the essential operational details are present. The absence of an output schema is mitigated by the mention of 'returns the project identity with its result' and 'coarse SOURCE timestamps'. Overall, it is sufficiently complete for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% (only project_id has a description). The description compensates for query by stating it 'names one concrete visible event', and for project_id by emphasizing explicit scope. However, start, end, and max_results receive no semantic clarification in the description, and the schema only provides type and numeric bounds for max_results. Given the low coverage, the description partially addresses parameters but leaves significant gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs 'focused semantic search across the COMPLETE indexed main-video filmstrip' and returns 'coarse SOURCE timestamps'. It distinguishes itself from transcript-based search and from sibling tools like look_at by explicitly contrasting with 'serial whole-video look_at probing'. The purpose is unambiguous and tied to a specific resource (the indexed filmstrip).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use conditions: 'Use once for a long source when requested highlights are visual rather than transcript-searchable' with concrete examples (gameplay saves/fails, gestures, product appearances). It also provides an exclusion: 'Never replace it with serial whole-video look_at probing' and prescribes a follow-up verification step with 'ONE batched look_at call'. This fully guides an agent on when and how to use it vs. alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audio_analysisGet audio analysisARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: measured musical/energy analysis of the source audio (cached after the first call): tempo (BPM + confidence — below 0.5 the pulse is unreliable and beat_align_cuts refuses), beat count plus the first up-to-eight detected beat timestamps, where the loudest/quietest sections and the biggest energy rise sit, and the most vocally STRESSED words with timestamps. Times are SOURCE seconds. Call before beat_align_cuts / punch_in_on_emphasis, or to answer 'what's the tempo'. Pass asset_key (an uploaded or fetched music file) to analyze that instead — e.g. to find the drop for add_music offset_s.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_key | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds substantial behavioral context: it's cached after the first call, times are in SOURCE seconds, and it mentions that a confidence below 0.5 makes the pulse unreliable and causes beat_align_cuts to refuse. This goes well beyond the annotations and helps the agent anticipate side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place. The description is front-loaded with 'PROJECT-SCOPED' and 'READ', then delivers precise details without fluff. It's dense but not verbose, and the structure flows logically from purpose to outputs to usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description enumerates all key return values (tempo with confidence, beat count, timestamps, energy sections, stressed words) and ties them to usage. It also addresses the optional asset_key scenario. For a tool with this complexity, nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 50% schema coverage, the description compensates thoroughly. It explains project_id as an immutable scope and instructs to copy it from specific tools, explicitly stating the active-project pointer is never used. For asset_key, it clarifies it's an uploaded or fetched music file and gives a concrete use case. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: a read-only call that returns musical/energy analysis of the source audio, with specific outputs (tempo, beats, energy sections, stressed words). It differentiates itself by noting it is project-scoped and references sibling tools (beat_align_cuts, punch_in_on_emphasis) and explains how it relates to them. It also mentions the alternative use via asset_key.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Call before beat_align_cuts / punch_in_on_emphasis, or to answer "what's the tempo".' It also explains the asset_key alternative for analyzing a different asset, with an example. This gives clear context for when this tool is appropriate versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_editorial_mapGet editorial mapARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: compact cross-modal SOURCE timeline joining each sentence (or shot when there is no speech) to overlapping shot changes, relative energy/trend, beats, vocal stress, pauses and measured face/source-text/dense-UI evidence. Use this instead of separately re-reading transcript + shots + audio analysis when directing a substantial reel, podcast, montage or B-roll/SFX/motion treatment. It aligns evidence but does not recognize the full picture or prescribe effects: inspect filmstrips/look_at before visual choices. Pass asset_key for an indexed uploaded clip. focus can be all, story, visual, energy, faces, ui, quiet or peaks.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| focus | No | ||
| limit | No | ||
| start | No | ||
| asset_key | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is known. The description adds valuable context: it is project-scoped, requires an explicit project_id (never guesses), and explicitly says it does not prescribe effects, directing the agent to use look_at for visual decisions. This goes beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient, with key info front-loaded (project-scoped, READ, cross-modal timeline). Each sentence earns its place: scope, content, usage guidance, caveat, and parameter notes. It is longer than average but warranted given the tool's complexity. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description thoroughly explains the output content (sentences/shots, shot changes, energy/trend, beats, stress, pauses, face/UI evidence) and clarifies what the tool does not do (prescribe effects). It also notes the need for look_at for visual decisions and explains asset_key. With no output schema, this description carries the burden well. The only gap is the lack of detail on start/end/limit parameters, but those are likely self-explanatory time and count ranges.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 17% (only project_id has a description). The description compensates partially: it explains that asset_key is for an indexed uploaded clip and enumerates focus options ('focus can be all, story, visual, energy, faces, ui, quiet or peaks'). However, it does not explain start, end, or limit parameters, which are likely time range and result count. The description adds value but does not fully compensate for the low coverage of all parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it returns a project-scoped, compact cross-modal SOURCE timeline with detailed evidence (sentences/shots, shot changes, energy, beats, stress, pauses, face/UI evidence). It explicitly differentiates from reading transcript, shots, and audio analysis separately, and distinguishes itself from sibling tools like get_shots, get_transcript, and get_audio_analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: 'Use this instead of separately re-reading transcript + shots + audio analysis when directing a substantial reel, podcast, montage or B-roll/SFX/motion treatment.' It also states limitations: 'It aligns evidence but does not recognize the full picture or prescribe effects: inspect filmstrips/look_at before visual choices.' This gives the agent clear conditions for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_edlRead the edit decision listARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Current EDL JSON and version. Large timelines return a compact index instead of invalid truncated JSON. Request top-level sections such as ['captions','overlays'] and paginate list sections with offset/limit. Natural aliases are accepted without a retry: cuts/segments -> keep, text -> texts, zooms/transitions/grades/fades -> effects, audio -> all audio sections, and program/overview/summary -> the compact program overview. compact=true always returns counts, caption state and duplicate assets.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| compact | No | ||
| sections | No | Use exact top-level fields: keep, split_keep_boundaries, canvas, captions, music, sfx, volume, frame, inserts, voiceover, effects, overlays, texts, vectors, speed, master, stem_mix, caption_mutes, source_clean, patches; or overview. Feature/tool names are not sections. Read the creative plan with get_edit_plan. | |
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavior beyond the readOnlyHint: large timelines return a compact index instead of invalid truncated JSON, aliases are accepted without retry, and compact=true changes the response to include counts, caption state, and duplicate assets. This is valuable information that cannot be inferred from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with the most important constraint, PROJECT-SCOPED, and every subsequent sentence adds a distinct behavior: full result, large-timeline fallback, section selection, aliases, and compact mode. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter read tool with no output schema, the description covers scope, pagination, section selection, aliases, compact mode, and large-timeline behavior. It is slightly less explicit about the exact default response shape when no sections are requested, which keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, but the description compensates for every parameter. It explains that project_id is the immutable explicit scope, defines offset/limit as pagination for list sections, gives alias mappings for sections, and specifies compact=true's behavior. This adds meaning far beyond the bare schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is specific about the resource and action: it reads the current EDL JSON and version for a project. It also distinguishes the call from siblings by emphasizing project scoping, explicit project_id, and result identity, so an agent can tell it apart from related getters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete usage instructions: request top-level sections, paginate list sections with offset/limit, use natural aliases without retry, and use compact=true for counts, caption state, and duplicate assets. It also points to get_edit_plan as the alternative for creative-plan data and warns that feature/tool names are not valid sections.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_kept_transcriptGet kept transcriptARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. The transcript the CURRENT edit actually keeps, in program time with matching source spans, plus automatic repeated-phrase detection. ALWAYS call this after cutting repetitions or tightening — it is how you verify nothing repeated survived.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and destructiveHint annotations, the description discloses project-scoping behavior ('acts only on the explicit project_id', 'active-project pointer is never used to guess') and output characteristics (program time, source spans, repeated-phrase detection). This adds meaningful behavioral context beyond what annotations alone provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the key scoping constraint, and the usage rule is clearly stated at the end. The first sentence is slightly awkward and somewhat redundant with the second, but overall every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description does summarize what the result contains: the kept transcript, program time, matching source spans, and repeated-phrase detection. Combined with the one required parameter and read-only annotations, this is sufficient for an agent to invoke the tool and understand the purpose of the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the project_id schema description is already detailed, including where to copy the id and that the active-project pointer is not used. The tool description mostly repeats the scoping concept without adding new parameter-level detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource ('the transcript the CURRENT edit actually keeps') and adds differentiating detail (program time, matching source spans, repeated-phrase detection). It is clear it returns the kept transcript rather than a general transcript, though the phrase 'returns the project identity with its result' is somewhat confusing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-to-use rule: 'ALWAYS call this after cutting repetitions or tightening — it is how you verify nothing repeated survived.' This is clear context for the intended use case, though it does not name alternatives or explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_shotsGet shotsBRead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Shot boundaries (scene changes — where transitions may land) for a time range. The PICTURE itself is in your filmstrips and look_at.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| start | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description is not required to restate those. It adds value by specifying project scoping ('acts only on the explicit project_id'), that it returns the project identity, and that it does not return pictures. This goes beyond annotations and helps the agent understand the tool's boundaries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences with no filler. It front-loads the critical project-scoping constraint and keeps the reader's attention on the key facts. Each sentence adds distinct information, making it efficient and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with three parameters and no output schema, the description leaves gaps: it does not specify the return format (e.g., array of timestamps), whether start and end are inclusive, or what happens if they are omitted. It also does not mention any limits or pagination. These are important for an agent to call it correctly, especially without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only project_id has a description). The description mentions 'for a time range' but does not clarify the units, format, or optionality of start and end. It adds no detail about these parameters beyond the schema, so it fails to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns 'Shot boundaries (scene changes — where transitions may land) for a time range', and it is project-scoped. It also distinguishes itself from siblings by noting it returns the project identity and that the actual picture is in filmstrips and look_at, which helps an agent know this is not the tool for frames.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a hint about when not to use it ('The PICTURE itself is in your filmstrips and look_at'), implying look_at is for pictures. However, it does not explicitly name alternative tools for other purposes, nor does it state clear conditions for when to choose this over get_editorial_map or get_video_info. Usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_syllablesGet syllablesBRead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: syllable onsets of the words said in a program window, for syllable-timed type ('try / ing.') and cuts.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| start | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds the project-scoping constraint and notes that project identity comes back with the result, but that scope rule is largely duplicated in the project_id schema description, and nothing is said about empty windows or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the PROJECT-SCOPED constraint before the read behavior. Efficient, though the second sentence is densely packed and slightly hard to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should carry more of the return contract; it only says the project identity accompanies the result, leaving the shape of the syllable-onset data (timing, boundaries, count) unspecified. The odd "syllable-timed type ('try / ing.')" phrasing further limits usefulness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 33% — start and end have no schema description at all. The description's phrase "a program window" implies start/end delimit a time range, which recovers some meaning, but it adds no units, format, or boundary semantics for the two undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reads syllable onsets of words said in a program window, which is distinct from get_words/get_transcript siblings. However, the trailing clause "for syllable-timed type ('try / ing.') and cuts" is cryptic and blurs rather than sharpens the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not guidance. It does not explain how this differs from get_words, search_transcript, or get_transcript, or what kind of task needs syllable onsets rather than words or a transcript.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transcriptGet transcriptARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Sentence-level SOURCE transcript with timestamps for a time range (source seconds). For word-exact timing use get_words; for what the current EDIT keeps, use get_kept_transcript. Pass asset_key to read an UPLOADED clip's or song's own transcript instead (clip seconds).
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| start | No | ||
| asset_key | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: it clarifies that the tool only acts on the explicit project_id and never guesses the active project, and it distinguishes between source seconds and clip seconds. However, it does not disclose potential edge cases like missing transcripts or pagination, though these are minor given the read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the 'PROJECT-SCOPED' warning, then covers the core function, alternatives, and special case in a few sentences. Every sentence adds value, with no redundancy or filler. It is well-structured for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the four parameters and no output schema, the description covers the essential aspects: what it returns, the time-range semantics, the alternative tools, and the asset_key option. It does not describe the exact return structure or error behavior, but for a read-only transcript fetcher, this is sufficient. The presence of sibling tools with clear distinctions further rounds out the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at only 25% (only project_id has a schema description), the tool description must compensate. It does: it explains that project_id is required and immutable, start/end define a time range in source seconds, and asset_key switches to an uploaded clip's transcript. This adds meaning beyond the bare schema, though it could be more explicit about start/end format (e.g., inclusive boundaries).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: retrieving sentence-level SOURCE transcript with timestamps for a time range in source seconds. It is specific about the resource (transcript), the granularity (sentence-level), and the scope (project-scoped with explicit project_id). It also explicitly differentiates from get_words and get_kept_transcript, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: it tells when to use get_words (word-exact timing) and get_kept_transcript (current EDIT), and explains when to pass asset_key (for uploaded clips/songs). It also emphasizes project-scoped behavior, implying the tool should only be used when project_id is available. This is excellent routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_video_infoGet video infoARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Video metadata plus index and EDL summary. Use only when the supplied project state does not already answer the metadata question.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds scoping behavior ('acts only on the explicit project_id') and discloses that the result includes the project identity. This is meaningful context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the critical scoping constraint ('PROJECT-SCOPED') and then the return summary. Every clause earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one fully documented parameter and annotations covering safety, the description is complete: it states scope, return content, and usage condition. It doesn't detail the exact output structure, but there is no output schema, and the tool is simple enough that this is not a critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the project_id parameter is already well-documented in the schema (immutable scope, copy from list_projects/open_project/project_state, never guessed). The tool description adds no additional parameter semantics beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('get'), a resource ('video info'), and enumerates exactly what is returned ('Video metadata plus index and EDL summary'), and adds the project-scoping constraint and project identity return. This is clearly distinguishable from sibling get_* tools by the explicit scope and return content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit when-to-use condition: 'Use only when the supplied project state does not already answer the metadata question.' It implies a when-not (when project_state already answers) but does not name specific alternative tools. Still, the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wordsGet wordsARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Word-level timestamps [{t0-t1 word}] for any source-time range (the response caps at 400 words and says how to page for the rest). THE source of truth for cut points inside a sentence — never estimate word timing from sentence ranges.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| start | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint=true and destructiveHint=false. The description adds valuable context: the 400-word cap, pagination hint, and the fact that the result includes the project identity. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with scope and key constraints. Every clause adds information—no filler or repetition. The emphasis via uppercase is purposeful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 3 params and no output schema, the description covers scope, cap, pagination existence, and the 'source of truth' role. Missing details like time units and pagination mechanics are minor for an agent selecting the tool, and the description gives enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only project_id is described). The description implies start and end define a 'source-time range' and that the response caps at 400 words, but it doesn't specify units, whether they're required for pagination, or their exact semantics. It partially compensates but leaves gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('get'), resource ('words'), and scope ('project-scoped'), and clarifies it returns word-level timestamps with time ranges. It explicitly distinguishes itself from sentence-based timing by declaring itself 'THE source of truth for cut points inside a sentence', making its unique purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear directive to use this tool for word-level timing and never estimate from sentence ranges, which is an actionable exclusion. However, it doesn't name specific sibling tools (e.g., get_transcript) as alternatives, so the guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_fontImport fontAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Validate a brand font the user uploaded (TTF/OTF asset) so typeset can set it: embedding rights checked, sanitised, subset. licence is the user's statement of their right to use it (OFL, Apache, commercial licence they hold); attest=true confirms it.
| Name | Required | Description | Default |
|---|---|---|---|
| attest | No | ||
| family | No | ||
| licence | Yes | ||
| asset_key | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false). The description adds real behavioral context beyond that: embedding rights are checked, the font is sanitised and subset, licence is a user attestation, and the call is project-scoped and returns project identity. It stops short of saying what happens on a rejected or unlicensed font.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded: the PROJECT-SCOPED constraint leads, then the purpose, then the semantic notes for licence/attest. Every clause carries information and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with no output schema, the description covers scope, side effects, licence semantics and the return of project identity. Remaining gaps (error/rejection behavior, what family does) are modest given the annotations already establish the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% (project_id), so the description must carry the load. It does explain licence (OFL/Apache/commercial, a statement of user rights) and attest (confirms the licence claim), which is genuine added meaning, but asset_key and family remain undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (validate/import) and resource (user-uploaded brand font, TTF/OTF asset) plus the downstream purpose ('so typeset can set it'). An agent can distinguish it from generic asset tools like list_assets or upload_start, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The condition of use is implied ('a brand font the user uploaded'), and the dependency on set_typeset is hinted at, but there is no explicit when/when-not statement or named alternative. An agent can infer the context but must reason about it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_lutImport lutAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Apply a .cube LUT (up to 65^3, validated) from a project asset or a URL over [start, end) at strength 0-1.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | program s | |
| url | No | ||
| start | No | program s | |
| strength | No | ||
| asset_key | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write/non-idempotent/non-destructive profile, so credit goes to added context: the call is project-scoped, validates the LUT (65^3 cap), and returns the project identity with its result. It does not say whether repeated calls stack or replace an existing grade, which is the main residual gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the PROJECT-SCOPED constraint front-loaded before the operation itself. Every clause carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only 50% schema description coverage, the description supplies the return value (project identity), source alternatives, range semantics, strength bounds, and validation limits. Nothing needed to invoke the tool correctly is missing, aside from edge behaviour on repeated application.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 50% schema coverage the description meaningfully compensates: it maps asset_key vs url as alternative sources, clarifies start/end as a half-open time range (the schema's 'program s' text is cryptic), and bounds strength to 0-1. It still omits start/end units and strength's default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Apply a .cube LUT') plus the defining constraints (65^3 max, validated, applied over [start, end) at strength 0-1). The artifact type distinguishes it from look/recipe/grade siblings such as apply_look, apply_recipe and set_color_grade without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage conditions (LUT pulled from a project asset or a URL, applied across a time range) but never states when to reach for this over the colour siblings (apply_look, match_grade, set_grade_custom) or what prerequisites exist. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
index_statusCheck video analysis progressBRead-onlyInspect
Progress of an explicit project's video analysis. The editing tools cannot read a transcript, shots or silences until this reaches 'done'.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description doesn't need to cover safety. It adds the key behavioral context that this tool's result gates other operations, and that there's a 'done' state. However, it doesn't describe the return format or whether it's a pollable status, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at two sentences, but the first sentence is a fragment ('Progress of an explicit project's video analysis.') which could be more grammatically complete. The key gating information is front-loaded, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (single integer param) and presence of readOnly annotations, the description covers the essential purpose and gating. However, it doesn't specify what the progress output looks like (e.g., a status string, percentage), which an agent would need to interpret the result. This gap is notable since there's no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain project_id. It refers to 'explicit project' but never explicitly states that project_id is the identifier or how to use it. The description adds minimal value beyond the schema's type, leaving the parameter under-documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks the progress of a project's video analysis, which is a specific verb-resource combination. It also differentiates from siblings by explaining that editing tools depend on this status reaching 'done', so it's not about reading content but checking readiness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong contextual usage guidance: use this tool to check if analysis is complete before attempting to use editing tools that require transcript, shots, or silences. It doesn't explicitly name alternatives like get_transcript or wait_for_job, but the gating condition implies when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_mediaInsert mediaAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Splice an uploaded video clip or image INTO the edit at ANY position in the FINAL edited video — mid-take positions split the take cleanly at a word edge, so 'in the middle of the talk' works exactly. NEVER splice a clip the user sent as a STYLE REFERENCE ('watch this', 'make it like this', 'use this as reference', 'recreate this', a YouTube they asked you to study) — look_at_asset it, extract_audio / add_music if they want THAT song, and rebuild the look from the MAIN gameplay/footage. If the studio already placed a reference on the timeline, remove_insert it. Call list_assets(kind='clip') or kind='image' first and pass the exact storage_key. duration_s: how long the insert plays (image default 3.0s; a video defaults to its available length). clip_start_s: where in the source clip the window starts — use look_at_asset to pick the right moment. motion: 'zoom_in', 'zoom_out', 'pan_left' or 'pan_right' gives either a still or a video insert its own slow local camera move without changing timing or audio. Use it deliberately to direct attention, not on every shot. Inserted media is NOT transcribed — captions cover the main footage only. fit defaults to 'auto': the WHOLE asset is preserved (black bars when the program frame is already pad; a blurred extension otherwise) so a portrait card cannot be center-cropped into an empty middle band. Pass fit='pad' for solid black; never use blur when the user asked for black. fit='crop' fills edge-to-edge. Assets may be reused whenever the edit benefits from repetition or a different source window.
| Name | Required | Description | Default |
|---|---|---|---|
| fit | No | ||
| motion | No | ||
| asset_key | Yes | ||
| duration_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| at_output_s | Yes | ||
| clip_start_s | No | ||
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false (non-readonly, non-open-world, non-idempotent, non-destructive), so the description carries the full burden of behavioral disclosure. It delivers: project-scoped behavior, splitting at word edges, no transcription of inserted media, fit behavior with black bars/blur, motion effects, and defaults. It even clarifies edge cases like portrait cards and blur-vs-pad preferences. This is comprehensive behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but each sentence adds substantive value, from scoping to usage rules to parameter semantics. It is front-loaded with the critical project-scoping warning. It could be tightened slightly (e.g., merging some fit explanations), but the density is justified by the tool's complexity and the need to avoid misuse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, no output schema) and the high-risk misuse cases (style references, fit options), the description is remarkably complete. It covers prerequisites (list_assets), behavioral nuances (no transcription, split at word edge), parameter defaults, and explicit exclusions. An agent could confidently invoke this tool without further documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 25% schema description coverage, the description must explain the six undocumented parameters. It does so thoroughly: duration_s (defaults for image vs video), clip_start_s (use look_at_asset), motion (types and effect), fit (auto/pad/crop and blur behavior), and it implicitly clarifies asset_key and at_output_s through the overall description. This compensates fully for the schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: splicing an uploaded video clip or image into the edit at any position, with specific details like splitting at word edges. It distinguishes itself from siblings by naming alternatives (look_at_asset, extract_audio, remove_insert) and by explicitly scoping to the project_id. This makes the purpose unambiguous and differentiates it from the many other add/insert tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use and when-not-to-use guidance. It warns against splicing style-reference clips, directs to alternatives (look_at_asset, extract_audio, remove_insert), and instructs to call list_assets first. This is far beyond typical usage guidance and leaves no ambiguity about correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
isolate_colourIsolate colourAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Keep one colour and send the rest of the picture to mono. keep='hue' keeps that hue everywhere (hue 'auto' = the subject's dominant colour, solved now; or #rrggbb); keep='subject' keeps the person in colour and 'both' the person plus the hue (subject effects). keep_skin keeps faces natural. Window defaults to the whole program.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | program s | |
| hue | No | ||
| keep | No | ||
| start | No | program s | |
| softness | No | ||
| keep_skin | No | ||
| tolerance | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-readOnly, non-destructive, non-idempotent mutation, and the description adds real context beyond them: it is project-scoped only on the explicit project_id, the active-project pointer is never used to guess, it returns the project identity with the result, and 'auto' hue is solved immediately. It does not spell out reversibility or how the effect combines with an existing grade, but the disclosure is meaningfully richer than the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The PROJECT-SCOPED constraint is front-loaded and each clause carries information about a distinct parameter or scope rule. It is dense with parenthetical mode explanations rather than wasteful, though the nested parentheticals make it slightly harder to scan than an ideal single-purpose sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter effect tool with 38% schema coverage and no output schema, the description covers the scope contract, mode selection, and the default window, and notes the return of project identity. It omits the meaning of softness and tolerance, so an agent cannot fully reason about the effect's falloff, leaving the definition adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at only 38%, the description compensates well for the key parameters: it defines keep='hue'/'subject'/'both', explains hue='auto' vs #rrggbb, clarifies keep_skin, and states the window defaults to the whole program for start/end. It leaves softness and tolerance entirely unexplained, which is the remaining gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+effect: 'Keep one colour and send the rest of the picture to mono,' which clearly identifies a selective-colour isolation effect. It is distinct from siblings like match_grade or set_color_grade in effect terms, but it never names or contrasts a sibling, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The keep/hue/keep_skin sentence implicitly tells the agent which mode to choose for a given intent, which is useful. However, there is no explicit when-to-use vs. when-not guidance relative to alternatives such as add_color_screen, match_grade, or add_subject_effect, and no prerequisites are stated outside the project_id scoping note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
justify_verification_findingsJustify verification findingsAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Resolve a genuine verification false positive only after direct pixel/audio evidence proves it. The finding and justification stay in the immutable EDL version's durable record. Missing previews, caption proof, corrupt glyphs and invalid music timing require repair and cannot be justified.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| finding_ids | Yes | ||
| evidence_ids | No | ||
| justification | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no behavioral hints (all false), so the description carries the full burden. It discloses that the tool modifies state by persisting the finding and justification in the immutable EDL version's durable record, and that it is project-scoped. It also states the return value (project identity with its result). This is strong disclosure, though it could be more explicit about the irreversibility of the action, which is implied by 'durable record.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient, front-loading the critical project scope and then layering conditions, effects, and exclusions. Every sentence adds unique information with no fluff or redundancy. The structure flows logically from scope to usage to persistence to exclusions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description explains the return value ('returns the project identity with its result'). It also covers the key behavioral context: project scoping, persistence, and the requirement for direct evidence. It doesn't mention potential error conditions or side effects on other projects, but the project-scoped statement implies isolation. Overall, it gives an agent enough to correctly decide when to call and what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, so the description must compensate. It emphasizes that project_id must be explicit and copied from list_projects/open_project/project_state, which is also in the schema. It does not explain the semantics of finding_ids or evidence_ids, and it does not clarify how justification should be structured beyond the schema's minLength. The description adds minimal value beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it justifies verification findings for a specific project. It explicitly says it acts only on the explicit project_id and returns the project identity with the result. It also distinguishes itself by stating that certain conditions (missing previews, caption proof, corrupt glyphs, invalid music timing) cannot be justified, which differentiates it from repair-oriented siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'Resolve a genuine verification false positive only after direct pixel/audio evidence proves it.' It also provides clear when-not-to-use exclusions: 'Missing previews, caption proof, corrupt glyphs and invalid music timing require repair and cannot be justified.' This effectively routes the agent to the correct action without ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keep_segmentsKeep segmentsAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. REPLACE the keep list (SOURCE [[start,end],...]); new cut edges land audio-safe. Everything else is cut. Use only for wholesale restructuring, always after get_edl — for local fixes prefer cut_range/restore_range. Each cut edge it writes (keep_segments: every edge of the list) lands audio-safe on the source's sound: out of any word it falls in, onto the quietest point within ~80 ms (a word's release or lead-in up to 0.25 s), never into the word beyond; the result reports every move and any cut that joins running speech. snap_to_words:true first moves edges outward to word edges with a breath; snap_to_words:false keeps your exact times (a stutter cut). Every keep write also moves an edge that lands on or up to 6 frames past a source camera cut back off it (no flash of the other shot) and reports it.
| Name | Required | Description | Default |
|---|---|---|---|
| segments | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| snap_to_words | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the annotations: it discloses the audio-safe edge algorithm (~80 ms quietest point, 0.25 s word lead-in/release, never past the word), what snap_to_words:true vs false does, the camera-cut flash avoidance (edges up to 6 frames past a cut are pushed back), and that the result reports every move and any speech-joining cut. With destructiveHint/idempotentHint already declared, this is pure added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content earns its place, but it is delivered as one dense 150-word paragraph with nested parentheticals and repeated phrasing ('lands audio-safe' twice, 'cut edge' restated), so an agent must parse a lot before reaching the snap_to_words and camera-cut rules. Front-loading is good, structure is not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a wholesale editorial rewrite with no output schema and only partial annotation coverage, the description covers scope, when-to-use, edge behavior, snapping and result reporting. The one gap is reversibility — nothing says whether the prior keep list can be undone (reset_edit/restore_range exist as siblings) or what happens to prior edits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must carry the load, and it largely does: it defines segments as the keep list of [start,end] pairs and gives both branches of snap_to_words. The time basis (source frames vs seconds) of the segment values is still implicit, which keeps it short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('REPLACE the keep list') plus the exact input shape 'SOURCE [[start,end],...]' and the scope consequence ('Everything else is cut'). It explicitly distinguishes itself from the sibling tools that handle the same domain by naming cut_range and restore_range.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use ('only for wholesale restructuring, always after get_edl'), an explicit when-not/alternative ('for local fixes prefer cut_range/restore_range'), and the scoping rule (acts only on the explicit project_id, never the active-project pointer). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_assetsList assetsARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Every file in this project — used on the timeline AND unused uploads sitting in the library. kind='music' lists audio (use its storage_key with add_music or add_voiceover); 'clip' lists uploaded video clips and 'image' reference images (use with insert_media); 'render' past renders; 'all' everything. UNUSED files are marked AVAILABLE and can be placed without asking the user to re-upload.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds behavioral value beyond these annotations: it warns that the active-project pointer is never used to guess, discloses that the result includes the project identity, and explains that unused uploads are surfaced and marked AVAILABLE. This helps the agent avoid misinterpreting scope or assuming active context propagation. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the crucial scoping constraint ('PROJECT-SCOPED') and every sentence carries distinct, useful information: scope, inclusion of unused uploads, kind semantics with downstream pairings, and the AVAILABLE marker. It is dense but not wasteful, though it is slightly longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description goes a long way toward explaining what to expect: project identity in the result, per-kind asset categories, storage_key relevance, and the AVAILABLE marker for unused files. It does not specify the full result shape (e.g., whether it's an array, what other fields each asset has), but for a read-only listing tool backed by readOnlyHint annotations, the provided detail is sufficient for an agent to decide whether to call it and what to do with the data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% because the `kind` parameter has no schema-level description. The tool description compensates by explaining each enum value semantically and linking them to companion tools: 'music' for audio, 'clip'/'image' for use with insert_media, 'render' for past renders, and 'all'. The `project_id` parameter is already well described in the schema, and the description reinforces its immutable-scope nature.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('lists') and resource ('assets' in a project), and explicitly scopes the action: 'PROJECT-SCOPED: this call acts only on the explicit project_id'. It further differentiates from sibling tools by describing exactly what is included ('used on the timeline AND unused uploads') and by clarifying that the active-project pointer is never used, which distinguishes it from tools that rely on current context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete guidance on how to interpret and use results: it maps `kind` values to downstream tools ('use its storage_key with add_music or add_voiceover', 'use with insert_media'), and explains that unused files are marked AVAILABLE and can be placed without re-uploading. It also tells the agent where to source `project_id` from (list_projects/open_project/project_state). It lacks an explicit when-not-to-use or named alternative, but the context is clear enough to route an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_motion_templatesList motion templatesARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: the premium motion-graphics library (animated titles, captions-adjacent type, counters, callouts, lists, social/UI cards, charts, transitions, textures, CTAs) with each template's purpose, params and built-in sound cues. Call once before designing motion beats.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional filter: type, data, callout, social, layout, transition, texture, cta, caption. | |
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds real value beyond that: it discloses the project-scoping behavior ('acts only on the explicit project_id and returns the project identity with its result') and that the response carries purpose, params and sound cues, though it says nothing about pagination or result size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded labeled clauses (PROJECT-SCOPED, READ, Call once) with no filler, and the action/constraint ordering is sensible. The parenthetical inventory of template types is long but earns its place by telling the agent what the library contains.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by describing what each entry contains and the returned project identity. Annotations cover the safety profile. Only pagination/volume behavior is left unstated, which is a minor gap for a read-only two-parameter lister.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description reinforces project-scoping and implicitly enumerates the category families that the category filter accepts, but the schema already documents both parameters including the enum-like category list, so the description adds little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (READ/list) and resource (the premium motion-graphics library), and enumerates the template families covered (animated titles, counters, callouts, charts, transitions, textures, CTAs). This cleanly separates it from sibling listers like list_music_library, list_sound_library and list_assets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit sequencing rule — 'Call once before designing motion beats' — which tells the agent when in the workflow to invoke it. It does not name the alternative tools (e.g. add_motion_graphic/set_motion_graphic) that consume these templates, so routing guidance is strong but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_music_libraryList music libraryARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: the built-in CC0 music library by mood: exact slugs to offer the user with ask_user (add_library_music places the one they pick). Licence-verified background tracks (upbeat, chill, cinematic, corporate, dramatic, hiphop, ambient, inspiring), free for commercial use with no credit required; marks tracks this user already used in other projects.
| Name | Required | Description | Default |
|---|---|---|---|
| mood | No | Optional mood filter. | |
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and the description reinforces it with 'READ'. It adds valuable context beyond annotations: project-scoped behavior ('acts only on the explicit project_id and returns the project identity with its result'), license verification, commercial use terms, and that it marks tracks already used by the user. It doesn't cover pagination or return format, but with annotations and no output schema, the description carries most of the load well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the key scoping constraint ('PROJECT-SCOPED') and then the read/action. It's fairly dense but every sentence adds information about the tool's purpose, licensing, and workflow. Minor redundancy with schema (mood slugs), but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with annotations covering safety and a 100% schema, the description provides all necessary context: project scoping, what it returns (project identity), licensing, commercial use rights, and how it integrates with ask_user/add_library_music. No output schema, so explanation of return values is minimal but sufficient (mentions identity and marks used tracks).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters, including the enum for mood and a detailed description for project_id. The description adds the list of mood slugs, which is redundant with the enum but could help an agent parse, and emphasizes project_id scoping. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb+resource ('List the built-in CC0 music library by mood') and scopes it as READ. It clearly distinguishes itself from add_library_music (which places a selected track) and list_sound_library/list_assets. However, it doesn't explicitly name those siblings, so differentiation requires the agent to infer from the workflow mentioned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says it provides 'exact slugs to offer the user with ask_user (add_library_music places the one they pick)', directly specifying the workflow: use this to list, then ask_user, then add_library_music. This is a clear when-to-use with the follow-up action named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsList this account's projectsARead-onlyInspect
List this account's video projects, newest first, with whether each has a video, its project kind, its podcast-shorts status, and which parent generated a short. The navigation-pointer label is informational only; every project-targeting call still requires project_id. Start here.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds context about the returned fields and ordering, and the note about navigation-pointer vs project_id is a behavioral nuance not captured by annotations. However, it does not mention potential result size limits or pagination, which is a minor gap for a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero waste. The main action and ordering are front-loaded, and the critical note about navigation-pointer and project_id is delivered concisely. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no parameters and no output schema, the description provides the essential details: what is listed, the fields, ordering, and the relationship to project_id usage. It could mention whether there is a limit on the number of projects returned or how to handle pagination, but given the tool's simplicity and the annotations covering safety, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is trivially 100% and there is nothing to explain about parameters. The description focuses on output, which is not parameter semantics. The baseline for 0 params is 4, and the description adds value by clarifying the output fields, but that's beyond parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists video projects with specific attributes (has video, kind, podcast-shorts status, parent) and orders them newest first. It distinguishes itself as the starting point for project discovery, which is a clear purpose that differentiates it from the many sibling tools that operate on a single project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Start here' explicitly instructs when to use this tool. It also clarifies that the navigation-pointer label is informational only and that other calls require project_id, providing guidance on how to use this tool's output to proceed with other tools. This is explicit usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sound_libraryList sound libraryARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: Valmera's sound library — real recordings approved by ear (whooshes, swish, impact, risers, camera shutters, keyboard typing, clicks, pop, tick, ding, glitches, cash register, heartbeat) with when to use each and its measured hit level. Place with add_sfx(storage_key='sound:', at=), gain_db unset so it is levelled against the voice. Sound only on meaningful on-screen moments with a visual partner: zero by default in a podcast short, at most 1-2 (≈ one every 4-5 s at most elsewhere), never on captions, never a pun on the spoken word.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | optional role filter, e.g. whoosh, click, riser | |
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so the bar is lower, and the description still adds real behavior: the call is project-scoped to the explicit project_id and returns the project identity alongside results. It does not mention pagination or result size, but for a read-only library listing that is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the two operative constraints (PROJECT-SCOPED, READ) before the editorial content, and the sentences are dense rather than padded. The trailing placement policy is arguably add_sfx territory and lengthens the entry more than a pure listing tool needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-shape burden and largely does: it conveys that entries carry usage guidance and hit levels plus the echoed project identity. Enough for an agent to call it and use the result correctly, though it never says how many sounds come back or in what order.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, giving a baseline of 3. The description adds some role-filter color by enumerating the sound categories (whoosh, swish, impact, risers, shutter, keyboard, click, pop, tick, ding, glitch, cash register, heartbeat) that map to the optional role filter, which is a modest lift beyond the schema's short 'e.g. whoosh, click, riser'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('READ: Valmera's sound library'), the resource, and the payload an agent can expect — categories like whooshes, risers, shutters with 'when to use each and its measured hit level'. It is clearly distinguishable from the sibling list_music_library and from the add_sfx/remove_sfx/move_sfx mutation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes the agent to the follow-up call (add_sfx(storage_key='sound:<id>', at=<frame>, gain_db unset)) and gives placement policy (zero by default in a podcast short, at most 1-2, never on captions or spoken-word puns). What's missing is an explicit statement of when to reach for this tool over list_music_library or add_library_music, so selection between siblings is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
look_atLook at frames of the videoARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. YOUR OWN EYES on the footage. Pass times=[...] (1-8 exact source seconds of the MAIN video) and the frames at those moments come back as ONE timestamp-labeled picture in your own context — you see the footage yourself and judge it directly (composition, where the subject is, clear space for text, what a moment looks like). Every frame carries a faint tenths grid ((0,0) = top-left): READ aim points, cx/cy and rects off its labels instead of estimating. start/end still work as a range sampled evenly. OR pass output_times=[...] to see the ASSEMBLED PROGRAM instead: output seconds of the current edit, resolved through the EDL — kept footage AND spliced inserts both sample correctly, each tile labeled with its scene number, in TRUE output geometry (canvas fit and any active zoom applied — so you can SEE an aimed zoom's framing before rendering) — THE way to check what the viewer sees at a moment of the EDITED video ('the second scene') without rendering. Look as often as you need — there is no cap on looking; before aiming anything and before disputing what a user saw, look. Batch the moments you need into ONE call with several times rather than a string of separate calls. The filmstrips already gave you the whole video at a glance — use look_at for the CLOSER look: exact framing, small text, a precise instant. The transcript is ASR and can be wrong; inspect confidence and sentence context using get_words / the transcript — never look to lip-read or guess a word. IMPORTANT: the assembled geometry view composes picture cards (backdrop and windows) and erase patches but omits burn-ins (captions, text, motion graphics, grade). Set rendered=true after render_preview to inspect the CURRENT preview's real pixels—including captions, text, overlays and grade. In rendered mode output_times (or times) are output seconds and any useful set can be batched for caption QA. overlay (with times or output_times) marks what a device decision needs: 'matte' tints the person matte (measuring it first if needed), 'free_space' shades faces, UI bands and the watermark and outlines the free rectangles for type, 'beats' adds a ruler of stresses, cuts, the user's beats and device landings.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| start | No | ||
| times | No | ||
| overlay | No | ||
| question | No | ||
| rendered | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| output_times | No | ||
| native_resolution | No | With rendered=true, keep width up to 1920px: each time is its own full-detail image (no contact sheet), no re-encode. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark it read-only/non-destructive, and the description adds substantial behavior beyond that: project scoping is mandatory, there is no cap on calls, the assembled-geometry view includes picture cards and erase patches but OMITS burn-ins (captions, text, grade), and rendered mode is required to see real pixels. These caveats materially change how an agent should interpret a result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the two most important facts (project scoping, 'your own eyes'), and most sentences carry distinct operational content across four interaction modes. It is dense and long, with some run-on segments, but little is pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-param, multi-mode tool with no output schema, the description covers return shape (one labeled picture, tiles, grids), mode behavior, and the render/overlay caveats thoroughly. Only 'question' and the native_resolution interplay with rendered mode are left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 22%, so the description must compensate, and it largely does: times = 1-8 exact source seconds of the main video, start/end = evenly sampled range, output_times = output seconds resolved through the EDL, overlay values (matte/free_space/beats) with their meanings, and rendered semantics. 'question' is never explained, leaving one parameter unaccounted for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource — sampling exact source seconds of the main video and returning them as one timestamp-labeled image 'in your own context'. It explicitly separates itself from siblings like the filmstrip overview, the ASR transcript/get_words, and the rendered-preview path, so an agent can route without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (before aiming, before disputing a user, for a closer look than filmstrips), when-not (never use it to lip-read or guess a word — use get_words/transcript), and mode selection rules (times vs output_times vs rendered=true after render_preview). Batching guidance ('several times into ONE call') is also spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
look_at_assetLook at frames of an uploaded assetARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. YOUR OWN EYES on an UPLOADED clip or image, or a finished RENDER (storage_key from list_assets; kind='render' lists past previews/finals). Same contract as look_at: pass times=[...] (seconds into the clip) and the frames arrive as one labeled picture you read yourself, with the same tenths grid for reading positions. THE way to choose which moment of a long clip to splice in — one call over the whole clip, then insert_media with clip_start_s at the moment you saw. On a RENDER it is how you CHECK YOUR OWN WORK at exact moments — narrow times sample frame-accurately, so use it to verify a transition junction or an effect the user questions before claiming it is fine. For video clips it also returns a cached, measured temporal profile (static/frozen share, motion intensity and abrupt changes). This is sparse measurement—not continuous playback—and remains available on later turns.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| start | No | ||
| times | No | ||
| question | No | ||
| asset_key | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| native_resolution | No | Keep width up to 1920px: each time is its own full-detail image (no contact sheet). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only safety profile, but the description adds substantial behavior: frames return as one labeled picture with a tenths grid, measurement is sparse rather than continuous playback, a cached temporal profile (static/frozen share, motion intensity, abrupt changes) is returned for clips, and results remain available on later turns. These are real traits not derivable from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but well front-loaded: the project-scoping constraint leads, then output contract, then selection/verification workflows. The caps emphasis and long sentences are slightly heavy but nearly every clause contributes unique information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly explains the return shape (labeled picture, grid, temporal profile) and the sparse-sampling limitation. The remaining gap is the undocumented start/end/question parameters and the asset_key/storage_key naming mismatch in a 7-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 29% (project_id, native_resolution), so the description must carry the rest. It explains times well (seconds into the clip, frame-accurate when narrow) but leaves asset_key, start, end, and question entirely unaddressed — asset_key is only obliquely implied via 'storage_key from list_assets'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (look at frames of an uploaded clip/image or render) and scopes it precisely to explicit-project calls. It distinguishes itself from look_at by contract ('same contract as look_at') and from list_assets by naming where storage_key comes from, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use conditions: choosing which moment of a long clip to splice (then insert_media with clip_start_s) and checking your own render work at exact moments before claiming it is fine. Names the sibling tools involved (look_at, list_assets, insert_media) and the narrowing rule ('narrow times sample frame-accurately').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
look_at_worldLook at worldARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: frames (source times, or output_times of the edit) with the measured anchors drawn: face mesh, hands, pose and every track/object/plane definition. Check a hand is up, an object's outline, a quad, before and after a world write.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| start | No | ||
| times | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| output_times | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds genuinely new behavioral context: the call acts only on the explicit project_id, never guesses from the active-project pointer, and echoes that project identity with the result. It does not reconcile the odd idempotentHint=false on an ostensibly read-only tool, which is the one unexplained trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded with the operative label (PROJECT-SCOPED, READ) before the detail. It is dense and purposeful rather than padded, with no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so reasonably: rendered frames with anchors, and the project identity returned alongside. It omits frame format, resolution, or how many frames come back, which an agent might want for a visual inspection call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% (project_id alone is documented). The description partially compensates by clarifying the core distinction between frames at source times versus output_times of the edit, but start, end, and times remain undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (read frames with measured anchors drawn: face mesh, hands, pose, tracks/objects/planes) and scopes it with the PROJECT-SCOPED prefix. It clearly reads the 'world' layer rather than raw media, which implicitly separates it from siblings like look_at and look_at_asset, though it never names those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for invocation: verify a hand is up, an object's outline, or a quad before and after a world write. It does not name alternative inspection tools (look_at, look_at_asset) or state when this is the wrong choice, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_shortsBuild podcast shorts from explicit story arcsAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Scout this LONG podcast/video for multiple complete story arcs and create LOCKED child projects. Valmera's internal agent may let the background scout choose the arcs. MCP callers MUST do the editorial selection themselves: read the full transcript, then pass clips with explicit source ranges and useful story context. The pipeline only seeds the selected source windows; it does not choose captions, framing, B-roll, music, effects or render a creative edit. Studio users explicitly press Edit on a card to boot a fresh editor. MCP callers open each child and perform the edits directly. It returns the scouting job ID; poll with wait_for_job or shorts_status. count only if the user named a number; else the scout keeps every story that clears the bar (no quota). An explicit clips array keeps every valid non-overlapping story arc, bounded only by source duration. Each clip must start and end on transcript sentence boundaries and last 10-120s; ranges must not overlap. snap='sentence' (the MCP default) moves a boundary to the nearest sentence edge within 1.5s and reports every move; snap='none' rejects instead. Every problem across all clips is reported in one reply. style_note is reference context for the eventual child editor, not a hard-coded recipe.
| Name | Required | Description | Default |
|---|---|---|---|
| snap | No | ||
| clips | Yes | Caller-authored story arcs. Required over MCP so the connected model chooses the shorts itself. | |
| count | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| style_note | No | Optional audience or reference context to preserve for the eventual editor. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply the safety profile (readOnly=false, idempotent=false, destructive=false), and the description adds substantial behavior beyond that: it is project-scoped and returns the project identity, it returns a scouting job ID requiring polling, the pipeline only seeds source windows and does not render a creative edit, snap moves are reported, and all clip problems are returned in one reply. This is rich, non-redundant disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is dense and each sentence carries operational information, but the opening sentence front-loads scoping before stating the tool's core action, and the Studio-vs-MCP editor explanation is slightly verbose. It is longer than strictly necessary yet almost entirely non-redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on the burden of explaining returns and does so (scouting job ID plus project identity, poll via wait_for_job/shorts_status). Combined with the mutation-safe annotations and full clip constraints, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, and the description compensates well beyond the schema: clips must start/end on transcript sentence boundaries and last 10-120s with no overlap; snap='sentence' (the MCP default) moves a boundary within 1.5s and reports every move while snap='none' rejects; count applies only if the user named a number; style_note is reference context for the eventual editor, not a recipe. This adds meaning the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb and resource: scout a long podcast/video for complete story arcs and create LOCKED child projects (shorts). It clearly distinguishes this from siblings like apply_short_edit_batches, open_short, and critique_short by positioning itself as the arc-selection/child-creation step. An agent can tell what this tool produces without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly separates the MCP path (caller MUST do editorial selection by reading the transcript and passing clips) from the internal-agent path (background scout may choose arcs). It names follow-up alternatives (poll with wait_for_job or shorts_status, then open each child), and clarifies the count-vs-clips condition. When-to-use and when-not-to-use are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_variant_setMake variant setAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Registered variant STILLS of the main video's frame at program second t (default photo, negative, line, blueprint, thermal; also xray, solarise, posterise, kaleidoscope, pixel_stretch, night_vision, halftone; up to 6) as project images for a strobe or a fill. Places nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| t | Yes | program s | |
| kinds | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond annotations: it is strictly PROJECT-SCOPED to the explicit project_id, it registers images into the project, and it returns the project identity with the result. 'Places nothing' clarifies it does not mutate the timeline, consistent with destructiveHint=false. It does not address idempotency despite idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the PROJECT-SCOPED qualifier, then the action. The long kind enumeration is verbose but earns its place by documenting an otherwise undocumented parameter. Two-sentence structure with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param, non-readonly, non-destructive tool with no output schema and no enum metadata, the description still conveys scope, action, kind options, limits, and the fact that it places nothing. Mostly complete, though return-value shape is only hinted at ('returns the project identity').
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the kinds parameter has no schema description at all, but the description compensates by listing the available kinds (default photo, negative, line, blueprint, thermal, plus xray/solarise/etc.) and the cap of 'up to 6'. It also clarifies t means program second, sharpening the cryptic 'program s' schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (variant stills of the main video's frame at program second t) and enumerates the concrete kinds produced, plus the output form (project images). An agent can tell it makes stylized still variants rather than placing clips. It stops short of naming any sibling for differentiation, so a 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'as project images for a strobe or a fill' implies the downstream use case, and 'Places nothing' implies these assets are created for later placement. However there is no explicit when-to-use/when-not or named alternative, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_gradeMatch gradeAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Match the colour of section [start, end) to the hero frame at hero_t (outside it): a shot-match LUT (mkl or reinhard) baked to 33^3. Reports the colour gap before and after.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | program s | |
| start | No | program s | |
| hero_t | Yes | program s | |
| method | No | ||
| strength | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark this as a non-read-only, non-idempotent mutation but give no detail. The description adds real behavioural context beyond them: it is project-scoped, uses only the explicit project_id, returns the project identity, bakes a persistent LUT, and reports the colour gap before and after. It does not cover reversibility or permissions, but adds meaningful disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scope qualifier is front-loaded and the operational sentence follows immediately. It is dense but every clause carries information; no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description tells the agent what is produced (a baked 33^3 LUT) and what is reported back (before/after colour gap, project identity), which is enough to call it correctly. A note on reversibility or expected runtime would round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the description adds meaning the schema does not: it clarifies that [start, end) is the section being matched, that hero_t lies outside that section, and that method is the LUT type with mkl/reinhard options. Only strength is left undocumented in both places, so the description compensates well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: it matches the colour of section [start, end) to the hero frame at hero_t, producing a shot-match LUT baked to 33^3. This is well beyond a tautology and an agent can grasp the operation, though it does not explicitly contrast itself with grading siblings like set_color_grade or apply_look.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no alternatives named, and no conditions distinguishing this from the many other colour/grading tools (set_color_grade, apply_look, isolate_colour). The agent must infer the correct context entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_insertMove insertAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. MOVE A SPLICED SCENE — reorder an inserted clip between any other scenes, in place. after_id is the insert it should play right AFTER (the scene map in get_edl names each scene's insert id); omit it to play FIRST at its boundary. THE tool for 'move this clip between those two scenes' / 'put the uploaded video after the intro' — never remove + re-insert, which costs two versions and the user watches the clip vanish. Everything anchored to the moved scenes (zooms, takeovers, texts) re-anchors and follows.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| after_id | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly=false), the description reveals that the call is project-scoped, that it returns the project identity, and that anchored elements (zooms, takeovers, texts) re-anchor and follow. These are behavioral details not in the annotations and crucial for the agent to anticipate side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but each sentence adds value: project scoping, action, parameter explanation, usage guidance, and side effects. It is front-loaded with the critical 'PROJECT-SCOPED' note. While somewhat verbose, it is structured with dashes for readability and does not waste words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 3 parameters and no output schema, the description covers the core operation, the after_id semantics, the re-anchoring effect, and the return of project identity. It lacks an explicit definition of the 'id' parameter and does not mention error conditions, but these are minor given the clarity of the rest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains after_id in detail (what it means, where to find it, and the omit behavior) and reinforces project_id's role. However, the 'id' parameter is only implicitly described as the insert to move via context; it is not explicitly named. Given schema coverage is only 33%, the description compensates for after_id and project_id but could be more explicit about id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'MOVE' and the resource 'A SPLICED SCENE', and explains it reorders an inserted clip. It distinguishes from siblings like move_overlay and move_sfx by specifying it's for clips/inserts, and even names the alternative approach of remove+reinsert that should be avoided.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use: 'THE tool for move this clip between those two scenes' and 'put the uploaded video after the intro'. It also provides a clear when-not: 'never remove + re-insert, which costs two versions and the user watches the clip vanish.' This directly guides the agent's choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_overlayMove overlayAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Reposition/retime/resize an EXISTING overlay — 'move the logo to the other corner', 'make the PIP smaller'. Only the fields you pass change. id from get_edl.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| id | Yes | ||
| scale | No | ||
| start | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, consistent with the description's mutating action. The description adds that it returns the project identity with its result and that only passed fields change, which is useful behavioral context. It does not disclose potential side effects beyond that, but given the annotations are minimal, the description carries the burden well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the critical project-scoping constraint and then the action. Every sentence serves a purpose: scope, action, partial-update behavior, and id sourcing. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 parameters and no output schema, so the description must compensate. It covers the action, scope, and id source, but does not elaborate on the semantics of x, y, scale, and start (e.g., coordinate system, units, whether start is in seconds or frames). For a moderately complex tool, this is a gap, but the description provides enough to get started.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17% (only project_id has a description). The description mentions 'reposition/retime/resize' which loosely maps to x, y, scale, start, but does not explain units, array types for x/y, or what start means. It does clarify the source of id, which adds value, but it does not fully compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: reposition/retime/resize an EXISTING overlay, with concrete examples ('move the logo to the other corner', 'make the PIP smaller'). It distinguishes from add_overlay by emphasizing 'EXISTING' and 'only the fields you pass change', making it unambiguous what this tool does versus its siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides context that this is for modifying an existing overlay, not creating one, and specifies that id should come from get_edl. However, it does not explicitly mention when to avoid this tool (e.g., when adding a new overlay) or compare to set_overlay_motion, which might be a similar sibling. The guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_sfxMove sfxAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Retime an existing sound effect — 'the whoosh is too early'. Keeps which sound and how loud. id from get_edl. at means what it means in add_sfx: where a library recording HITS (get_edl's sfx at is where its file starts, earlier by its peak), where any other sound starts.
| Name | Required | Description | Default |
|---|---|---|---|
| at | Yes | ||
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as non-read-only, non-destructive, non-idempotent. The description adds meaningful context beyond them: PROJECT-SCOPED to the explicit project_id, returns the project identity with its result, and preserves the sound identity and loudness (only timing changes). It omits permissions/rate-limit behavior but adds real behavioral value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the PROJECT-SCOPED constraint and the core action before detail. The final sentence defining `at` is dense and convoluted but every sentence carries information rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param mutation tool with no output schema, it covers scope, the id source, the `at` semantics, and what is returned (project identity). Nothing critical is missing, though a note on non-idempotency or repeat-call behavior would round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (project_id documented), so the description must compensate, and it does: `id` is sourced from get_edl and `at` is explained at length via add_sfx's hit-vs-start distinction. Only minor gaps remain (no numeric format/unit hints for `at`).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Retime an existing sound effect') and immediately anchors it with a concrete example ('the whoosh is too early'). The clause 'Keeps which sound and how loud' scopes it precisely against add_sfx/remove_sfx, so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: use it to retime an *existing* sfx, and it points to get_edl as the source of `id`. It references add_sfx to explain the `at` semantics, but never names an explicit when-not or a preferred alternative, so guidance is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_projectOpen a project for navigationARead-onlyIdempotentInspect
Open a project for navigation and return its full state: the video, its transcript and shots, the current EDL and what is available to place. Copy this project_id into every later project-scoped call; no edit or review tool guesses from the active pointer.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, idempotentHint, and destructiveHint, so the description need not repeat safety. It adds useful context about returning full state and the workflow requirement, but doesn't disclose any side effects or special edge cases beyond that. With annotations covering the safety profile, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first states purpose and return content, the second gives a clear workflow directive. No fluff, information is front-loaded and each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only open tool with no output schema, the description explains what it returns and how to use the result. It doesn't mention how to get the initial project_id (e.g., from list_projects), but that's a minor gap given the tool's simple scope. Annotations cover safety, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the only parameter project_id is an integer. The description mentions 'this project_id' but doesn't explain how to obtain it, what valid values are, or any format constraints. Since schema coverage is low, the description should compensate, but it doesn't add meaningful parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool opens a project for navigation and enumerates the returned state (video, transcript, shots, EDL, available items). It differentiates itself from siblings like list_projects (which lists) and project_state (which may just query) by emphasizing the full-state return and the navigation context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to copy the project_id into every later project-scoped call and notes that no other tool guesses from an active pointer. This tells the agent exactly when to use it and why it's the entry point, distinguishing it from alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_shortOpen a short for direct editingARead-onlyIdempotentInspect
Open one generated short for DIRECT editing by this MCP caller. Select it by its 1-based board card number or child project ID; copy the returned child project ID into every normal editor tool for exactly the same capabilities as Valmera's own agent. This does NOT call or delegate to Valmera's agent. Use this, then watch_video and the normal editing tools, when the user says YOU should edit a short. card requires parent_project_id; a direct child_project_id resolves its own parent and never trusts the active-project pointer.
| Name | Required | Description | Default |
|---|---|---|---|
| card | No | 1-based card number from shorts_status. | |
| child_project_id | No | Generated child project ID. | |
| parent_project_id | No | Shorts board project; required when selecting by card. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral context beyond those: it clarifies that the tool does not delegate to Valmera's agent, and explains the returned child_project_id must be copied into editor tools for equivalent capabilities. It also discloses the parameter trust nuance (child_project_id never trusts the active-project pointer). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat long but every sentence earns its place. It is front-loaded with the core purpose ('Open one generated short for DIRECT editing'), then selection options, then a crucial non-delegation clarification, then usage guidance, then parameter nuance. The structure is logical, though it could be tightened slightly without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 optional parameters, no output schema, and read-only/idempotent annotations, the description is quite complete. It explains how to select a short (by card or child_project_id), what to do with the returned ID, when to use it, and the parameter dependencies. It doesn't describe return format details (though the description implies the child_project_id is returned) or error handling, but given the tool's simplicity and annotation coverage, these are minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description enriches this by explaining the semantic relationship between parameters: card requires parent_project_id, and child_project_id resolves its own parent without trusting the active-project pointer. It also clarifies that card is 1-based from shorts_status, which is not in the schema. This adds meaning beyond the field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb+resource: 'Open one generated short for DIRECT editing by this MCP caller.' It specifies the exact scope (generated short) and the mechanism (returning a child project ID to use in editor tools). It also distinguishes itself from delegation by explicitly saying 'This does NOT call or delegate to Valmera's agent,' and implies it is distinct from open_project by focusing on shorts specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit usage condition: 'Use this, then watch_video and the normal editing tools, when the user says YOU should edit a short.' It also clarifies when not to expect delegation and explains the parameter selection logic (card requires parent_project_id; child_project_id resolves its own parent). This is clear, actionable guidance with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_visual_pageOpen visual pageAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Open one or more labeled pages from the main footage's persisted hierarchical visual storyboard. The full text inventory names every cluster; use this whenever you need the actual pixels for an evidence_id not present in the initial orientation page. Pages are transport batches, not an editorial allowance: call repeatedly and open as many as the edit requires. With pages omitted, opens every page not yet delivered in this logical turn.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries the full burden. It discloses project-scoping, the return of project identity, and the default behavior when pages are omitted. However, it does not clarify whether the operation modifies state (e.g., marking pages as delivered) or if it is idempotent, given readOnlyHint=false and idempotentHint=false. This lack of side-effect disclosure is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with 'PROJECT-SCOPED' and is logically structured. However, it is somewhat verbose with jargon like 'persisted hierarchical visual storyboard' and 'logical turn,' which could be simplified. It's not wasteful, but not as crisp as the ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two parameters, no output schema, and sparse annotations, the description covers purpose, usage, and parameter behavior adequately. It does not detail the exact return structure beyond mentioning project identity, but this is likely sufficient for an agent to invoke it correctly. The large sibling list is addressed by the clear usage condition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (project_id has a description; pages does not). The description compensates by explaining that pages are integer labels, can be omitted to open all undelivered pages, and are 'transport batches.' It also reinforces project_id's role as required immutable scope. This adds meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: opening labeled pages from a persisted hierarchical visual storyboard. It uses a specific verb ('open'), names the resource ('pages'), and distinguishes it from siblings by noting it retrieves actual pixels for evidence IDs not in the initial orientation page. This is explicit and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage condition: 'use this whenever you need the actual pixels for an evidence_id not present in the initial orientation page.' It also advises to 'call repeatedly and open as many as the edit requires,' giving practical guidance. However, it does not explicitly name alternative tools or state when NOT to use it, so it's not as strong as a direct sibling comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pick_stillPick stillBRead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: the frame to freeze for a poster in a program window: sharp in its window, the lockup box ([x0,y0,x1,y1]) clear and off the face.
| Name | Required | Description | Default |
|---|---|---|---|
| box | No | ||
| end | Yes | ||
| start | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds meaningful context beyond that: it acts only on the explicit project_id (never the active-project pointer) and returns the project identity alongside the result, which is real behavioral information an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences with the scope constraint and READ nature front-loaded. Nothing is redundant, though the second sentence's dense shorthand costs some readability without being wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four parameters (three required), no output schema, and only 25% schema coverage, an agent still cannot tell what start and end mean or what the return contains besides an identity echo. For a selection tool with several near-name siblings, the definition leaves too much unspecified to call it correctly on the first try.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (only project_id is documented), so the description must compensate. It does document the box parameter's format as [x0,y0,x1,y1], which the schema leaves opaque, but the required start and end parameters get no explanation at all (frame indices? seconds? a range?). Partial compensation earns a middle score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The READ marker and 'the frame to freeze for a poster' convey that this selects a still frame, but the rest ('sharp in its window, the lockup box clear and off the face') is selection-criteria jargon rather than a purpose statement. It does not distinguish itself from siblings like add_freeze_frame, animate_still, or set_frame, so an agent cannot tell which one to reach for from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The PROJECT-SCOPED preamble tells the agent the call is scoped to project_id, which is mild usage context, but there is no when-to-use, when-not-to-use, or pointer to an alternative among the many still/frame-related siblings. The agent gets no help deciding between pick_still and add_freeze_frame or set_frame.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pin_to_planePin to planeAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Lay a graphic (motion_id) or new words (text) on a surface: an existing plane, or quad (4 corners TL,TR,BR,BL along the surface, program fractions) at t. The person in front occludes it (occluders=[] draws over them); shadow=true lets real shadows darken it; blend=multiply prints it into the surface.
| Name | Required | Description | Default |
|---|---|---|---|
| t | No | ||
| id | No | ||
| end | No | ||
| quad | No | ||
| text | No | ||
| blend | No | ||
| place | No | ||
| plane | No | ||
| start | No | ||
| shadow | No | ||
| surface | No | ||
| motion_id | No | ||
| occluders | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly=false, idempotent=false, destructive=false), and the description adds genuinely non-obvious behavior: project scoping with returned identity, occluders=[] drawing over people, shadow=true allowing real shadows to darken, and blend=multiply printing into the surface. This is substantive context beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the scoping constraint comes first, followed by the core action and the modifier semantics. Every clause carries information, though the final sentence is a long run-on packing three behaviors together.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter mutation tool with no output schema, the description covers the essential mental model (what gets placed, where, how it composites) and notes the project identity is returned. The undocumented id/start/end/place params keep it short of fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 7%, so the description must compensate and largely does: it explains quad geometry (4 corners TL,TR,BR,BL as program fractions), t, motion_id, text, occluders, shadow, blend, and the project_id scoping rule. It leaves id, start, end, place, and plane semantics unexplained, which are real gaps, but the added meaning for the geometry and blending params is strong.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: pin a graphic (motion_id) or text onto a plane/quad surface at time t. This distinguishes it reasonably from overlay-style siblings, though it never names an alternative tool directly. Purpose is unambiguous without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when it applies (laying a graphic or words on a physical surface in the scene) but gives no explicit when-to-use versus alternatives such as place_in_world, add_text, or set_overlay_motion. The PROJECT-SCOPED note is the only real routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_in_worldPlace in worldCInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Say where in words: 'behind the laptop' (give box + t), 'on the desk' (give quad + t), 'follow her hand', 'on his fingertip', 'between his hands', 'round his head', 'next to his face', 'on his chest'. Places motion_id or new text, writing whatever it needs in one batch.
| Name | Required | Description | Default |
|---|---|---|---|
| t | No | ||
| box | No | ||
| end | No | ||
| quad | No | ||
| text | No | ||
| start | No | ||
| where | Yes | ||
| motion_id | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-idempotent write that is neither destructive nor open-world; the description adds genuinely useful context beyond that by stating the call is project-scoped, returns the project identity alongside the result, and writes everything in one atomic batch. It does not contradict the annotations, but it omits what gets mutated in the scene or any permission/precondition detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The PROJECT-SCOPED clause is correctly front-loaded, but the sentence is a run-on that spends most of its length on eight example 'where' phrases, which is repetitive and crowds out substantive parameter explanation. The examples do illustrate the expected free-text format, so they are not pure waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, non-idempotent write with no output schema and only 11% schema coverage, the description should explain the placement coordinate parameters and the result shape. It covers scope and the `where` phrasing and notes that the project identity is returned, but leaves most parameters and the mutation semantics unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 11% (only project_id is documented), so the description must carry the burden and only partially does. It usefully explains `where` as free-text phrases and hints at pairing box+t and quad+t, and it implies motion_id vs text are alternatives, but start, end, text, and motion_id are never defined and no format or constraint is given for box/quad.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb is 'Places' and the resource is a spatially positioned motion_id or text, which is a real action, but the resource is vague (the 'world' concept is never explained) and the purpose is buried under a long list of example phrases. It gestures at differentiation from siblings like remove_world/look_at_world but never states it, so an agent must infer what 'the world' is.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use versus alternatives (e.g. pin_to_plane, add_text_behind, select_object, track_point). The only usage instruction is how to phrase the `where` argument, which is parameter guidance, not tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_footagePlan footageARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: pre-production. From a brief, the shortest shot list that covers the devices it asks for — <= 12 shot cards (framing, lens, camera, light, what to do, which device it enables, a framing diagram), filmable in <= 20 min on a phone — and at most three ways forward with their cost and time (shoot the list / edit what was uploaded / stand-ins). Use it when footage cannot carry a device (no surface, no object in front, no raised hand) instead of saying it is not possible. have: shots the user already has.
| Name | Required | Description | Default |
|---|---|---|---|
| have | No | ||
| brief | Yes | ||
| aspect | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe-read profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the description only needs to add context — and it does: project-scoping semantics, that project identity is returned with the result, plus output bounds (<=12 cards, <=20 min, at most three ways forward). It does not state idempotency behavior despite idempotentHint=false, a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the two most important invariants (project-scoped, READ/pre-production) before the mechanics, and every clause carries distinct information. The em-dash chains make it dense and slightly hard to parse, but there is little fat to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully sketches the return shape (shot cards with framing/lens/camera/light, plus up to three ways forward with cost and time) and the scoping contract. Remaining gaps are the undocumented `brief` and `aspect` parameters, which matter for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% — just project_id is documented in-schema — so the description carries extra burden. It explains 'have: shots the user already has' but leaves `brief` (the core input) and `aspect` undescribed beyond the enum values. Partial compensation, so a baseline 3 is warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: from a brief, produces the shortest shot list covering requested devices, bounded to <=12 shot cards and <=20 min on a phone. This clearly separates it from retrieval siblings like find_footage/find_shots, though domain jargon ('devices', 'shot cards', 'stand-ins') assumes shared vocabulary the description never defines.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit triggering condition: use it when footage cannot carry a device (no surface, no object in front, no raised hand), and frames it as the fallback instead of declaring the request impossible. It doesn't name a direct sibling alternative, but the when-to-use condition is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_loopPlan loopBInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. WRITE when write=true (else READ): close the program before the end card on a shot that rhymes with its first frame (a loop on the feed).
| Name | Required | Description | Default |
|---|---|---|---|
| write | No | ||
| min_sim | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and idempotentHint=false, and the description usefully resolves the dual-mode behavior the annotations cannot express: write=true performs a WRITE, otherwise the call is a READ. It also discloses that the call is strictly project-scoped and returns the project identity with its result, which matters given there is no output schema. It stops short of permissions, rate limits, or what happens when no rhyming shot is found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with the scope constraint and mode switch front-loaded ahead of the editorial explanation; there is essentially no filler. The final clause is verbose but carries the definition of the loop, so it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no output schema, the description covers scope, read/write mode, and rough return content, and the annotations cover the safety profile. Gaps remain: min_sim is never addressed, it is ambiguous whether write=true commits the loop edit or only records a plan, and no preconditions are given.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%: project_id is well documented in the schema, write has no schema description but is explained in the description (write=true selects WRITE mode). min_sim, the second most consequential parameter, is left entirely unexplained — only the word 'rhymes' hints at its meaning, so the description only partially compensates for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys the editorial construct it targets ('close the program before the end card on a shot that rhymes with its first frame (a loop on the feed)') and the scope, but the verb/action itself is only implied by the tool name and the phrasing is heavily metaphorical. It does not distinguish this planning tool from siblings such as plan_to_music.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'WRITE when write=true (else READ)' gives conditional usage context, and the loop-on-the-feed framing implies the situation it is for. However, no alternative tools are named and no prerequisites (e.g., needing shots found first) or when-not-to-use conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_to_musicPlan to musicAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. WRITE: a montage over a program window cut to the user's track (or the speech stresses when there is no track): one cut per beat slot, 1 frame before the kick, modes per section (strobe only when the user asked for flashing; pulse; hold >= 1.5 s), no shot cluster within 6 cuts, scale alternating, cuts inside long clips. style call_response alternates type on black with b-roll on the hits; arc runs words on black -> words over picture -> picture. Stills become moving stills. One batch; replan='mt1' re-plans a recorded montage (a song swap does it itself). dry_run shows the slots.
| Name | Required | Description | Default |
|---|---|---|---|
| on | No | ||
| end | No | ||
| seed | No | ||
| clock | No | ||
| every | No | ||
| modes | No | {section label: strobe|pulse|hold} | |
| shots | No | asset keys; omit = every clip/image | |
| start | No | ||
| style | No | ||
| lead_f | No | ||
| replan | No | ||
| dry_run | No | ||
| music_id | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are present (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the bar is lower, yet the description still adds real behavioral context: PROJECT-SCOPED resolution of project_id, that it returns the project identity with the result, that it runs as 'One batch', that replan='mt1' re-plans an already-recorded montage, and that dry_run only shows slots. It stops short of saying what happens to pre-existing edits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The PROJECT-SCOPED and WRITE tags are usefully front-loaded, but the remainder is a dense run-on of production jargon crammed into two sentences. It packs a lot of value but reads as a wall of clauses, hurting scannability for an agent trying to extract the call contract.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter scheduling tool with no output schema and low schema coverage, the description covers intent and much behavior but leaves many parameters unexplained and gives no return-shape information beyond 'project identity with its result'. It is adequate to understand what the call does, but not complete enough to invoke it confidently without reading the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 21% across 14 params, so the description must compensate and does so only partially: it documents style values (call_response, arc), modes values (strobe|pulse|hold), replan='mt1', and dry_run semantics, plus hints for on/clock ('kick', 'beat slot', 'speech stresses'). Params like seed, start, end, every, shots, music_id, and lead_f receive no meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb and resource: it is a WRITE that lays a beat-synced montage over a program window on the user's track (or speech stresses when no track). That is specific enough to distinguish it from pure analysis tools like analyze_music or get_audio_analysis, but it never names a sibling (e.g. beat_align_cuts, plan_loop, shape_music) to sharpen the boundary, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives operational conditionals -- 'strobe only when the user asked for flashing', 'or the speech stresses when there is no track', 'replan=\'mt1\' re-plans a recorded montage', 'dry_run shows the slots' -- which imply usage. But there is no explicit statement of when to choose this over the many adjacent tools, and no when-not guidance. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_stateRead an explicit project's stateARead-onlyInspect
Re-read one explicit project's state (video, transcript, shots, current EDL, assets). Cheap — call it whenever you are unsure what the edit currently looks like.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds value by noting the operation is 'Cheap' and enumerating the components returned, giving the agent a sense of the response scope without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the verb and resource, and delivers the usage guidance in a compact second sentence. There is no wasted wording, and it is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and annotations covering safety, the description covers the core behavior, usage trigger, and the components included. It doesn't describe the exact response format, but the absence of an output schema is mitigated by the listed components.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema defines project_id only as an integer with no description, and the tool description does not mention the parameter at all. With schema coverage at 0%, the description fails to compensate by explaining what project_id refers to, leaving the agent to infer its meaning from context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'Re-read' and a resource 'explicit project's state' with a list of contained elements (video, transcript, shots, current EDL, assets). This clearly distinguishes it from sibling get_* tools that retrieve specific components, so an agent can immediately understand its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises 'call it whenever you are unsure what the edit currently looks like' and labels it 'Cheap', providing a clear usage condition. It doesn't mention when not to use it or name alternatives, but the guidance is sufficient for a general-purpose state read.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
proof_deviceProof deviceARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: prove devices on rendered frames. Renders only the windows around them (with and without them) and returns, per device, a 10-frame strip from -3 to +6 frames around its landing, an onion of the pixels it changed, and metrics: landing error in frames, legibility, matte jitter, flash risk, junction integrity, face collisions and budget. ids: the fx or motion ids to prove (default: the devices changed by the last write). Remove or move anything that does not land.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| ids | No | ||
| start | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/non-destructive, so the bar is lower, and the description adds real value: it calls out that the call is project-scoped and ignores the active-project pointer, that it renders only the windows around each device, and that it emits per-device metrics. It omits cost/latency context for a render-bound operation, which is the main remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the two most important facts (project scope, READ) before detailing outputs, and each sentence carries operational content. Slightly dense with metric jargon and a trailing imperative that could be tightened, but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns and does so concretely (frame strip, onion, seven named metrics). Safety profile is covered by annotations. The unresolved start/end semantics and absent render-cost expectation are the only notable omissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low at 25%, so the description must compensate. It explains ids thoroughly (fx or motion ids plus the last-write default) but says nothing about start or end, which are presumably the frame range bounding the rendered windows. Half the parameters remain undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('prove devices on rendered frames') and enumerates precisely what it produces: a 10-frame strip from -3 to +6, an onion of changed pixels, and named metrics. This lets an agent distinguish it from generic render/inspect siblings like render_preview without opening the schema, though the term 'prove' is niche jargon that the description has to unpack.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies a useful default for ids ('the devices changed by the last write') and a follow-up instruction ('Remove or move anything that does not land'), which implies its role as a verification step. However, it never says when to prefer this over look_at or render_preview, nor any precondition beyond the project scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
punch_in_on_emphasisPunch in on emphasized wordsAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Emphasis punch-ins on the vocally STRESSED words of speech, in one call — the short-form talking-head emphasis pass (stress measured from the audio, times from real word timestamps that survive the current cut, face targets when detected). Each punch snaps in ON its word with a fast expo ease (~0.15s), holds to the next cut or the end of the sentence, then cuts back out; the strongest turn and spoken numbers settle with a small overshoot. Omitted count/strength are directed from program length and the motion brief (distributed, never clustered on adjacent loud words); explicit values win. OPTIONAL, never a required pass: zooms need a clear editorial reason, and a punch on every stressed word looks childish — pass a small count and keep only the punches on words the story turns on. Skip it for calm/minimal briefs, footage without speech, or when the type already carries the moment.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| strength | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, non-idempotent mutation; the description goes further by disclosing the timing model (~0.15s expo ease, hold to next cut or sentence end, cut back out), the overshoot behavior, and that omitted count/strength are derived from program length and the motion brief with explicit values winning. It does not state how to undo the punches or whether repeated calls stack, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the PROJECT-SCOPED scoping rule, then purpose, then behavior, then usage constraints. Every sentence carries information, but it is one dense run-on block rather than being broken into scannable segments.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers scope, effect, defaults, and when to abstain. Remaining gaps are the return shape and valid ranges for count/strength, both minor given the annotations already signal a safe, non-destructive edit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (count and strength are bare integers/number with no descriptions), so the description must compensate. It does add real meaning: the two omitted values are auto-derived from program length and motion brief, are distributed rather than clustered on adjacent loud words, and explicit values override — though units and valid ranges for count/strength are still absent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — punch-ins on the vocally stressed words of speech — and frames itself as 'the short-form talking-head emphasis pass,' which separates it from a manual add_zoom or a suggest_emphasis-style suggester. The parenthetical on how stress is measured (from audio, with real word timestamps and face targets) makes the operation unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly marks the pass as OPTIONAL and never required, then gives concrete skip conditions: calm/minimal briefs, footage without speech, or when the type already carries the moment. It also warns against over-application (a punch on every stressed word looks childish) and tells the agent to keep a small count.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_skillRead an editing skillARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Load a focused editing playbook (captions, zooms, audio, transitions, ...) into this turn. The SKILLS list in your instructions names them. Read the matching skill before your first edit of that kind — batch it with your other reading calls. Pass section to retrieve only the decision, evidence, pattern, failure, verification, or repair material needed now.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| section | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds meaningful context beyond them: the project-scoping constraint, that the result echoes project identity, and that `section` narrows the payload. It does not discuss rate limits or result size, keeping it just short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the critical PROJECT-SCOPED constraint, then purpose, then usage. Dense but each sentence carries an instruction; slightly long but nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but the description discloses the return includes project identity. Combined with the schema enums and annotations, an agent has enough to call it correctly; the only minor gap is that section/name contents are only described in outline.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must compensate, and it does: it explains that `section` retrieves only the specific material needed now and that `name` should come from the SKILLS list in the agent's instructions. It adds intent beyond the enum values themselves, though exact semantics of each section remain inferred.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Load a focused editing playbook... into this turn') and clarifies scope ('PROJECT-SCOPED: this call acts only on the explicit project_id'). No sibling tool performs this read, so the agent can identify it unambiguously from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit timing: 'Read the matching skill before your first edit of that kind' and adds a batching instruction. It also tells the agent to use the SKILLS list in its instructions for valid names. It does not name a fallback/alternative tool, but the when-to-use context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_websiteRecord websiteAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. RECORD A LIVE WEB PAGE as video: a headless browser opens the URL at the project's aspect, holds the top, smooth-scrolls to the bottom and holds — the classic product-demo pan — and the capture becomes a project video asset. THE tool for 'show my website / landing page / this product page in the edit'. duration_s 4-30 (default 12). orientation defaults to the project's output frame. scroll=false just holds the top of the page. The capture is SILENT and shows the PUBLIC page (no logins, no clicks); place it with insert_media or add_overlay(fit='cover').
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| scroll | No | ||
| duration_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| orientation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false. The description adds valuable behavioral context: the headless browser opens the URL, holds the top, smooth-scrolls to the bottom, captures silently, and shows the public page. It also discloses that the capture is silent and public, which is important for agent expectations. It doesn't contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with the core purpose and scoping. It packs a lot of behavioral detail into a few sentences, though the all-caps emphasis and slightly run-on structure reduce readability slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description covers the key behavioral aspects: what happens during capture, defaults, constraints, and how to place the result. It doesn't describe the return value format, but the description's placement guidance and behavioral detail make it largely complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20%, so the description must compensate. It explains duration_s (4-30, default 12), orientation (defaults to project's output frame), scroll (false just holds the top), and project_id (immutable scope, never guessed from active-project pointer). This adds meaning beyond the bare schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'RECORD A LIVE WEB PAGE as video' with a headless browser, and distinguishes it from siblings like download_url, fetch_url, and record_website_demo. It clearly identifies the tool's purpose and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says this is THE tool for 'show my website / landing page / this product page in the edit', and notes it is SILENT and shows the PUBLIC page (no logins, no clicks), which tells the agent when not to use it. It also mentions placement with insert_media or add_overlay(fit='cover'), providing clear context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_website_demoRecord website demoAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. RECORD THE BROWSER USING A SITE — the showcase capture. A headless browser opens the URL with a VISIBLE cursor drawn on screen and works through steps you write: it glides the pointer to a button, clicks it, waits for the page to react, types into fields at human speed, scrolls between sections. THE tool for 'record yourself using my product', a launch/demo video, or 'show how it works', where record_website only pans down a static page. Steps are objects: {do:'click', text:'Start free trial'} (text = the VISIBLE label; or selector: a CSS selector), {do:'type', selector:'input[type=email]', text:'you@example.com'}, {do:'scroll', to:'Pricing'} or {do:'scroll', by:800}, {do:'hover', text:'Plans'}, {do:'press', key:'Enter'}, {do:'wait', seconds:1.5}, {do:'goto', url:'…'}. Add seconds to any step to hold longer after it. It returns an EVENT TRACK — every click, scroll and keystroke timestamped with its position in the frame — then place it with showcase_demo, which uses that track. It records the PUBLIC site as a visitor sees it and will not type into password or payment fields. Write 4-10 steps that tell one story; a demo that clicks everything shows nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| steps | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| orientation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, consistent with the recording (write) behavior described — no contradiction. The description adds substantial behavioral context beyond annotations: headless browser with a visible cursor, human-speed typing, refusal to type into password/payment fields, and the event-track return value. For a mutation tool this level of disclosure is excellent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place — the step-format documentation is essential because the schema leaves steps as an unstructured object array. It is front-loaded with the critical scope constraint and the primary purpose. Minor deduction for density; it could be tightened without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description explains the return value (an EVENT TRACK with timestamped interactions and the position-in-frame, to be passed to showcase_demo). It covers the steps grammar, the security constraint on password/payment fields, the scoping rule, and the alternative-tool routing. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, so the description carries the burden — and it delivers. It fully documents the steps array with concrete object shapes ({do:'click', text:'...'}, {do:'type', selector:'...'}, {do:'scroll', to:'...'}, {do:'hover', text:'...'}, {do:'press', key:'...'}, {do:'wait', seconds:...}, {do:'goto', url:'...'}) plus the optional seconds modifier. It also clarifies the url and project_id semantics. Only orientation is left to the schema enum, which is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise scoped statement ('acts only on the explicit project_id'), then names the exact action ('RECORD THE BROWSER USING A SITE — the showcase capture') with a specific verb and resource. It explicitly differentiates from the sibling record_website ('only pans down a static page'), so an agent can pick the right tool without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names the use cases ('record yourself using my product', 'launch/demo video', 'show how it works') and the alternative tool that should be chosen instead (record_website). It also gives concrete guidance on step count ('Write 4-10 steps that tell one story') and warns against over-clicking ('a demo that clicks everything shows nothing').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_aspect_shiftRemove aspect shiftAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove one mid-video aspect change by its id (see get_edl).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating (readOnlyHint=false), idempotent (idempotentHint=true), and non-destructive (destructiveHint=false) operation. The description adds that it is project-scoped, does not use the active project pointer, and returns the project identity with the result. This is valuable beyond the annotations, though it does not detail error handling or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately states the scope warning, then the action and prerequisite. No fluff; every phrase contributes. It is efficiently structured for quick agent parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple remove operation with no output schema, the description covers the essential: what it removes, how to identify the target, and the required scope. It mentions the return (project identity) and the prerequisite (get_edl). While it does not specify behavior for invalid IDs or other edge cases, it is adequate for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides a detailed description for project_id, covering its immutability and sourcing. The tool description adds that id refers to an aspect shift from the EDL ('see get_edl'), giving semantic meaning to the id parameter. With 50% schema coverage, the description compensates by linking id to a specific source, making both parameters clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Remove one mid-video aspect change by its id'. It names the specific resource (aspect shift) and the mechanism (by id), and distinguishes it from the sibling add_aspect_shift and other remove_* tools. The reference to get_edl for finding the id further clarifies the target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use it: it is project-scoped and requires an explicit project_id, and the id comes from get_edl. It does not explicitly state when not to use it or mention alternatives, but the scope and prerequisite are clearly implied. This gives adequate guidance for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_blurRemove blurAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove one censor region by its id (see get_edl), or ALL censor regions when id is omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already supply idempotent and non-destructive hints, so the description adds value by disclosing the project-scoped guarantee and the result behavior (returns project identity). It also explains the two modes of operation (one vs all), which is behavior beyond the raw schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, with the critical project-scoping constraint front-loaded. Every clause adds information: scope, id lookup, all-vs-one behavior, and return value. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, no-output-schema tool, the description fully covers what an agent needs to invoke it correctly: required id source, optional omission semantics, project scope, and return identity. The annotations cover idempotency and safety, so no critical context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents project_id fully, but the id parameter is bare. The description compensates by explaining that omitting id means all regions are removed, and that ids come from get_edl. This adds essential meaning beyond the type-only schema entry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('remove') and resource ('censor region'), and clarifies that it can target one region by id or all regions when id is omitted. It explicitly distinguishes from sibling remove_* tools by naming the resource type (censor region) and the project-scoped behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear when to use the tool: for removing a single censor region (after looking up its id via get_edl) or all censor regions by omitting id. It provides a strong scoping condition (explicit project_id) and references the sibling for id discovery, though it does not explicitly name exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_brollRemove brollAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. WRITE: remove cutaways (broll fx items) by id; the exact previous picture returns.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false. The description adds the key justification for that safety profile: 'the exact previous picture returns', explaining why a removal is non-destructive and reversible, plus the project-scoping contract. This is real value beyond the annotations, though rate limits or auth needs are unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense clauses, front-loaded with the scoping and write semantics. Every phrase carries information (scope, mutation type, target, reversibility). Minor density but no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param mutation tool with no output schema, the description covers scope, target, and the reversible outcome. Annotations carry the safety profile. Only return-value specifics and ids format are missing, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: project_id is documented in-schema, ids is not. The description clarifies that ids are 'broll fx items' indices, adding meaning for the undocumented parameter, but gives no format/type or batch behavior for the array. Baseline 3 given partial coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: 'remove cutaways (broll fx items) by id'. This clearly identifies what is being removed and how it is targeted. It doesn't differentiate from the many sibling remove_* tools (remove_overlay, remove_screen_takeover, etc.), but the purpose itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'PROJECT-SCOPED' plus the instruction to copy project_id from list_projects/open_project/project_state gives clear context on required scope. However, it never states when to choose remove_broll over related siblings like remove_overlay or remove_editorial_graphic, so the routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_cursor_enhanceRemove cursor enhanceAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Put the original mouse pointer back (re-derives from the untouched source).
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotent and non-destructive hints; the description adds that it re-derives from the untouched source and returns the project identity, clarifying behavior. It also emphasizes project-scoped action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loads the key scoping constraint, then states the action. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, idempotent revert tool, it covers scope, action, and return value. It does not address what happens if no enhancement exists, but given idempotency, that is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already fully documents project_id with coverage 100%. The tool description reinforces the scope but does not add significant new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Put the original mouse pointer back' and notes it re-derives from the untouched source. It also clarifies the project scope. It does not explicitly name the sibling enhance_cursor, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it is used to undo cursor enhancement, but does not explicitly mention when to use it versus enhance_cursor or other remove_* tools. The schema description gives guidance on the project_id parameter, but not on when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_custom_filterRemove custom filterBIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove one custom filter chain by its id (see get_edl).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint true and destructiveHint false, and the description does not contradict them. It adds that the call returns the project identity and is project-scoped, which is useful context. However, it does not describe side effects, reversibility, or behavior when the id is missing, leaving some gaps beyond what annotations cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the project-scoped constraint, and each sentence conveys necessary information. It is efficient without extraneous text, though it could be slightly more explicit about usage context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple removal with two params, no output schema, and existing annotations, the description covers scope, action, and return value. It references get_edl for ids and states the immutable project_id. It lacks error handling or reversibility details, but these are minor for this low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (project_id described, id not). The description says 'by its id' and references get_edl, but does not elaborate on the id format or meaning beyond that. It adds minimal value for the id parameter and does not compensate for the missing schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Remove one custom filter chain') and identifies the resource and identifier ('by its id'). It also clarifies the scope ('PROJECT-SCOPED') and points to get_edl for id discovery. It does not explicitly differentiate from the many other remove_* siblings, but the custom filter resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides little guidance on when to use this tool versus alternatives. It mentions the project-scoped behavior and 'see get_edl' for ids, but does not state exclusions or when to prefer this over other remove tools. There is no explicit 'use this when...' or 'do not use for...' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_depth_timeRemove depth timeBIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove depth and time effects by id.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation/idempotency/safety profile, so the bar is lower. The description still adds real behavioral context beyond them: it is project-scoped rather than acting on the active project, and it returns the project identity with the result (valuable given there is no output schema). It does not cover failure modes for unknown ids.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the PROJECT-SCOPED constraint and the return behavior before the core action. No filler, though the trailing action sentence is slightly terse for the amount of routing information the agent still needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an idempotent mutation with annotations and no output schema, the description covers scope and a hint at the return payload. It omits what happens to unmatched ids, whether removals are reversible, and any usage routing, leaving gaps an agent would have to probe.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: project_id is well documented inline, but 'ids' has no schema description at all. The description only echoes 'by id' and never clarifies that multiple ids in an array are accepted or what form the identifiers take, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Remove depth and time effects by id.' An agent can distinguish this from siblings like remove_blur, remove_zoom, or remove_speed. It stops short of a 5 only because the compressed title 'depth_time' is slightly less self-explanatory than the prose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives. The sibling set contains add_depth_effect/add_time_effect and many other remove_* tools, yet the description offers no routing, no prerequisites, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_editorial_graphicRemove editorial graphicAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove an editorial group and its caption suppression.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavioral context beyond the annotations: the call is scoped strictly to the explicit project_id (never the active-project pointer) and it returns the project identity with its result. It also discloses the side effect of caption suppression. Annotations already cover idempotency and non-destructiveness, so this is supplementary but valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, with the scoping constraint front-loaded before the action. No filler, though the capitalized 'PROJECT-SCOPED' label is formatting rather than content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by noting the project identity is returned. Combined with the scope semantics, an agent has enough to call it correctly; only the 'id' parameter's meaning is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: project_id is richly documented in the schema, and the description reinforces its scoping role, but the required 'id' parameter is unexplained in both schema and description. Baseline 3 given the schema carries project_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Remove an editorial group and its caption suppression.' It is clearly distinguishable from the inverse sibling set_editorial_graphic and from the other remove_* graphic tools, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: a remove tool pairs with set_editorial_graphic, and the 'PROJECT-SCOPED' preamble hints at scope, but there is no explicit statement of when to reach for this versus other removal tools or any preconditions/exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_eraseRemove eraseAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Undo an erase: put the original pixels back for one erased region by its id (see get_edl), or for ALL of them when id is omitted. Instant for window-patch erases; legacy whole-file erases rebuild from the untouched original.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and destructiveHint=false. The description adds meaningful behavioral context: it is project-scoped (does not rely on the active project pointer), returns the project identity with the result, and behaves differently for window-patch (instant) vs legacy whole-file erases (rebuild). This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the critical scoping constraint ('PROJECT-SCOPED'). It then explains the action, parameter behavior, and performance characteristics in a logical order without redundancy. Every sentence adds value, making it an efficiently structured description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only two parameters and no output schema, the description covers the core operation, scoping, parameter semantics, and performance. It even hints at the return value ('returns the project identity with its result'). It does not detail the exact return format, but that may not be necessary given the simple operation and the presence of related tools like project_state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: only project_id has a schema description, while id has none. The description compensates by explaining that id is the erased region identifier (optional, see get_edl) and that omitting it undoes all erases. This adds essential meaning to the id parameter that the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: undo an erase, restoring original pixels. It specifies the resource (erase) and distinguishes it from siblings like erase_region and other remove_* tools by focusing on undoing an erasure operation. The scoping to project_id is also explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use it: to undo an erase, with the option to target a specific region by id or all erases when id is omitted. It also mentions performance differences between window-patch and legacy whole-file erases, helping an agent set expectations. However, it doesn't explicitly state when not to use it or name alternatives, relying on the tool name and siblings for that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_filler_wordsRemove filler wordsAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. ONE-CALL filler removal — THE tool for 'remove the ums' / 'cut the uhs' / 'take out the filler words'. Cuts every um, uh, er, hmm, etc. using the exact word timestamps (deterministic, never estimated). Pass a custom words list to target different tokens (e.g. ["like","you know"]) — the default set is only the safe non-word hesitations.
| Name | Required | Description | Default |
|---|---|---|---|
| words | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses several important behaviors: the call is project-scoped to the explicit project_id, it returns the project identity with the result, it uses exact word timestamps rather than timing, and the default removal set is restrict the safer non-word hesitations. These add meaningful behavioral detail beyond the structured annotation fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but to the point. It front-loads the critical project-scoping note and the one-call claim, then moves through operation, determinism, and customization. Each phrase adds distinct decision-relevant information with little or no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description covers the core behavior, scoping, return indicator, and customization. It does not detail error cases or the full return payload, but the mention of returning 'project identity with its result' gives enough closure for a relatively straightforward mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: only project_id gets a description in the schema. The tool description compensates by explaining the words parameter—its purpose, how to pass custom tokens like ['like','you know'], and the default behavior when omitted. This goes beyond the bare array-of-strings schema, though a bit more detail (e.g., matching semantics) could be added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: it removes filler words from a project. It clearly distinguishes itself from the many sibling tools by explicitly claiming to be 'THE tool for “remove the ums” / cut the uhs / take out the filler words' and by listing the exact tokens it removes (um, uh, er, hmm).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description strongly signals when to use it in natural user phrasing ('remove the ums', 'cut the uhs') and clarifies how to extend its use with a custom words list. It does not explicitly name alternatives or state when not to use this tool, but the guidance is clear enough for an agent to select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_finishRemove finishAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove grade windows and finishes by id.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is partly covered. The description adds meaningful context beyond that: it is strictly project-scoped to the explicit project_id and returns the project identity with its result. It notably does not explain what happens to unresolvable ids, though the idempotent and non-destructive hints make the "Remove" wording coherent rather than contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no filler. The main purpose is relegated to the second sentence in favor of the PROJECT-SCOPED warning, which is defensible as a guardrail but slightly delays the core statement an agent is scanning for.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description helpfully states that the project identity is returned with the result, and it discloses the scoping rule. Combined with annotations, an agent can invoke it correctly; only edge-case behavior (unknown ids, partial failures) is undisclosed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: project_id is well documented in the schema, while ids has none. The description partially compensates by saying removal is "by id" and stressing the explicit project_id scope, but it never clarifies what the ids array should contain (grade window ids, finish ids, or both). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Remove") and resource ("grade windows and finishes"), which is enough to separate it from the many remove_* siblings like remove_zoom or remove_stylize. It does not explicitly name a sibling or contrast the scope, so it stops short of top marks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The removal action implies the usage context (use it to delete an existing finish/grade window), but there is no explicit when-to-use, no preconditions, and no routing to an alternative such as add_finish or reset_edit. The only constraint given is the project-scoping note, which is scope rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_insertRemove insertAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove one spliced insert by its id (see get_edl) — the surrounding timing is restored exactly. If an insert landed wrong, remove it BEFORE re-inserting, or the old one stays in the video.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds valuable context beyond this: it states the call is project-scoped, restores surrounding timing exactly, and warns about the ordering requirement. This is useful behavioral information that helps the agent anticipate side effects without contradicting any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and efficient, using two sentences to convey scope, action, the id source, and a critical usage warning. The PROJECT-SCOPED prefix is front-loaded, making the most important constraint immediately visible. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with no output schema, the description covers the essential aspects: what it does, the id source, the scoping rule, and the timing behavior. It mentions the return value (project identity with result), which gives the agent a sense of the response. There is no missing information that would prevent correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% — only project_id has a description. The tool description compensates for the undocumented id parameter by directing the agent to 'see get_edl' to find the id, which gives practical meaning. The project_id description is detailed, and the description reinforces its role as an explicit scope. Overall, the description adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Remove') and resource ('one spliced insert by its id'), and distinguishes it from siblings by referencing get_edl and the timing restoration. The PROJECT-SCOPED prefix adds clarity about scope, making it easy for an agent to understand what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear usage scenario: remove an insert that landed wrong, and importantly advises removing BEFORE re-inserting to avoid leaving the old one. It does not explicitly name alternatives like move_insert, but the context implies when removal is appropriate versus other operations. The guidance is sufficient for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_motion_graphicRemove motion graphicCIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove one motion graphic by id together with its owned sound cues.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses genuinely useful behavior (cascade deletion of 'owned sound cues' and project scoping), but it directly contradicts the annotations: destructiveHint=false means 'additive updates only' per the MCP spec, while this tool removes a graphic and deletes its sound cues. See annotation_contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with the scoping constraint front-loaded before the core action, and no filler. Every clause carries information (scope, action, cascade), which is tight for the payload.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, it covers scope, the cascade behavior, and the return ('returns the project identity with its result'). It omits error handling (unknown id) and reversibility, which are the only meaningful remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: project_id is fully documented in the schema and reinforced by the description ('acts only on the explicit project_id'), while id remains undescribed in both places and the description only echoes 'by id' without format guidance. Baseline 3 is appropriate for a two-parameter tool with partial coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The sentence 'Remove one motion graphic by id together with its owned sound cues' gives a specific verb (remove), a specific resource (motion graphic), and the identifier used. It distinguishes itself from sibling removes such as remove_editorial_graphic and remove_vector_graphic through the resource noun, though it never contrasts them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'PROJECT-SCOPED' line explains how the scope argument works, but nothing states when to choose this tool over set_motion_graphic (edit in place) or the other remove_* siblings. No preconditions, no exclusions, no alternatives are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_musicRemove musicAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove one background-music item by its id (see get_edl). Use this to cut the music entirely or before re-adding it with a different range.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that the call is project-scoped and returns the project identity with its result, which is useful. However, it does not disclose behavior for non-existent ids or edge cases, though the annotations mitigate this. It adds some context beyond annotations but not a rich behavioral narrative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The first sentence states scope and purpose, the second gives usage guidance. It is front-loaded with the most critical information (project-scoped) and avoids redundancy. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple removal tool, the description covers the essential points: what it removes, how to identify the item, project scope, and what it returns. The annotations cover idempotency and non-destructiveness. The only minor gap is not specifying behavior if the id doesn't exist, but this is negligible given the simplicity and the reference to get_edl.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (only project_id has a description). The description compensates by telling the user to see get_edl for the id, and provides detailed guidance on project_id, stating it is an 'immutable scope' and how to copy it from list_projects/open_project/project_state. This adds meaningful semantics beyond the schema, especially for the undocumented 'id' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'remove' and the resource 'one background-music item by its id'. It distinguishes itself from other remove_* tools by specifying it targets music and references get_edl for finding the id. The phrase 'cut the music entirely or before re-adding it with a different range' further clarifies its purpose without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it ('to cut the music entirely or before re-adding it with a different range') and directs the user to get_edl for obtaining the id. It doesn't explicitly mention alternatives or when not to use it, but for a removal tool, the usage context is clear. The project-scoped note also helps in guiding appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_overlayRemove overlayAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove one overlay by its id (see get_edl).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true, covering the mutation and safety profile. The description adds context that the call is project-scoped and returns the project identity, which is not in annotations. This is useful additional behavioral information without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the project-scoping note front-loaded. It delivers the key action, scope, and source of the id without any filler. Every word contributes to understanding how to call the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description covers the essential information: what it removes, how to scope it, and where to get the id. It does not discuss error handling or edge cases, but these are not required given the tool's simplicity and the annotations that cover safety.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (only project_id has a description). The description adds a hint that id is obtained from get_edl, but does not specify its format or additional constraints. It does not fully compensate for the undocumented id parameter, but the hint is a small addition. A score of 3 reflects moderate compensation for a 50% coverage baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Remove') and resource ('one overlay by its id'), and clarifies it is project-scoped. This clearly distinguishes it from other remove_* tools, which target different resources, and from add_overlay/move_overlay. The reference to get_edl for the id further anchors its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance on the project_id parameter: that it must be copied from specific sources and that the active-project pointer is never used. It also tells the user to consult get_edl for the overlay id. It does not explicitly contrast with alternatives like remove_sfx or remove_text, but the resource specificity makes usage obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_picture_cardRemove picture cardAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove a footage card by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a non-read, non-open-world, idempotent, non-destructive operation, so the safety burden is largely carried elsewhere. The description adds value beyond them by disclosing that the call is strictly project-scoped and that the result carries the project identity — useful return-shape information given there is no output schema. It does not resolve the tension between "Remove" and destructiveHint=false (reversibility/undo, missing-id behavior), which keeps it out of the top band.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler, and the scoping rule is front-loaded in caps so the constraint is seen before the action. The capitalization is stylistically heavy but does not cost comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter mutation with no output schema and one undocumented parameter, the description covers the scope rule and the return payload but leaves the id's referent ambiguous and says nothing about failure modes (card not found, already removed) or whether the removal is reversible. Adequate but with visible gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: project_id is well documented in the schema, while id has no description at all. The description says "by id" but never clarifies whether that id is the card id (as opposed to a project or asset id), so it only partially compensates for the coverage gap. Baseline 3 for a 2-param tool with partial schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ("Remove") and resource ("footage card") and identifies the lookup key ("by id"), so an agent can distinguish it from the many add_*/set_* siblings in the same namespace. The only friction is the vocabulary mismatch between the tool name ("picture_card") and the description ("footage card"), which forces a small inference about whether these are the same object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a real usage constraint — the call is project-scoped and must receive an explicit project_id, never the active-project pointer — which is actionable guidance. However, it never says when to remove versus update a card (set_picture_card), nor what preconditions or alternatives exist, so the selection guidance against siblings is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_punctuationRemove punctuationBIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove accents, strobes, junction devices and matte flashes by id (get_edl fx), or ids='all'.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), so the bar is lower. The description usefully adds that the call is strictly scoped to an explicit project_id and returns the project identity, but it says nothing about reversibility of removed devices or permission needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the scoping constraint before the action detail. Efficient, though the scoped-boilerplate sentence mirrors sibling tools and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema the description does note that the project identity is returned, covering the return shape. However for a mutation tool it omits reversibility and permission context, leaving the picture partially incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: project_id is well documented in the schema, while ids is not. The description partially compensates by revealing that ids accepts 'all' and that fx ids come from get_edl, which is meaningful beyond the raw schema, but it does not clarify the array-vs-string form.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (Remove) and enumerates the resource targets it acts on (accents, strobes, junction devices, matte flashes), which is essential because 'punctuation' is not self-explanatory. It does not name or distinguish itself from sibling removers like remove_editorial_graphic or remove_motion_graphic, so it stops short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance versus the many remove_* siblings. It implies usage by describing id-based targeting and the ids='all' shortcut, but never states when to reach for this tool over alternatives or what prerequisites apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_region_effectRemove region effectAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove region effects by id (ids: a list or 'rg1,rg2').
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false and closed-world scope, so the burden is lighter. The description adds real behavioral context beyond them: the call is confined to one project (no cross-project side effects) and returns the project identity alongside the result, which the annotation set does not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the scope constraint front-loaded ahead of the functional statement, so nothing is wasted. The second sentence stacks scope, action, and id format slightly densely, but it remains readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter, closed-world removal tool with no output schema, the description covers scope, id sourcing, and id format, so an agent can invoke it correctly. The only small gap is that the returned payload beyond 'project identity' is only gestured at, which is acceptable given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, so the description must carry weight, and it does: it documents the ids value format (array or comma-joined 'rg1,rg2') that the schema leaves completely blank, adding genuine meaning. The project_id sourcing rule in the description also reinforces the schema's own description of that parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('Remove region effects by id') and an evaluator can immediately infer it is the inverse of the sibling add_region_effect. However, it never names a sibling explicitly, so the differentiation is left to inference rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear operating context: the call is PROJECT-SCOPED, acts only on the explicit project_id, and the active-project pointer must never be used to guess scope, pointing at list_projects/open_project/project_state for the id. It stops short of stating when-not-to-use it or naming alternative removal tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_screen_frameRemove screen frameAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove the floating rounded window — the picture goes back to full-bleed.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the mutation and safety profile are covered. The description adds that it is project-scoped and returns the project identity, which is useful context beyond annotations. However, it does not disclose behavior like error conditions or what happens if no frame exists, though idempotency covers some of that. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the project-scope warning, and contains no filler. Every clause adds value: the scope constraint, the effect, and the return info. It is exemplary in brevity and structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter tool with no output schema, the description covers the essential behavior: what it removes, the effect, and the return value. It does not detail error handling or side effects beyond the project scope, but given the tool's simplicity and the annotations covering idempotency and non-destructiveness, it is sufficiently complete for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema fully documents the project_id parameter. The description adds the caution that the active-project pointer is never used to guess, which is critical semantic context not in the schema. This enhances the parameter's meaning beyond its type and required status.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: removing the floating rounded window and restoring full-bleed. It identifies the resource and effect, but does not explicitly contrast with sibling tools like remove_screen_takeover or set_screen_frame, though the inverse relationship with set_screen_frame is implied. It is sufficiently specific to distinguish itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives, such as when to use remove_screen_takeover or set_screen_frame. It only clarifies the project-scoped nature, which is a usage constraint but not a selection criterion. There is no mention of exclusions or conditions that would route an agent to a different tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_screen_takeoverRemove screen takeoverAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Undo a screen takeover by its id (see get_edl): the corner pin, the camera push and the clip it handed off to all go together. Pass keep_clip=true to leave the clip spliced in as a plain cut.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| keep_clip | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false) are consistent with the description's 'Undo' language, and the description adds value beyond them: the PROJECT-SCOPED behavior, what components are undone together, and the keep_clip=true non-destructive option. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense, well-ordered sentences. The critical PROJECT-SCOPED constraint is front-loaded, followed by the action, the components undone, and the optional flag. Every clause earns its place with zero redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter removal tool with a reasonable annotation set and no output schema, the description is thorough: it covers scoping, id source, what gets undone, the keep_clip option, and even the return value (project identity). Only an explicit exclusion of when not to use it keeps this from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only project_id is documented). The description compensates by clarifying that id comes from get_edl and by explaining keep_clip=true leaves the clip as a plain cut. project_id is already fully described in the schema. This meaningfully bridges the gap for the undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Undo a screen takeover by its id') and explains what that entails (corner pin, camera push, handed-off clip), which distinguishes it from the sibling remove_screen_frame. It doesn't explicitly contrast itself with that sibling, but the domain explanation makes the boundary clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context is provided: use it to undo a screen takeover, find the id via get_edl, and optionally keep the clip via keep_clip=true. It lacks an explicit when-not-to-use or named alternative, but the scoping note and the reference to get_edl give an agent enough to invoke it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_sfxRemove sfxAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Delete a sound effect by id (from get_edl).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover idempotence, read-only state, and destructive/scope hints. The description adds useful context beyond that: the call is limited to the explicit project_id and returns the project identity with its result. This clarifies scope and observable output without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The scoping/result information is front-loaded, and the actual delete action follows immediately. Every sentence carries useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter delete operation, the description provides the id source, project scoping, and a note about the result. Since there is no output schema, the result mention is useful. It could be slightly more precise, but not enough to be a major gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The id parameter has no schema description, but the tool description adds the essential point that it comes from get_edl. The project_id parameter is already documented in the schema, so the description compresses the project scoping correctly while covering a 50% schema coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete action ('Delete'), a specific resource ('a sound effect'), and gives the id source ('from get_edl'). It also states the project-scoped behavior up front, which separates it from broader or unscoped tools and avoids a mere restatement of the title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when a caller wants to delete a sound effect and has an id from get_edl. It also documents the project_id prerequisite. However, it does not explicitly mention when NOT to use it or point to alternatives like move_sfx, add_sfx, or other remove_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_speedRemove speedAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove one speed span by its id (see get_edl) — that footage returns to normal speed and program-time items re-anchor automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: 'footage returns to normal speed and program-time items re-anchor automatically.' This goes beyond the annotations and helps the agent predict side effects. No contradiction found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the project-scoped warning, and contains no fluff. Every clause earns its place: scope, action, id source, and behavioral consequences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 parameters and no output schema, the description covers purpose, scope, behavior, and return (project identity). It doesn't mention error cases or what happens if the id is invalid, but for this simple operation the essential information is present. The output is partially described ('returns the project identity'), which is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (only project_id has a description). The description compensates by telling the agent to get the id from get_edl, which is essential context for the otherwise undocumented id parameter. It also reinforces the project_id requirement by noting the call is project-scoped. This adds meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Remove one speed span by its id' with a clear reference to get_edl for the id. It distinguishes this from sibling tools like set_speed or remove_zoom by focusing on speed spans, and explicitly scopes to a project via project_id. This is precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent to 'see get_edl' to obtain the id, which is a necessary prerequisite. It doesn't explicitly mention when not to use this tool (e.g., when modifying speed rather than removing), but the purpose is clear enough that an agent can infer the context. It could be improved by naming alternatives, but it provides adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_stem_mixRemove stem mixAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Restore the original mixed soundtrack (undo separate_music).
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false (mutation) and idempotentHint=true, which the description does not contradict. The description adds useful behavioral context: it acts only on an explicit project_id, never on the active-project pointer, and returns the project identity. This goes beyond annotations and helps the agent understand side effects and return expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the scope constraint and then the action. No filler; every sentence earns its place. The structure is efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with annotations covering safety and idempotency, the description fully covers what an agent needs: what it does, how it scopes, and where to get the id. No output schema exists, but the return behavior is mentioned ('returns the project identity'). Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already describes project_id as 'Required immutable scope...'. The main description reinforces this by saying 'acts only on the explicit project_id' and 'never used to guess', but it does not add significant new meaning beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (restore/undo) and resource (original mixed soundtrack), and explicitly ties it to 'undo separate_music', distinguishing it from sibling tools like remove_music or swap_music. The 'PROJECT-SCOPED' prefix further clarifies the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear usage context: it is the inverse of separate_music, so an agent knows to call it after a stem separation. However, it does not explicitly list alternatives or when NOT to use it (e.g., vs. remove_music). The context is strong but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_stylizeRemove stylizeAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove one stylize effect by its id (see get_edl).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds the project-scoping behavior and that it returns the project identity with the result, which is useful but not rich. It does not mention side effects or failure modes, but the annotation set lowers the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence with a front-loaded 'PROJECT-SCOPED' qualifier. Every word adds value, and it avoids redundancy with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple removal tool with two parameters, the description covers the essential behavioral aspects: project scoping, the return value, and where to get the id. Given the annotations and the simplicity of the operation, it is adequate. Missing details like error handling or side effects on other effects are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (project_id has a detailed description). The description adds a pointer to get_edl for the id parameter, which helps locate the value but does not explain its format or meaning beyond that. It partially compensates for the undocumented id parameter but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (remove), the resource (stylize effect), and the specific action (by its id). It also notes the project-scoped nature, which distinguishes it from other removal tools like remove_custom_filter. The reference to get_edl for finding ids adds precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides usage context (project-scoped, explicit project_id, see get_edl for id) but does not explicitly contrast with alternatives like remove_custom_filter or specify when not to use it. The guidance is implied rather than explicit, and there are no exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_subject_effectRemove subject effectBIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove subject effects and backgrounds by fx id.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description usefully adds that the call is project-scoped (never uses the active-project pointer) and that it returns the project identity with the result. It does not disclose what happens to the underlying effect, whether removal is reversible, or how fx ids are obtained, leaving a gap on a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loading the scope constraint before the action. No filler, though the scope sentence serves the parameter contract more than the purpose clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and the description does say the project identity is returned, and annotations cover the safety profile. However, it omits where fx ids come from (e.g., project_state/editorial map) and whether the removal is undoable, which are meaningful gaps for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: project_id is richly documented in the schema, while ids has no schema description. The description only adds 'by fx id' for ids, which confirms the identifier type but not its source or format. Baseline 3 is appropriate since the schema carries most of the explanation for the required scope parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Remove subject effects and backgrounds by fx id.' This is clear and distinct from siblings like remove_region_effect or remove_stylize. It does not explicitly name the inverse (add_subject_effect), but the resource itself differentiates it well.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage guidance is the PROJECT-SCOPED scope note (must pass explicit project_id). There is no when-to-use vs. when-not, and no routing to alternatives such as remove_region_effect or remove_screen_takeover when the wrong removal tool is suspected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_textRemove textAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove one text element by its id (see get_edl) — including one placed behind the subject.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims a destructive action ('remove') while the annotation destructiveHint is false, which is a direct contradiction. It also does not explain any side effects or irreversibility beyond what the annotations already state, and the contradiction makes the tool unsafe for an agent to interpret correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the critical scope constraint, and includes the special case without fluff. Every sentence earns its place, and the structure is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple removal tool, it covers the essentials: what is removed, how to get the id, and the project scope. However, the contradiction between 'remove' and destructiveHint=false undermines completeness, and the description does not address behavior on missing ids or idempotency (though the annotation does). Given the contradiction, an agent would be uncertain about side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the 'id' parameter by referencing get_edl, which is not in the schema. For 'project_id', the schema already provides a detailed description, and the description reinforces the project-scoped behavior. With 50% schema coverage, the description compensates for the undocumented 'id' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'remove', the resource 'text element', and the specific identifier 'id' with a reference to get_edl. It distinguishes itself from sibling tools like remove_overlay or remove_blur by explicitly mentioning 'text element' and the special case of elements 'behind the subject'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a prerequisite ('see get_edl') for obtaining the id, but does not explicitly mention when to use this tool over other remove_* siblings. The scope is clear, but there is no explicit 'when not to use' guidance or naming of alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_typesetRemove typesetAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove typeset items by id; their words return to the captions.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false; the description explains WHY that is true by stating the words are returned to the captions rather than lost, and adds that the result carries project identity. This is real disclosure beyond the annotations, though failure behavior and side effects on dependent captions are not covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the scoping constraint front-loaded in a labeled prefix and the effect statement second. No filler; only the missing sibling/param detail holds it below 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully states the return includes project identity, and annotations cover idempotency and non-destructiveness. The main gap is the provenance of the ids array, which an agent needs in order to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: project_id is fully documented in the schema, while ids is bare. The description says removal is 'by id' but never says where those ids come from (e.g., project_state or get_editorial_map) or whether they are typeset-item or word ids, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Remove typeset items by id') plus an unusual post-condition ('their words return to the captions'), which tells an agent what actually happens on removal. It does not name a sibling such as set_typeset or add_typeset to draw the boundary, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says nothing about when to remove a typeset versus alternatives like remove_text, remove_typography_scene, or set_typeset. The only contextual instruction ('acts only on the explicit project_id') is scope, not use-case guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_typography_sceneRemove typography sceneAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove a native typography scene and its owned caption suppression.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=true, destructive=false, so safety is covered. The description adds context the annotations cannot: a cascade side effect (also removes the scene's owned caption suppression) and the return behavior (project identity is returned with the result). It stops short of describing failure modes or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler, and the scope constraint is front-loaded as a labeled prefix. Arguably the core action being stated second weakens the front-loading slightly, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with no output schema, the description covers scoping and declares the return value, which is exactly the gap an absent output schema leaves. The remaining gap is the unexplained `id` parameter and the lack of any failure/precondition note.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 50% schema description coverage, the description must compensate and does not. The project_id parameter has a detailed schema description that the prose merely restates, while the required `id` parameter is undocumented in both the schema and the description — an agent cannot tell what identifier form it needs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Remove a native typography scene") and adds a distinguishing detail — that the scene's owned caption suppression goes with it. It is clearly separable from set_typography_scene, but it doesn't explicitly distinguish itself from other removal siblings like remove_text or remove_editorial_graphic beyond the word "typography".
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The PROJECT-SCOPED preamble tells the agent it must supply an explicit project_id and that the active-project pointer is never used, which is real usage guidance. However, there is no when-to-use/when-not guidance, no prerequisite conditions (e.g., the scene must exist), and no routing to alternative removal tools for other graphic types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_ui_sceneRemove ui sceneAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. WRITE: remove UI scenes (and the footage in their slots) by id.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write (readOnlyHint=false), idempotentHint=true, and openWorldHint=false, so the safety profile is covered. The description adds genuinely non-derived context: the call is scoped strictly to the explicit project_id and returns the project identity alongside the result, and it discloses a non-obvious side effect — the footage occupying the removed scenes' slots is removed too. The only tension is that 'remove ... footage' sits awkwardly beside destructiveHint=false, though taken as timeline-reference removal rather than source-media deletion it is consistent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, both front-loaded with the highest-value tokens ('PROJECT-SCOPED', 'WRITE', 'remove UI scenes ... by id'), with no filler. The ALL-CAPS labels are slightly templated but the whole definition is only ~30 words and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter write tool with no output schema, the description covers scope, side effect, and result identity, and annotations supply idempotency and safety. It stops short of stating failure behavior for nonexistent ids or required permissions, but nothing essential to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: project_id is fully documented in the schema (including where to copy the id from), while ids is bare. The description partially compensates by saying removal is 'by id' and that ids identify UI scenes, but it gives no format, cardinality, or behavior for unknown ids. Baseline 3 for the schema doing half the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('remove UI scenes ... by id') and even names the side effect on slot footage, so an agent knows exactly what it deletes and how ids map. It does not, however, differentiate itself from same-family siblings such as remove_typography_scene or remove_vector_graphic, which share the same pattern.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description carries a scope constraint (must pass an explicit project_id, never the active-project pointer) but gives no when-to-use or when-not-to-use guidance relative to the many other remove_* tools. There is no routing information for an agent choosing among 20+ removal siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_vector_graphicRemove vector graphicBIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove one renderer-native vector graphic by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Remove', which implies a destructive mutation, yet the annotations declare destructiveHint: false. This is a direct contradiction. The description also adds minimal behavioral context beyond the annotations, but the contradiction invalidates the transparency score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence that front-loads the critical project-scoping constraint before the action. There is no redundancy or filler, making it maximally efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter removal operation, the description covers the action, the required project_id scope, and the return value (project identity). It lacks explicit guidance on obtaining the id and edge-case behavior, but given the simplicity and existing schema description for project_id, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (project_id has a description, id does not). The tool description does not explain the id parameter beyond implying it identifies the vector graphic, and it does not compensate for the missing schema detail. The agent is left guessing about the id's format or provenance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove'), the specific resource ('renderer-native vector graphic'), and the identifier ('by id'). It also distinguishes this tool from siblings by specifying 'renderer-native' and the project-scoping constraint, making it unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for removing vector graphics and mandates an explicit project_id, which is a clear usage constraint. However, it does not explicitly compare with sibling remove tools (e.g., remove_overlay, remove_text) or state when not to use it, leaving the agent to infer based on the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_voiceoverRemove voiceoverAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove one voiceover by its id (see get_edl).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the return format ('returns the project identity with its result') and the project-scoping behavior, which adds context beyond the annotations. However, there is tension between 'Remove' and destructiveHint: false; the idempotentHint: true makes a reversible/idempotent removal plausible, so the annotations are internally coherent, but the description does not clarify whether removal is irreversible or a soft removal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler, and the most important scoping constraint is front-loaded with the 'PROJECT-SCOPED' warning. The get_edl pointer is slightly terse but earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with no output schema, the description covers scoping and return format adequately. But it does not explain failure behavior (e.g., what happens if the voiceover id does not exist) or the effect of repeated removal, which matters given the idempotentHint annotation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% — project_id is well documented in the schema, but id has no schema description. The description partially compensates by saying 'by its id (see get_edl),' which tells the agent the id is a voiceover identifier and where to source it. This adds meaning beyond the bare schema but does not fully cover id semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource+identifier: 'Remove one voiceover by its id.' The voiceover resource clearly distinguishes it from sibling removal tools like remove_music, remove_sfx, and remove_overlay. The 'see get_edl' pointer tells the agent exactly where to obtain valid IDs, making the tool's purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'PROJECT-SCOPED' prefix is a strong usage signal that this call requires an explicit project_id, and the project_id schema description reinforces it: 'Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess.' This gives clear when-to-use guidance, though it does not explicitly name excluded alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_worldRemove worldAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove world definitions (track/object/plane/light ids; graphics that name them are detached) or detach graphics (motion ids).
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), so the bar is lower. The description goes further: it discloses the project scoping requirement, that the active-project pointer is never used to guess, and the key side effect that graphics naming a removed definition are detached rather than destroyed. That side-effect detail is the most valuable content here and directly explains why destructiveHint=false is plausible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, with the project-scoped constraint and return-identity note front-loaded before the operational detail. Every clause carries information; the sentence structure is slightly cramped but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with no output schema, the description covers scope, side effects, id-class semantics, and the fact that project identity is returned. Nothing critical is missing; error/partial-failure behavior is the only notable omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: project_id is well documented inline, but ids has no schema description. The description compensates by enumerating what ids may contain and the divergent behavior per id class, which the schema does not convey. Marginal return only, since it doesn't cover array format or limits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Remove) plus two distinct resources it operates on: world definitions (track/object/plane/light ids) and graphic detach (motion ids). That granularity distinguishes it from the many other remove_* siblings that target graphics, effects, or text. It stops short of naming a sibling it is not, so 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent which id types trigger which behavior (track/object/plane/light ids remove definitions; motion ids detach graphics), which is effectively usage routing by argument. However, it never states when to prefer this over related world tools (look_at_world, place_in_world) or when not to call it. Implied usage only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_zoomRemove zoomBIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove one zoom by its id (see get_edl).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'Remove' which is a destructive operation, but the annotations declare destructiveHint: false. This is a direct contradiction. While the description adds that it returns the project identity, the contradiction is a serious transparency failure, so the score is 1 and annotation_contradiction is true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the critical project-scoping note. It is concise and efficient, though the 'see get_edl' reference is slightly cryptic but still acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description mentions the return value (project identity with result) and project scoping, but the contradiction with destructiveHint undermines its completeness. It also lacks details on error handling or edge cases, making it insufficient for a mutation tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (only project_id has a description). The description adds value by pointing to get_edl for the id and clarifying that project_id is an explicit immutable scope. However, it does not fully compensate for the missing id parameter description, so it is adequate but not outstanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Remove') and resource ('one zoom by its id'), which clearly distinguishes it from sibling tools like remove_zoom_path. It also clarifies the project-scoped behavior. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a pointer to get_edl for obtaining the id, implying when to use this tool (after looking up the zoom). However, it does not explicitly state when not to use it or compare it with alternatives like remove_zoom_path, so usage guidance is partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_zoom_pathRemove zoom pathAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Remove one keyframed travelling zoom by its id (see get_edl). Use remove_zoom for ordinary punch/ease zooms.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the call is project-scoped, only uses the explicit project_id rather than the active-project pointer, and returns the project identity with its result. Annotations already cover idempotency and non-destructiveness, so the description adds meaningful behavioral context without needing to restate them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first establishes scope and return value, the second states the operation and points to the correct sibling. No filler, front-loaded with the most important constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter mutation, the description covers scope, object of action, id source, and return contract. It also names an unambiguous alternative (remove_zoom), fully equipping an agent to decide and invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 50% of parameters; the description adds value by saying 'see get_edl' to locate the zoom idaint, and the project_id parameter already has a detailed schema description. This meaningfully fills the gap for the undocumented 'id' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Remove one keyframed travelling zoom by its id.' It explicitly contrasts with remove_zoom ('ordinary punch/ease zooms'), so an agent can tell the two apart immediately. The PROJECT-SCOPED prefix adds a clear boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Directs the agent to use remove_zoom for ordinary punch/ease zooms, implying remove_zoom_path is for keyframed travelling zooms. It also instructs to find the id via get_edl. This is explicit selection guidance, not just inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_previewRender previewAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Render evidence for the current immutable EDL. complete=false makes changed-section proof only; this does not create a watchable complete preview. complete=true creates the complete stored video, even on the first call. quality=approval implies complete=true and renders from the original at up to 720x1280 portrait using the final composition and typography path; draft is the inexpensive 480px preview. The Studio attaches the complete preview. wait_for_job observes pending work; call render_preview again to review its existing result. MCP clients can retrieve it with watch_video or download_url. On a short its VERIFICATION ADVISORIES carry an EARN ITS PLACE note (hook, graphic budget, payoff hold), advisory: act on what hurts this short, never with a zoom or a sound. A complete render carries a PICTURE CHECK measured on its own frames: a face within ~6% of the frame's (or its card's) edge, a single-frame jump or pop that is not on a cut, a missing end card or watermark, captions that collide with a graphic or cross a card edge, a graphic whose measured ink covers the speaker's eyes or mouth (GRAPHIC ON THE FACE, allow_face_overlap included); a CAPTION CHECK names heard words no caption or graphic shows (blocking). Repair each one or keep it deliberately and say why. Its MEASURES line gives picture area vs the 0.47 card floor, upscale and cap heights; PICTURE MEASURES (advisory) name a hook smaller than the captions or a payoff that is not the largest lockup. report=true re-reads that stored report for the existing preview without rendering anything.
| Name | Required | Description | Default |
|---|---|---|---|
| report | No | ||
| quality | No | ||
| complete | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses meaningful behavior: complete=false does not create a watchable complete preview, complete=true stores a complete video even on the first call, approval renders from the original at up to 720x1280 portrait, and report=true re-reads a stored report without rendering. It does not describe auth, rate limits, or failure modes, but it adds substantial operational context that annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a dense run-on block with all-caps labels, nested caveats, and a long digression into verification advisories, picture checks, caption checks, and measures. Useful content is front-loaded only partially, and many clauses could be consolidated into clearer structured guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by explaining what results include: verification advisories, PICTURE CHECK, CAPTION CHECK, MEASURES, PICTURE MEASURES, and retrieval via watch_video or download_url. For a complex render-and-inspect tool this is largely complete, though the missing sibling contrast and unclear defaults leave a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, so the description must carry most parameter meaning. It explains complete=false vs true, quality=approval vs draft and the implication that approval forces complete=true, report=true as a stored-report read, and reinforces that project_id is the immutable scope. That compensates well for the thin schema, though default values are not stated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the core action: it renders evidence for the current immutable EDL, and it distinguishes complete=false changed-section proof from complete=true full stored video. That is a clear verb and resource, though the dense opening and lack of explicit contrast with siblings like render_variants or export_final keep it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives actionable mode guidance: complete=false is only changed-section proof and not a watchable preview, complete=true creates the complete stored video, quality=approval implies complete=true, and draft is the inexpensive 480px option. It also explains wait_for_job and calling render_preview again to review an existing result, but it does not explicitly say when to prefer this over sibling rendering/export tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_variantsRender variantsCInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. WRITE-free: three type voices for one typeset lockup as stills on the real frame, attached for you to show the user; apply the pick with set_typeset.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | ||
| id | No | ||
| axis | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does add legitimate context beyond the annotations (project becomes the returned identity, stills are attached, project_id is never inferred from the active-project pointer). However, it labels the call 'WRITE-free' while the annotations declare readOnlyHint=false and idempotentHint=false, i.e. the tool is explicitly not read-only. That is a direct conflict about write behavior, so per the rubric this dimension is capped at 1 and is flagged as an annotation contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense clauses, front-loaded with the safety tags, so nothing is buried. But the compressed tag style ('PROJECT-SCOPED', 'WRITE-free') is cryptic and one of those tags is also inconsistent with the annotations, so brevity comes at the cost of clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter render tool with no output schema and low schema coverage, the description does cover the essentials: scope, that results come back attached as stills, and which call applies the pick. It omits what n/id/axis actually control and gives no hint about rendering cost or latency, and the contradictory 'WRITE-free' tag undermines confidence in the rest of the disclosure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% — project_id is the sole documented parameter. The description reinforces project_id scoping and rules out pointer-based guessing, matching the schema text, but says nothing about n, id, or axis; 'three type voices' only loosely hints at the count default and the 'voice' enum value. With coverage this low the description needed to compensate more than it does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a concrete operation — rendering three type-voice variants of one typeset lockup as stills — and distinguishes itself from set_typeset, which is the call that applies the pick. The phrasing is heavily jargonized ('type voices', 'typeset lockup', 'real frame') and never says plainly that it produces options for review, so an agent unfamiliar with the domain has to infer the point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear workflow context: results are attached so the agent can show the user, and the chosen variant is applied via set_typeset, which effectively names the alternative action. There is no explicit when-not-to-use or guidance on choosing this over near-neighbors like make_variant_set or pick_still.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_brollResearch brollAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Research B-roll as a COHERENT STORY SEQUENCE, not one isolated keyword at a time. Pass every meaningful cutaway moment with a concrete visual query, its editorial purpose, intended output time and approximate duration. For an important beat, query_variants can name distinct truthful visual routes (exact subject, observable action, environment/detail) so the choice is not trapped inside one keyword's near-duplicates. The tool searches moments concurrently, adapts candidate depth to the size of the story, returns candidates grouped by purpose, and attaches one balanced visual board spanning the whole edit. For the in-house editor, one independent sequence cast compares visible specificity, authenticity, composition, color and diversity and may choose KEEP BASE PICTURE / NO B-ROLL for any weak moment. This is selection evidence, not a placement quota. Nothing enters the project until add_stock_media; the actual downloaded clip is then visually reviewed before placement. Use kind='photo' for real people/products/places when topical video is unavailable.
| Name | Required | Description | Default |
|---|---|---|---|
| moments | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| orientation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries the full burden. It discloses that it searches concurrently, adapts depth, returns candidates grouped by purpose, attaches a visual board, and provides an editor comparison that may choose KEEP BASE PICTURE / NO B-ROLL. It also clarifies that nothing enters the project until add_stock_media, which is a key side-effect transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence adds value. It front-loads the project-scoped note and uses clear, purposeful sentences. While it could be tightened slightly, the density is justified by the complexity of the tool. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description is remarkably complete. It explains the input structure, output behavior (grouped candidates, visual board), the editor comparison mechanism, and the absence of side effects until add_stock_media. There is no output schema, so the description fully covers what an agent needs to know.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (project_id described). The description compensates richly: it explains moments require concrete visual queries, purpose, output time, and duration; query_variants are for distinct truthful visual routes; and kind='photo' is recommended for real people/products/places. It also implies orientation is part of the request but not detailed, which is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool researches B-roll as a coherent story sequence, not isolated keywords, and explicitly scopes it to a project_id. It distinguishes itself from simpler keyword searches and notes that media isn't added until add_stock_media, which differentiates it from sibling tools like search_stock.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context: project-scoped, acts on explicit project_id, and advises using kind='photo' when topical video is unavailable. It doesn't name specific sibling alternatives or when to use them, but the guidance on story sequencing and kind selection gives practical direction. The 'Nothing enters the project until add_stock_media' boundary clarifies when not to expect side effects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_editDiscard the edit and start from the sourceADestructiveInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Start again from the full untouched source video whenever that is the best route for the brief or current edit. The tool creates a new version, so every prior cut remains recoverable in version history. It drops every current cut, caption, track and effect; state honestly when you chose to rebuild from source.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations (which only indicate destructiveHint: true) by clarifying that the action is scoped to the explicit project_id, creates a new version so prior cuts remain recoverable in version history, and drops all current edits. It also instructs the agent to state honestly when it chose to rebuild from source, adding useful behavioral guidance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the PROJECT-SCOPED note and provides essential behavioral details in three sentences. The final instruction about 'state honestly' is somewhat tangential to tool mechanics, but it does not detract significantly. Overall it is efficient and well organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive action with a single parameter, the description covers scope, behavior, recoverability, and return value adequately. It does not mention error conditions or what happens if the project is not found, but those are likely handled elsewhere. The absence of an output schema is mitigated by the mention of returning the project identity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter project_id is already fully documented in the schema (coverage 100%) with clear instructions to copy it from list_projects/open_project/project_state and avoid guessing. The description adds only that the call is scoped to that id and returns the project identity, which is marginal and not parameter-specific.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool resets the edit by starting again from the full untouched source video, dropping all cuts, captions, tracks, and effects. This is a specific verb (reset) on a well-defined resource (the edit/project), and it distinguishes itself from sibling removal tools by implying a full clean-slate operation rather than removing individual elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides context that it should be used 'whenever that is the best route for the brief or current edit,' which gives a general sense but does not explicitly contrast with alternatives like the many remove_* tools. There is no explicit 'use this instead of X when Y' guidance, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_rangeRestore rangeAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Add a previously-cut source-time range back into the keep set (undo one cut without touching the rest). Creates a new EDL version. Each cut edge it writes (keep_segments: every edge of the list) lands audio-safe on the source's sound: out of any word it falls in, onto the quietest point within ~80 ms (a word's release or lead-in up to 0.25 s), never into the word beyond; the result reports every move and any cut that joins running speech. snap_to_words:true first moves edges outward to word edges with a breath; snap_to_words:false keeps your exact times (a stutter cut).
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| start | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| snap_to_words | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false); the description goes far beyond by disclosing that it creates a new EDL version, how each written edge is placed audio-safe (~80 ms quietest point, never into the word beyond), and that the result reports every move and any joined speech. This is exactly the behavioral context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scope and core purpose are front-loaded before the deeper edge-placement detail, and every sentence carries information. It is a single dense block, and the audio-safe placement detail is close to over-detailed, keeping it at 4 rather than 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, it covers scope (project-scoped, immutable project_id), the side effect (new EDL version), edge-placement behavior, and what the result reports. Nothing an agent needs to invoke it correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (start/end have no descriptions), so the description must compensate. It does: it defines start/end as a 'source-time range' and gives rich semantics for snap_to_words (true snaps outward to word edges with a breath; false keeps exact times as a stutter cut), while project_id scoping is handled by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: 'Add a previously-cut source-time range back into the keep set (undo one cut without touching the rest).' The parenthetical makes the inverse relationship to cut_range immediately legible, so an agent can distinguish it from the cutting sibling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'undo one cut without touching the rest' framing makes the when-to-use clear, and it gives explicit parameter-selection guidance (snap_to_words:true vs false). It stops short of naming a contrasting alternative sibling explicitly, so it lands at 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retypeset_languageRetypeset languageAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. WRITE: the same edit in another language from what the USER gives (never machine-translated): translation = one line per spoken phrase (list_phrases=true lists them), srt = their subtitle file, mapping = {on-screen text: translation}. Captions keep each phrase's spoken window; graphics swap their text; no timing moves.
| Name | Required | Description | Default |
|---|---|---|---|
| srt | No | ||
| lang | Yes | ||
| mapping | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| translation | No | list of lines or {phrase: line} | |
| list_phrases | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-destructive write, but the description adds real behavioral context beyond them: input must be user-supplied and 'never machine-translated', the call returns the project identity, and the effect is scoped ('captions keep each phrase's spoken window; graphics swap their text; no timing moves'). This meaningfully explains what the operation does and does not change.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the PROJECT-SCOPED and WRITE labels and packed with no filler. The run-on format list and awkward parenthetical '(list_phrases=true lists them)' cost some readability, but every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-idempotent write tool with nested objects and no output schema, the description covers scope, write semantics, the three input shapes, and the timing/behavioral effect of the edit. The main residual gap is the untended lang parameter and no explicit routing to sibling tools, but the core is complete enough to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 33% schema coverage, the description compensates well: it defines translation ('one line per spoken phrase'), srt ('their subtitle file'), mapping ('{on-screen text: translation}') and list_phrases (lists the phrases to translate). Only lang is left implicit, which is self-evident. This is strong added meaning over the sparse schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('the same edit in another language') and resource (retypesetting existing typeset/captions/graphics into another language), so an agent can tell it re-languages existing text rather than adding new text. It does not name or distinguish itself from the set_typeset/add_typeset/remove_typeset siblings, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by explaining the three input formats (translation, srt, mapping) and their shapes, which guides how to supply the target-language text. It never states when to prefer this over sibling typeset tools or prerequisites for a valid call, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_stockSearch stockARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. SEARCH for b-roll images/clips the user does not have. Two kinds of query work: generic visuals ('a busy city', 'ocean waves') AND — with kind='photo' — REAL topical subjects ('Elon Musk', 'SpaceX Starship', a company, a product) from Wikimedia/Flickr's photo record; relay each photo's license line when it carries an obligation. For real topical VIDEO use find_footage instead. Returns a VISUALLY REVIEWABLE, provider-diverse grid (Pexels/Pixabay/Openverse when configured), not a homogeneous first-provider dump. Candidates ONLY: nothing is downloaded and nothing enters the video. kind 'video' (default) or 'photo'. orientation defaults to the project's output frame, so a 9:16 edit gets vertical footage. Then call add_stock_media with the best id.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| count | No | ||
| query | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| orientation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false; the description meaningfully adds that this call is project-scoped, returns no downloads, never inserts into the video, returns a provider-diverse grid, relays license obligations, and defaults orientation to the project's output frame. These behaviors are not inferable from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the most important scoping constraint and every sentence adds operational value. It is somewhat dense and uses heavy capitalization/parentheticals, but it is not padded or repetitive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool without an output schema, it gives a useful high-level return contract (visually reviewable, provider-diverse grid), safety guarantees, and a natural follow-up action. The main gap is the undocumented count parameter and a somewhat vague exact return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20%, so the description must compensate. It explains the query semantics, the kind enum and default, orientation defaulting, and project_id scoping. However, the count parameter is left unexplained, so its role or limit remains ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'SEARCH for b-roll images/clips the user does not have,' scoped to an explicit project_id. It also distinguishes itself by pointing topical video to find_footage and by describing a provider-diverse result grid, so an agent can tell it apart from related search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description is explicit about when to use it: generic visual queries, and photo queries for topical subjects via kind='photo'. It also names the alternative for real topical video ('use find_footage instead') and chains to the next step ('Then call add_stock_media with the best id').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_transcriptSearch transcriptARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Find where something is said (substring + fuzzy over sentences).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds valuable behavioral context: it is project-scoped and returns the project identity with the result, which goes beyond the annotation. No contradictions, and the added detail is useful without being verbose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste. The scoping constraint is front-loaded, and the functional purpose is stated succinctly. Every word earns its place, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter read-only tool with annotations covering safety and no output schema, the description covers the essential aspects: purpose, scoping, and a hint at return behavior (project identity). Nothing critical is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides a detailed description for project_id, but query has no schema description (50% coverage). The description compensates by explaining that query is a substring/fuzzy match over sentences, giving meaningful semantics beyond the bare parameter name. This adequately addresses the gap for both parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb 'Find' with a resource ('transcript') and method ('substring + fuzzy over sentences'). It also specifies the project scope, distinguishing it from siblings like get_transcript (retrieval) and get_words (word-level access). The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you need to locate occurrences of a phrase in a project's transcript. It does not explicitly name alternatives or exclusions, but the scoping note ('acts only on the explicit project_id') clarifies it is not a global search. An agent can infer appropriate usage, though explicit sibling differentiation is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_objectSelect objectCInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Segment an object through a window (fx object, <=6 s): its box (or points) at t, program fractions from look_at. Type hides behind it (occluders object:) or rides it (to='object:').
| Name | Required | Description | Default |
|---|---|---|---|
| t | Yes | ||
| id | No | ||
| box | No | ||
| end | No | ||
| depth | No | ||
| label | No | ||
| start | No | ||
| points | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, so the safety profile is already given. The description adds useful scoping context ('acts only on the explicit project_id and returns the project identity with its result'), but does not explain what non-read-only state change actually occurs, which is the gap the false readOnlyHint leaves open. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly 50 words with no filler, and the PROJECT-SCOPED constraint is correctly front-loaded. The dense telegraphic style trades readability for brevity, but every clause carries content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, non-read-only tool with no output schema and 11% schema coverage, this description is too thin. It leaves the mutation semantics, most parameter meanings, and the distinction from near-neighbor tools unexplained, so an agent lacks enough to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 11% (project_id alone is documented), so the description must compensate. It does implicitly name several parameters - t ('at t'), box/points ('its box (or points)'), the start/end window ('<=6 s'), depth ('hides behind it'), and an object reference ('object:<id>') - but the mappings are cryptic and 'label' and 'id' semantics remain unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description does give a specific action ('Segment an object through a window') and a return shape ('its box (or points) at t'), so it is more than a restatement of the name. However, the phrasing is heavily jargon-laden ('fx object', 'program fractions from look_at') and never plainly states what selecting an object produces, leaving the boundary with siblings like look_at or track_point ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is a partial constraint ('<=6 s' window) and references to related behaviors, but no explicit when-to-use vs when-not or alternative tool. An agent cannot tell from this text whether to reach for select_object, look_at, or track_point for a given segmentation task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
separate_musicSeparate musicAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Rebalance the ORIGINAL footage's music vs its speech — the answer to 'remove the background music but keep the talking', 'the song is too loud under his voice', 'keep only the music'. The soundtrack is separated into speech/vocals + everything-else (once per video, then cached) and each side plays at its own gain: music_gain_db=-60 mutes the music, voice_gain_db=-60 mutes the speech, -12 ducks, 0 leaves untouched (range -60..+6). This changes ONLY the original footage's own audio — added music tracks are add_music/remove_music, NOT this. Not surgical on dense mixes — check the preview before promising total silence.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| music_gain_db | No | ||
| voice_gain_db | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutating (readOnlyHint=false), and the description adds the crucial detail that it only affects the original footage's audio, not added tracks. It discloses caching behavior and the non-surgical nature on dense mixes, enriching the annotation context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense yet well-organized: scope warning first, then usage intent, then parameter semantics, then exclusions and caveats. Every sentence adds value, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers scope, usage, parameter semantics, caching, and limitations. With no output schema, it still states the call returns the project identity. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only project_id documented). The description fills the gap for music_gain_db and voice_gain_db with concrete effects (e.g., -60 mutes, -12 ducks, 0 untouched) and the valid range (-60..+6), making the parameters self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it rebalances original footage's music vs speech, with concrete examples of user requests. It explicitly distinguishes from added music tracks (add_music/remove_music), so it's unambiguous and differentiated from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use scenarios (e.g., 'remove the background music but keep the talking') and when-not-to-use (added music tracks), naming the alternative tools. Also warns about limitations on dense mixes, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_audio_gainSet audio gainAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Change the loudness of an EXISTING music, sound-effect or voiceover item without re-adding it — THE tool for 'lower the music' / 'make the narration quieter' / 'that whoosh is too loud'. kind: 'music', 'sfx' or 'voiceover'; id from get_edl; gain_db e.g. -12.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| kind | Yes | ||
| gain_db | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds value by clarifying the project-scoped behavior ('acts only on the explicit project_id') and the return payload ('returns the project identity with its result'). It also implies the operation is non-destructive by saying 'without re-adding it'. No contradictions with annotations; it complements them with scoping and return details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet information-dense. It front-loads the critical scope constraint ('PROJECT-SCOPED'), then states the purpose, usage examples, and parameter hints in logical order. Each sentence earns its place; no fluff. Could be slightly more structured (e.g., bullets) but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 required parameters and no output schema, the description covers the key elements: project_id scope, id source, kind enum, and gain_db example. It mentions the return value ('returns the project identity with its result') but does not elaborate on the result structure or error conditions. For a relatively simple mutation tool, this is adequate, though a bit more detail on the return payload would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only project_id has a description). The description compensates by explaining kind ('music', 'sfx' or 'voiceover'), id (from get_edl), and gain_db (example '-12', implying decibels). It adds meaning beyond the bare schema, though units for gain_db are only implied, not explicitly stated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('change'), a precise resource ('loudness of an EXISTING music, sound-effect or voiceover item'), and explicitly differentiates from adding items ('without re-adding it'). The phrase 'THE tool for' and concrete examples ('lower the music', 'make the narration quieter') make its purpose unmistakable and distinguish it from sibling tools like set_volume or add_music.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly indicates when to use the tool via colloquial scenarios and emphasizes it operates on existing items ('without re-adding it'). It also provides the source for the id parameter ('id from get_edl'). However, it does not explicitly name alternative tools (e.g., set_volume, set_master_loudness) or state when those should be preferred, leaving some ambiguity for edge cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_backgroundSet backgroundAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Replace the background behind the subject over [start, end): solid / gradient (colour, colour2, style.angle), blur / radial_blur (style.radius), source (a media key, a source second, next or previous shot) or strobe (sources swapped every style.hold_f frames). hold_subject freezes the subject cut-out at hold_t while the background swaps. Flash-safety applies to strobes. No sound, no zoom.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| kind | Yes | ||
| start | Yes | ||
| style | No | angle, radius, hold_f, stage | |
| colour | No | ||
| hold_t | No | ||
| source | No | media key | source second | next | previous | FxSource | |
| colour2 | No | ||
| sources | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| hold_subject | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-destructive, idempotent, closed-world mutation, and the description adds real behavior beyond that: explicit project scoping, that the project identity is returned with the result, that hold_subject freezes the subject cut-out while the background swaps, and strobe flash-safety. It does not say what existing background state is replaced or how the effect is removed (e.g. remove_blur/remove_stylize), so it stops short of full disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded, opening with the PROJECT-SCOPED constraint before the parameter syntax, and every sentence carries information. The long enumeration-heavy middle sentence is harder to parse than it needs to be, but there is little filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation tool with 27% schema coverage and no output schema, the description covers nearly every parameter's semantics and notes that the project identity comes back with the result. What is missing is how the effect is undone or how it interacts with overlapping effects, which an agent would likely need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 27%, so the description has to carry the load and largely does: it maps kind values to their meanings and binds colour/colour2 to gradient, style.angle to gradient, style.radius to the blurs, style.hold_f to strobe, source to 'media key | source second | next | previous shot', and hold_subject/hold_t to subject freezing. The sources array and style.stage remain unelaborated, keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Replace the background behind the subject over [start, end)'. The enumerated kinds (solid/gradient/blur/radial_blur/source/strobe) and the 'behind the subject' qualifier make the operation more specific than siblings like add_color_screen or blur_region, but no sibling is named to disambiguate explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no alternatives are named (e.g. versus set_composite, add_color_screen, or blur_region), which matters given how many sibling effect tools exist. The only usage-shaped content is a pair of constraints ('Flash-safety applies to strobes', 'No sound, no zoom'), which do not tell the agent when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_brand_kitSet brand kitAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. The user's brand: logo (an image key: its palette by k-means) or accent (#hex) applied to the layout graphics; sting (their own short logo clip) placed before the Valmera end card.
| Name | Required | Description | Default |
|---|---|---|---|
| logo | No | ||
| sting | No | ||
| accent | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=true, destructive=false and openWorld=false, so the safety profile is covered. The description adds genuine context by stating the call is scoped strictly to the explicit project_id and returns the project identity with its result. It does not clarify whether the kit replaces or merges with existing brand settings, nor what happens when only project_id is supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the scoping constraint front-loaded, which is the right priority. The second sentence is dense and slightly run-on, but every clause carries information about a distinct parameter's role.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-destructive, idempotent mutation with no output schema, the description covers the return value, project scoping, and the meaning of three otherwise-undocumented parameters. The remaining gap is the partial-update question: all three brand fields are optional, and nothing says whether omitting them leaves the kit intact or clears it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (project_id alone is documented), so the description must compensate, and it largely does: logo is an image key whose palette is derived by k-means, accent is a #hex value, and sting is the user's own short logo clip. Formats and roles are meaningfully clarified beyond the bare schema types, though no examples are given for the image-key or clip strings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (the user's brand kit: logo/accent/sting) and states the effect – palette or #hex accent applied to layout graphics, sting placed before the end card. The verb is implied ('applied') rather than stated, but an agent can tell what the call accomplishes. It does not differentiate from neighboring accent/background tools such as add_accent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'PROJECT-SCOPED' plus instructions to copy project_id from list_projects/open_project/project_state. There is no explicit when-to-use/when-not, and no mention of how it relates to siblings like add_accent or set_background, which is a real selection risk given this tool also takes an 'accent'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_caption_fixesSet caption fixesAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Edit displayed captions; an empty to deletes the words. Default operation=replace replaces the COMPLETE active set. append upserts by matching text and scope; clear removes all; list returns active fixes and compiled caption preview. replacements accepts [from,to] pairs or objects with from,to and optional start,end in OUTPUT seconds to target one occurrence. Word-count changes, punctuation and capitalization are supported; replacement text is exact. Audio/cuts remain unchanged. A preview is returned without video encoding.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | ||
| operation | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| replacements | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: audio/cuts remain unchanged, a preview is returned without video encoding, empty `to` deletes words, replacement text is exact, and word-count/punctuation/capitalization changes are supported. These are precisely the behavioral traits an agent needs and they are not derivable from the readOnly/idempotent/destructive hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the critical scoping constraint ('PROJECT-SCOPED') before behavior, and every clause carries information. It is dense and semicolon-packed, which slightly hurts scannability but avoids filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-output-schema mutation tool it covers scope, operation semantics, replacement syntax, and what is returned (project identity, previews, active fixes). Return shape is described only loosely, and the `clear` boolean remains unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 25% schema description coverage, the description compensates well: it explains the replacements anyOf form ([from,to] pairs or objects with from,to and optional start/end in OUTPUT seconds to target one occurrence) and the meaning of each operation value. It does not clarify the relationship between the boolean `clear` param and operation=clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: editing displayed captions via text fixes, with scoping ('acts only on the explicit project_id'). It clearly separates itself from caption-styling siblings (set_caption_style, set_caption_mutes) by describing text-level edits, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The operation breakdown (default replace overwrites the COMPLETE active set, append upserts, clear removes all, list returns preview) effectively tells an agent which mode to pick for a given intent. It stops short of explicit when-not-to-use guidance or naming alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_caption_mutesSet caption mutesAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Hide the burned spoken-word captions over specific PROGRAM-time windows, leaving them on everywhere else — for when a full-frame effect, a graphic or a text treatment would otherwise have captions burned across it. spans is the COMPLETE list of muted windows as [[start, end], ...] in program seconds; it REPLACES the existing list, and spans=[] turns every caption back on. The audio and the cut are untouched — only the burned text is hidden. Not needed for inserted media or title cards (they are never captioned to begin with), nor for motion graphics (they hide the words they show and move the rest clear of themselves).
| Name | Required | Description | Default |
|---|---|---|---|
| spans | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: states that spans is a COMPLETE replacement list (not additive), that spans=[] restores all captions (reversibility), that audio and the cut are untouched, and that the call is project-scoped and returns project identity. This clarifies the replace-vs-append semantics that the annotations' idempotentHint alone would not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the project-scope constraint and the core action, and each clause carries real information. Slightly long due to the enumeration of excluded element types, and 'PROJECT-SCOPED' is partly restated later, but nothing is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent what comes back (project identity), how state is affected (replacement, reversible via empty list), and what is unaffected (audio, cut). Nothing material for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (spans has no schema description), but the description fully compensates: nested [[start, end], ...] array shape, program-seconds unit, and full-replacement semantics including the empty-array case. That is exactly the information the bare schema omits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('hide the burned spoken-word captions') plus the precise scope ('over specific PROGRAM-time windows, leaving them on everywhere else'). Clearly separable from siblings like set_caption_style, set_caption_fixes and erase_burned_text because it modulates visibility of already-burned caption text rather than styling or removing it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('for when a full-frame effect, a graphic or a text treatment would otherwise have captions burned across it') and explicit exclusions ('Not needed for inserted media or title cards ... nor for motion graphics'). The agent knows both when to reach for it and when to skip it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_caption_styleSet caption styleAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Change how existing captions LOOK without touching their text or timing. Pass only the fields to change: 'make the captions premium' -> {"style":{"motion_look":"editorial"}}, 'calmer/cleaner' -> {"style":{"motion_look":"clean"}}, 'more hype/viral' -> {"style":{"motion_look":"pop"}}, 'big hero words' -> {"style":{"motion_look":"lockup"}} (motion looks are browser-drawn; see add_captions for them and for the preset menu: clean/documentary/broadcast/podcast/beast/karaoke/spotlight/elegant/stacked/.../classic; naming a new preset without motion_look renders that preset, motion_look:null returns to the stored preset), 'make it red' -> {"style":{"color":"#FF0000"}}, 'center the captions' -> {"style":{"position":"middle"}}, 'bigger / more dynamic captions' -> {"style":{"size":"xl","dynamic":true}} (dynamic = legacy karaoke without a preset; presets animate on their own). highlight_color changes the accent of emphasized/spoken words; uppercase forces casing; emphasis_words (top-level arg, with a preset) replaces the emphasized keyword list. An explicit position or anchor_y locks captions there for the whole video and removes any old shot-aware placement track — use this when the user says captions must stop moving. For fine size control that the s|m|l|xl buckets can't hit pass size_scale (0.5-3.0; 1.5 = 50% bigger). Outline, shadow, backing panel, tracking and text alignment are independently editable. For transcript captions, single_line:true overrides any preset stack and guarantees one rendered row per state. Works for from_transcript and manual captions; errors helpfully if no captions exist yet.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. | |
| emphasis_words | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (idempotent, non-destructive, write), but the description adds what annotations cannot: the call is project-scoped and returns the project identity, and an explicit position/anchor_y 'removes any old shot-aware placement track' — a real side effect the agent would otherwise not anticipate. Error behavior on missing captions is also disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the project-scope constraint and the core purpose, and the arrow examples pack high intent-mapping value per token. However it is a single dense block, and the inline preset enumeration partially duplicates the schema enum, which slightly weakens scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and a deeply nested style object, the description covers scope, return identity, side effects, applicability, and failure behavior — everything an agent needs to invoke it correctly without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 50% schema coverage on a 24-property nested style object, the description supplies meaning the schema lacks: size_scale's numeric interpretation (1.5 = 50% bigger), single_line's override of preset stacks, dynamic as legacy karaoke, and the roles of highlight_color, uppercase, emphasis_words, and position/anchor_y. The intent-to-parameter mapping examples ('make it red' -> color) directly enable correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with explicit scope boundaries: 'Change how existing captions LOOK without touching their text or timing.' The contrast with add_captions (which creates captions and owns the preset menu) makes the distinction from siblings unambiguous even before opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Routes the agent explicitly: motion looks are documented in add_captions, and 'use this when the user says captions must stop moving' names the triggering condition for the position/anchor_y lock. It also states applicability ('works for from_transcript and manual captions') and the failure mode ('errors helpfully if no captions exist yet').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_color_gradeSet color gradeAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Apply a color-grade preset to the whole video (captions stay unstyled): vibrant, warm, cool, bw (only when the user asks for black and white), vintage, cinematic — or 'none' to clear. THE tool when the user asks for a filter / look / mood.
| Name | Required | Description | Default |
|---|---|---|---|
| preset | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover idempotent, non-destructive, and not-readOnly. The description adds genuinely non-obvious behavior: it is project-scoped to the explicit project_id, returns the project identity with the result, and leaves captions unstyled. These side-effect and scope details go beyond the annotations, though error and permission behavior are unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the project-scoping constraint before purpose, then presets, then routing, with no filler. The all-caps emphasis ('PROJECT-SCOPED', 'THE tool') is slightly shouty but does useful prioritization.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but the description notes the return (project identity) and covers purpose, scope, presets, and the caption side-effect for a 2-parameter mutation. Adequate for an agent to invoke correctly, though nothing on failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (only project_id is documented). The description compensates by enumerating and annotating the preset values, explaining the conditional meaning of 'bw' and that 'none' clears the grade, adding semantics beyond the bare enum. project_id guidance lives in the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Apply a color-grade preset to the whole video'), names the scope (whole video, captions excluded), and enumerates the exact preset values. The routing line 'THE tool when the user asks for a filter / look / mood' distinguishes it from siblings like set_grade_custom, set_grade_window, and apply_look.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear positive trigger ('when the user asks for a filter / look / mood') and a conditional rule for the bw preset ('only when the user asks for black and white'), plus the 'none' clear case. It stops short of naming competing siblings or stating when NOT to use it, so it is clear context without explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_compositeSet compositeAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. How a motion graphic joins the picture (MotionItem.composite; merges into what it has). blend: difference reads over a busy plate (interruptions), screen/add make light (leaks, flashes, burns never darken), auto picks difference over busy plates and screen over dark ones by measuring the plate. fill puts footage inside the glyphs (fill_mode inside; field colours around them) or makes the glyphs windows onto the picture with the fill around (outside). ghost draws the hidden letters of a behind_subject graphic as outlines over the subject. stage screen keeps a behind_subject graphic screen-locked under a camera move. region clips it. clear=true restores the plain composite.
| Name | Required | Description | Default |
|---|---|---|---|
| fill | No | next|previous|program[:s]|black|white|accent|#rrggbb|source:<s>|<asset key>[+loop], or FxSource JSON | |
| blend | No | ||
| clear | No | ||
| field | No | ||
| ghost | No | auto|off|{opacity,width_px,threshold} | |
| stage | No | ||
| region | No | face|card|glyph:<motion id>|rect:x0,y0,x1,y1|ellipse:x0,y0,x1,y1, or FxRegion JSON (polygon points, keyframed keys) | |
| opacity | No | ||
| fill_mode | No | ||
| motion_id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly=false, idempotent=true, destructive=false), the description adds genuinely useful behavior: the call is project-scoped, never guesses the active-project pointer, and returns the project identity with the result. 'Merges into what it has' and 'clear=true restores the plain composite' also clarify that partial updates are non-destructive and reversible, consistent with the idempotent hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is dense and telegraphic, with parenthetical asides ('fill_mode inside; field colours around them') and a long comma-linked list of blend behaviors that is hard to parse on first read. It leads with scoping rather than the core action, so it is not front-loaded. Most sentences do carry real semantics, so it is not padded, but structure could be much cleaner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation with no output schema, the description covers the semantically ambiguous options, notes merge behavior, the clear-to-restore path, project scoping, and that the result carries the project identity. The remaining gaps (opacity meaning, exact return payload) are minor relative to the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 36% across 11 params, so the description must carry the load, and it does for the complex ones: blend gets per-enum semantics, fill gets inside/outside and field-colour behavior, plus ghost, stage, region and clear are explained. Gaps remain for opacity and field, and motion_id is only implied, so it falls short of full compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys a specific verb+resource: it sets how a motion graphic joins the picture (MotionItem.composite), keyed to a motion_id within a project. It distinguishes itself from the add_* / set_motion_graphic siblings by framing the call as a composite/blend adjustment rather than creation. It lacks a single clean 'Sets X' opening sentence, which keeps it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong per-option guidance (difference for busy plates, screen/add for light, auto selects by measuring the plate, fill inside vs outside, ghost, stage screen under a camera move), which implies when each mode applies. However, it never states when to pick set_composite over related tools such as set_motion_graphic or set_overlay_motion, and there are no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_editorial_graphicSet editorial graphicAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Author a measured, restrained editorial composition as editable native text/vector layers in ONE revision. Stable id replaces its whole group. kind: statement, comparison (text vs secondary), metric (text is the real value, secondary its meaning), quote, chapter, label, headline. headline requires the verified speaker name in speaker and a faithful claim in text: it prefixes the name inline, wraps at readable font_size (default .052), and holds still without a panel or caption suppression. Max three lines; shorten excess copy. Place its box above the actual picture; never infer identity from a reference. Pass exact supported claims; never invent statistics. Optional eyebrow is short context, not filler. palette ink/paper/slate; motion settle/none; box=[left,top,right,bottom] chooses its region. treatment=panel draws a backdrop; type removes the box for integrated editorial typography. Dialogue captions remain by default. Set mute_captions=true ONLY when this graphic replaces the spoken text; its own live window then owns the suppression and removal restores captions. Card boxes are at least 0.12 wide. fit=auto (default) repairs geometry instead of rejecting: the box is clamped to the frame (a headline to the safe area) and a headline steps font_size down until it fits; every change is reported. fit=strict rejects instead. Reading time is never shortened. Every problem is listed in one reply. Place in deliberate clear space or use as a meaningful cutaway; inspect the rendered composition.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| box | No | ||
| end | Yes | ||
| fit | No | ||
| kind | Yes | ||
| text | Yes | ||
| start | Yes | ||
| motion | No | ||
| eyebrow | No | ||
| palette | No | ||
| speaker | No | ||
| font_size | No | ||
| secondary | No | ||
| treatment | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| motion_motif | No | ||
| mute_captions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with annotations present, the description adds substantial behavioral context beyond them: idempotent group replacement by stable id, project-scoping and identity return, fit=auto repairing geometry vs fit=strict rejecting, font-size stepping, clamping to frame/safe area, one-reply problem listing, and conditional caption suppression via mute_captions. This is rich, non-redundant disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is valuable but delivered as a dense, run-on block with minimal structural separation, making it hard to scan for a specific parameter. The PROJECT-SCOPED constraint is correctly front-loaded, but the remaining sentences are not grouped or formatted for retrieval.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter mutation tool with no output schema and near-zero schema documentation, the description covers most critical semantics (kind, fit, treatment, captions, geometry, idempotency). It stops short of covering start/end timing and motion_motif, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 6% (17 params), so the description carries the burden and largely does: it disambiguates kind values (comparison = text vs secondary; metric = text is the real value, secondary its meaning), defines box/treatment/palette/motion, explains fit, defaults font_size (.052), and conditions mute_captions. Only motion_motif and start/end timing are left unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening states a specific verb+resource ('Author a measured, restrained editorial composition as editable native text/vector layers') and explains the revision semantics ('Stable id replaces its whole group'). It clearly defines what the graphic is, but does not explicitly distinguish it from close siblings such as set_vector_graphic, set_typeset, or add_kinetic_text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives situational guidance ('Place in deliberate clear space or use as a meaningful cutaway', headline placement above the picture, mute_captions only when the graphic replaces spoken text), but never names an alternative tool or states when to prefer this over a sibling like set_vector_graphic. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_fadesSet fadesAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Fade from black at the start and/or to black at the end (video + audio). Seconds; 0 clears. Example: set_fades(fade_in_s=0.5, fade_out_s=0.8).
| Name | Required | Description | Default |
|---|---|---|---|
| fade_in_s | No | ||
| fade_out_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a mutating, idempotent, non-destructive operation. The description adds behavioral detail: it returns the project identity with the result, and it is project-scoped, meaning it affects only the specified project. It also explains the '0 clears' behavior, which is a meaningful semantic detail. It does not mention auth or rate limits, but with annotations covering safety, the added context is sufficient for a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with zero wasted words. It front-loads the critical project-scoping constraint, then states the functional behavior, and ends with a concrete example. Every sentence earns its place, making it easy to parse and act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only 3 parameters, no output schema, and clear annotations, this description is complete. It explains the scoping rule, the parameter units and semantics, the clearing behavior, and the return value (project identity). An agent has everything needed to invoke it correctly without additional inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only project_id is described), so the description carries the burden for the fade parameters. It explains that fade_in_s and fade_out_s are in seconds, that 0 clears the fade, and provides a concrete example. This fully compensates for the missing schema descriptions and adds semantic clarity beyond the raw number types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: setting fade-in and fade-out durations for video and audio. It specifies the verb 'Fade', the resource (the project), and the exact behavior (start and/or end, seconds, 0 clears). It is distinct from sibling tools like set_transitions or set_speed, which handle different effects, so an agent can easily differentiate it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it explicitly states the call is project-scoped and requires an explicit project_id, and explains the units and clearing behavior. It does not explicitly list alternative tools or when not to use it, but the function is self-explanatory for fade tasks. The lack of exclusions is a minor gap, so 4 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_frameSet frameAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Set the output aspect ratio for every render. ratio: source, 16:9, 9:16, 1:1 or 4:5; mode: crop (default), pad (black bars) or pad_blur (blurred backdrop). focus_x/focus_y aim the CROP at the subject (fractions of the source frame, (0,0) = top-left) — without them the crop is the dead-center window, which chops an off-center speaker. For 'make it 9:16' on real footage PREFER auto_reframe, which measures the subject and sets the focus for you. Finals compose on an HD canvas so new captions and branding stay sharp even on archival footage; this does not restore missing source detail. focus_track replaces the complete per-shot track: [{t0,t1,x,y,mode}] in SOURCE seconds. Read get_edl(frame) first; change only the desired spans. Tracks survive trims and speed changes; a span edge within 0.25s of a camera cut snaps onto the cut. picture=[left,top,right,bottom] optionally places the main picture and inserts inside a normalized output rectangle on black. Crop/fit and focus apply inside it, preserving native audio/transcript timing. For a 4:3 picture on 9:16: picture=[0,0.2890625,1,0.7109375]. A rounded card on a designed canvas needs none of this: set_picture_card reads the full source frame itself. Captions, headlines and branding stay at the full delivery resolution. set_frame writes STILL aims: it drops a face-following path auto_reframe measured (call auto_reframe again to re-measure one).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| ratio | Yes | ||
| focus_x | No | ||
| focus_y | No | ||
| picture | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| focus_track | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, non-destructive, but the description adds substantial context beyond them: project scoping and identity in the result, that tracks survive trims and speed changes, that a span edge within 0.25s snaps to a cut, and the destructive side-effect of dropping a measured face-following path.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and scoping, and nearly every sentence carries decision-relevant detail. It is dense and occasionally editorial ('which chops an off-center speaker'), running longer than strictly necessary, but little of it is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, low-coverage, no-output-schema mutation tool, the description covers scoping, return identity, defaults, geometry conventions, snapping behavior, and sibling alternatives. Nothing an agent needs to invoke it correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at only 14%, the description carries the load: it enumerates ratio and mode values with the crop default, defines focus_x/focus_y as fractions with (0,0)=top-left and the dead-center fallback, specifies focus_track as [{t0,t1,x,y,mode}] in SOURCE seconds, and gives a concrete picture=[0,0.2890625,1,0.7109375] example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Set the output aspect ratio for every render') and immediately scopes it ('PROJECT-SCOPED: acts only on the explicit project_id'). It actively distinguishes itself from siblings by name, routing 9:16 work to auto_reframe and rounded cards to set_picture_card.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when/when-not/alternatives: 'PREFER auto_reframe' for real footage, 'Read get_edl(frame) first; change only the desired spans,' and 'A rounded card on a designed canvas needs none of this: set_picture_card reads the full source frame itself.' It even warns that calling it drops an auto_reframe path and how to recover.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_grade_customSet grade customAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Continuous color controls on all footage, applied AFTER the preset grade (the two compose — 'cinematic but warmer' = preset cinematic + temperature 0.2): exposure -1..1, contrast and saturation accept either a SMALL SIGNED DELTA around neutral (preferred: +0.08 is a restrained lift, -0.08 a reduction, 0 clears) or an explicit final multiplier >=0.5 (1.0 is neutral; contrast max 1.6, saturation max 2.0). Never pass 0.06 intending 6% color: it is treated as +6% and stored as 1.06x. Use the explicit 'bw' preset for monochrome. Temperature -1 (cool)..1 (warm), tint -1 (green)..1 (magenta), shadows -1..1 (positive LIFTS the dark regions — the answer to 'brighten the shadows / too dark in the corners'), highlights -1..1 (negative RECOVERS bright areas). 'More light' = exposure up; 'remove/soften the shadows' = shadows up. Pass ONLY the axes to change; an axis's neutral value clears it; all axes neutral clears the whole custom grade. Captions and graphics are never graded.
| Name | Required | Description | Default |
|---|---|---|---|
| tint | No | ||
| shadows | No | ||
| contrast | No | ||
| exposure | No | ||
| highlights | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| saturation | No | ||
| temperature | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false. The description goes beyond by explaining the project-scoped nature, the clearing semantics, the delta-vs-multiplier behavior, and the fact that captions/graphics are untouched. It also warns about the 0.06 misinterpretation. This adds significant behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Despite being long, the description is dense and well-structured. It front-loads the project-scoped caveat, then explains composition, then parameter ranges, then usage warnings, then clearing behavior, then exclusions. Every sentence adds critical value; there is no fluff. The structure makes it easy for an agent to parse the most important constraints first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, no output schema, and no enum values, the description carries the full burden. It covers all parameter semantics, common use cases, warnings, and edge cases (clearing behavior). It even hints at the return value ('returns the project identity with its result'). For a tool of this complexity, the description is complete and self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 13% (only project_id has a description), so the description must compensate. It does so thoroughly: it defines exposure range (-1..1), contrast/saturation as either delta or multiplier with specific limits, temperature/tint ranges, and shadows/highlights meanings (positive shadows lifts dark regions, negative highlights recovers bright areas). It also explains the 0.06 misinterpretation. This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Continuous color controls on all footage, applied AFTER the preset grade.' It specifies the resource (footage) and the verb (set custom grade), and differentiates itself by mentioning composition with a preset grade. It also explicitly excludes captions and graphics, making the scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides extensive usage guidance: it explains how controls compose with presets, gives the monochrome alternative ('Use the explicit 'bw' preset'), warns against a common mistake ('Never pass 0.06 intending 6% color'), and maps natural language to parameters ('More light' = exposure up). It also tells the agent to pass only axes to change and clarifies clearing behavior. This exceeds the typical guidance level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_grade_windowSet grade windowAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Grade a section of the program [start, end): saturation (0 = mono), ev, contrast, temperature, tint, split_tone {shadows, highlights, balance}, protect [skin, brand] (those colours keep their source chroma). ramp_in_f / ramp_out_f ease it over whole frames: mono until a drop that lands IN colour = end on the drop frame with ramp_out_f 3. Optional region (FxRegion). Pass id to replace one. Bit-exact outside the window.
| Name | Required | Description | Default |
|---|---|---|---|
| ev | No | ||
| id | No | ||
| end | No | program s | |
| tint | No | ||
| stage | No | ||
| start | No | program s | |
| region | No | FxRegion: {shape: rect|ellipse|polygon|glyph|face|card, box|points|ref} | |
| protect | No | ||
| contrast | No | ||
| ramp_in_f | No | frames 0-48 | |
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| ramp_out_f | No | frames 0-48 | |
| saturation | No | ||
| split_tone | No | ||
| temperature | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, non-destructive, non-open-world. The description adds real context beyond them: it is PROJECT-SCOPED (acts only on the explicit project_id, never the active-project pointer), it returns the project identity alongside the result, and the window is 'bit-exact' outside its range, which is safety-relevant. It does not describe error behavior or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scoping constraint is front-loaded in caps, and subsequent clauses pack parameter and behavioral detail with little waste. The prose is jargon-dense and overloads single sentences (e.g. the ramp/mono drop example), which slightly taxes parsing but each sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter mutation tool with nested objects and no output schema, the description covers most semantics, notes the return of project identity, and discloses the project-scoping contract. The gaps are the unexplained 'stage' enum and the absence of any guidance relative to the many sibling grading tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40% across 15 params, so the description must compensate and largely does: saturation (0 = mono), split_tone's {shadows, highlights, balance}, protect semantics (colours keep their source chroma), ramp_in_f/ramp_out_f easing behavior, and id-to-replace. The 'stage' enum (world/screen) is left completely unexplained, and ev/contrast/temperature/tint are enumerated but undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (grade) and resource (a section of the program spanning [start, end)), and the window/region scoping plus 'bit-exact outside the window' clearly sets it apart conceptually from whole-program grading. It never names the relevant siblings (set_color_grade, set_grade_custom, match_grade, apply_look), so an agent must infer the boundary itself. Clear but not sibling-differentiated by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: grade a *section* of the program, and 'Pass id to replace one' hints at the update path. There is no explicit when-to-use vs when-not versus the other grading tools, and no prerequisites or ordering guidance. Adequate but with clear gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_insert_windowSet insert windowAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Change which part of an already-spliced clip plays, IN PLACE — duration_s for how long it runs, clip_start_s for where in the clip it starts, rate for how FAST it plays. USE THIS instead of remove_insert + insert_media to trim or re-window a clip that is already on the timeline: removing and re-adding costs two edit versions and two renders, and the user watches their clip disappear and come back. rate (0.25-4, round 76) is THE tool for 'speed up that scene instead of cutting it': rate alone keeps the clip window and shortens the block (a 10s screen recording at rate 2 becomes a 5s scene with nothing lost, audio pitch-corrected); with duration_s the block is duration_s long and consumes duration_s*rate of clip. TO SPLIT a spliced clip in two: shorten it here to the first part, then insert_media the same asset_key at the SAME at_output_s with clip_start_s set to where the first part ended — the two halves play in the order you created them. crop=[x0,y0,x1,y1] (round 77) shows ONE REGION of the clip as the whole scene, letterboxed (black bars) — THE tool for 'show the full timeline strip/panel, nothing else, static': a zoom's 16:9 window can never hold a wide UI strip without also holding what sits above it, so crop the insert instead and leave the zoom wide over it. Fractions of the CLIP's frame, read off a look_at_asset grid; pass 'full' to clear. mute=true (round 78) silences the scene's OWN audio — THE answer to 'mute that clip' / 'mute all scenes' (set_volume only reaches the main footage; muting every scene = set_volume on the kept spans + mute on each video insert). mute=false brings it back. fit (round 79) sets how THIS scene maps onto the canvas: 'pad' shows the WHOLE picture letterboxed on black — THE fix for a portrait image or clip that the default cover-crop beheads ('the image looks corrupted / cut off') — 'pad_blur' fits it over a blurred backdrop, 'crop' forces the cover-crop, 'auto' clears the override. rotation repairs THIS scene clockwise by 0/90/180/270 degrees — use it for one sideways phone clip instead of a whole-program custom filter. motion=none removes local zoom/pan, which otherwise still crops the picture AFTER pad/pad_blur fitting.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| fit | No | ||
| crop | No | ||
| mute | No | ||
| rate | No | ||
| motion | No | ||
| rotation | No | ||
| duration_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| clip_start_s | No | ||
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare non-destructive and idempotent, and the description adds meaningful context: it operates in place, avoids remove/re-add costs, and returns the project identity. It does not, however, detail failure modes or error conditions beyond the scope note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is dense and largely earns its place, but the description is a wall of text mixing many concerns (split workflow, crop, mute, fit, rotation, motion) with minimal structural separation, making it hard to scan. The project-scope note is front-loaded, but the rest is not prioritized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation tool with no output schema, the description explains most parameters and the return of project identity, covering the key behavioral notes. Minor gaps remain for id and motion_motif.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 18%, so the description must carry parameter meaning — and it does: rate range (0.25-4) and its pitch-corrected behavior, duration_s vs. clip_start_s interplay, crop format/reading, mute semantics, fit values, and rotation. It leaves motion_motif and id unexplained, so it is not fully complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — changing which part of an already-spliced clip plays, in place — and explicitly distinguishes itself from the remove_insert + insert_media alternative. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance ('USE THIS instead of remove_insert + insert_media'), names alternatives, and gives the exact rationale (avoiding extra edit versions/renders). It also spells out derivative workflows such as splitting via shorten-here + insert_media and mute vs. set_volume.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_intensitySet intensityAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Set the project's tone dial: calm, designed (default) or charged. It decides how many devices each family may hold; lowering it removes the lowest-ranked device items over the new budget (and any flashes past flash safety) in one write that lists their ids. 'less flashy', 'calmer', 'tone it down' = a step down; 'more energy' = a step up (it never adds anything by itself).
| Name | Required | Description | Default |
|---|---|---|---|
| level | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: the call is project-scoped (never uses the active-project pointer), returns the project identity, and lowering the level prunes the lowest-ranked device items over the new budget in one write that lists their ids. The bounded, idempotent framing is consistent with idempotentHint=true and readOnlyHint=false, though describing item removal sits in mild tension with destructiveHint=false and is worth noting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the PROJECT-SCOPED constraint and return behavior, then the effect and the intent mapping. Denseness is justified for the amount of semantics conveyed, though the parenthetical '(and any flashes past flash safety)' is cryptic and the sentences are long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with no output schema, the description covers scope, return value, default enum value, side effects with a restore trail (listed ids), and user-intent mapping. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 50% schema coverage, the description compensates: it names the enum values, flags 'designed' as the default, and explains the behavioral consequence of moving down (removals) versus up (never adds anything). project_id's immutable-scope semantics are covered by the schema itself, so nothing is left dangling.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Set the project's tone dial: calm, designed (default) or charged') and immediately scopes it ('acts only on the explicit project_id'). The effect on device budgets is spelled out, so an agent can distinguish this from sibling mutation tools like set_frame or set_volume without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Maps natural user phrasing to a direction of change ('less flashy', 'calmer', 'tone it down' = a step down; 'more energy' = a step up), which is real when-to-use guidance. It stops short of naming an alternative tool or an explicit when-not-to-use condition, so it is clear context rather than exhaustive routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_junctionSet junctionAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. A designed cut device at real cuts, duration-preserving (sound and timing untouched): dissolve, fadegrays, pixelize, radial, slices, wipe_left/right/up/down, iris, columns, staircase, box_steps, bands, letter_window (origin = a motion item id), matte_cut, double_exposure, pixel_stretch, hit_flash, whip_up/down, zoom_blur, radial_blur, datamosh; 'none' removes. at= one cut (program seconds) or cuts='scene' (default: real shot changes; jump cuts stay bare)|'every'|[seconds]. origin: centre|face|point:x,y|. One device per cut (it replaces the cut's previous one). Content-born transitions first; one family per section.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ||
| cuts | No | ||
| count | No | ||
| style | Yes | ||
| colour | No | ||
| origin | No | ||
| duration | No | ||
| direction | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description adds real behavioral context: it replaces the cut's previous device, 'none' removes the device, and it preserves sound and timing. That replace-in-place semantics explains why idempotency holds. It does not discuss rate limits or failure modes, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is compact and front-loads the project-scoping constraint plus the core semantics, so little is wasted. But the telegraphic, semicolon-dense jargon and the huge inline style list hurt readability and make the key routing rules easy to miss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation with no output schema and near-zero schema coverage, the description covers the primary selection parameters and return identity ('returns the project identity'). It still omits meaning for count, colour, duration, and direction, so an agent would have to guess on those knobs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11%, so the description carries the burden, and it does explain at, cuts, origin, and the style vocabulary. But it is silent on count, colour, duration (only an ambiguous 'duration-preserving' phrase against a 0.04–2 param), and direction, leaving four parameters undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb and resource ('A designed cut device at real cuts' with enumerated styles) and states the scope ('PROJECT-SCOPED'). It is specific about what is being set and what it produces, though it never explicitly contrasts itself with the sibling set_transitions or set_fades, leaving some overlap ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It hints at selection policy ('Content-born transitions first; one family per section') and gives a default routing rule ('cuts=scene (default: real shot changes; jump cuts stay bare)'). However, it names no alternative tool and gives no explicit when-not-to-use condition, so an agent must infer the boundary against set_transitions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_master_loudnessMaster the mix to a loudness targetAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Social mastering: the main dialogue is leveled to a steady -20 LUFS (speakers on different mics meet in the middle) BEFORE music/voiceover/sfx are mixed, then the FINAL MIX is normalized to -14 LUFS with a codec-safe -2 dBTP target plus a latency-compensated hard ceiling, on preview AND export. 9:16, 4:5 and 1:1 frames (and portrait sources left at 'source') are mastered BY DEFAULT — no call needed; project_state's mastering shows what applies. enabled=true forces it on any format (the fix for a 16:9 export that sounds quiet on YouTube). enabled=false is the explicit opt-out: the mix ships at its natural, unleveled level — only when the user asks for the original/raw sound.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readOnly, idempotent, non-destructive. The description adds substantial behavioral context beyond that: the -20/-14 LUFS targets, -2 dBTP codec-safe ceiling, a latency-compensated hard ceiling, application to preview AND export, and project-scoped identity return. The one gap is that it never states how this interacts with per-clip volume/gain (set_volume/set_audio_gain).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the PROJECT-SCOPED constraint and the core two-stage description, then defaults, overrides and opt-out in logical order. It is dense and uses heavy all-caps emphasis, but nearly every sentence carries distinct operational meaning; only mild tightening is possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a 2-parameter boolean/id tool, the description covers defaults, overrides, opt-out, scope, effect stages, and points to project_state for verification. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% because 'enabled' has no schema description, but the description compensates thoroughly, spelling out the semantics of enabled=true (force on any format) and enabled=false (raw opt-out). It also reinforces project_id scoping as an explicit immutable parameter, matching the schema note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (master the mix to a loudness target), defines the two-stage behavior (dialogue leveled to -20 LUFS, final mix to -14 LUFS), and clearly distinguishes itself from gain/volume siblings by describing loudness normalization rather than level adjustment. An agent can tell what it does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when a call is NOT needed (9:16/4:5/1:1 and 'source' portrait are mastered by default) and when to force it (enabled=true for a quiet 16:9 YouTube export) versus the explicit opt-out (enabled=false for raw sound when the user asks). This is textbook when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_motion_graphicSet motion graphicAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Patch an existing motion graphic by id — window, params (merged into the current ones), template, layer, html or caption muting (mute_captions as in add_motion_graphic; the drawn box captions keep clear of is re-measured). Its owned sound cues move with it; sfx=true re-derives them, sfx=false removes them. A behind_subject graphic whose window changes is re-measured against its new footage. Every patch re-runs the face and safe-area keep-out (see add_motion_graphic): a y that would cover the face is moved and reported; allow_face_overlap=true keeps it (false clears that). A number graphic is re-landed on its spoken number like add_motion_graphic; the window, cut-snap, size, series, tier and Look checks re-run too (a word made tier='hero' goes behind the speaker unless layer is passed). Modify instead of removing and re-adding.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| box | No | ||
| end | No | ||
| sfx | No | ||
| html | No | ||
| layer | No | ||
| start | No | ||
| params | No | Template parameters (see list_motion_templates). | |
| purpose | No | ||
| template | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| mute_captions | No | Omit (default): captions drop the words it shows; every other heard word stays captioned beside it. true = the same (no graphic mutes a whole window: every heard word reaches the screen once), muting only where no band is clear of it; false = captions keep running (a shown number/*starred* word is still not repeated). | |
| allow_face_overlap | No | Keep a deliberate placement over the face (skips the keep-out move). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare mutation, idempotency and non-destructiveness, and the description adds rich behavior on top: sfx re-derives vs removes owned sound cues, window changes trigger re-measurement, the face/safe-area keep-out re-runs and reports a moved y, and allow_face_overlap toggles it. Project-scoping and the no-guessing rule for project_id are also disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the PROJECT-SCOPED constraint and dense with per-branch behavior; every sentence carries information. It is a single run-on paragraph with many inline parentheticals rather than cleanly structured sections, so parsing effort is higher than ideal, but length is largely justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-param mutation with no output schema and low schema coverage, the description covers the important behavioral branches (sfx, re-measurement, keep-out, number re-landing) and defers return details implicitly via 'returns the project identity.' A few parameters remain unaddressed, so it is strong but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at only 31% across 13 params, the description compensates well: it explains that params are merged into current ones, that sfx=true re-derives and sfx=false removes cues, and that allow_face_overlap=true keeps a face placement. It does not fully define 'purpose', 'box', or start/end semantics, leaving some gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: "Patch an existing motion graphic by id." It also distinguishes itself from siblings by explicitly saying "Modify instead of removing and re-adding," differentiating it from remove_motion_graphic/add_motion_graphic. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage direction ("Modify instead of removing and re-adding") and repeatedly routes to add_motion_graphic as the semantic reference for related behaviors. However it never states explicit when-not conditions or a full alternation against add_motion_graphic/remove_motion_graphic beyond the closing directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_music_fitSet music fitAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Retime or refit EXISTING music in place — 'start the music later', 'let it run to the end', 'fade it out', 'loop it', 'stop it ducking'. Anything you omit is left alone. duck_mode: 'smooth' = a sidechain dip that follows the voice and swells back in the gaps; 'step' = the legacy hard -12dB duck. Use this instead of remove+re-add, which loses the other settings. For loudness use set_audio_gain.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| end | No | ||
| duck | No | ||
| loop | No | ||
| start | No | ||
| offset_s | No | ||
| duck_mode | No | ||
| fade_in_s | No | ||
| fade_out_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, destructiveHint=false, idempotentHint=true. The description adds behavior beyond these: it explains that omitted fields are untouched, details the two duck modes, and mentions it returns the project identity. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is ~150 words and front-loaded with the project scope. Each sentence adds value: scope, action, examples, duck_mode semantics, and alternatives. It is structured and readable without excessive verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters and no output schema, the description covers the main behavioral aspects: it states return value (project identity), explains duck modes, and clarifies that omitted fields are preserved. Gaps remain around offset_s and units, but overall it is adequate for a non-destructive, idempotent edit tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 10% schema coverage, the description must compensate. It explains several parameters implicitly via examples (start, end, loop, duck, fade_out) and explicitly describes duck_mode. However, parameters like offset_s, fade_in_s, and id are not explained, and units for numeric parameters are not stated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool modifies existing music in place, with examples like 'start the music later' and 'fade it out'. It distinguishes itself from adding/removing music and from loudness adjustment via set_audio_gain, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises using this instead of remove+re-add (which loses settings) and directs loudness tasks to set_audio_gain. It also notes that omitted fields are left alone, giving clear context for when to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_overlay_motionSet overlay motionAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Author or replace x/y/scale/rotation/opacity on an EXISTING visual overlay using scalars or element-local keyframes. This is the general motion-graphics primitive for logos, images and PIP clips: one coherent move can drift, push, overshoot, rotate and fade without stacking named presets. Keyframe t=0 is the overlay's own start, not program time. A scalar makes that property static. Full-frame B-roll covers ignore x/y/scale; screen takeovers own their tracked camera geometry and reject ordinary curves.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| motion | Yes | Element-local visual-overlay curves. t is seconds from the overlay's own start; x/y and scale are frame fractions, rotation is degrees, opacity is 0..1. | |
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, but the description goes further: it discloses project scoping ('acts only on the explicit project_id and returns the project identity'), the replacement behavior ('Author or replace'), the keyframe origin ('t=0 is the overlay's own start, not program time'), and the fact that some overlay types reject ordinary curves. That is meaningful context beyond the annotations, though permission requirements are unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scoping constraint is front-loaded in caps, and each sentence carries distinct information, but the middle sentences are long and dense enough to slow parsing slightly. No filler or redundant restatement of the name is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers scope, return identity, keyframe semantics, static-scalar behavior and type-specific rejection rules. It stops short of stating permission prerequisites or exactly how overriding existing curves behaves, which are the remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the schema already documents most fields, but the description adds the crucial scalar-vs-keyframe duality ('A scalar makes that property static') and clarifies the temporal origin of keyframes. It leaves motion_motif and id unelaborated, so it adds value without fully compensating for the remaining gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Author or replace') and resource ('x/y/scale/rotation/opacity on an EXISTING visual overlay'), and it positions the tool as 'the general motion-graphics primitive for logos, images and PIP clips', which differentiates it from the many set_* siblings. An agent can distinguish it from set_motion_graphic, set_text_motion, and move_overlay without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context ('general motion-graphics primitive for logos, images and PIP clips') and implicit exclusions ('Full-frame B-roll covers ignore x/y/scale; screen takeovers own their tracked camera geometry and reject ordinary curves'). However, it never names the sibling tool to use instead when the target is a text element or a screen takeover, leaving the agent to infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_picture_cardSet picture cardAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Compose FOOTAGE ONLY as a rounded picture card during start/end program seconds. Captions, designed type and branding stay independent and sharp. Calling it again with an existing id changes that card: every argument you leave out keeps the card's current value (box, fit, entrance/exit, canvas, framing), so id/start/end alone re-times it; source='auto' frames the speaker again. box=[left,top,right,bottom] on the output canvas; radius 0-.25 of card short side; border 0-.015 of canvas short side. entrance/exit none, fade, lift (restrained settle), or reveal (picture opens/closes inside its rounded window): an animated end DISSOLVES the whole card with the full-frame shot under it — never a frame of bare canvas; a source card that opens or closes on a cut cuts in with its panels populated ('none' says so outright). duration_s .12-1.2. Windows must not overlap. Inspect entry, settle, exit and the speaker framing. Rounded cards are one purposeful format, not a quota. FOOTAGE — source: the card takes its picture straight from the full SOURCE frame (enlarged once, at most 2x — up to 3x only so a small archival face reads at ~15% of the frame, with lanczos, light sharpening and the card's grain over it), never from the already-cropped 9:16 program. Default 'auto' frames the speaker as a medium close-up (>=8% headroom above the head) from a face track measured on the window's kept footage (4 fps) and FOLLOWS a speaker who moves inside a shot: the card holds STILL while they sway and glides (eased, speed-limited, never a whip) only when a still framing would cut the head; a re-aim that can land on a jump cut happens on the cut; every camera shot gets its own framing and nothing moves across a cut (the result says how many shots follow). follow=false keeps one still framing per shot. Without a measurable track it frames every measured position of the head (index boxes) and re-aims on the cut. On a source below 720p 'auto' shows the WHOLE frame (contain: the box shrinks to the footage's aspect, edge blanking trimmed; never a 3.7x crop) — except ONE 4:3 archival speaker (no two-shot) in a 9:16 frame, face measured, no box: a full-width near-square window (y .27-.70, ~43% of the frame: the most that keeps the headline band above and a whole caption band below) framed on the speaker; fit='crop' frames the speaker as a medium close-up in any box and follows them, fit='pad' always shows the whole frame. A thin band of a pillar or frame edge along an 'auto' card's or speaker panel's edge (a straight high-contrast source edge within 8% of it) is slid off once per held framing (never a glide), else named (EDGE SLIVER). 'full' = the whole source frame; [left,top,right,bottom] = that rect of the SOURCE frame (look_at gives the fractions); 'inset' = the burned-in screen / picture-in-picture box measured in the window's footage (four straight edges, the same place across frames), shown WHOLE and fitted (a screenshot the host reads from is legible this way, never sliced by a 9:16 crop; auto_reframe names the box and this call when it finds one). Alone it shows no face: over more than a second of speech the result says NO FACE ON SCREEN — stack the speaker over it with panels instead (below); 'program' = the composed program picture (frame.picture region) as before. fit: 'crop' keeps the box and trims the source rect to it; 'pad' keeps the whole rect and shrinks the box around it (the default for 'full' and explicit rects). The result reports the rect, box, enlargement and headroom. One rect frames ONE shot: an 'auto' window across a camera cut the reframe re-aims on (focus_track) frames each shot itself; across any other cut to a differently framed shot it keeps the program picture (it follows the reframe) and says so — give each shot its own card for source framing. Spliced inserts inside a source card play full-frame and the card returns after them. SPEAKER + EVIDENCE — panels: 2-3 {box, source[, fit]} shown at once over the window, each box its own rounded window on one canvas, each source its own region of the SAME source frame: e.g. [{box:[.04,.13,.96,.475], source:'auto'} (the speaker), {box:[.04,.54,.96,.93], source:'inset'} (the screen/study/inset they show — or its rect)]. Use it when the source shows a speaker beside a picture-in-picture screen, document or browser that a 9:16 crop would either drop or slice; never crop to the evidence and lose the speaker for seconds. A SPEAKER panel ('auto', or a crop rect holding most of the measured face) is solved from the face track (measured into its shot, so a profile turn is carried): the whole head with chin and hair margins, lead room where they look, every face box >= 8% of the panel inside each edge first, burned-in screen boxes kept out wherever such a framing can (where the box touches the face the face wins: the head keeps its composition, the corner that shows is never a thin strip and is softened only away from the face, and the result measures a speaker card alone and the speaker full-bleed against the stack and names the cleanest: BETTER LAYOUT / LAYOUT (measured)), following a speaker who moves; a given rect that cuts the face is moved and grown only as far as it must. Stacked panels keep a caption band of >= .065 of the frame height between them (a narrower gap is opened, and said). Panel boxes must not overlap; zooms do not play inside a stack. CANVAS — omitted, it is a dark canvas sampled from the footage (its hue, near-black at the edges, vignette; film grain on sources below 720p). Name one to override: background_style 'radial_gradient' glows from background behind the card out to background_color2, 'vertical_gradient' runs background (top) to background_color2 (bottom); a bare background is a flat colour; 'blur' fills the frame with the card's own footage blurred and darkened (background_dim 0-.9, default .45) — HD footage only: on a low-resolution source it reads as a muddy smear. vignette 0-1 darkens the edges (.4). grain 0-1 adds animated film grain: .25 is the references' texture. Grain is a FINAL-export finish with a cliff — the encoder smooths it out of previews and out of any value below ~.2 entirely, and where it survives it costs ~3-4x the file size and ~+0.5s of export per 8s of card at 1080x1920. Both only on the backdrop (grain also over footage enlarged past 2x). background_color2 alone implies vertical_gradient; a knob the chosen style cannot draw (color2 on blur/solid, background_dim off blur) is rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| box | No | ||
| end | Yes | ||
| fit | No | ||
| exit | No | ||
| grain | No | ||
| start | Yes | ||
| border | No | ||
| follow | No | ||
| panels | No | ||
| radius | No | ||
| shadow | No | ||
| source | No | ||
| entrance | No | ||
| vignette | No | ||
| background | No | ||
| duration_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| border_color | No | ||
| motion_motif | No | ||
| background_dim | No | ||
| background_style | No | ||
| background_color2 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses re-call merge semantics (omitted arguments keep current values), non-overlap constraints, how animated exits dissolve the whole card, auto-follow and reframe behavior, and result diagnostics such as NO FACE ON SCREEN, EDGE SLIVER, and BETTER LAYOUT. It also explains grain export cost and defaults, providing rich behavioral context without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is an extremely long prose block with dense parentheticals and uppercase caveats, making it hard to scan despite useful section-like cues. Much detail is justified by the poor schema coverage, but the volume and run-on structure substantially exceed what is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 23-parameter mutation with no output schema and almost no schema descriptions, it supplies defaults, edge cases, failure diagnostics, framing behavior, and canvas behavior, which is far beyond the structured fields. Completeness is still weakened by undocumented parameters such as shadow and motion_motif.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 4%, so the description carries most of the burden: it defines box format, radius and border relative units, entrance/exit choices, duration_s range, source modes including rect and inset, fit semantics, panels structure, background styles, and background_color2 implication. However, several parameters are never explained, notably shadow, border_color, and motion_motif, leaving meaningful gaps among the 23 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening states a specific verb and resource: 'Compose FOOTAGE ONLY as a rounded picture card during start/end program seconds.' It also distinguishes this footage-only operation from captions, designed type, branding, and the composed 'program' picture, so an agent can identify the tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit conditional guidance: use panels when the source shows a speaker beside a PiP screen/document/browser, never crop to evidence and lose the speaker, and give each shot its own card across unrelated cuts. It also names auto_reframe as a caller, but it does not directly distinguish itself from sibling tools such as compose_panels or add_title_card.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_screen_frameSet screen frameAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. THE tool for 'that floating rounded window on a gradient' look — the standard treatment for a screen recording or app demo. The finished picture is inset, its corners rounded, a soft shadow dropped under it, and it floats on a solid colour or a two-colour gradient. inset 0.02-0.35 (0.08 default — how much room the backdrop gets); radius 0-0.25 as a fraction of the picture's short side; shadow 0-1; background/background2 are #RRGGBB (pass background2 for a gradient, or 'none' to go flat) with direction vertical/horizontal/diagonal/radial — the same gradient renderer add_color_screen uses, so a backdrop can match an interstitial exactly. Calling it again edits the settings rather than stacking. It applies to the WHOLE finished picture (captions and overlays scale with it, because they are inside the window) and changes no timing at all. Remove with remove_screen_frame.
| Name | Required | Description | Default |
|---|---|---|---|
| inset | No | ||
| radius | No | ||
| shadow | No | ||
| direction | No | ||
| background | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| background2 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, and the description reinforces this with 'Calling it again edits the settings rather than stacking.' It adds meaningful behavioral details: it is project-scoped, applies to the whole picture (captions and overlays scale), changes no timing, and returns the project identity. These go beyond the annotation hints, though it doesn't discuss side effects like permissions or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but each sentence adds value: scope, visual intent, parameter ranges, behavior on re-invocation, effect on overlays, and removal. It is front-loaded with the project-scoped warning and the core purpose, and the parameter details are logically grouped. Slightly overlong, but justified given the parameter count and complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters and no output schema, the description covers the essential context: what it does, parameter semantics, idempotent behavior, scope, and relationship to remove_screen_frame. It even mentions the return value ('returns the project identity'). It doesn't cover error conditions or prerequisite conditions beyond the project_id, but given the available information, it is substantially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 14% (only project_id has a description), so the description carries the full burden for the other six parameters. It provides concrete ranges (inset 0.02-0.35 with default 0.08, radius 0-0.25 as a fraction, shadow 0-1), color format (#RRGGBB), and the direction enum options. This is far more than the schema provides, effectively compensating for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'PROJECT-SCOPED' and then defines the exact visual treatment: 'the standard treatment for a screen recording or app demo' with inset, rounded corners, shadow, and gradient backdrop. It distinguishes itself from generic frame tools by naming the specific aesthetic, and even ties its gradient renderer to add_color_screen, providing a clear identity among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly frames itself as 'THE tool for' that look, indicating when to use it. It also explains that calling again edits rather than stacks, and how to remove it with remove_screen_frame. However, it doesn't explicitly contrast with similar tools like set_frame or add_screen_takeover, so the exclusion guidance is partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_speedSet speedAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Speed up or slow down a SOURCE-time range of the main video (like set_volume, start/end are SOURCE seconds — the ramp stays on its footage through later cuts, and music/overlays/zooms/sfx are re-anchored automatically). factor 0.25-4.0: 2.0 = double speed, 0.5 = half; audio keeps its pitch. Slow motion below 0.6x visibly steps (frames are duplicated, not synthesized) — the tool warns; prefer 0.6-0.8x. A span that overlaps an existing one REPLACES it (disclosed). THE tool for 'speed up the boring part' / 'slow-mo that moment'.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| start | Yes | ||
| factor | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are sparse (idempotentHint=true, destructiveHint=false), so the description carries the burden and delivers richly: PROJECT-SCOPED execution, SOURCE-time seconds that persist through later cuts, automatic re-anchoring of music/overlays/zooms/sfx, audio pitch preservation, frame-duplication stepping below 0.6x, and disclosed REPLACE-onspan-overlap semantics. Nothing contradicts the annotations; the idempotentHint is consistent with a replace-on-overlap speed setting, and the replacement is disclosed rather than hidden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but lean: scope is front-loaded in caps, and every sentence delivers a distinct fact (source-time semantics, factor semantics, audio behavior, quality warning, replacement, use case). There is minor redundancy with the schema's project_id description, but no filler. The length is justified by the number of counterintuitive behaviors an agent must know before calling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no output schema, the description covers the essentials: execution scope, input semantics, factor constraints, side effects (re-anchoring, replacement), and even the return shape ('returns the project identity with its result'). Minor gaps remain — behavior on invalid ranges (start >= end) and how motion_motif interacts with the speed event — but motion_motif is documented in the schema, so the total package is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, and the description compensates for the undocumented start/end/factor: it defines start/end as SOURCE seconds and gives factor a full semantic spec (0.25-4.0 range, 2.0=double, 0.5=half, pitch preservation, preferred band). This adds meaning the bare 'number' types in the schema omit. project_id and motion_motif are left to the schema, which already documents them adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource+scope: 'Speed up or slow down a SOURCE-time range of the main video', which distinguishes it from siblings like set_volume (audio) and remove_speed (removal). It closes with 'THE tool for "speed up the boring part" / "slow-mo that moment"', giving an agent a crisp retrieval cue. The analogy 'like set_volume' reinforces what kind of operation it is without conflating the two.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: natural-language intents ('speed up the boring part', 'slow-mo that moment') and concrete quality guidance ('prefer 0.6-0.8x' slow motion, warned visual stepping below 0.6x). It names set_volume as a behavioral analog, which helps calibration. However, it does not explicitly state when-not-to-use or name mutually exclusive alternatives (e.g., remove_speed for undo), so it stops short of a full exclusion contract.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_speed_rampSet speed rampAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. WRITE: an eased slow-motion swing over a program window inside one shot: 1.0 -> low -> 1.0 (hold = share spent at the low) as <= 12 contiguous speed spans; or over a whole video insert (insert=id) as constant-rate pieces. The low is held where the source still shows a fresh frame each output frame (a 60p clip in a 30p program reaches 0.5x) unless allow_duplicates. Refused over speech unless allow_speech.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| end | No | ||
| low | No | ||
| hold | No | ||
| curve | No | ||
| start | No | ||
| insert | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| allow_speech | No | ||
| allow_duplicates | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, idempotent, non-destructive write; the description reinforces this with an explicit WRITE marker and adds real behavioral context beyond the annotations: the speech refusal (unless allow_speech), the duplicate-frame limit on how low the ramp can hold (unless allow_duplicates), and the 12-span cap. It still doesn't say what happens to any prior speed effect on the same range.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph with zero filler, front-loaded by the two labels an agent most needs first (PROJECT-SCOPED, WRITE) before the mechanics. Every clause carries distinct operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter write tool with no output schema, the description covers scope, operation kind, the result value (project identity), the geometry of the ramp, refusals, and the duplicate-frame edge case. Nothing essential to calling it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 10% (project_id alone is documented), so the description must carry the load. It does define low, hold ("share spent at the low"), insert, curve-by-implication (eased), and allow_duplicates/allow_speech, but gives no interpretation of id, start, or end beyond the loose phrase "program window".
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource and the exact shape it produces: an eased slow-motion swing 1.0 -> low -> 1.0 as up to 12 contiguous speed spans, or constant-rate pieces over an insert. This clearly distinguishes it from set_speed (constant rate) and remove_speed among the many add_*/set_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit preconditions and exclusions: the call is project-scoped, applies either to a program window inside one shot or to a whole insert via insert=id, and is refused over speech unless allow_speech. It does not explicitly name set_speed as the alternative for non-ramped speed changes, so the routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_stackSet stackAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. 2-4 panels of INDEPENDENT footage stacked (asset: | source: | ), labels, one panel may grow to full frame at grow_at. Replies with each panel's rect so a flash or effect can be clipped to one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| end | No | ||
| grow | No | ||
| start | Yes | ||
| labels | No | ||
| panels | Yes | ||
| grow_at | No | ||
| direction | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (write, idempotent, non-destructive, closed-world). Beyond those, the description adds real behavioral context: the call is scoped strictly to the explicit project_id, the active-project pointer is never guessed, the return includes project identity, and each panel's rect is reported. It still doesn't say what happens on partial overlap with existing stacks or how conflicting panel counts are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the PROJECT-SCOPED constraint, and each sentence carries content rather than filler. The panel-format shorthand is compact but slightly cryptic, and the return-value sentence could be folded in more tightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter write tool with 11% schema coverage and no output schema, the description does useful work by explaining the panel syntax and the return payload. However, half the parameters (start/end/grow/direction/id) are undocumented anywhere, which leaves the agent under-informed for a moderately complex layout call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11% (just project_id), so the description must carry the load, and it partially does: it defines the panel string syntax (asset:<key> | source:<seconds> | <storage key>), the 2-4 panel bound, labels, and grow_at. It leaves id, start, end, grow, and direction unexplained, so several parameters remain opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete outcome: stacking 2-4 panels of independent footage with labels and an optional grow-to-full-frame panel. That is specific enough to know it configures a multi-panel layout rather than, say, compositing a single element. It stops short of naming or contrasting the closest siblings (compose_panels, add_collage), so it is clear but not differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies where this fits ('so a flash or effect can be clipped to one') and insists the call is project-scoped, which is genuine selection guidance. But it gives no when-to-use-vs-alternative rule against the many sibling layout tools, leaving the agent to infer the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_text_motionSet text motionAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Set or replace coherent x/y/scale/rotation/opacity keyframes on an EXISTING ordinary text item. Curves use LOCAL seconds from that text's start, so moving the text window keeps its choreography. This replaces named entrance/exit animation with one authored motion system. Pass motion={} (or omit it) to clear the explicit curve and leave the text static. Subject-matted text cannot move.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| motion | No | Element-local motion curves. t is seconds from this text's own start; x/y are frame fractions, scale is relative, rotation is degrees, opacity is 0..1. | |
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds rich behavioral context: project-scoped action, returns project identity with the result, curves are in local seconds relative to the text's own start, empty/omitted motion clears the authored curve, and subject-matted text cannot be moved. This goes well past what readOnlyHint/idempotentHint/destructiveHint convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but has no filler: it front-loads project scoping, then states the mutation, timing semantics, replacement behavior, clearing behavior, and the subject-matted restriction in a logical sequence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool, it covers scope, supported/unsupported text types, local timing, clearing semantics, and partial return behavior. It stops short of fully describing the id/motion_motif parameters and the output shape, so a few gaps remain despite the substantial context provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the complex motion object well: x/y/scale/rotation/opacity keyframes, local t seconds, and clearing via motion={} or omission. However, it does not describe the id parameter or the motion_motif parameter itself, leaving some parameters primarily to the schema; coverage is good but not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Set or replace coherent x/y/scale/rotation/opacity keyframes') on a specific resource ('EXISTING ordinary text item'), and its project-scoped line clarifies scope. It also distinguishes adjacent cases by noting that subject-matted text cannot move and that it replaces named entrance/exit animation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: use it on existing ordinary text, pass motion={} or omit motion to clear the curve, and subject-matted text is unsupported. It also says it replaces named entrance/exit animation, but it does not name specific sibling tools for those alternatives, so it stops short of explicit tool routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_transitionsSet transitionsAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Transitions at SCENE CHANGES — junctions where the footage actually changes shot, or where an insert (b-roll, title card, generated clip) splices in. All duration-preserving junction effects (footage never overlaps, timing never changes). IMPORTANT — after cut_silences a talking-head video has one junction per removed pause, and nearly all of them are JUMP CUTS inside one continuous shot: same framing, same subject, the speaker's head half a word further along. A jump cut works by being invisible. Putting a whip or a dip on each one fires a full-screen effect every couple of seconds through footage that never changed scene, and it reads as broken — a real user shipped 45 whips through one continuous shot and said so. scope defaults to 'scene' and handles this for you; the result tells you how many junctions it actually landed on and how many it skipped, so report THAT number, not the cut count. Pass scope='every_cut' whenever that stronger treatment serves the edit. Styles: 'dip_black' = quick dip through black (calm, universal); 'dip_white' = soft white fade-through; 'whip_left'/'whip_right' = fast directional slide with motion blur (energetic vlogs/reels); 'zoom_punch' = accelerating push through the cut (hype, sports); 'glitch' = RGB-split/noise burst (tech, gaming); 'flash' = additive white pop peaking ON the cut (beat-synced edits). duration_s 0.1-1.5 (default 0.3; keep whip/flash short, 0.15-0.4). 'none' removes them (hard cuts again). True crossfades (overlapping footage) are NOT supported — offer one of these instead and say so.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | 'scene' (default) = only where the footage changes shot or an insert splices in. 'every_cut' = every junction including silence-removal jump cuts; use it whenever that is the intended treatment. | |
| style | Yes | ||
| duration_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. | |
| max_transitions | No | Optional cap for a restrained treatment. The tool distributes the effect across at most this many eligible scene changes; use 2-4 when the user asks for subtle or not excessive transitions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide basic read-only, destructive, and idempotent hints. The description adds crucial behavioral context: the tool is project-scoped and returns the project identity and a count of landed vs. skipped junctions, explicitly telling agents to report that number. It also explains the risk of applying transitions to jump cuts and gives duration defaults (0.3) with specific guidance for whip/flash (0.15-0.4). This far exceeds the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but dense, front-loading the critical scope warning and returning-count instruction before enumerating styles. Every sentence adds information, though it could be tightened by moving some style details to the schema. The structure is logical: scoping, then styles, then duration, then exclusions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter tool with no output schema, the description covers everything an agent needs: project scoping, parameter semantics (styles, duration, scope), the returned information (landed/skipped counts), and a critical real-world pitfall (jump-cut over-application). It also addresses the unsupported case of true crossfades. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at 67%, the description compensates fully: it explains every enum value for 'style' (dip_black, dip_white, whip_left/right, zoom_punch, glitch, flash, none) with visual/emotional intent, and provides the duration_s range (0.1-1.5, default 0.3) and specific guidance for whip/flash. It also clarifies the scope parameter's effect and the 'none' behavior. This goes well beyond the minimal enum listings in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets transitions at scene changes, defines what counts as a scene change (shot changes or inserts), and distinguishes between 'scene' and 'every_cut' scopes. It lists all style options with visual meanings, making the purpose unmistakable and differentiating it from similar tools like set_fades.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is given for when to use scope='scene' versus 'every_cut', with a concrete warning about the over-application of effects on jump cuts from silence removal. It also instructs agents to report the landed/skipped junction count rather than the cut count, and notes that true crossfades are unsupported, directing users away from those requests.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_typesetSet typesetBIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Change a typeset item (voice, layout, verb, depth, palette, words or window); it is solved again for this frame.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| end | No | ||
| exit | No | ||
| text | No | ||
| verb | No | ||
| depth | No | ||
| orbit | No | arc: rad/s | |
| start | No | ||
| voice | No | ||
| accent | No | #rrggbb | |
| layout | No | ||
| mirror | No | ||
| region | No | ||
| flip_at | No | item s: ink/accent swap | |
| emphasis | No | ||
| material | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which set readOnly=false, idempotent=true, destructive=false), it discloses the scoping behavior (acts only on explicit project_id), that it returns the project identity with the result, and that the item is re-solved for this frame. These add genuine behavioral context; only the exact mutation/reversibility semantics remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the scoping constraint front-loaded and no filler. Minor jargon ('solved again for this frame') slightly reduces immediate clarity, but the structure is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter mutation tool with no output schema and only 24% schema coverage, the description is too thin: it neither documents the numeric/positional parameters nor clarifies the many enum options, leaving the agent to infer most of the call contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 24% across 17 parameters. The description names a few properties (voice, layout, verb, depth) but leaves most — orbit, start, end, exit, text, accent, mirror, region, flip_at, emphasis, material — unexplained, so it fails to compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Change a typeset item') and enumerates the mutable aspects (voice, layout, verb, depth, palette, words, window). It is clearly differentiated from add_typeset/remove_typeset by the word 'Change', though it does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a real usage constraint — the call is PROJECT-SCOPED and never guesses the active-project pointer, with guidance to copy project_id from list_projects/open_project/project_state. However, it gives no guidance on when to prefer this over add_typeset, remove_typeset, or set_typography_scene.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_typography_sceneSet typography sceneAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Compose a speech-cued mixed-font phrase in ONE revision, as editable native text. All words reserve their final positions: earlier words never jump or replay their entrance. Stable id replaces its group. lines is 1-6 rows, each {runs:[{text,at,font,italic,scale,color}],size?}. at is the REAL PROGRAM cue in seconds (not source or relative time); default=start. Runs stay until the shared end. Use build to accumulate at spoken cues; still displays everything. Pair Inter Display Bold with sparse Instrument Serif italic for meaningful contrast, not every word. A line's size and run scale multiply font_size (fraction of canvas short edge). box=[left,top,right,bottom] is a measured region; align left/center/right; motion settle/none. Keep the box inside the safe area (left/right .045-.955, top/bottom .04-.96). leading is row spacing 1.05-1.8 (rows never overlap; this is not caption leading). fit=auto (default) clamps out-of-range numbers and the box into the safe area, then scales font_size down until every row fits (at most 40%, never below 0.05; longer copy is rejected with the size that would fit), and reports each applied value; fit=strict rejects instead. A cue before start snaps to start (reported); no other cue time is moved. Every problem is listed in one reply. mute_captions=true replaces dialogue ONLY in these actual live windows; false for independent labels. Use real words and cue times from get_kept_transcript. Inspect the opening, build, settled phrase and face clearance. This is designed typography, not a substitute for selecting a good story.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| box | No | ||
| end | Yes | ||
| fit | No | ||
| align | No | ||
| color | No | ||
| lines | Yes | ||
| start | Yes | ||
| motion | No | ||
| reveal | No | ||
| leading | No | ||
| font_size | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| mute_captions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, idempotent, non-destructive mutation. The description adds substantial behavior beyond that: project scoping, one-revision composition, stable id replacement, fit=auto clamping/scaling/reporting, fit=strict rejection, cue snapping to start, and consolidated problem reporting. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long and dense, but appropriate for a 14-parameter tool with low schema coverage. It is front-loaded with project scope and the core composition action, though the middle paragraphs could be structured more clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity, no output schema, and 7% schema description coverage, the description is complete enough. It covers project scoping, parameter semantics, fitting behavior, cue handling, error aggregation, and the fact that the project identity is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 7% schema description coverage, the description carries nearly the full burden. It explains lines and runs structure, at as real program cue time, font and scale semantics, size/scale multiplication with font_size, box coordinates, align, motion, leading, fit, and mute_captions. id, end, and reveal are addressed indirectly through stable id, shared end, and build/still language.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: compose a speech-cued mixed-font phrase in one revision as editable native text. It is clearly about setting a typography scene, but it does not explicitly distinguish itself from sibling typography tools such as set_typeset or add_kinetic_text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear operational guidance: use build to accumulate at spoken cues, still displays everything, and use real words and cue times from get_kept_transcript. It also explains mute_captions true vs false, but it does not state when to choose this tool over sibling typography tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_vector_graphicSet vector graphicAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Patch an existing vector graphic by id: its kind, program window, geometry, palette, progress value, or general motion. Pass motion={} to clear keyframes. This modifies the existing layer instead of stacking a duplicate.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| id | Yes | ||
| end | No | ||
| kind | No | ||
| color | No | ||
| start | No | ||
| value | No | ||
| width | No | ||
| height | No | ||
| motion | No | Element-local motion curves. t is seconds from this text's own start; x/y are frame fractions, scale is relative, rotation is degrees, opacity is 0..1. | |
| opacity | No | ||
| rounding | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. | |
| stroke_color | No | ||
| stroke_width | No | ||
| background_color | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already specify readOnly=false, idempotent=true, non-destructive. Description adds value beyond annotations: project-scoped behavior, identity return, and the duplicate-avoidance trait. It does not detail permissions or failure modes, but prior annotations lower the bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the PROJECT-SCOPED constraint and the verb-resource statement. Two sentences carry most value; a minor structural improvement would be to separate the motion={} clearing behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the core mutation semantics and scope, but with 18 parameters, a nested motion object, and only 17% schema coverage, the description is incomplete. It should explain motion curve timing, motion_motif usage, and required project_id handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 17%, so the description must compensate but only names field categories (kind, window, geometry, palette, progress, motion) and one clearing idiom. It omits syntax for 18 parameters including motion_motif and project_id semantics, leaving significant gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (patch) and resource (existing vector graphic by id) and enumerates the mutable fields. Distinguishes from sibling add_vector_graphic by noting it modifies rather than stacks a duplicate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear usage context: patch an existing graphic by id, and pass motion={} to clear keyframes. Implicitly contrasts with add_vector_graphic, but doesn't explicitly name the sibling or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_volumeSet volumeAIdempotentInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Volume automation on the ORIGINAL footage's audio (the speaker) over a SOURCE-time span. NOT for music or voiceover loudness — use set_audio_gain for those.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| start | Yes | ||
| gain_db | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry idempotentHint=true and destructiveHint=false. The description adds genuine behavioral context beyond those: the call is project-scoped, acts only on the explicit project_id, and 'returns the project identity with its result.' No contradiction with annotations, and it clarifies the return behavior which the annotations do not cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler. The scoping warning is front-loaded before the purpose, and the exclusion/alternative is last. Every sentence earns its place and the most important operational constraint appears first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain the return value; it does ('returns the project identity with its result'). Scope and the alternative tool are covered. But for a 4-parameter tool with 25% schema coverage, the missing unit semantics for start, end, and gain_db leave an agent guessing at invocation values, so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (project_id alone is documented). The description partially compensates by implying start/end are SOURCE-time span boundaries and gain_db drives the volume automation, and it reinforces project_id's immutable-scope role. However, it never specifies units (seconds vs frames for start/end; whether gain_db is decibels or a multiplier), leaving the three undocumented parameters under-explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource-scope pattern: 'Volume automation on the ORIGINAL footage's audio (the speaker) over a SOURCE-time span.' It explicitly carves out the domain (speaker audio on source footage) and names what it is NOT (music/voiceover loudness), clearly distinguishing it from the sibling set_audio_gain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit exclusion with a named alternative: 'NOT for music or voiceover loudness — use set_audio_gain for those.' It also states the project-scoped constraint up front, telling the agent it must pass an explicit project_id. This is direct routing guidance with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shape_musicShape musicAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. WRITE: bend the user's track to the story: payoff (program seconds or the words) solves the music item's offset/start/end/fades so the DROP lands on it and the bed ends on a bar line; hold_s holds silence before it; intro_filter lowpass|highpass opens exactly on the drop; stutter_at slices a hit. User tracks only.
| Name | Required | Description | Default |
|---|---|---|---|
| hold_s | No | ||
| payoff | No | ||
| dry_run | No | ||
| music_id | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| stutter_at | No | ||
| intro_filter | No | ||
| stutter_beats | No | ||
| stutter_slice | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write profile (readOnly=false, destructive=false, idempotent=false), so the bar is lower; the description still adds real context: project-scoping that ignores the active-project pointer, the returned project identity, and exactly which music-item fields get solved. It omits any mention of the dry_run preview flag and idempotency nuances, which are the notable remaining gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scoping and WRITE markers are correctly front-loaded, but the body is a single semicolon-chained sentence mixing four parameters, making it hard to parse. Every clause is informative, but the structure prioritizes density over readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation with no output schema and very low schema coverage, the description covers the musical intent but leaves four parameters undocumented and the return shape only vaguely stated ('project identity with its result'). Adequate to call it, incomplete for confident use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 11% (project_id alone), so the description must carry the load and does so partially: it explains payoff, hold_s, intro_filter, and stutter_at. It says nothing about music_id, dry_run, stutter_beats, or stutter_slice (the two enum slices 1/8 and 1/16), leaving key controls unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('shape_music' / 'bend the user's track') and is explicit that it edits the music item's offset/start/end/fades so a payoff lands on a drop. It is clearly a timing/shaping mutation rather than add/remove/swap music, though the phrasing ('bend the user's track to the story') is idiomatic and takes a beat to decode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a scoping condition ('User tracks only') and per-parameter intent, which implies when the tool applies, but never names or contrasts with close siblings such as set_music_fit, swap_music, add_music, or plan_to_music. The agent must infer the alternative from the sibling list rather than the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shorts_statusCheck podcast shorts progressARead-onlyInspect
Read an explicit project's Podcast to Shorts progress, planner job, generated child project IDs, edit versions, and final-render states. Safe to poll while clips are being built. If project_id names a generated short, this reports its parent run and preserves that explicit child identity in the answer.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, so the description adds value beyond them by confirming poll-safety and by disclosing the child-short behavior: reporting the parent run while preserving the explicit child identity. This contextual trait is not inferrable from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the primary purpose, followed by poll safety and the identity edge case. Every sentence contributes useful information without repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lists the key pieces of information returned (progress, planner job, child project IDs, edit versions, final-render states) and covers the important safety and edge-case behaviors. Given no output schema, this is sufficient for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It makes clear that project_id refers to 'an explicit project' and explains the edge case of a generated short ID. Although it doesn't explain where to obtain the ID or specify formatting, a single required integer parameter named project_id is adequately disambiguated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Read an explicit project's Podcast to Shorts progress...' and enumerates exactly what is returned (planner job, child project IDs, edit versions, render states). It also clarifies the special case where project_id is a generated short, distinguishing it from siblings like make_shorts or project_state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Safe to poll while clips are being built' gives a clear usage context and signals this is a read/status operation. The description does not explicitly name alternatives or state when not to use it, but the context is sufficiently clear for an agent to know it can be called during a build process.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
showcase_demoShowcase demoAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. PLACE A SCREEN RECORDING AND CUT IT LIKE A PRODUCT VIDEO — one call. Splices the clip into the edit, then puts a zoom on each run of POSITIONED clicks. Click sounds are optional; choose them when they serve the edit. Works on ANY video clip, not just a record_website_demo capture. On a capture I made, the event track is exact: the frame pushes in and TRAVELS between the buttons, with a soft pop on each page change and a swipe under each scroll. On a recording the USER made, pass click_times=[...] (seconds into the clip) to supply timing. Clicks cannot be located from timing alone, so no zoom is invented without a position. With neither, it still places the clip and tells you plainly that nothing was synced. at_output_s defaults to the END of the current edit; zoom_strength 0.05-4.5 (0.4 default — screen text needs a real push to read); set zooms=false to place it plainly; click_sounds=true is opt-in. Follow up with add_zoom_path to make the frame travel on a user recording, and enhance_cursor if the pointer is too small to follow.
| Name | Required | Description | Default |
|---|---|---|---|
| zooms | No | ||
| asset_key | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| at_output_s | No | ||
| click_times | No | ||
| click_sounds | No | ||
| zoom_strength | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only convey readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false — a bare mutation profile. The description carries the full behavioral burden and exceeds it: it reveals the PROJECT-SCOPED guarantee, the degraded-but-explicit fallback ('With neither, it still places the clip and tells you plainly that nothing was synced'), the constraint that no zoom is invented without a position, and precise default behaviors (at_output_s at END, zoom_strength 0.4). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but every sentence carries load-bearing information for a 7-parameter, no-output-schema tool. It is front-loaded with the PROJECT-SCOPED constraint, then flows logically through purpose, behavioral specifics, parameter guidance, and follow-up tools. The only deduction is length — it is at the upper edge of density and could benefit from tighter phrasing, though no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating 7-param tool with no output schema and 14% schema coverage, the description is thorough: scope, input-type handling, defaults, edge cases, and follow-up tools are all covered. The one gap is that the return value is only glossed as 'the project identity with its result' without detailing its structure or whether the edit state is the full return. Minor against an otherwise complete picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 14% (solely project_id has a description), so the description must compensate — and it does exhaustively. It gives units and format for click_times ('seconds into the clip'), a numeric range plus rationale for zoom_strength ('0.05-4.5 (0.4 default — screen text needs a real push to read)'), and semantic intent for zooms and click_sounds ('opt-in'). It even explains the failure mode of timing without position, which the schema cannot express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb-resource pair: 'PLACE A SCREEN RECORDING AND CUT IT LIKE A PRODUCT VIDEO — one call. Splices the clip into the edit, then puts a zoom on each run of POSITIONED clicks.' This is specific and distinguishes it from siblings like add_zoom and add_zoom_path, which perform single zoom operations. It also clarifies scope with 'Works on ANY video clip, not just a record_website_demo capture,' removing any ambiguity about applicable inputs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names alternatives and the conditions that select them: 'Follow up with add_zoom_path to make the frame travel on a user recording, and enhance_cursor if the pointer is too small to follow.' It also distinguishes when click_times is needed ('On a recording the USER made') versus when it isn't ('On a capture I made'), and explains the zooms=false mode. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_brollSource brollAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. WRITE: the B-roll director. moments=[{query (what the shot SHOWS), word or at, purpose, duration_s, kind video|photo|any, archival}] -> searches Pexels, Pixabay, Openverse, Wikimedia Commons, NASA (and the Internet Archive when archival) in parallel, keeps only licences that allow commercial use and edits, judges a short list on the real files (vertical-crop survival, resolution, motion, depth of field, range, colour distance to your hero frame, watermarks, starved encodes, posed stock) and cuts the winner in as a broll fx item: graded to match the camera, grain matched, photos moving in 2.5D, its licence line on the item. Speech and captions continue over it. place=false researches only. No library live: says so and returns a shoot list.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | ||
| place | No | ||
| moments | Yes | ||
| providers | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare write (readOnlyHint false), openWorld true, non-idempotent, non-destructive, and the description does not contradict that. Beyond annotations it adds substantial behavioral detail: providers searched in parallel, commercial-licence filtering, the real-file judging criteria (watermarks, motion, crop survival), grading/grain matching, and the licence line on the item. It does not cover retry/cost or how failures are reported, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The leading 'PROJECT-SCOPED:' and 'WRITE:' tags front-load the most important facts, which is good. But the core sentence is a single breathless run-on packed with parentheticals and arrows that is genuinely hard to parse. Structure is present at the top and then collapses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, multi-provider, write-side tool with no output schema, the description covers what is searched, what survives filtering, what is produced, and the zero-library fallback. It also notes that the project identity is returned. Coverage is strong, with minor gaps around max/providers and failure reporting.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20%, so the description must carry weight. It explains the moments fields well (query = what the shot SHOWS, word/at, purpose, duration_s, kind, archival) and the place=false semantics. But it leaves max, providers, moments.id, and query_variants unexplained, so it only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: it sources stock B-roll and cuts the winner in as a broll fx item, and it is self-described as 'the B-roll director.' It also distinguishes itself from research-only behavior via 'place=false researches only.' However, it does not name its close siblings (research_broll, find_footage, add_stock_media) so an agent must infer the boundaries rather than being told them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use it when you want footage sourced AND cut in, and place=false when you only want research. The 'No library live' fallback (returns a shoot list) is real conditional guidance. But there is no explicit when-not or routing to research_broll / find_footage / search_stock, so the agent is left to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_media_sequenceStart media sequenceAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Start a NEW media-only sequence from one uploaded video clip or image, replacing the current programme in ONE valid append-only EDL write. Use this when the requested story should be assembled from uploaded assets instead of the project's main video. This is the safe first operation in an atomic recipe: it never creates an invalid empty timeline. Add later scenes with insert_media. Every earlier EDL version remains recoverable. duration_s and clip_start_s select a video window; motion/fit match insert_media.
| Name | Required | Description | Default |
|---|---|---|---|
| fit | No | ||
| motion | No | ||
| asset_key | Yes | ||
| duration_s | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| clip_start_s | No | ||
| motion_motif | No | Active Blueprint motion motif id this event executes; never 'hold'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only readOnlyHint=false and destructiveHint=false, so the description carries the burden. It discloses that the call 'replacing the current programme' (a mutation) but assures 'Every earlier EDL version remains recoverable' and 'it never creates an invalid empty timeline.' It also notes the atomic append-only write. This goes beyond annotations and sets expectations for side effects and safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but every sentence earns its place: scoping note, purpose, usage trigger, safety guarantee, recoverability, and parameter hints. It is front-loaded with the critical 'PROJECT-SCOPED' and the core action, and it avoids fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters and no output schema, the description covers the core purpose, usage context, and some parameter semantics, but it omits details like the exact return format (only 'returns the project identity with its result'), error conditions, and prerequisites beyond project_id (which is in schema). It is adequate but not exhaustive for a complex mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (29%), so the description must compensate. It does add meaning for duration_s and clip_start_s ('select a video window') and references motion/fit to insert_media for consistency. However, it does not explain asset_key (though implied by 'uploaded video clip or image') or motion_motif beyond the schema's own description. It partially fills the gap but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: 'Start a NEW media-only sequence from one uploaded video clip or image, replacing the current programme in ONE valid append-only EDL write.' It clearly identifies the resource (a media sequence) and distinguishes it from the project's main video, and names the sibling 'insert_media' for later scenes, so an agent can differentiate it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit usage condition: 'Use this when the requested story should be assembled from uploaded assets instead of the project's main video.' It also positions it as 'the safe first operation in an atomic recipe' and points to insert_media for later scenes. It lacks an explicit 'when not to use' but the context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_devicesSuggest devicesARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: up to 8 ranked creative-device candidates for the CURRENT program (silhouette flashes, punctuation frames, junctions, grade windows, finishes, type behind the subject...), each bound to the moment that earns it (a stressed word, the payoff, a cut, a section, a beat of the user's own track) and checked against the intensity budget, flash safety and the restraint rules. Each comes with the exact apply_edit_batch operation that writes it: pick the ones that serve the story and write them in ONE apply_edit_batch, then proof_device them. Never proposes a zoom or a sound unless asked; zero candidates is a fine answer.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| asked | No | what the user explicitly asked for | |
| start | No | ||
| families | No | limit to card families, e.g. matte_fx, punctuation, transition, finish | |
| intensity | No | default: the project's set_intensity | |
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| max_candidates | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, non-destructive profile, and the description adds real context: it is project-scoped (acts only on explicit project_id, never the active-project pointer), checks candidates against intensity budget, flash safety and restraint rules, and reports that zero candidates is acceptable. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the two most decision-critical facts (PROJECT-SCOPED, READ) and every sentence carries weight about scope or process. It is a single dense paragraph with heavy parentheticals that slightly impede parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps in to describe the return shape (ranked candidates each bound to a moment and carrying an apply_edit_batch operation) and the intended follow-up workflow. Given 57% schema coverage, a few parameter details remain undocumented, but the operational picture is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 57% schema coverage across 7 params, the description clarifies project_id scoping, ties 'intensity' to the budget concept, and explains the 'asked' behavior (no zoom/sound unless asked). It leaves families, max_candidates, start and end to the schema, so it adds only partial meaning over structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (suggest) and resource (ranked creative-device candidates) and enumerates the exact families it draws from (silhouette flashes, punctuation frames, junctions, grade windows, finishes, type behind the subject). An agent can distinguish this from suggest_emphasis/suggest_motion_beats/suggest_recipes by the explicit content scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear workflow guidance: pick the ones that serve the story, write them in ONE apply_edit_batch, then proof_device them. It also sets a boundary ('never proposes a zoom or a sound unless asked; zero candidates is a fine answer'). It stops short of explicitly naming the sibling suggest_* tools and the condition that selects them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_emphasisSuggest emphasisARead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: candidate emphasis words from the REAL transcript — the most vocally stressed words (measured), words with digits, and rare/distinctive words — as a verbatim list to pass to add_captions / set_caption_style emphasis_words.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds value by detailing the read behavior (returns project identity with result) and the types of words returned. It also explicitly states it reads from the REAL transcript, providing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence but packs essential information: scope, action, criteria, and output destination. It is front-loaded with 'PROJECT-SCOPED' and 'READ'. It is concise yet complete for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter, no output schema, and annotations covering safety, the description sufficiently explains what the tool returns and how to use it. It even names the downstream tools, making it complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the parameter description already explains project_id as immutable scope and how to obtain it. The tool description reinforces this with 'PROJECT-SCOPED' but does not add new semantic meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear purpose: it reads candidate emphasis words from the transcript and returns them as a verbatim list. It specifies the resource (REAL transcript), the criteria (vocally stressed, digits, rare/distinctive), and the downstream use (add_captions/set_caption_style). This is specific and distinguishes it from other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when you need emphasis words to pass to captioning tools. It does not explicitly mention alternatives or when not to use it, but the context is clear enough. It also notes project-scoping, which helps the agent avoid misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_match_cutsSuggest match cutsAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. WRITE when write=true (else READ): a rhyming sequence — face_aligned (eyes conformed onto one line, accelerating), shape_chain (circles centre to centre), same_framing — as cropped, muted inserts spliced at 'at' (program seconds, snapped to a cut).
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | ||
| at | No | ||
| kind | No | ||
| write | No | ||
| accelerate | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and idempotentHint=false but say nothing about the mode switch; the description supplies that nuance ('WRITE when write=true (else READ)') plus the fact that the call returns the project identity alongside its result. It adds real behaviour beyond the annotations, though it says nothing about reversibility or cost of the write path.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Everything is packed into one dense block with the scope constraint front-loaded and no filler sentences. It is terse to the point of being hard to parse on first read, but each clause carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps in to say what comes back (project identity plus result) and what the inserts look like. For a 6-parameter tool it covers nearly every input except `n`, so an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17%, so the description has to carry the load — and it largely does: it defines `write` (mode switch), `at` (program seconds, snapped to a cut), and all three `kind` values with their visual meaning, and hints at `accelerate` via 'accelerating'. Only `n` (number of inserts) goes unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete output — 'a rhyming sequence' — and enumerates the three variants (face_aligned, shape_chain, same_framing) rendered as 'cropped, muted inserts spliced at at'. That is specific enough to separate it from neighbours like find_shots or beat_align_cuts, though it never states plainly that it proposes (rather than applies) edits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives the crucial write-vs-read rule ('WRITE when write=true (else READ)') and the project-scoping requirement, which is genuine usage guidance. But it never says when to reach for this tool instead of the many adjacent suggestion tools (suggest_motion_beats, suggest_story, beat_align_cuts), so the routing decision is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_motion_beatsSuggest motion beatsAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: a timed premium beat sheet of GRAPHICS for the CURRENT program: hook interrupt at 0 s, counters on spoken numbers (values parsed from the words), checklists on enumerations, versus cards on contrasts, hero word slams on emphasis words, native-UI CTAs on spoken calls to action — each with program times, template, extracted params and the transcript to paraphrase — plus long holds as a diagnostic. Zooms and sound effects are optional, never rules, so both are OFF by default: camera=true adds a short list of moments that could earn a camera move (never one per cut or hold), sounds=true names the approved library sound each beat could take. Call it after the cut and captions are set, then place the beats you agree with.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | No | opt in to a few optional camera candidates (default false) | |
| sounds | No | opt in to optional library-sound suggestions per beat (default false) | |
| density | No | spacing between hero beats (premium ≈ every 2-3 s) | |
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly labels the call 'READ' and frames it as scoped/analysis-only, while the annotations declare readOnlyHint=false (and idempotentHint=false). This is a direct text-vs-structured conflict that could lead an agent to assume the call has no side effects when the server says otherwise. Flagged as an annotation contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the project scoping and read/usage constraints before the detail, and there is no filler sentence. The middle sentence is a very dense single-line enumeration of beat types that would scan better as a list, but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the heavy lifting of describing the return: program times, template, extracted params, transcript to paraphrase, plus long holds as a diagnostic. Defaults for the optional flags are stated. The remaining gap is the unresolved read-only/side-effect question raised by the READ label versus readOnlyHint=false.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameter documentation is already carried by the schema (baseline 3). The description still adds real meaning beyond it — camera=true yields 'a short list of moments that could earn a camera move (never one per cut or hold)' and sounds=true 'names the approved library sound each beat could take' — clarifying the semantics of the optional flags rather than repeating them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — it returns a timed premium beat sheet of graphics for the current program — and enumerates exactly what a 'beat' is (hook interrupt, counters, checklists, versus cards, hero-word slams, native-UI CTAs). This clearly distinguishes it from placement siblings like add_motion_graphic/set_motion_graphic and from adjacent suggest_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite and workflow: 'Call it after the cut and captions are set, then place the beats you agree with' — making clear the tool only suggests and a separate call applies them. It does not, however, name or exclude overlapping siblings such as suggest_emphasis, so the routing guidance stops short of fully disambiguating alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_recipesSuggest recipesBRead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: the creative MOVES this cut earns — each a whole editor's move solved on the right word, not a single effect: mono_until_turn (B&W until the turn, colour lands ON the word), colour_kept_payoff (grey world, the speaker in colour), silhouette_hold, negative_hits (1-frame negatives into the payoff), white_silhouette (the speaker flashes white on the payoff), lab_scan (registered variant strobe), thermal_flip, light_figure (the speaker as light on black), echo_trail, room_dims (the room dims round him on the turn), world_negative (the world inverts round him on a hard negation), colour_drain (a build drains to grey, colour snaps back on the payoff). Ranked by story fit x freshness: a move the other shorts of the same batch used ranks lower. Each comes with the word it lands on, why, a reference exemplar and the exact apply_edit_batch ops. Silent, zoom-free, flash-safe.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| start | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, non-destructive, closed-world), so the bar is lower, yet the description adds real substance: project scoping, that the project identity is returned with the result, the freshness-discounted ranking policy, the per-result payload (word, why, exemplar, ops), and the aesthetic guarantee 'silent, zoom-free, flash-safe'. This is materially more than the annotations convey. It does not explain result count limits or whether start/end scope the analysis.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the useful PROJECT-SCOPED and READ labels, which is good practice. However the body is a long, jargon-dense enumeration of 13 move names with parenthetical re-explanations that occupies most of the text; for a suggestion tool whose output itself names the moves, this list is largely overhead that dilutes the actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the return-value burden, describing the shape of each suggestion (word it lands on, why, exemplar, apply_edit_batch ops). It also discloses scoping and ranking. The remaining gap is the undefined start/end/max_results parameters, which an agent needs in order to bound the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only project_id is documented, and its schema text is already thorough). start, end, and max_results are undocumented in both schema and description. The description never tells the agent that start/end scope the cut or what max_results controls, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (creative MOVES/recipes a cut earns) and enumerates the actual move types, so an agent knows this is a suggestion engine for editorial visual moves. It is distinguishable from apply_recipe/apply_edit_batch because it states it returns the moves plus the exact apply_edit_batch ops rather than executing them. It never states a plain verb like 'suggest' — the purpose is conveyed through output description and heavy domain jargon, which is clear but indirect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative-tool guidance. It never points to apply_recipe, apply_edit_batch, or the sibling suggest_* tools (suggest_devices, suggest_emphasis, suggest_motion_beats), even though these overlap. The only contextual rule given is a ranking property ('a move the other shorts of the same batch used ranks lower'), which is behavior, not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_storySuggest storyBRead-onlyInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. READ: up to 8 proposals bound to THIS story's beats (hook, turn, payoff, callback, loop): type lockups in voices new to the project, a callback rhyme, a colour turn on the payoff (B&W only as a device), the user's drop on the payoff, a montage, a loop rhyme, Wave 1 punctuation; each with what is new about it. pack auto, a pack letter or none (the user's words win).
| Name | Required | Description | Default |
|---|---|---|---|
| pack | No | ||
| max_n | No | ||
| intensity | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds real context beyond them: it acts only on the explicit project_id (not the active-project pointer), returns the project identity alongside results, caps output at 8 proposals, and explains pack resolution precedence. It does not describe pagination or failure behavior, keeping it out of 5 territory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Key scoping (PROJECT-SCOPED, READ) is front-loaded, which is good. But the middle of the description is a dense, comma-spliced run-on cataloguing proposal types that reads as jargon and could be tightened without losing meaning. Sized reasonably but not clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the return burden; it partly does so by enumerating what the proposals are and noting each says 'what is new about it'. Still, the 'intensity' parameter is unexplained and the shape of the returned result is only implied, leaving gaps for a four-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 25% schema coverage the description must compensate. It covers 'pack' semantics (auto vs a letter vs none, user's words win) and implies max_n with 'up to 8'. However 'intensity' (calm/designed/charged) is never explained, leaving one of four parameters undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (returns up to 8 proposals bound to this story's beats) and enumerates the story grammar (hook, turn, payoff, callback, loop), which is distinctive against the many suggest_* siblings. It is jargon-heavy but the verb and resource are clear. It stops short of naming a sibling to route against, so it does not reach 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It notes the call is PROJECT-SCOPED and must use the explicit project_id, and gives a small decision rule for 'pack' ('the user's words win'), but offers no when-to-use guidance relative to siblings like suggest_devices, suggest_emphasis, suggest_match_cuts, or suggest_motion_beats. An agent gets no condition for selecting this tool over the alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swap_musicSwap musicAInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Replace the TRACK of an existing music item while keeping its position, level and fit — THE tool for 'use a different song'. The new track is the user's: their upload, a song they named or a library track they picked. id from get_edl; storage_key as for add_music.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. | |
| storage_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare it is a non-read, non-idempotent, non-destructive mutation, but the description adds real substance: it acts only on the explicit project_id (never the active-project pointer) and returns the project identity with its result. It also discloses that position/level/fit are preserved, which tells the agent the edit is a targeted swap rather than a rebuild.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the project scoping constraint, then the operation, then input provenance — every sentence carries information. Slightly dense with the parenthetical asides and emphatic caps, but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-required-param mutation tool with no output schema, the description covers the mutation semantics, preservation guarantees, required scope, and input sources, and notes the return shape (project identity). Only minor gaps remain, such as failure behavior when the referenced music item does not exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (project_id is the only documented property), so the description must compensate — and it does: id is sourced from get_edl, storage_key follows the same convention as add_music, and project_id is explicitly required and immutable-scoped. This meaningfully fills the gaps left by the bare schema for the two undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Replace) and resource scope (the TRACK of an existing music item), and contrasts with the siblings that add or fit music by naming the invariant that is preserved (position, level, fit). The quoted user-intent phrase 'use a different song' makes the tool's niche instantly identifiable among add_music, set_music_fit, and swap_music.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear selecting condition ('use a different song' rather than adding or removing a music item) and anchors inputs to other tools (id from get_edl, storage_key as for add_music). It stops short of explicitly stating when NOT to use it (e.g. no music item exists yet → use add_music).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_pointTrack pointBInspect
PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Follow a point through its shot (fx track): t and x, y in program fractions from look_at. Attach graphics with to='track:' (arrows, doodles, labels on a moving thing).
| Name | Required | Description | Default |
|---|---|---|---|
| t | Yes | ||
| x | Yes | ||
| y | Yes | ||
| id | No | ||
| end | No | ||
| label | No | ||
| start | No | ||
| radius | No | ||
| project_id | Yes | Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the agent knows this is a non-idempotent, non-destructive write. The description adds that it acts only on the explicit project_id and returns project identity, but does not say what state is changed or created, which matters for a non-idempotent mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with the scoping caveat front-loaded and no filler. The mixed use of English and pseudo-syntax (to='track:<id>') is slightly compressed but each sentence carries information, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, non-idempotent mutation with no output schema and 11% schema coverage, the description leaves key parameters (start, end, radius, label) and the nature of the mutation unexplained. It covers the project scoping and one downstream usage but is not complete enough to call confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 11%, so the description carries most of the burden, yet it only explains t, x, y and the track id convention while leaving id, start, end, radius, and label undocumented. The coordinates note is genuinely helpful, but five of nine params remain opaque in both description and schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (follow a point through its shot / fx track) and clarifies the coordinate system (t and x,y in program fractions from look_at), which is enough to distinguish it from sibling add_* graphics tools. It falls short of 5 because the core resource being produced (a tracking marker/attachment) is implied rather than named outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful context that the call is project-scoped and that the result feeds to='track:<id>' for attaching graphics, which implies a usage workflow. However, it never states when to choose this over siblings like look_at, select_object, or set_text_motion, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_finishFinish an uploadAInspect
Finish an upload once every byte is in storage. For a main video this starts the analysis (transcript, shots, silences) — poll index_status until it is done.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| role | No | Optional and valid only with kind='clip'. Marks a reference-only Shorts style clip. | |
| parts | No | Multipart uploads only: [{part_number, etag}] in order | |
| filename | No | ||
| upload_id | No | Multipart uploads only | |
| duration_s | No | Optional locally probed media duration in seconds. | |
| project_id | Yes | ||
| storage_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no safety hints (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description must carry behavioral context. It discloses the key side effect for main videos (starts transcript, shots, silences analysis) and suggests polling. However, it omits other behaviors such as idempotency (whether calling twice is safe), failure modes, or behavior for non-main video kinds. This is a partial disclosure, not a full one.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The primary condition and action are front-loaded, and the side effect and polling instruction follow naturally. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with no output schema, the description covers the main flow (finish upload, start analysis) but leaves many details unaddressed: multipart upload handling (parts, upload_id), the role parameter for clips, the meaning of kind values beyond 'main video', and what happens for non-video kinds. The reference to index_status is helpful but incomplete overall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, with several parameters (kind, filename, project_id, storage_key) lacking descriptions. The tool description adds no parameter-level detail, so it doesn't compensate for the missing schema descriptions. For example, it never clarifies that storage_key is the key returned by upload_start, or how kind affects behavior. This leaves agents guessing on required parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Finish an upload once every byte is in storage.' It identifies the specific action (finish) and resource (upload), and distinguishes its side effect (starts analysis) from other upload-related tools like upload_start. It also names the follow-up sibling tool (index_status), which helps an agent understand the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear precondition ('once every byte is in storage') and directs the agent to poll index_status after completion. It implies the tool is used after upload_start and all bytes are stored, but it doesn't explicitly mention alternatives or when not to use it. The context is sufficient for most cases, though it could be more explicit about ordering relative to upload_start.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_startStart uploading a local fileAInspect
Begin uploading a LOCAL file into an explicit project. Returns presigned URL(s) you upload the bytes to yourself (curl), then call upload_finish. kind: 'original' the main video, 'clip' b-roll, 'music' audio, 'image' a still. A clip may instead be marked role='shorts_reference' for reference-only Shorts style analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| role | No | Optional and valid only with kind='clip'. Makes the upload reference-only Shorts style input, not placeable media. | |
| filename | Yes | Name with extension, e.g. talk.mp4 | |
| duration_s | No | Optional locally probed media duration in seconds; repeated in the returned upload_finish contract. | |
| project_id | Yes | ||
| size_bytes | Yes | Exact size of the local file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all annotations false, the description carries full behavioral disclosure. It reveals that the tool returns presigned URLs, that the agent must upload bytes itself, and that a subsequent upload_finish call is required. It also explains kind and role options. This is substantive behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler. The first sentence states the purpose and the presigned-URL flow; the second clarifies kind and role. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-phase upload initiation, the description covers the essential workflow, return behavior, and kind/role semantics. It does not mention error conditions or prerequisites (e.g., that the project must already exist), but given sibling tools like create_project and no output schema, it provides sufficient context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so the description compensates for the undocumented 'kind' parameter by explaining each enum value ('original', 'clip', 'music', 'image') and the conditional 'role' ('shorts_reference'). This adds meaning beyond the schema for the most semantically rich parameters. Other parameters (filename, size_bytes, duration_s) have schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Begin uploading'), the resource ('LOCAL file into an explicit project'), and the multi-step flow (returns presigned URLs, upload, call upload_finish). It also explains kind and role semantics, distinguishing this tool from upload_finish and other upload-related siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the two-step workflow (get presigned URLs, upload, then call upload_finish) and explicitly notes 'LOCAL file' to set scope. However, it does not explicitly name alternatives for remote uploads (e.g., fetch_url or download_url), so the 'when not to use' guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_jobWait for a running jobARead-onlyInspect
Wait for a background job (a render, or a tool call that outran its reply) and return its result. Safe to call repeatedly — each call waits a bounded time and tells you whether it is still running.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true and destructiveHint=false, indicating safe read-only behavior. The description adds context beyond annotations: it waits a bounded time and returns status. It does not contradict annotations. It does not disclose failure behavior or return format details, but for a simple wait operation this is adequate given the minimal annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundant information. The purpose is front-loaded, and the repeated-call safety note is directly relevant. Every phrase adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description should explain what is returned. It says 'return its result' and 'tells you whether it is still running', which partially describes the output. However, it lacks specifics on return format, error handling, or what happens if the job never finishes. For a simple one-parameter tool, it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate by explaining the job_id parameter. The description mentions 'background job' but does not explicitly say that job_id identifies the job. The parameter is left to inference. This is a notable gap for a tool with a single required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: waiting for a background job and returning its result. It provides concrete examples (render, tool call) and distinguishes itself from the many sibling tools by being the only wait-related operation. The verb 'wait for' and resource 'background job' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says it is 'safe to call repeatedly' and that each call 'waits a bounded time and tells you whether it is still running', giving clear guidance on repeated use. It implies usage after starting a background job, and since no sibling tool offers similar functionality, no exclusions are needed. The only minor gap is not explicitly stating when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_videoWatch the video itselfARead-onlyInspect
WATCH THE VIDEO YOURSELF — the real file, pixels and audio, not a description of it. Use this instead of look_at whenever your own model can take video input: look_at sends frames to Valmera's vision model and hands you back a PARAGRAPH, while this hands you the footage. kind 'timeline' (default) is the assembled program as the viewer sees it — it renders the current edit first if it has not been rendered; 'source' is the raw uploaded footage; 'asset' is one uploaded clip (pass asset_key). start/end watch a window rather than the whole thing. The reply, in this call: a direct download link to a plain MP4 (structuredContent.url too), plus — unless frames=false — ONE sheet of sampled frames as an image and the window's sound as audio when it fits. Cheap: normally it hands over a file that already exists, untouched.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Watch up to this second. | |
| kind | No | Default 'timeline' — the current edit. | |
| start | No | Watch from this second. OUTPUT seconds for 'timeline', source seconds otherwise. | |
| frames | No | Default true. False returns only the video file/link and suppresses sampled frame sheets plus their attached audio; use false for clean external ASR retrieval. | |
| max_mb | No | Shrink to about this many megabytes. Use when your model has a file-size limit. | |
| render | No | kind='timeline': false watches the last render that exists instead of rendering the current edit, and says how stale it is. Default true. | |
| delivery | No | A download link either way. Embedding the file in the reply is off on this deployment. | |
| asset_key | No | kind='asset' only: the storage_key list_assets prints. | |
| max_height | No | Cap the picture height (e.g. 360). Never up-scales. | |
| project_id | Yes | Required immutable project scope. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, non-destructive), but the description adds real behavioral context: it renders the current edit on demand for kind='timeline', embedding is disabled on this deployment so delivery is always a link, and it is cheap because it usually hands over an existing file untouched. It does not describe limits on window length or sampling density.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the decisive differentiator (real footage vs. a paragraph), then the kind modes and the reply shape. Dense but each clause adds something; the all-caps opening and em-dash asides are slightly noisy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does: a plain MP4 download link, structuredContent.url, one sampled frame sheet plus window audio unless frames=false. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description goes further by tying parameters to intent — frames=false for clean external ASR retrieval, max_mb for model file-size limits, and start/end as a window versus the whole program.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('WATCH THE VIDEO YOURSELF — the real file, pixels and audio') and explicitly contrasts itself with the sibling look_at, so an agent can distinguish it without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit selection rule ('Use this instead of look_at whenever your own model can take video input'), explains what the alternative returns (a paragraph), and enumerates when each kind and modifier (start/end, max_mb, frames=false) applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
expand_toolset4 fields changed- added
Input schema / properties / callAdded value: +{ + "description": "{\"name\": <tool>, \"arguments\": {...}} runs that tool exactly like a direct tools/call of it (same project_id rule, gates, charges and errors) and returns its result. For a tool missing from your client's cached list.", + "properties": { + "arguments": { + "type": "object" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" +} - added
Input schema / properties / describeAdded value: +{ + "description": "Exact tool names: returns each one's CURRENT description and inputSchema, including tools your client's cached list lacks.", + "items": { + "type": "string" + }, + "maxItems": 20, + "type": "array" +} - changed
Input schema / properties / project_id / descriptionPrevious value: -"Required immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess."New value: +"Optional. With call, it must equal call.arguments.project_id; nothing runs otherwise." - changed
Input schema / requiredPrevious value: -[ - "domains", - "project_id" -]New value: +[]
14 tool updates
- Added
add_depth_effect - Added
add_time_effect - Added
add_ui_scene - Changed
apply_format_pack2 fields changed- added
Input schema / properties / aspectAdded value: +{ + "type": "boolean" +} - changed
Input schema / properties / pack / enumPrevious value: -[ - "auto", - "A", - "B", - "C", - "D", - "H", - "none" -]New value: +[ + "auto", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "none" +]
- Added
critique_short - Added
deliver_aspects - Changed
expand_toolset1 field changed- changed
Input schema / properties / domains / items / enumPrevious value: -[ - "story", - "captions", - "graphics", - "audio", - "sfx", - "media", - "acquisition", - "motion", - "looks", - "screen", - "shorts", - "compositing", - "world", - "direction", - "rhythm", - "verify", - "type" -]New value: +[ + "story", + "captions", + "graphics", + "audio", + "sfx", + "media", + "acquisition", + "motion", + "looks", + "screen", + "shorts", + "picture", + "compositing", + "verify", + "delivery", + "world", + "direction", + "rhythm", + "type" +]
- Changed
read_skill1 field changed- changed
Input schema / properties / name / enumPrevious value: -[ - "acquisition", - "audio", - "beats-emphasis", - "broll-inserts", - "captions", - "compositing", - "creative-direction", - "cutting", - "devices", - "effects-grades", - "elements", - "finishing", - "formats", - "generate-fetch", - "hooks-retention", - "layouts", - "montage", - "motion-design", - "music", - "occlusion", - "premium-composition", - "punctuation", - "reframe-aspect", - "review", - "rhythm", - "screen-takeover", - "short-form-direction", - "structure", - "subject-fx", - "text-graphics", - "tracking", - "transitions", - "type-fx", - "type-in-world", - "typesetting", - "world", - "zooms" -]New value: +[ + "acquisition", + "audio", + "beats-emphasis", + "broll-director", + "broll-inserts", + "captions", + "compositing", + "creative-direction", + "critic", + "cutting", + "delivery", + "depth-time", + "devices", + "effects-grades", + "elements", + "explainers", + "finishing", + "formats", + "generate-fetch", + "hooks-retention", + "layouts", + "montage", + "motion-design", + "music", + "occlusion", + "premium-composition", + "punctuation", + "reframe-aspect", + "review", + "rhythm", + "screen-takeover", + "short-form-direction", + "structure", + "subject-fx", + "text-graphics", + "tracking", + "transitions", + "type-fx", + "type-in-world", + "typesetting", + "world", + "zooms" +]
- Added
remove_broll - Added
remove_depth_time - Added
remove_ui_scene - Added
retypeset_language - Added
source_broll - Changed
suggest_story1 field changed- changed
Input schema / properties / pack / enumPrevious value: -[ - "auto", - "A", - "B", - "C", - "D", - "H", - "none" -]New value: +[ + "auto", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "none" +]
19 tool updates
- Added
add_breakdown - Added
add_collage - Added
add_device_stage - Added
add_element - Added
add_hud - Changed
apply_format_pack1 field changed- changed
Input schema / properties / pack / enumPrevious value: -[ - "auto", - "A", - "B", - "C", - "H", - "none" -]New value: +[ + "auto", + "A", + "B", + "C", + "D", + "H", + "none" +]
- Added
attach - Changed
expand_toolset1 field changed- changed
Input schema / properties / domains / items / enumPrevious value: -[ - "story", - "captions", - "graphics", - "audio", - "sfx", - "media", - "acquisition", - "motion", - "looks", - "screen", - "shorts", - "compositing", - "direction", - "rhythm", - "type", - "verify" -]New value: +[ + "story", + "captions", + "graphics", + "audio", + "sfx", + "media", + "acquisition", + "motion", + "looks", + "screen", + "shorts", + "compositing", + "world", + "direction", + "rhythm", + "verify", + "type" +]
- Added
look_at_world - Added
pin_to_plane - Added
place_in_world - Added
plan_footage - Changed
read_skill1 field changed- changed
Input schema / properties / name / enumPrevious value: -[ - "audio", - "beats-emphasis", - "broll-inserts", - "captions", - "compositing", - "creative-direction", - "cutting", - "devices", - "effects-grades", - "finishing", - "formats", - "generate-fetch", - "hooks-retention", - "montage", - "motion-design", - "music", - "premium-composition", - "punctuation", - "reframe-aspect", - "review", - "rhythm", - "screen-takeover", - "short-form-direction", - "structure", - "subject-fx", - "text-graphics", - "transitions", - "type-fx", - "typesetting", - "zooms" -]New value: +[ + "acquisition", + "audio", + "beats-emphasis", + "broll-inserts", + "captions", + "compositing", + "creative-direction", + "cutting", + "devices", + "effects-grades", + "elements", + "finishing", + "formats", + "generate-fetch", + "hooks-retention", + "layouts", + "montage", + "motion-design", + "music", + "occlusion", + "premium-composition", + "punctuation", + "reframe-aspect", + "review", + "rhythm", + "screen-takeover", + "short-form-direction", + "structure", + "subject-fx", + "text-graphics", + "tracking", + "transitions", + "type-fx", + "type-in-world", + "typesetting", + "world", + "zooms" +]
- Added
remove_world - Added
select_object - Added
set_brand_kit - Added
set_stack - Changed
suggest_story1 field changed- changed
Input schema / properties / pack / enumPrevious value: -[ - "auto", - "A", - "B", - "C", - "H", - "none" -]New value: +[ + "auto", + "A", + "B", + "C", + "D", + "H", + "none" +]
- Added
track_point
22 tool updates
- Added
add_typeset - Added
align_lyrics - Added
analyze_music - Added
analyze_reference - Added
animate_still - Added
apply_format_pack - Added
check_speech - Changed
expand_toolset1 field changed- changed
Input schema / properties / domains / items / enumPrevious value: -[ - "story", - "captions", - "graphics", - "audio", - "sfx", - "media", - "acquisition", - "motion", - "looks", - "screen", - "shorts", - "compositing", - "rhythm", - "verify" -]New value: +[ + "story", + "captions", + "graphics", + "audio", + "sfx", + "media", + "acquisition", + "motion", + "looks", + "screen", + "shorts", + "compositing", + "direction", + "rhythm", + "type", + "verify" +]
- Added
find_shots - Added
get_syllables - Added
import_font - Added
pick_still - Added
plan_loop - Added
plan_to_music - Changed
read_skill1 field changed- changed
Input schema / properties / name / enumPrevious value: -[ - "audio", - "beats-emphasis", - "broll-inserts", - "captions", - "compositing", - "cutting", - "devices", - "effects-grades", - "finishing", - "formats", - "generate-fetch", - "hooks-retention", - "motion-design", - "music", - "premium-composition", - "punctuation", - "reframe-aspect", - "review", - "screen-takeover", - "short-form-direction", - "subject-fx", - "text-graphics", - "transitions", - "zooms" -]New value: +[ + "audio", + "beats-emphasis", + "broll-inserts", + "captions", + "compositing", + "creative-direction", + "cutting", + "devices", + "effects-grades", + "finishing", + "formats", + "generate-fetch", + "hooks-retention", + "montage", + "motion-design", + "music", + "premium-composition", + "punctuation", + "reframe-aspect", + "review", + "rhythm", + "screen-takeover", + "short-form-direction", + "structure", + "subject-fx", + "text-graphics", + "transitions", + "type-fx", + "typesetting", + "zooms" +]
- Added
remove_typeset - Added
render_variants - Added
set_speed_ramp - Added
set_typeset - Added
shape_music - Added
suggest_match_cuts - Added
suggest_story
28 tool updates
- Added
add_accent - Added
add_finish - Added
add_region_effect - Added
add_strobe - Added
add_subject_effect - Added
add_type_window - Changed
apply_edit_batch1 field changed- changed
Input schema / properties / operations / items / properties / layer / enumPrevious value: -[ - "keep", - "speed", - "inserts", - "frame", - "captions", - "caption_mutes", - "texts", - "vectors", - "music", - "sfx", - "voiceover", - "volume", - "master", - "effects", - "overlays", - "canvas", - "motion" -]New value: +[ + "keep", + "speed", + "inserts", + "frame", + "captions", + "caption_mutes", + "texts", + "vectors", + "music", + "sfx", + "voiceover", + "volume", + "master", + "effects", + "overlays", + "canvas", + "motion", + "fx" +]
- Added
apply_recipe - Added
audit_motion - Changed
expand_toolset1 field changed- changed
Input schema / properties / domains / items / enumPrevious value: -[ - "story", - "captions", - "graphics", - "audio", - "sfx", - "media", - "acquisition", - "motion", - "looks", - "screen", - "shorts" -]New value: +[ + "story", + "captions", + "graphics", + "audio", + "sfx", + "media", + "acquisition", + "motion", + "looks", + "screen", + "shorts", + "compositing", + "rhythm", + "verify" +]
- Added
import_lut - Added
isolate_colour - Changed
look_at1 field changed- added
Input schema / properties / overlayAdded value: +{ + "enum": [ + "matte", + "free_space", + "beats" + ], + "type": "string" +}
- Added
make_variant_set - Added
match_grade - Added
proof_device - Changed
read_skill1 field changed- changed
Input schema / properties / name / enumPrevious value: -[ - "audio", - "beats-emphasis", - "broll-inserts", - "captions", - "cutting", - "effects-grades", - "formats", - "generate-fetch", - "hooks-retention", - "motion-design", - "music", - "premium-composition", - "reframe-aspect", - "review", - "screen-takeover", - "short-form-direction", - "text-graphics", - "transitions", - "zooms" -]New value: +[ + "audio", + "beats-emphasis", + "broll-inserts", + "captions", + "compositing", + "cutting", + "devices", + "effects-grades", + "finishing", + "formats", + "generate-fetch", + "hooks-retention", + "motion-design", + "music", + "premium-composition", + "punctuation", + "reframe-aspect", + "review", + "screen-takeover", + "short-form-direction", + "subject-fx", + "text-graphics", + "transitions", + "zooms" +]
- Added
remove_finish - Added
remove_punctuation - Added
remove_region_effect - Added
remove_subject_effect - Added
set_background - Added
set_composite - Added
set_grade_window - Added
set_intensity - Added
set_junction - Added
suggest_devices - Added
suggest_recipes
1 tool update
- Removed
review_audio
6 tool updates
- Changed
add_library_music1 field changed- added
Input schema / properties / user_pickAdded value: +{ + "description": "MCP: the pick token ask_user returned plus the user's own words.", + "type": "string" +}
- Removed
add_web_sfx - Changed
apply_look1 field changed- changed
Input schema / properties / music / descriptionPrevious value: -"'auto' = a CC0 library bed in the look's moods; or a mood (upbeat, chill, cinematic, corporate, dramatic, hiphop, ambient, inspiring); or an exact slug from list_music_library. Omit to leave music unchanged."New value: +"Exact slug of the library track the user picked (ask_user offers them). Omit to leave music unchanged."
- Removed
audition_sfx_candidates - Removed
fetch_sfx - Removed
search_sfx
5 tool updates
- Changed
find_silences2 fields changed- added
Input schema / properties / endAdded value: +{ + "type": "number" +} - added
Input schema / properties / startAdded value: +{ + "type": "number" +}
- Changed
look_at1 field changed- changed
Input schema / properties / native_resolution / descriptionPrevious value: -"With rendered=true, preserve image width up to 1920px; request one time for full-detail approval pixels without another encode."New value: +"With rendered=true, keep width up to 1920px: each time is its own full-detail image (no contact sheet), no re-encode."
- Changed
look_at_asset1 field changed- changed
Input schema / properties / native_resolution / descriptionPrevious value: -"Preserve image width up to 1920px; one requested time avoids contact-sheet downscaling."New value: +"Keep width up to 1920px: each time is its own full-detail image (no contact sheet)."
- Changed
render_preview1 field changed- added
Input schema / properties / reportAdded value: +{ + "type": "boolean" +}
- Changed
review_audio1 field changed- added
Input schema / properties / anchorAdded value: +{ + "enum": [ + "center", + "start", + "end" + ], + "type": "string" +}
1 tool update
- Changed
add_freeze_frame1 field changed- changed
Input schema / properties / audio_mode / enumPrevious value: -[ - "pause", - "continue" -]New value: +[ + "pause", + "continue", + "hold" +]
3 tool updates
- Changed
add_motion_graphic1 field changed- changed
Input schema / properties / mute_captions / descriptionPrevious value: -"Omit (default): one reading path, captions drop the words it shows and yield to its phrase until it leaves. true = no captions in its window; false = captions keep running (a shown number/*starred* word is still not repeated)."New value: +"Omit (default): captions drop the words it shows; every other heard word stays captioned beside it. true = the same (no graphic mutes a whole window: every heard word reaches the screen once), muting only where no band is clear of it; false = captions keep running (a shown number/*starred* word is still not repeated)."
- Changed
conceal_jump_cuts1 field changed- changed
Input schema / properties / mode / enumPrevious value: -[ - "scale_step", - "off" -]New value: +[ + "report", + "scale_step", + "off" +]
- Changed
set_motion_graphic1 field changed- changed
Input schema / properties / mute_captions / descriptionPrevious value: -"Omit (default): one reading path, captions drop the words it shows and yield to its phrase until it leaves. true = no captions in its window; false = captions keep running (a shown number/*starred* word is still not repeated)."New value: +"Omit (default): captions drop the words it shows; every other heard word stays captioned beside it. true = the same (no graphic mutes a whole window: every heard word reaches the screen once), muting only where no band is clear of it; false = captions keep running (a shown number/*starred* word is still not repeated)."
Related MCP Connectors
Edit videos with AI: cuts, captions, B-roll and motion in a style you pick or copy from any video.
A video editor in your browser that your AI drives: cuts, captions, multicam, motion titles, export.
Edit video by talking to your AI — search footage, cut timelines, apply effects, add captions.
- VidmoatOAuthcom.vidmoat
AI video editor: create projects, edit timelines, add captions and effects, and render videos.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to edit video assemblies from A-roll and B-roll, add captions, and publish to social media platforms.272 npmMIT
- FlicenseNot gradedqualityAmaintenanceEnables users to turn raw video clips into finished, beat-synced montages through natural-language chat, with automated shot selection, music matching, subtitles, transitions, and picture-in-picture. It returns reviewable timelines and contact sheets before rendering on approval.-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to autonomously edit raw video footage into publish-ready videos with millisecond-accurate cuts, Whisper transcription, karaoke captions, motion graphics, and high-CTR thumbnails.34 npm6MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to build and edit a real video timeline — cuts, text, shapes, keyframes, captions and music — in a live studio the user can watch and edit alongside, rendering actual frames so the agent can verify its own work instead of guessing. Finishes by exporting an MP4 or carrying the timeline into DaVinci Resolve, Premiere Pro, CapCut or Remotion.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.