Skip to main content
Glama

Server Details

Create long-form YouTube videos end to end: script, storyboard, voiceover, final MP4.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Available Tools

72 tools
activate_script_versionActivate script versionA
Idempotent
Inspect

Switch the project's active script to another saved version (ids come from get_script's version list — each generate_script run creates one; save_script edits the active version in place). Re-run scan_script / rescan_voice_blocks afterwards if the text differs, since downstream artifacts follow the active version.

ParametersJSON Schema
NameRequiredDescriptionDefault
script_idYesID of the script version to activate, from get_script's version list

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare this is not read-only and not destructive, with idempotentHint true. The description adds meaningful behavioral context beyond the annotations: switching the active version affects downstream artifacts, and post-activation rescans may be required. This informs the agent about side effects and necessary follow-up actions.

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

Conciseness5/5

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

The description is two sentences with no filler. The primary action and parameter source are front-loaded, while the post-activation guidance is provided as a necessary caveat. Every clause earns its place.

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

Completeness5/5

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

For a single-parameter activation tool with no output schema, the description covers the action, the source of valid IDs, the relationship to sibling tools, and the downstream consequences. The agent has everything needed to decide when 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.

Parameters4/5

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

The schema already fully describes script_id, so baseline is 3. The description adds extra meaning by explaining the lifecycle of version IDs: each generate_script run creates one, and save_script edits the active version in place. This helps the agent understand what the parameter refers to beyond the literal schema text.

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

Purpose5/5

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

The description states a specific verb and resource: 'Switch the project's active script to another saved version.' It distinguishes itself from related tools by explaining that generate_script creates versions and save_script edits the active version in place. The purpose is unambiguous and well differentiated.

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

Usage Guidelines5/5

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

The description explicitly tells the agent where version IDs come from ('ids come from get_script's version list'), how versions are created versus edited, and what to do after activation ('Re-run scan_script / rescan_voice_blocks afterwards if the text differs'). This provides clear usage context and routes the agent away from confusing it with generate_script or save_script.

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

add_music_trackAdd music trackAInspect

Add background music to the project from the audio library (find track ids with browse_audio_library, category="music"). Defaults loop the track under the whole video at bed level (volume 0.12 ≈ -18.4 dB under narration — don't raise it without being asked); re-run export_video to hear it.

ParametersJSON Schema
NameRequiredDescriptionDefault
loopNoTrue loops the track under the whole video; false plays it once
nameNoDisplay name for the track on the project's timelineMusic
volumeNoPlayback volume 0-1; the 0.12 default sits at bed level under narration — don't raise it unless asked
project_idYesProject ID, as returned by create_project or list_projects
start_frameNoTimeline frame at which the track starts (0 = start of the video)
library_track_idYesAudio library track ID, from browse_audio_library(category="music")

TDQS

A4.7/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint=false, etc.), the description adds key behaviors: default loop and volume with dB equivalent, bed level under narration, and the need to re-run export_video to hear. It includes a warning not to raise volume without being asked.

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

Conciseness5/5

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

The description is extremely concise: two sentences that front-load the action and prerequisite, then explain defaults and side effects. No unnecessary words.

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

Completeness4/5

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

Given the tool's simplicity and no output schema, the description covers the essential usage: what it does, defaults, and the need to export to hear. It lacks details on error conditions or adding multiple tracks, but overall 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.

Parameters5/5

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

Schema coverage is 100%, but the description adds significant meaning: explains the default volume as bed level with dB conversion, clarifies the loop behavior, and ties library_track_id to browse_audio_library. This enriches the schema descriptions.

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

Purpose5/5

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

The description clearly states the verb 'Add' and the resource 'background music to the project', with a direct link to browse_audio_library for finding track IDs. It distinguishes itself from sibling tools like remove_music_track and update_music_track by its action.

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

Usage Guidelines4/5

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

It provides a prerequisite (find track IDs with browse_audio_library) and practical tips (default loop and volume, re-run export_video to hear). However, it does not explicitly contrast with alternatives like update_music_track or 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.

add_segment_sfxAdd segment sound effectAInspect

Attach a sound effect from the audio library to a segment (find track ids via browse_audio_library with category="sfx"). Re-run build_scenes to get it onto the timeline.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID, as returned by create_project or list_projects
segment_numberYes1-based segment number, as reported by get_segments
library_track_idYesAudio library track ID, from browse_audio_library(category="sfx")

TDQS

A4.4/5.0
Behavior4/5

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

Annotations are minimal (destructiveHint=false), so the description adds value by noting the prerequisite (track ID from browse_audio_library) and the post-requisite (build_scenes). It does not disclose whether attaching sound effects is additive or replaces existing ones, but the transparency is reasonable for a non-destructive operation.

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

Conciseness5/5

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

The description is two sentences long with no redundant information. It is front-loaded with the core action and immediately provides essential supplementary instructions.

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

Completeness4/5

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

No output schema exists, but the description covers the effect (attach to segment) and a critical follow-up step. It omits details like whether multiple SFXs can be added per segment or error handling, but for a focused tool this is adequate.

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

Parameters4/5

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

Schema coverage is 100% and all parameters have descriptions. The tool description adds extra context for library_track_id by specifying how to obtain it (via browse_audio_library with category='sfx'). This provides meaningful guidance beyond the schema.

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

Purpose5/5

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

The description clearly states the action (attach) and resource (segment, sound effect from audio library). It distinguishes from siblings like remove_segment_sfx and add_music_track by specifying the type of audio item (sfx) and providing a hint to use browse_audio_library.

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

Usage Guidelines4/5

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

The description explains when to use the tool (after obtaining a library_track_id via browse_audio_library) and indicates a necessary follow-up (re-run build_scenes). However, it does not explicitly state when not to use it or provide alternatives.

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

analyze_styleRe-analyze styleA
Destructive
Inspect

Re-run style analysis (after changing a style's inputs). Async — await_jobs(style_id=...) until the style_analysis job completes.

ParametersJSON Schema
NameRequiredDescriptionDefault
style_idYesID of the style to re-analyze, from create_style or list_styles

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare destructiveHint=true, and description adds async behavior and job type detail. No contradiction. Adds value beyond annotations by explaining awaiting pattern.

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

Conciseness5/5

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

Two concise sentences, no redundancy. All information is front-loaded and relevant.

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

Completeness4/5

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

For a single-parameter async analysis tool, description provides enough context. Could mention output implications, but no output schema exists. Adequate.

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

Parameters3/5

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

Schema coverage is 100% with one parameter (style_id) described. Description does not add extra parameter meaning beyond schema, but mentions it indirectly. Baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states the tool re-runs style analysis after changing inputs, distinguishing it from related tools like 'create_style' or 'get_style'. The verb 're-run' and resource 'style analysis' are explicit.

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

Usage Guidelines4/5

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

Explicitly says when to use (after changing style inputs) and how to handle the async job (await_jobs). Lacks explicit 'when not to use', but context is sufficient.

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

animate_segmentAnimate segmentAInspect

Animate one segment in a single call: flip it to a generated video shot (keeping its rendered image as the clip's first frame) and START the clip render immediately. BILLS video credits on this call — the segment's image must already be rendered (400 otherwise). A refused generation (out of credits, already running) rolls the flip back, so the segment is either animating or exactly as it was. This is the ONLY way to a generated video (voice=true for a Talking Head) — change_segment_type refuses that target; it owns the other kind switches (real media, overlay scene, back to a still — segment_type "image" with carry_frame=true reverts an animated shot for free). Async — returns {ai_job_id, segment}; await_jobs until the clip completes.

ParametersJSON Schema
NameRequiredDescriptionDefault
voiceNoTrue lip-syncs the on-frame speaker to the voiceover (lip-sync model family — bills the exact segment length, so long segments cost proportionally more); False is an ordinary prompt-driven clip. Always explicit, never inferred.
project_idYesProject ID, as returned by create_project or list_projects
segment_numberYes1-based segment number, as reported by get_segments

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so thoroughly: it discloses billing of video credits, a 400 error when the image is not rendered, rollback behavior on refused generation, and the async contract returning {ai_job_id, segment}. This is far beyond a minimal safe-read/write statement.

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

Conciseness5/5

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

The description is dense but every clause earns its place: core action, sequence semantics, billing, error precondition, rollback, sibling differentiation, and async completion. The structure front-loads the main action and immediately gives the agent the highest-stakes facts.

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

Completeness5/5

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

Even without an output schema, the description states the return shape and follow-up call, making it complete for invocation. It covers prerequisites, failure modes, cost implications, and alternatives, leaving no obvious gap an agent needs before calling the tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description adds value by tying voice=true to the Talking Head use case and clarifying that the voice flag is 'always explicit, never inferred.' It does not add much for project_id or segment_number, but the schema already documents them well.

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

Purpose5/5

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

The description states a specific verb and resource: 'Animate one segment in a single call: flip it to a generated video shot... and START the clip render immediately.' It clearly distinguishes itself from change_segment_type, which 'owns the other kind switches,' so an agent can tell this tool from siblings.

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

Usage Guidelines5/5

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

It explicitly frames this call as 'the ONLY way to a generated video' and names the alternative for other segment-type switches: change_segment_type. It also gives the prerequisite (image must already be rendered), the async follow-up (await_jobs), and notes that voice=true is for a Talking Head.

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

await_jobsWait for jobsA
Read-onlyIdempotent
Inspect

Block (server-side) until the scope has no pending/running jobs, or the timeout passes — use this instead of polling get_workflow_status yourself. Returns {done, jobs}. If done=false the work is still running: just call await_jobs again (a 3-5 minute storyboard takes a few consecutive calls). Keep timeout_seconds <= 50 so the client doesn't time out the tool call.

ParametersJSON Schema
NameRequiredDescriptionDefault
style_idNoStyle ID whose analysis/template jobs to wait for; pass exactly one of project_id or style_id
project_idNoProject ID whose jobs to wait for; pass exactly one of project_id or style_id
timeout_secondsNoMax seconds to block server-side before returning done=false; keep <= 50 so the client doesn't time out the tool call

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark the tool as read-only and idempotent. The description adds critical behavioral context: server-side blocking, repeated calls needed, and return structure {done, jobs}. 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.

Conciseness5/5

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

Extremely concise: three sentences, each with a clear purpose. Front-loaded with the main blocking behavior, then usage notes. No wasted words.

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

Completeness5/5

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

Despite no output schema, the description mentions the return shape {done, jobs}. Given the tool's simplicity and ample annotations, this is fully complete for agent use.

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

Parameters4/5

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

Schema coverage is 100%, and the description reinforces key parameter constraints: mutual exclusivity of style_id and project_id, and timeout_seconds <=50. Adds meaning beyond schema.

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

Purpose5/5

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

The description clearly states that the tool blocks until no pending/running jobs or a timeout occurs. It distinguishes itself from polling get_workflow_status, 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.

Usage Guidelines5/5

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

Explicitly tells when to use (instead of polling), when to call again (if done=false), and provides a timeout constraint (<=50s) to avoid client timeout, giving clear usage guidance.

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

browse_audio_libraryBrowse audio libraryA
Read-onlyIdempotent
Inspect

Browse the audio library for background music and sound effects. category: "music" | "sfx". Returns {tracks} — track ids feed add_music_track / add_segment_sfx. Zero matches also returns the mood and genre tags the library actually carries, so retry with one of those rather than guessing new filter words.

ParametersJSON Schema
NameRequiredDescriptionDefault
moodNoFilter by the track's mood tag; empty for no filter
genreNoFilter by the track's genre tag; empty for no filter
searchNoFree-text search over track names/descriptions; empty for no filter
categoryNoTrack kind: "music" (background tracks) or "sfx" (sound effects); empty returns both

TDQS

A4/5.0
Behavior4/5

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

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety behavior is covered. The description adds behavior beyond annotations: returning a {tracks} object and, on zero matches, exposing the actual mood and genre tags the library carries. This gives the agent useful failure-recovery information.

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

Conciseness5/5

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

Three sentences, all information-dense and purposeful, with the core browse action and result shape front-loaded. The zero-match retry guidance earns its place rather than padding the description.

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

Completeness4/5

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

For a read-only browse tool with four optional filters, the description covers return shape, filter categories, downstream use, and an edge case (zero matches). It does not mention pagination or result ordering, but those are minor gaps given the simplicity and annotation coverage.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains all four optional parameters. The description mostly restates the category values and adds downstream usage context, but it does not significantly deepen the meaning of individual parameters beyond what the schema provides.

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

Purpose4/5

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

The description states a specific verb and resource: 'Browse the audio library for background music and sound effects,' with the category dimension made explicit. It distinguishes the tool somewhat by describing its result feeding add_music_track / add_segment_sfx, but it does not explicitly differentiate it from sibling list_music_tracks.

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

Usage Guidelines4/5

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

The description provides clear usage context: it returns track ids that feed add_music_track / add_segment_sfx, which tells the agent how to use the results downstream. It also gives a retry strategy when zero matches occur, which is practical guidance. It does not explicitly name when not to use it or mention alternatives, so it lacks full exclusion guidance.

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

build_scenesBuild scenesA
Destructive
Inspect

Compile segments + assets + voiceover into the editor/render timeline (scenes). Run after segment assets are complete, before export. Returns a receipt — {scene_count, scenes: [{scene_id, segment_number, duration_frames, status, layer_count}]}; composition detail via list_scenes.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID, as returned by create_project or list_projects

TDQS

A4.1/5.0
Behavior3/5

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

The annotations already indicate destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds useful context about the required pipeline stage and the returned receipt, but it does not explain what a rerun does to existing scenes or what destructive effects to expect.

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

Conciseness5/5

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

The description is compact and information-dense: the action is front-loaded, the pipeline position is stated, and the return shape is summarized without filler. Every clause earns its place.

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

Completeness5/5

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

For a single-parameter tool, the description covers the action, when to run it, what it returns, and where to get more detail. The destructive safety hint is supplied by annotations, and the output receipt is described inline, so nothing essential is missing.

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

Parameters3/5

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

There is only one parameter, project_id, and the schema description fully covers it: 'Project ID, as returned by create_project or list_projects'. The description adds no further parameter semantics, so the schema baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the concrete action: compiling segments, assets, and voiceover into the editor/render timeline (scenes). It also anchors the tool in the pipeline ('after segment assets are complete, before export'), which distinguishes it from later export or inspection siblings like export_video and list_scenes.

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

Usage Guidelines4/5

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

It gives explicit timing guidance: run after segment assets are complete and before export. It does not explicitly name alternatives or when not to use it, but the pipeline positioning plus the pointer to list_scenes for composition detail provides sufficient context.

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

change_segment_typeChange segment typeA
Destructive
Inspect

Change what a segment's base visual IS: a generated still ("image"), fetched real media (media_source="real" — a real photo for "image", stock b-roll footage for "video"), or an overlay scene. Generated video is NOT set here — it's the state a rendered still reaches through animate_segment (voice=true for a Talking Head), and a "video" target without media_source="real" is refused with that guidance. segment_type "image" with carry_frame=true reverts an animated shot back to its still for free. media_source="real" turns the shot into fetched media with no start frame and no generation. carry_frame=true reuses the already-rendered image instead of recreating it; ignored for a real target. SFX and overlays always survive a type change. dry_run=true previews what would be kept / staled / recreated / deleted before you commit.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoTrue previews the consequences (assets kept / staled / recreated / deleted, rendered assets lost) without changing anything
project_idYesProject ID, as returned by create_project or list_projects
carry_frameNoTrue reuses the already-rendered frame as the new type's starting visual instead of recreating it from scratch
media_sourceNo"" keeps the segment's current source; "real" makes the visual fetched stock footage / a real photo (b-roll) instead of a generated one; "generated" switches back
segment_typeYesNew visual type: "image", "video" (fetched b-roll only — requires media_source "real"), or "overlay_scene"
segment_numberYes1-based segment number, as reported by get_segments

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations, the description discloses substantial behavioral nuance: media_source="real" removes start frame and generation, carry_frame is ignored for real targets, SFX/overlays survive type changes, and dry_run previews what would be kept/staled/recreated/deleted. These are the kind of side effects an agent needs to anticipate, and they align with destructiveHint=true.

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

Conciseness4/5

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

The description is dense but each sentence carries a distinct piece of behavior or constraint, and the core purpose is front-loaded. Slight redundancy with the schema's parameter descriptions and a few informal phrases keep it from a perfect score, but there is no wasted filler.

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

Completeness5/5

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

Given the tool's complexity and the absence of an output schema, the description covers the essential operational concerns: valid type transitions, refusal conditions, carry_frame semantics, media_source behavior, survival of SFX/overlays, and dry-run preview. An agent has enough information to call this tool correctly and predict consequences.

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

Parameters4/5

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

The schema already covers all six parameters, so the baseline is 3. The description earns an extra point by clarifying interactions not fully spelled out in the schema: carry_frame being ignored for real media targets, media_source="real" meaning no start frame and no generation, and the refusal condition for non-real video targets.

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

Purpose5/5

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

The description states a specific verb and resource: 'Change what a segment's base visual IS', then enumerates the exact type values and their meanings. It also explicitly distinguishes itself from animate_segment by stating that generated video is not set here, so an agent can select it correctly.

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

Usage Guidelines5/5

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

Usage context is explicit: generated video belongs to animate_segment, and a "video" target without media_source="real" is refused. The description also clarifies when carry_frame and dry_run are relevant, giving the agent clear decision rules for when to use this tool vs alternatives.

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

combine_segmentsCombine segmentsA
Destructive
Inspect

Merge a segment with an adjacent one (segment numbers must be neighbors). keep: "this" | "other" — whose creative data survives: its assets are kept (rendered frame/clip marked stale against the combined narration and its prompts re-derived); the other segment's assets are deleted. Later segments renumber — re-check get_segments before further edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
keepNoWhose creative data survives the merge: "this" (segment_number) or "other" (with_segment_number)this
dry_runNoTrue previews the consequences without changing anything
project_idYesProject ID, as returned by create_project or list_projects
segment_numberYes1-based segment number, as reported by get_segments
with_segment_numberYes1-based number of the adjacent segment to merge with (must neighbor segment_number)

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already mark this as destructiveHint=true, but the description goes much further: the other segment's assets are deleted, kept assets are marked stale, prompts are re-derived, and later segments renumber. This gives an agent concrete, actionable 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.

Conciseness5/5

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

Two sentences with no filler. The action and adjacency constraint are front-loaded, and the remaining detail about asset survival, deletion, and renumbering is dense but relevant.

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

Completeness4/5

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

The description covers the destructive consequences, renumbering behavior, and the need to re-fetch segments afterward. It does not state return values or whether the operation is asynchronous, and there is no output schema, but the essential call-time information is present.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description enriches the meaning of the 'keep' parameter beyond the schema by explaining that kept assets remain while the other segment's assets are deleted. It does not add format-level detail for IDs or segment numbers, but the schema already covers those adequately.

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

Purpose5/5

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 ('Merge a segment with an adjacent one') and adds a precise constraint ('segment numbers must be neighbors'). This clearly identifies the operation and distinguishes it from segment-related siblings like split_segment.

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

Usage Guidelines4/5

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

The description gives explicit preconditions ('segment numbers must be neighbors') and a clear follow-up instruction ('re-check get_segments before further edits'). It does not explicitly name alternatives for non-neighbor cases or contrast with split_segment, but the usage context is otherwise clear.

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

create_assetCreate assetAInspect

Manually add a character/environment/object the scan missed. asset_type: "character" | "environment" | "object". The description is the generation-facing spec of its look — be specific.

The scan reads narration and `[SCENE: ...]` directions, so the common
miss is anyone NEITHER ever names — a host the video needs but no text
mentions, a recurring set the script only implies. Name the asset exactly
as the script or directions will refer to it so the storyboard binds the
two, then generate_asset_reference it like any scanned asset.
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesAsset name as the script refers to it (e.g. the character's name)
asset_typeYesKind of asset: "character", "environment", or "object"
project_idYesProject ID, as returned by create_project or list_projects
descriptionNoGeneration-facing spec of the asset's look; every shot renders from it, so be specific

TDQS

A4.1/5.0
Behavior3/5

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

All annotations are false, providing no positive safety profile, so the description carries the burden. It does add useful context: the description parameter is a generation-facing spec rendered into shots, the name binds storyboard to script, and created assets behave like scanned assets in the pipeline. However, it doesn't disclose what happens on duplicate names or how creation interacts with existing assets of the same name, and since idempotentHint=false, the agent gets no warning against double-creation.

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

Conciseness4/5

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

The core purpose and key parameter guidance are front-loaded in the first sentence. The second paragraph is somewhat elaborate with examples (host, recurring set) but each clause earns its place by clarifying the failure mode and the naming requirement. No filler, though the examples could be tightened.

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

Completeness4/5

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

For a 4-parameter create tool with no output schema and no enums, the description covers the purpose, the scenario that warrants manual creation, the critical naming constraint, and the next pipeline step. Minor gaps: no indication of what the tool returns after creation and no guidance on handling duplicate names. Overall, an agent can successfully invoke it from this description alone.

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

Parameters4/5

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

Schema coverage is 100%, giving a baseline of 3. The description goes beyond the schema by explaining the naming semantics in depth (exactly as the script/directions refer to it, so the storyboard binds the two) and by reinforcing that description must be a specific, generation-facing look spec. The asset_type values are restated, which adds little, but the naming rule is genuinely non-obvious guidance the schema lacks.

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

Purpose5/5

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

"Manually add a character/environment/object the scan missed" states a specific verb (manually add), a concrete resource (character/environment/object assets), and the precise scope (things the scan missed). This clearly differentiates it from the automatic scan_script flow and from sibling tools like update_asset, delete_asset, 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.

Usage Guidelines4/5

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

The description gives clear when-to-use context: the scan reads narration and [SCENE] directions, so the common miss is anything neither ever names — a host, a recurring set. It also supplies naming guidance (use the script's exact reference so the storyboard binds) and a follow-up step (generate_asset_reference it). It doesn't explicitly exclude alternatives like 'if the asset already exists, use update_asset instead,' but the scan-miss framing implies the boundary well.

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

create_channelCreate channelAInspect

Create a new channel — the container for projects and their reusable styles. Use when the user wants a fresh creative identity rather than adding to an existing channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name for the new channel
descriptionNoOptional free-text description of the channel's content focus

TDQS

A4/5.0
Behavior3/5

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

Annotations indicate write operation (readOnlyHint=false) and no destructiveness (destructiveHint=false). The description adds useful context about channel being a container, but lacks details on side effects, permissions, or return value, which is a gap given no output schema.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose and usage guidance. No extraneous information; every sentence serves a purpose.

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

Completeness2/5

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

While the description explains the channel concept and usage, it omits critical information for a creation tool: what the response contains (e.g., channel ID or object), any constraints (e.g., name uniqueness), and does not compensate for the lack of output schema.

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

Parameters3/5

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

Schema coverage is 100% for both parameters (name and description). The description does not add extra meaning beyond the schema's titles and descriptions, so baseline 3 is appropriate.

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

Purpose5/5

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

Clearly states 'Create a new channel' as the verb-resource combination, defines channel as 'container for projects and their reusable styles', and distinguishes from sibling tools by saying 'rather than adding to an existing channel'.

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

Usage Guidelines5/5

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

Explicitly tells when to use the tool ('when the user wants a fresh creative identity') and what not to do ('rather than adding to an existing channel'), providing clear context against alternatives.

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

create_projectCreate projectAInspect

Create a project. The description (the video concept/topic) seeds script generation, so write a meaningful one. Pass video_format='portrait' for a vertical video — every shot, overlay, and the export are then composed for a 9:16 frame. The response's web_url is the project's page in the web app — share it so the user can follow along.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesProject title shown in the app
channel_idYesID of the channel to create the project in, from list_channels or create_channel
descriptionNoThe video concept/topic; seeds script generation, so make it specific and meaningful
video_formatNoOutput frame shape: 'landscape' (16:9, the default — YouTube and long-form) or 'portrait' (9:16 — Shorts, Reels, TikTok). Fixed once the storyboard is generated, so pick it up front.landscape

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses key behavioral traits beyond the annotations (which are all false): the description seeds script generation, video_format='portrait' composes everything for 9:16, and the response includes a shareable web_url. This provides useful 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.

Conciseness5/5

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

Three sentences deliver purpose, parameter advice, and response usage with no filler. Every sentence earns its place and the key information is front-loaded in the first sentence.

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

Completeness4/5

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

Given no output schema, the description appropriately highlights the web_url return value. It also covers the behavioral consequences of the description and video_format parameters. It relies on the schema for channel_id sourcing, which is acceptable, but could have mentioned prerequisites in the description itself.

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

Parameters4/5

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

Although the schema already documents all 4 parameters (100% coverage), the description adds practical semantics: write a meaningful description because it seeds script generation, and the video_format choice is fixed once the storyboard is generated. This goes beyond the schema descriptions.

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

Purpose5/5

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

The description opens with a clear verb+resource: 'Create a project.' It then elaborates on the implications of the description parameter (seeds script generation) and the video_format parameter, which clearly distinguishes it from siblings like update_project, delete_project, and get_project.

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

Usage Guidelines3/5

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

The description implicitly indicates this is the entry point for a new project by explaining that the description seeds script generation and that video_format must be chosen up front. However, it does not explicitly contrast with alternatives like update_project or generate_script, so the guidance remains 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.

create_styleCreate styleAInspect

Create a style. Two mutually exclusive paths:

References (best): inputs=[{"input_type": "youtube" | "text", "value":
"<url or description>"}] — YouTube videos are watched (a channel link or
@handle resolves to that channel's newest usable upload) and text
directions read; async analysis writes the style's art/narrative/director
fields: await_jobs(style_id=...) before using the style. (Image/video FILE
references require the multipart REST endpoint POST /styles.)

Presets (instant, no analysis): presets={"art_style": id,
"narrative_style": id, "director_style": id} — all three axes, ids from
list_style_presets.
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name for the style
inputsNoReference material to analyze, [{"input_type": "youtube" | "text", "value": "<url or description>"}]; a youtube value can be a video link or a channel link/@handle (resolved to that channel's newest usable upload). Triggers an async analysis job. Mutually exclusive with presets
presetsNoPreset IDs per axis, {"art_style": id, "narrative_style": id, "director_style": id}, from list_style_presets; instant, no analysis. Mutually exclusive with inputs
channel_idYesID of the channel to create the style in, from list_channels

TDQS

A4.9/5.0
Behavior5/5

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

With minimal annotations (only readOnlyHint=false, destructiveHint=false), the description carries the full burden and succeeds: it discloses mutual exclusivity of inputs/presets, async analysis behavior for references, instant execution for presets, channel/@handle resolution semantics, and a note about REST-only file uploads. This goes far beyond the annotations and adds critical behavioral context.

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

Conciseness5/5

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

The description is well-structured, front-loaded with the core purpose, and every sentence adds information. The two-path breakdown with examples is economical and readable despite the length, with no filler or repetition of schema content.

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

Completeness5/5

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

For a creation tool with async behavior, no output schema, and two mutually exclusive input modes, the description covers prerequisites, sequencing (await_jobs), alternative REST endpoint, and required IDs from sibling tools. It is fully actionable for an agent to select and invoke the tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description enhances this by providing a concrete example structure for inputs and presets, explaining that presets require all three axes (art, narrative, director), and noting that channel/@handle resolves to the newest usable upload. These details go beyond the schema's field descriptions.

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

Purpose5/5

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

The description opens with 'Create a style'—a specific verb and resource—and then details two distinct creation paths (references and presets), clearly distinguishing this from sibling tools like update_style_fields, analyze_style, and get_style. The scope is unambiguous and well-differentiated.

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

Usage Guidelines5/5

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

The description explicitly states when to use each path ('References (best)' vs 'Presets (instant)'), mentions the need to call await_jobs before using the style, and explains that file references require the multipart REST endpoint, effectively guiding the agent away from this tool for those cases. It also references list_style_presets as a prerequisite source.

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

delete_assetDelete assetA
Destructive
Inspect

Delete a project asset (e.g. one the scan over-extracted).

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYesID of the asset to delete, from list_assets

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true; description adds example of typical deletion scenario. Consistent with annotations, no contradiction, but does not elaborate on 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.

Conciseness5/5

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

Single sentence, no filler. Every word is necessary for the description of a one-parameter destructive tool.

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

Completeness5/5

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

For a simple tool with one required parameter, destructive hint, and no output schema, the description is sufficient. Example and schema provide complete context.

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

Parameters3/5

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

Schema already fully describes the single parameter (asset_id) with origin hint ('from list_assets'). Description adds no additional parameter meaning beyond schema.

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

Purpose5/5

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

Clear verb+resource: 'Delete a project asset'. Includes example usage ('one the scan over-extracted') which distinguishes from sibling tools like create_asset 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.

Usage Guidelines4/5

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

Provides a specific use case (over-extracted assets) but lacks explicit when-not or alternative suggestions. The example gives context for appropriate usage.

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

delete_projectDelete projectA
Destructive
Inspect

Permanently delete a project and everything in it (script versions, assets, voiceover, segments, renders). Irreversible — confirm with your user first.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesID of the project to permanently delete, from list_projects

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark destructiveHint: true. The description adds specific details on what gets deleted (script versions, assets, etc.) and the irreversible nature, providing context 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.

Conciseness5/5

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

Two concise sentences front-load the core action and immediately follow with key context. No unnecessary words.

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

Completeness5/5

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

For a simple delete tool with one param and no output schema, the description fully covers what the tool does, its effects, and usage warning.

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

Parameters4/5

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

Schema coverage is 100%. The description adds value by noting the project_id comes from list_projects, aiding in parameter selection beyond the schema's basic description.

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

Purpose5/5

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

The description clearly states the action (permanently delete) and the resource (project) with a specific list of contents affected. It distinguishes from siblings like create_project and update_project.

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

Usage Guidelines4/5

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

The description explicitly warns about irreversibility and advises confirming with the user, which guides appropriate usage. However, it does not explicitly mention when not to use it or alternatives.

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

delete_styleDelete styleA
Destructive
Inspect

Delete a style (e.g. a failed analysis experiment). Don't delete a style that projects still use as their default — rebind them first with set_project_style.

ParametersJSON Schema
NameRequiredDescriptionDefault
style_idYesID of the style to delete, from list_styles

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark destructiveHint=true. The description adds context: warns about deleting styles used as defaults and suggests rebinding. This goes beyond the annotation flag, though it doesn't detail reversibility or 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.

Conciseness5/5

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

The description is two sentences with no fluff. The main purpose is front-loaded, and the caution is concise. Every word earns its place.

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

Completeness5/5

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

For a simple deletion tool with one required parameter and clear annotations, the description covers purpose, usage, and a crucial pitfall (default styles). It is complete given the tool's complexity.

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

Parameters3/5

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

The single parameter style_id has full description in the schema ('ID of the style to delete, from list_styles'). The tool description does not add additional semantics beyond what the schema provides. Baseline score 3 as schema coverage is 100%.

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

Purpose5/5

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

The description clearly states 'Delete a style' with an example use case (failed analysis experiment). It distinguishes from sibling tools like set_project_style, create_style, and update_style_fields by explicitly mentioning when not to use it and what to do instead.

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

Usage Guidelines5/5

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

The description explicitly says when to use (delete a style, e.g. failed experiment) and when not to (if projects still use it as default), providing an alternative: rebind with set_project_style.

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

director_noteDirector note (one scene)AInspect

Edit ONE scene with a natural-language note (the same director chat the editor UI uses): move/restyle/add/remove layers and overlays, retime, etc. Synchronous — returns the applied mutations + updated scene. Address the scene by project_id + segment_number (preferred — always resolves to the current scene) or by scene_id from a fresh list_scenes call. Scene durations are locked to the narration track: don't ask to extend/shorten a scene except the final one — for a held-shot feel mid-video, ask for calmer/static motion on the scene instead. For notes spanning the whole video use project_director_note instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesNatural-language edit note for this scene, e.g. "move the caption to the top" or "remove the overlay"
scene_idNoID of the scene to edit, from a FRESH list_scenes call — scene ids change whenever segments are edited (split/combine/update-content), so never reuse ids saved earlier; prefer project_id + segment_number
project_idNoProject ID; required (with segment_number) when not passing scene_id
segment_numberNo1-based segment number of the scene to edit (from list_scenes or get_segments) — preferred over scene_id because it is resolved to the current scene at call time
conversation_historyNoPrior chat turns as [{"role": ..., "content": ...}] to continue an editing conversation on this scene; omit to start fresh

TDQS

A5/5.0
Behavior5/5

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

With annotations all false (no positive hints), the description carries full responsibility and does so thoroughly. It discloses synchronous execution, return contents ('applied mutations + updated scene'), locked scene durations, and that segment_number always resolves to the current scene. This goes well beyond the bare schema.

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

Conciseness5/5

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

Four dense sentences, each earning its place: purpose/capabilities, synchronous return, addressing/scene-id guidance, and the duration constraint with a sibling-tool pointer. No redundancy, front-loaded with the core action.

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

Completeness5/5

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, the description is remarkably complete. It covers the return value (mutations + updated scene), critical constraints (duration lock, fresh scene_id), and the sibling alternative. The only minor gap is unspecified precedence if both scene_id and segment_number are passed, but this is negligible given the explicit preference.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds crucial semantic guidance: it explains why project_id + segment_number is preferred (resolves to current scene), warns that scene_ids become stale after edits, and clarifies that conversation_history can continue a prior chat. This is genuinely useful parameter context beyond the schema.

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

Purpose5/5

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

The description opens with 'Edit ONE scene with a natural-language note' — a specific verb (edit) and resource (one scene) — and enumerates concrete actions (move/restyle/add/remove layers, retime). It also distinguishes itself from the sibling tool 'project_director_note' by explicitly stating that whole-video notes should go there.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance: 'For notes spanning the whole video use project_director_note instead.' Also gives scene-addressing best practices (prefer project_id + segment_number, avoid stale scene_ids) and behavioral constraints (don't extend/shorten scenes except the final one). This clearly orients the agent on how and when to invoke the tool.

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

export_videoExport videoAInspect

Render the final MP4 (Remotion). Fetches the current timeline and queues the render. Async — poll get_workflow_status for the video_export job, then call get_video_url.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID, as returned by create_project or list_projects

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false (not read-only) and destructiveHint=false. The description adds that the tool is async ('Async — poll...') and queues a render job, providing behavioral context beyond annotations. It does not detail side effects or failure scenarios.

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

Conciseness5/5

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

The description is very concise: two sentences immediately conveying the core action and async workflow. Every sentence adds value with zero wasted words.

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

Completeness4/5

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

Given the single parameter and no output schema, the description adequately covers the tool's role and the async flow. It could mention the need for a complete timeline, but overall it is sufficient for an agent to use correctly.

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

Parameters3/5

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

Schema coverage is 100% and the schema description for project_id is clear: 'Project ID, as returned by create_project or list_projects.' The tool description does not add additional meaning 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.

Purpose5/5

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

The description clearly states 'Render the final MP4 (Remotion)' and explains the process: 'Fetches the current timeline and queues the render.' It distinguishes from siblings like get_video_url and get_workflow_status by describing the async workflow and next steps.

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

Usage Guidelines4/5

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

The description provides explicit post-call steps: 'poll get_workflow_status for the video_export job, then call get_video_url.' This guides the agent on usage. However, it does not specify when not to use this tool or prerequisites like a valid timeline.

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

generate_asset_referenceGenerate asset reference imageAInspect

Render an asset's reference image in the channel's art style — the visual anchor that keeps a character/environment looking identical across every shot. EVERY character, environment, and object asset needs one before generate_voiceover (the server enforces this; fire the jobs for all assets, then one await_jobs). Async — the job writes the image onto the asset row: await_jobs(project_id), then list_assets and view_image the file_path to check likeness.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoImage model ID; empty uses the server default for reference images
asset_idYesID of the asset to render a reference image for, from list_assets
settingsNoModel-specific settings (e.g. image quality/orientation); valid keys come from the model's settings_schema in list_models
editable_sectionsNoPer-call prompt section overrides, keyed by section name; see get_section_template for the reference-image job

TDQS

A4.6/5.0
Behavior5/5

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

Annotations show readOnlyHint=false and destructiveHint=false. Description adds that the tool is async and writes the image onto the asset row, disclosing side effects clearly.

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

Conciseness4/5

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

Two sentences, front-loaded with purpose. The second sentence is a bit long but packs necessary guidance. No wasted words.

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

Completeness5/5

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

Despite no output schema, the description explains the full lifecycle: async job, how to check completion (await_jobs), and how to view the resulting image (list_assets, view_image). Complete for a job-triggering tool.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all parameters. The description adds workflow context but no additional parameter-level details beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool renders an asset's reference image in the channel's art style, serving as a visual anchor. It distinguishes itself from generate_voiceover by noting the dependency order.

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

Usage Guidelines5/5

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

Explicitly says every asset needs this before generate_voiceover, and provides a clear workflow: fire jobs for all assets, then await_jobs, then list_assets and view_image to check result.

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

generate_scriptGenerate scriptAInspect

Generate the project's script from its description/concept and the channel's narrative style. Async — returns {job_id}; poll get_workflow_status.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModel ID to generate with; empty uses the default (see list_models("script"))
settingsNoModel-specific settings; valid keys come from the model's settings_schema in list_models("script")
project_idYesProject ID, as returned by create_project or list_projects
editable_sectionsNoPer-call prompt section overrides, keyed by section name; see get_section_template("script") for the sections this job exposes

TDQS

A4/5.0
Behavior4/5

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

The description discloses async behavior and the need to poll 'get_workflow_status', adding behavioral context beyond the all-false annotations. It does not cover potential side effects, but the 'generate' verb implies non-destructive creation.

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

Conciseness5/5

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

Two concise and front-loaded sentences: the first states the purpose, the second describes the async pattern. No redundant information.

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

Completeness4/5

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

The description covers core behavior and async workflow. It could mention prerequisites like existing project and channel narrative style, but the schema references provide sufficient context.

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

Parameters3/5

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

Schema coverage is 100% and each parameter is well-described in the schema. The description adds no additional parameter meaning, so baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states it generates a script from the project's description/concept and the channel's narrative style, distinguishing it from related siblings like 'revise_script' or 'scan_script'.

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

Usage Guidelines3/5

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

The description implies usage for initial script generation but does not explicitly provide when to use this tool versus alternatives such as 'revise_script' for modifications.

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

generate_segmentsRender segment assetsA
Idempotent
Inspect

Render every actionable segment asset (images, video clips, overlays) across the project, in dependency order. THE most expensive call in the pipeline: ALWAYS dry_run=true first, show your user the estimate next to get_credit_balance, and wait for a fresh yes before the real run — prior blanket permission ("do the whole thing") does not cover this spend. The staged flow is cheapest: asset_scope="no_clips" first (images + overlays), review, then animate_segment the shots that deserve motion. Pass segment_numbers to render only a subset — e.g. segments 1-18 for the opening minute before committing to the full video. Safe to re-run: completed and currently-generating assets are skipped, so a second call only picks up new/failed work. Async — one job per asset; await_jobs until all complete.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoTrue returns the credit-cost estimate without rendering anything; ALWAYS run true first and get user approval before the real run
project_idYesProject ID, as returned by create_project or list_projects
asset_scopeNo"" renders everything actionable; "no_clips" is the cheap base pass (images, overlays, fetched b-roll — no generated video clips); "clips_only" renders just the generated clips
segment_numbersNo1-based segment numbers (from get_segments) to render only a subset; omit to render every actionable asset in the project

TDQS

A4.9/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond the annotations: this is the most expensive pipeline call, prior permission does not cover it, re-runs skip completed and currently-generating assets, and execution is async with one job per asset requiring await_jobs. This aligns with idempotentHint=true and gives the agent critical operational guidance.

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

Conciseness5/5

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

The description is dense but every sentence earns its place: purpose, cost warning, staged workflow, subset guidance, idempotency, and async behavior. The most important operational warning is front-loaded immediately after the purpose statement, and there is no filler.

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

Completeness5/5

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

Given the high complexity and no output schema, the description covers the full decision workflow: dry-run before spending, staged scope selection, subset rendering, re-run safety, and async completion via await_jobs. It also references related tools (get_credit_balance, animate_segment, get_segments) that the agent will need to execute correctly. 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.

Parameters4/5

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 adds value by showing how parameters work together: using asset_scope="no_clips" as a cheap first pass, and passing segment_numbers like 1-18 to render only the opening minute before committing to the full video. This converts bare parameter options into a coherent invocation strategy.

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

Purpose5/5

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

The description states a specific verb and resource: rendering every actionable segment asset (images, video clips, overlays) across the project in dependency order. It clearly differentiates this bulk generation tool from siblings like animate_segment and regenerate_segment_asset by emphasizing project-wide scope and dependency ordering.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use instructions: always run with dry_run=true first, show the credit estimate alongside get_credit_balance, and require fresh user approval before the real run. It also prescribes a staged workflow using asset_scope="no_clips" then animate_segment, and explains when to use segment_numbers for subset rendering.

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

generate_storyboardGenerate storyboardA
Destructive
Inspect

Plan the full visual storyboard: segments, shot pacing, image/video prompts, overlays, continuation chains — driven by the channel's director and art styles. Requires voiceover to exist (timing comes from it). Plans generated stills + real media only (real media requires the style's @real-media tag); generated video is added per segment after the images render, with animate_segment. Async — returns {job_id}; this is the longest LLM step.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModel ID to plan with; empty uses the default (see list_models("storyboard"))
settingsNoModel-specific settings; valid keys come from the model's settings_schema in list_models("storyboard")
project_idYesProject ID, as returned by create_project or list_projects
editable_sectionsNoPer-call prompt section overrides, keyed by section name; see get_section_template("storyboard")

TDQS

A4.4/5.0
Behavior5/5

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

Annotations carry only the mutation/destructive profile (destructiveHint=true, readOnlyHint=false); the description adds genuinely new behavioral facts the schema cannot express: async execution, exact return shape ({job_id}), relative latency ('longest LLM step'), and a processing boundary (video deliberately deferred to animate_segment). The @real-media tag constraint also discloses a failure condition in advance. No statement 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.

Conciseness5/5

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

Four sentences, each carrying distinct information in a logical order: purpose → prerequisite → scope boundary → async/latency. Critical facts are front-loaded and there is zero redundancy or filler; the density is justified by the tool's async, multi-phase complexity.

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

Completeness4/5

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

For an async tool with no output schema, the description covers what it does, what it requires, what it deliberately excludes, and what it returns — enough for correct invocation. The only omission is an explicit pointer to poll via await_jobs, though that is inferable from the {job_id} return and the sibling list.

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

Parameters3/5

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

Schema coverage is 100% and each parameter already carries a rich description referencing sibling tools (list_models, get_section_template). The tool description adds only indirect context — the voiceover prerequisite implies project_id must reference a voiced project, and 'director and art styles' explains what drives model/settings choice — but no parameter-specific meaning beyond the schema.

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

Purpose5/5

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

States a specific verb ('Plan') and resource ('the full visual storyboard') with enumerated deliverables — segments, shot pacing, image/video prompts, overlays, continuation chains. The visual-planning focus differentiates it from siblings like generate_script, generate_voiceover, and generate_segments, and the 'full' scope distinguishes it from per-segment tools.

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

Usage Guidelines4/5

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

Gives an explicit prerequisite ('Requires voiceover to exist (timing comes from it)') that tells an agent when it is valid to call, and routes the next pipeline step to animate_segment ('generated video is added... with animate_segment'). Lacks an explicit when-not-to-use statement naming alternative planners such as generate_segments, 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.

generate_style_templateGenerate style templateAInspect

Render one of a style's two template images — a REAL step of style setup, not an optional extra: a style isn't finished until both its character and environment templates are rendered (the app shows them on the style card). Asset reference images render against them (characters → character template; environments and objects → environment template), and segment renders fall back on them when a shot has no asset reference — so finish BOTH before generate_asset_reference. Run once per template_type ("character" | "environment") for every new style; skip types the style already has (get_style's templates). A template already exists is a hard stop here — the call refuses unless replace=True, because overwriting one silently re-anchors every future render. Async — await_jobs(style_id=...), then get_style.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoImage model ID; empty uses the template job's default (see list_models)
replaceNoSet True ONLY to deliberately overwrite an existing template of this type — the user must have asked for a new one. Leave False and the call refuses rather than clobbering a template the style already has
style_idYesStyle ID, as returned by create_style or list_styles
template_typeYesWhich of the style's two template images to render: "character" or "environment" — run once for each
editable_sectionsNoPer-call prompt section overrides, keyed by section name; see get_section_template for the template job

TDQS

A4.9/5.0
Behavior5/5

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

Annotations provide no safety hints (all false), so description carries full burden. It discloses that overwriting re-anchors future renders, that an existing template causes refusal unless replace=True, and that the operation is async.

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

Conciseness5/5

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

Dense but every sentence adds unique operational info: purpose, rationale, prerequisites, edge case, and async guidance. Front-loaded with the core purpose, avoiding redundancy.

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

Completeness5/5

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

Despite no output schema, the description fully covers purpose, workflow position, edge cases, and async behavior. It directs to await_jobs and get_style to verify completion, making it operationally complete.

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

Parameters4/5

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

Schema covers 100% of parameters with descriptions, so baseline is 3. Description adds workflow context (run once per type, replace semantics, async follow-up) that goes beyond the schema, justifying a 4.

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

Purpose5/5

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

States 'Render one of a style's two template images' with a specific verb and resource. Explicitly distinguishes from generate_asset_reference and refers to get_style for checking existing templates.

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

Usage Guidelines5/5

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

Provides explicit when-to-use and when-not-to-use guidance: run once per template_type, skip types the style already has, finish both before generate_asset_reference. Also explains the hard stop and replace=True exception.

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

generate_voiceoverGenerate voiceoverAInspect

Generate TTS audio for the project's voice blocks. Without voice_block_ids it fills gaps: only blocks with no audio yet run, so re-calling it is always safe (already-generated and currently-generating blocks are skipped, never re-billed). Pass voice_block_ids to explicitly REgenerate those blocks (e.g. after changing a block's voice). Speakers must have voices bound first — set_narrator_voice / set_character_voice. Optional editable_sections/settings apply to every selected block (see get_section_template("voice_block") and list_models("voice_block")). Async — returns one job per block.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoTTS model ID; empty uses the default for the project's TTS provider. If set, it must belong to that provider — see list_models("voice_block") for each model's provider
settingsNoModel-specific TTS settings applied to every selected block; valid keys come from the model's settings_schema in list_models("voice_block")
project_idYesProject ID, as returned by create_project or list_projects
voice_block_idsNoBlock IDs (from list_voice_blocks) to explicitly REgenerate; omit to fill gaps — only blocks with no audio yet run
editable_sectionsNoPer-call prompt section overrides applied to every selected block; see get_section_template("voice_block")

TDQS

A4.9/5.0
Behavior5/5

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

Discloses re-call safety, skipping of already-generated/currently-generating blocks, no double-billing, and async return of one job per block. This adds meaningful context beyond the annotations, especially since idempotentHint is false but the gap-fill mode is idempotent.

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

Conciseness5/5

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

Single dense paragraph with every sentence earning its place. Front-loaded with the main action, followed by mode behavior, safety, prerequisites, and async note. No fluff or repetition.

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

Completeness5/5

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

Covers all critical aspects: operation, two invocation modes, safety semantics, prerequisites, optional parameter scope, and async return behavior. With no output schema, the 'returns one job per block' statement suffices. References companion tools for deeper details.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds semantic value by explaining voice_block_ids behavior (gap-fill vs explicit regeneration), the scope of settings/editable_sections (applied to every selected block), and referencing where to find valid keys.

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

Purpose5/5

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

Description starts with a specific verb+resource ('Generate TTS audio for the project's voice blocks') and immediately distinguishes two usage modes: gap-filling without voice_block_ids and explicit regeneration with them. This clearly differentiates it from siblings like list_voice_blocks and update_voice_block.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance: omit voice_block_ids to fill gaps safely, pass them to REgenerate. States prerequisite (voices bound via set_narrator_voice/set_character_voice) and points to get_section_template and list_models for optional parameter details.

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

get_credit_balanceGet credit balanceA
Read-onlyIdempotent
Inspect

Current credit balance + plan info. Check before expensive steps (a full segment render can cost hundreds of credits — generate_segments dry_run gives the estimate). Jobs covered by a BYOK provider key bill 0.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description does not contradict them. It adds useful context about what data is returned (balance and plan info) and billing behavior, which goes 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.

Conciseness5/5

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

Two short sentences; first states purpose, second gives usage guidance. No wasted words. Front-loaded and efficient.

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

Completeness5/5

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

For a tool with no parameters and no output schema, the description fully covers what it does and when to use it. The billing nuance adds completeness.

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

Parameters4/5

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

The input schema has 0 parameters with 100% schema description coverage. Baseline is 4. The description does not need to add parameter info, and it doesn't.

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

Purpose5/5

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

The description clearly states it provides 'current credit balance + plan info', which is a specific verb+resource combination. No sibling tool overlaps with this purpose, so it is unambiguous.

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

Usage Guidelines5/5

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

Explicitly advises to check before expensive steps, provides a concrete example (full segment render costing hundreds of credits), and mentions alternative (generate_segments dry_run for estimate). Also clarifies that BYOK jobs bill 0. This is excellent guidance.

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

get_pipeline_progressGet pipeline progressA
Read-onlyIdempotent
Inspect

THE resume/orientation tool: one call returns every pipeline step's state (script -> scan -> reference_images -> voices -> voiceover -> style_templates -> storyboard -> segment_assets -> scenes -> export), any running jobs, and a next_action telling you exactly what to do next. Call this when picking up an existing project, after any await_jobs, or whenever you're unsure where a video stands — never guess pipeline position.

Every step carries a web_url — the page in the Framesail web app where your
user can see that step's output. Share it whenever you present a step's
results ("review the storyboard here: ...") so they can inspect and edit in
the browser; the app and this API act on the same live state.
ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID, as returned by create_project or list_projects

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds context that it provides comprehensive state, web URLs for step outputs, and next_action guidance, which is behaviorally rich.

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

Conciseness4/5

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

Two efficient paragraphs, front-loaded with purpose and usage. The second paragraph adds important web_url guidance, though it slightly extends beyond core purpose.

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

Completeness5/5

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

Completes the picture for a complex pipeline tool without output schema: explains return structure, step list, next_action role, and web URL usage. No gaps for agent to infer.

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

Parameters3/5

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

Schema coverage is 100% with one parameter (project_id) that has a clear description. The description adds minor clarification about project_id source but does not significantly extend beyond schema.

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

Purpose5/5

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

The description clearly states it returns every pipeline step's state, running jobs, and next_action, using specific step names. It distinguishes itself as a resume/orientation tool from sibling tools that perform individual pipeline actions.

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

Usage Guidelines5/5

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

Explicitly states when to call: when picking up an existing project, after await_jobs, or when unsure of video status. Includes directive 'never guess pipeline position'.

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

get_projectGet projectA
Read-onlyIdempotent
Inspect

Fetch a project row — settings, voice config, default style, export URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID, as returned by create_project or list_projects

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, indicating a safe read operation. The description adds value by detailing the response content (settings, voice config, etc.), which goes beyond the annotations and informs the agent of what to expect.

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

Conciseness5/5

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

The description is a single sentence that conveys the essential information without any fluff. Every word is meaningful, and the structure is front-loaded with the action and resource.

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

Completeness5/5

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

Given the tool's simplicity (one parameter, no output schema), the description is complete. It explains what data is returned, compensating for the lack of an output schema. The context signals and sibling tools further clarify its role.

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

Parameters3/5

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

The input schema has 100% coverage for the single parameter project_id, with a clear description in the schema. The tool description does not add additional semantics beyond what is already in the schema, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Fetch a project row' and lists specific fields returned (settings, voice config, default style, export URL), making the purpose explicit and distinct from sibling tools like create_project, update_project, and list_projects.

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

Usage Guidelines4/5

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

The description implies use for retrieving a single project by ID, which is clear. However, it does not explicitly state when not to use it (e.g., use list_projects for browsing or update_project for modifications), so it lacks explicit exclusion guidance.

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

get_scriptGet scriptA
Read-onlyIdempotent
Inspect

Read the active script's full text + the version list. Use this to show the script to your user for review/feedback before scan_script — the review-edit-resave loop (get_script -> discuss -> save_script) is the expected workflow when the user wants input.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID, as returned by create_project or list_projects

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by specifying the exact return content (full text + version list), which goes beyond the annotations. No contradictions.

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

Conciseness5/5

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

Two concise sentences, front-loaded with the main purpose. No extraneous words; every sentence adds value.

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

Completeness5/5

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

Given a single required parameter, no output schema, and comprehensive annotations, the description provides sufficient context about the tool's role in the workflow and expected behavior.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents the single parameter (project_id) adequately. The description does not add new parameter semantics beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool reads the active script's full text and version list. The verb 'Read' and resource 'script' are explicit, and it distinguishes itself from sibling tools like scan_script or save_script.

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

Usage Guidelines5/5

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

The description explicitly instructs to use this tool before scan_script and within a review-edit-resave workflow. It provides clear guidance on when and how to use this tool versus alternatives.

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

get_section_templateGet section templateA
Read-onlyIdempotent
Inspect

Inspect the prompt sections a generation job exposes for per-call override via editable_sections (jobs: script, script_scan, storyboard, segment_image, segment_video, voice_block, ...). Sections marked locked cannot be overridden.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobYesGeneration job name, e.g. "script", "script_scan", "storyboard", "segment_image", "segment_video", "voice_block"

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive. Description adds key behavioral detail: 'Sections marked locked cannot be overridden', which is 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.

Conciseness5/5

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

Two sentences, no fluff. Purpose stated upfront, followed by essential behavioral constraint. Every sentence adds value.

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

Completeness5/5

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

Simple tool with one parameter; description sufficiently explains input and expected output (list of sections with locked flag). No output schema needed.

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

Parameters3/5

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

Schema covers the single parameter 'job' with 100% description coverage (lists examples). Description reiterates examples and adds context linking to editable_sections, but adds little new meaning beyond schema.

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

Purpose5/5

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

Description explicitly states 'Inspect the prompt sections a generation job exposes for per-call override via editable_sections', clearly defining verb, resource, and purpose. Includes example job names, distinguishing it from siblings.

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

Usage Guidelines4/5

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

Implicitly clear when to use: to inspect editable sections before overriding. No explicit exclusions or alternatives, but context and sibling list make purpose distinct.

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

get_segment_assetsGet segment assetsA
Read-onlyIdempotent
Inspect

List one segment's assets (images/video/overlays) including their status, config (prompts, model), and public URLs of rendered files — pass an image's public_url to view_image to actually look at it.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID, as returned by create_project or list_projects
segment_numberYes1-based segment number, as reported by get_segments

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds return details (status, config, public URLs) which is useful but not extensive. 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.

Conciseness5/5

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

Two sentences, front-loaded with action, no redundant information. Every sentence adds value.

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

Completeness5/5

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

No output schema, but description adequately explains return content (status, config, public URLs) and hints at next step (view_image). Complete for a listing tool with two required params and good annotations.

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

Parameters3/5

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

Schema has 100% coverage with clear descriptions for both parameters. Description does not add additional parameter-level information, so baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly specifies verb 'list', resource 'one segment's assets', and includes details on what is returned (status, config, public URLs). It also distinguishes from sibling 'view_image' by noting that to view an image, use view_image.

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

Usage Guidelines4/5

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

Explicitly states the tool lists assets for a segment and provides guidance to use view_image for actually viewing images. Lacks explicit when-not-to-use but the context is clear.

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

get_segmentsList segmentsA
Read-onlyIdempotent
Inspect

List the storyboard's segments (narration span, type, duration, creative direction). The 1-based segment_number is the handle every segment tool takes (update/split/combine/continuation/regenerate) — you never need a UUID. Returns {total, offset, returned, segments}; on big projects page through with offset/limit rather than fetching all segments in one call.

Each segment also reports `continues_from_segment`. When set, this shot is a
CONTINUATION of that earlier segment: its rendered frame carries over (same
composition, characters, and setting) and only the delta changes — an added
overlay, a shifted expression, a closer angle, a slow reframe. Null means a
fresh, independent shot. The storyboard plans these chains automatically;
adjust them with set_segment_continuation.
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum segments to return; 0 returns all. Long-form projects can hold 100+ segments — page with offset/limit instead of pulling everything at once.
offsetNo0-based index of the first segment to return (pagination)
project_idYesProject ID, as returned by create_project or list_projects

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark this as read-only, idempotent, and non-destructive, and the description reinforces a pure listing behavior with no side effects. It adds substantial value beyond annotations by documenting the return shape ({total, offset, returned, segments}), the pagination behavior, and the semantics of continues_from_segment including the visual carry-over of continuation shots. 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.

Conciseness5/5

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

Three short, logically organized paragraphs: scope/handle, response shape/pagination, then continuation semantics. The front-loaded first sentence tells the agent exactly what the tool returns, and every later paragraph earns its place by explaining the response and the key returned field. Despite the length, it reads efficiently and avoids fluff.

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

Completeness5/5

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

Because there is no output schema, the description carries the burden of explaining the return value, and it does so clearly: the segments list, pagination envelope, and meaning of continues_from_segment. Required parameter project_id, pagination options, and the next-step tools (set_segment_continuation, update/split/combine) are all addressed. This is complete enough for an agent to select and invoke the tool correctly without further inference.

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

Parameters3/5

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

The input schema already provides 100% parameter coverage, with detailed descriptions for project_id, limit, and offset, so the description carries little burden. It does reinforce the offset/limit pagination pattern, but this largely mirrors the schema's own wording ('page with offset/limit instead of pulling everything at once'). It adds no new parameter-specific meaning, so baseline 3 is appropriate.

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

Purpose5/5

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

Opens with a specific verb and resource: 'List the storyboard's segments' and enumerates the returned fields (narration span, type, duration, creative direction). It also clarifies the segment_number handle, distinguishing this as the canonical list/metadata tool among many segment-related siblings. The title 'List segments' reinforces the clear scope.

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

Usage Guidelines4/5

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

The description tells the agent this is where to obtain the 1-based segment_number used by every segment mutation tool, implying a natural 'list first, then update/split/combine' workflow. It also gives explicit pagination guidance via offset/limit for large projects. It doesn't name alternative tools directly or state when not to use it, but the context is clear.

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

get_styleGet styleA
Read-onlyIdempotent
Inspect

Fetch one style row — its inputs (reference material), analyzed fields (art_style, narrative_style, director_style, script_prompt, ...), and templates: {"character": url|null, "environment": url|null}, the two template images. A null there means that template is genuinely missing and needs generate_style_template; a URL means it exists (view_image it) — don't re-render it. Show fields to the user for review; fine-tune with update_style_fields. inputs_stale: true means the references changed since the last analysis run — the analyzed fields don't reflect them; offer the user analyze_style (it rewrites those fields).

ParametersJSON Schema
NameRequiredDescriptionDefault
style_idYesStyle ID, as returned by create_style or list_styles

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/non-destructive annotations, the description reveals important state semantics: null vs URL template meaning, the fact that inputs_stale indicates analyzed fields are outdated, and the downstream consequences of those states. This is meaningful behavioral context not present 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.

Conciseness4/5

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

The description is dense and every clause earns its place, covering the return shape, null/URL handling, and stale-input behavior. It is slightly long but justified by the semantic complexity of the tool's return state.

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

Completeness5/5

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 explaining return values and state interpretation. It covers the main fields, the templates object, null semantics, and inputs_stale behavior, giving an agent everything needed to correctly act on the response.

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

Parameters3/5

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

There is only one parameter, style_id, and the schema already documents it fully as 'Style ID, as returned by create_style or list_styles.' The description adds no new parameter detail, but with 100% schema coverage, the baseline of 3 is appropriate.

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

Purpose5/5

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 ('Fetch one style row') and enumerates exactly what that row contains: inputs, analyzed fields, and templates. It is clearly distinguishable from sibling tools like list_styles, analyze_style, update_style_fields, and generate_style_template.

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

Usage Guidelines5/5

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

The description gives conditional routing guidance: null template values should lead to generate_style_template, URL values to view_image, stale inputs to analyze_style, and review/fine-tuning to update_style_fields. This explicitly tells an agent when to use this tool versus related alternatives.

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

get_video_urlGet video download URLA
Read-onlyIdempotent
Inspect

Download URL for the most recent completed export.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID, as returned by create_project or list_projects

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, indicating a safe read. The description adds contextual details: it returns a download URL for the 'most recent completed export,' which is helpful beyond annotations. No contradictions.

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

Conciseness5/5

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

The description is a single concise sentence with no wasted words. It is front-loaded and directly tells the agent what the tool does.

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

Completeness4/5

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

For a simple retrieval tool with one parameter and clear annotations, the description is mostly complete. It could mention that the export must have been completed, but this is implied. No output schema needed for this context.

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

Parameters3/5

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

Schema coverage is 100% with a single parameter (project_id) described as 'Project ID, as returned by create_project or list_projects.' The description does not add any additional meaning beyond what the schema already provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The title 'Get video download URL' and description 'Download URL for the most recent completed export' clearly state the verb (get/download) and resource (video URL). It distinguishes from siblings like export_video which creates exports, and other get_ tools which retrieve different entities.

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

Usage Guidelines3/5

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

The description implies usage after an export is completed but does not explicitly state when to use this tool versus alternatives, nor does it mention prerequisites (e.g., an export must exist). No guidance on 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_workflow_statusGet workflow statusA
Read-onlyIdempotent
Inspect

Poll this between steps: returns active + recently-finished AI jobs (scope by project_id, or style_id for style analysis), plus per-segment- asset render statuses for projects. A step is done when its jobs reach status=complete (or error, with a user-readable message). NOTE: finished jobs drop out of jobs after ~30s — a short list does NOT mean work was lost; judge render batches by segment_assets statuses (or get_pipeline_progress), never by counting jobs. Prefer await_jobs over polling this in a tight loop.

ParametersJSON Schema
NameRequiredDescriptionDefault
style_idNoStyle ID to scope jobs to (style analysis); pass exactly one of project_id or style_id
project_idNoProject ID to scope jobs to; pass exactly one of project_id or style_id

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint. The description adds crucial behavioral context: finished jobs drop out after ~30s, a short list does not mean work lost, and how to correctly assess render batches. No contradictions.

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

Conciseness5/5

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

Four sentences, well-structured, with clear language and a notable warning in bold. No wasted words; every sentence adds value.

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

Completeness5/5

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

Given the tool's complexity (transient jobs, multiple scope options), the description covers usage, interpretation of results, and links to sibling tools. No output schema exists, but the description hints at return structure (jobs, segment_assets, error messages) adequately.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters. The description adds minimal extra value (e.g., 'for style analysis' for style_id) but largely repeats what the schema already states. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool returns active and recently-finished AI jobs, scoped by project_id or style_id, plus per-segment-asset render statuses. It distinguishes itself from siblings like await_jobs and get_pipeline_progress.

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

Usage Guidelines5/5

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

Explicitly advises polling between steps, recommends preferring await_jobs over tight polling, and warns against counting jobs to judge render batches. Provides clear when-to-use and alternative guidance.

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

list_assetsList assetsA
Read-onlyIdempotent
Inspect

List the project's assets extracted by scan_script — characters, environments, objects. Each has a description (the spec every shot uses to render it — surfaced top-level here; the raw row nests it at ai_output.description), an optional reference image (file_path is a public URL — view_image it), and for characters a voice_id. Review these after scan_script: fix descriptions, then generate_asset_reference for each one (all of them need a reference image before voiceover). asset_type filter: "character" | "environment" | "object".

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_typeNoOptional filter: "character", "environment", or "object"; empty lists all asset types
project_idYesProject ID, as returned by create_project or list_projects

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds useful behavioral context: the output structure (description surfaced top-level, file_path as public URL, voice_id for characters) and the asset_type filter behavior. It 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.

Conciseness5/5

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

The description is concise with two sentences plus a clause. It front-loads the purpose, then provides workflow context, then filter details. Every sentence is necessary and informative, with no redundancy.

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

Completeness5/5

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

Given the simple tool (2 params, no output schema) and rich annotations, the description fully covers what the tool does, what the output contains, and its place in the workflow. It explains the asset types, their attributes, and recommended next steps, making it self-contained.

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

Parameters4/5

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

Schema coverage is 100% with adequate descriptions for both parameters. The description adds value by explaining the asset_type filter values explicitly ('character', 'environment', 'object') and indicating that empty lists all types. It also clarifies the project_id context.

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

Purpose5/5

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

The description clearly states the verb 'list', the resource 'assets', and the scope 'project's assets extracted by scan_script'. It distinguishes from sibling tools like create_asset, delete_asset, update_asset by specifying the source and context.

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

Usage Guidelines4/5

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

The description provides explicit guidance on when to use this tool: 'Review these after scan_script'. It also gives next steps: 'fix descriptions, then generate_asset_reference for each one'. It doesn't explicitly state when not to use or list alternatives, but the context is clear.

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

list_channelsList channelsA
Read-onlyIdempotent
Inspect

List your channels. Every project lives in a channel, which owns the reusable styles (art/narrative/director) that drive generation.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate a safe, read-only operation. The description adds value by explaining that channels own reusable styles, which is behavioral context beyond the annotations. No contradictions or missing disclosures for this simple list.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the action, and every sentence provides essential information. No extraneous content.

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

Completeness5/5

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

For a simple read-only list tool with no parameters and comprehensive annotations, the description sufficiently covers what the tool does and the context of channels. No output schema exists, but the description doesn't need to detail returns for such a standard operation.

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

Parameters4/5

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

There are zero parameters, so schema coverage is trivially 100%. The description does not need to add parameter details, and the baseline for zero parameters is 4. No additional parameter information is required.

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

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'your channels', which is specific and distinct from sibling list tools like list_projects or list_assets. The additional sentence explains the role of channels, reinforcing the tool's purpose.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as list_projects or list_styles. It simply states what it does without context for selection or exclusion.

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

list_modelsList modelsA
Read-onlyIdempotent
Inspect

List the models allowed for a generation job, with display names, credit estimates, and each model's settings_schema — the valid keys for that tool's settings param (e.g. image quality/orientation, video duration). When model is omitted the server picks: the account's saved expert-drawer choice for that job/scope if one exists, else the first entry here. Voice models carry a provider field — a voice_block model must match the project's voice_tts_provider or generate_voiceover rejects it.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobYesGeneration job whose allowed models to list, e.g. "script", "storyboard", "segment_image", "segment_video", "voice_block"

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, and non-destructive behavior. The description adds genuine behavioral context beyond annotations: server-side model selection fallback, the meaning of settings_schema, and the provider matching requirement for voice_block models. 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.

Conciseness5/5

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

Three dense sentences, front-loaded with the main purpose, followed by two high-value clarifications about fallback behavior and voice model constraints. Every sentence earns its place and there is no redundant or filler content.

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

Completeness4/5

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

For a one-parameter read-only list tool with no output schema, the description covers return fields, fallback behavior, and a critical voice-model constraint. Minor gaps such as pagination or ordering are unlikely to matter here, and the description carries the burden well in the absence of an output schema.

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

Parameters3/5

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

The input schema already fully documents the single job parameter with examples, and schema coverage is 100%. The description references job/scope but adds no new syntax or constraints for the parameter itself; the extra detail about settings_schema and provider applies to returned fields, not parameter usage.

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

Purpose5/5

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

The opening sentence names a precise verb and resource: list the allowed models for a generation job, and specifies the returned fields (display names, credit estimates, settings_schema). This clearly distinguishes it from sibling list tools by tying it to generation jobs and model settings.

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

Usage Guidelines4/5

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

The description gives concrete usage context: what happens when model is omitted, the fallback to the account's saved expert-drawer choice, and the voice model provider constraint relevant to generate_voiceover. It does not explicitly name alternatives or state when not to use this 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.

list_music_tracksList music tracksA
Read-onlyIdempotent
Inspect

List the project's background music tracks (volume, loop, timing).

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID, as returned by create_project or list_projects

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds useful context about the returned properties (volume, loop, timing), going 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.

Conciseness5/5

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

Single sentence, front-loaded with verb and resource, no wasted words.

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

Completeness4/5

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

Given simple tool with one param and rich annotations, description explains what is returned (volume, loop, timing). However, could be more explicit about listing all tracks and output structure.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter, with a good description in the schema. The tool description does not add any additional param information beyond what the schema provides.

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

Purpose5/5

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

Description uses specific verb 'list' and resource 'background music tracks' with properties (volume, loop, timing). Clearly distinguishes from sibling tools like add_music_track and remove_music_track.

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

Usage Guidelines3/5

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

No explicit when-to-use or alternatives provided. The purpose is implied from sibling tool names, but lacks guidance on prerequisites or exclusions.

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

list_projectsList projectsB
Read-onlyIdempotent
Inspect

List projects in a channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYesID of the channel whose projects to list, from list_channels or create_channel

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare the tool as read-only, idempotent, and non-destructive. The description does not add any behavioral context (e.g., pagination, error handling, rate limits, or what happens if the channel is not found). It adds no value 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.

Conciseness5/5

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

The description is a single sentence with no unnecessary words, achieving maximum conciseness. It is well-front-loaded with the core purpose.

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

Completeness2/5

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

Despite the simple structure (1 required param, no output schema), the description fails to explain what is returned (e.g., list of project IDs or full objects). Without output schema, description should specify return format. Also lacks details like ordering, filtering, or limits.

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

Parameters3/5

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

Schema description coverage is 100% (channel_id has a description). The tool description does not mention parameters, so it adds no additional meaning beyond the schema. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description 'List projects in a channel' clearly specifies the verb (list), resource (projects), and scope (in a channel), effectively distinguishing it from sibling tools like get_project (single project) or create_project (create).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like get_project or list_assets. It does not mention prerequisites, ordering, filtering, or pagination. The schema parameter description hints at obtaining the channel_id from other tools, but the description itself offers no usage context.

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

list_provider_keysList provider keysA
Read-onlyIdempotent
Inspect

List registered BYOK providers (masked — only the last 4 characters). Returns {keys: [...]}; an empty list means no keys are registered (every job bills platform credits).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description adds meaningful behavioral details beyond the annotations: the masking behavior ('only the last 4 characters') and the interpretation of an empty result. These are not available in the annotations or schema, making the description genuinely informative.

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

Conciseness5/5

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

Two compact sentences deliver the key facts with no filler. The main behavior (list masked provider keys) is front-loaded, and the return semantics are stated immediately afterward.

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

Completeness5/5

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

For a zero-parameter, read-only, idempotent list operation, the description fully covers what an agent needs: what is returned, how it is masked, and how to interpret an empty list. The annotations already 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.

Parameters4/5

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

The tool has zero parameters and 100% schema coverage, so parameter documentation is structurally complete. The description adds no parameter details, but none are needed; per the baseline for zero-parameter tools, this is appropriate.

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

Purpose5/5

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

The description states a specific verb ('List') and resource ('registered BYOK providers') and adds a distinguishing detail: keys are masked to the last 4 characters. This clearly sets it apart from sibling list_* tools without needing to inspect schemas.

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

Usage Guidelines4/5

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

The description provides clear context by explaining the return shape and the meaning of an empty list (no keys registered, so jobs bill platform credits). It does not explicitly name alternative tools or exclusion conditions, but the resource is distinct enough that usage is well implied.

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

list_scenesList scenesA
Read-onlyIdempotent
Inspect

List the project's scenes in timeline order. Default rows are light summaries ({scene_id, segment_number, duration_frames, status, layer_count}) — enough to address a scene by number or id; include_composition=True returns the full layer/layout JSON (bulky — page with offset/limit on long projects). Returns {total, offset, returned, scenes}.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum scenes to return; 0 returns all
offsetNo0-based index of the first scene to return (pagination)
project_idYesProject ID, as returned by create_project or list_projects
include_compositionNoInclude each scene's full composition JSON (layers, layout) — kilobytes per scene, so page with offset/limit when True; the default summary rows are enough for ids and director notes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses timeline ordering, the difference between summary and full composition output, the bulk/volume warning, and the exact response envelope {total, offset, returned, scenes}. This gives the agent a realistic expectation of cost and 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.

Conciseness5/5

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

The description is compact and front-loaded: it states the core behavior first, then the mode trade-off, then the return shape. Every clause contributes useful information with no repetition or filler.

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

Completeness5/5

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 supplies the response wrapper shape and enough detail about both output modes to interpret results. Combined with annotations covering side-effect safety, nothing an agent needs to invoke or understand the tool is missing.

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

Parameters4/5

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

The schema already documents all four parameters with 100% coverage, so the baseline is 3. The description adds value by explaining when summary fields suffice, warning that include_composition is bulky, and explicitly tying offset/limit to pagination on long projects.

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

Purpose5/5

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

States a specific verb ('List'), resource ('the project's scenes'), and ordering ('timeline order'), clearly distinguishing it from sibling listing tools for other resource types such as list_assets, list_projects, and list_styles. There is no ambiguity about what the tool returns.

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

Usage Guidelines4/5

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

Provides clear usage context: default light summaries are enough to address a scene by id or number, while include_composition=True returns bulky JSON and should be paginated for long projects. It does not explicitly contrast against a sibling alternative, but the tool's role and the trade-off between modes are clearly laid out.

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

list_style_presetsList style presetsA
Read-onlyIdempotent
Inspect

The curated preset catalog for the no-AI style creation path, grouped by axis (art_style / narrative_style / director_style). Show the user the labels + descriptions and let THEM pick one per axis — don't choose silently. Art presets include preview image URLs (view_image works on them). Create with create_style(presets={axis: id, ...}) — instant, no analysis job. Full field text lands on the style row (get_style shows it after creation).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description goes beyond annotations by revealing that art presets include preview image URLs viewable with view_image, and that creation via create_style is instant with no analysis job. This adds significant behavioral context.

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

Conciseness4/5

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

The description is well-structured and front-loaded, but slightly verbose with some redundant phrases. Still, every sentence adds value and the structure aids quick parsing.

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

Completeness5/5

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

Given the absence of output schema, the description fully compensates by explaining the output format, usage flow, and relationship to other tools. No gaps remain for an agent to understand the tool's role.

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

Parameters5/5

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

There are no parameters, but the description enriches understanding by detailing what the output contains (labels, descriptions, preview URLs) and how to use them, which is the essence of parameter semantics for this tool.

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

Purpose5/5

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

The description clearly states the tool lists curated presets for a no-AI style creation path, grouped by axis (art_style, narrative_style, director_style). It distinguishes this from other style tools like list_styles and the analysis path, providing a specific verb and resource.

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

Usage Guidelines5/5

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

Explicit guidelines are given: show the user labels + descriptions, let them pick per axis, do not choose silently. It also directs the agent to create_style for instant creation, effectively guiding tool selection.

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

list_stylesList stylesA
Read-onlyIdempotent
Inspect

List the channel's style rows (variable groups). Styles hold the art_style / narrative_style / director_style / script_prompt fields that drive every generation step, plus any custom @variables.

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYesID of the channel that owns the styles, from list_channels

TDQS

A3.6/5.0
Behavior3/5

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 clear. The description adds context about what the styles contain, but does not mention pagination, ordering, or return format. Extra detail would improve transparency.

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

Conciseness5/5

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

Two sentences, no redundancy, front-loaded with the action. Every word adds value. Excellent conciseness.

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

Completeness4/5

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

For a simple list tool with one parameter and no output schema, the description covers purpose and what the items represent. A minor gap is the lack of explicit mention that the output is a list of style objects, but it is implied by 'List the channel's style rows.'

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

Parameters3/5

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

The single parameter (channel_id) is fully described in the input schema with a clear description. With 100% schema coverage, the description adds no additional parameter semantics beyond the schema, hitting the baseline.

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

Purpose4/5

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

The description clearly states the tool lists 'style rows (variable groups)' and mentions specific fields (art_style, narrative_style, etc.), making the purpose specific. However, it does not explicitly differentiate from sibling tools like get_style or create_style, which would push it to a 5.

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

Usage Guidelines3/5

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

The description explains that styles 'drive every generation step,' implying when to use this tool (to see styles affecting generation), but it gives no guidance on when not to use it or how it compares to alternatives like get_style or analyze_style.

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

list_voice_blocksList voice blocksA
Read-onlyIdempotent
Inspect

List the project's voice blocks (per-speaker narration chunks) with their audio status and assigned voices. A block's scene_direction is the script's [SCENE: ...] direction governing it (never spoken; null when the span carries none). Word-level subtitle timings are stripped unless include_subtitle_data=True.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID, as returned by create_project or list_projects
include_subtitle_dataNoInclude each block's word-level subtitle timings — bulky and rarely needed; omitted by default (subtitle_data reports "omitted" when present but stripped)

TDQS

A4.3/5.0
Behavior5/5

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

The description goes well beyond the annotations by explaining the semantics of scene_direction (never spoken, null when absent) and by disclosing that subtitle timings are stripped by default unless include_subtitle_data=True. These are non-obvious behaviors an agent needs to interpret results correctly.

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

Conciseness5/5

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

The description is compact and every sentence earns its place: purpose, field clarification, and default behavior. It is front-loaded with the core action and keeps supporting details brief.

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

Completeness5/5

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

For a simple read-only list tool, the description covers what is returned (audio status, assigned voices), clarifies a key field's semantics, and explains the optional parameter's effect. With annotations already covering safety and idempotence, nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters are already well documented. The description reinforces the include_subtitle_data behavior but adds no meaningfully new parameter information beyond the schema.

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

Purpose5/5

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

The description states a specific verb and resource: 'List the project's voice blocks', and clarifies exactly what a voice block is ('per-speaker narration chunks'). It also differentiates the resource from sibling tools by focusing on voice blocks rather than scenes, segments, or assets.

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

Usage Guidelines3/5

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

The description implies usage: an agent should use this when it needs voice blocks with audio status and assigned voices. However, it does not explicitly discuss alternatives such as update_voice_block or rescan_voice_blocks, nor does it state 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.

list_voicesList voicesA
Read-onlyIdempotent
Inspect

List available TTS voices (id, label, preview audio URL) for a provider: "minimax" (default engine) or "elevenlabs". Match the project's voice_tts_provider (see get_project) so picked ids work with its engine. Returns {groups: {name: count}, voices}; the ElevenLabs catalogue is 150+ voices, so pass group (names from groups) rather than reading it all at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoReturn only this catalogue group (case-insensitive; e.g. "Narration", "Characters"). Empty returns every group — the ElevenLabs catalogue is 150+ voices, so filter it by group; the response's `groups` lists the valid names with counts.
providerNoTTS engine to list voices for: "minimax" (default engine) or "elevenlabs"; match the project's voice_tts_providerminimax

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavior beyond annotations: it reveals the response shape ({groups, voices}) and warns about the large ElevenLabs catalogue, guiding the agent to filter.

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

Conciseness5/5

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

Three dense sentences with no filler: purpose, provider guidance, and response/filtering note are each front-loaded and necessary. The structure makes the key operational detail (large catalogue, use groups) easy to find.

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

Completeness5/5

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

For a low-complexity read-only tool with richly annotated schema and no output schema, the description supplies the essential missing pieces: return shape, provider-project matching, and group filtering. Nothing critical is left unexplained.

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

Parameters3/5

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 'group' and 'provider' well. The description reinforces the provider choices and the group-filtering strategy but does not add substantial new parameter-level meaning beyond what the schema provides.

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

Purpose5/5

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

The description starts with a specific verb and resource: 'List available TTS voices' and names the returned fields (id, label, preview audio URL). It also distinguishes the two provider engines, making the tool's scope clear relative to sibling tools like list_voice_blocks.

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

Usage Guidelines4/5

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

It gives clear practical context: match the project's voice_tts_provider (pointing to get_project) and filter by group for ElevenLabs to avoid reading 150+ voices. It does not explicitly name exclusions or alternatives, but the guidance is sufficient for correct use.

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

project_director_noteDirector note (whole project)AInspect

Apply a project-WIDE director note ("make the intro punchier", "all captions bigger", "tighten pacing in the back half"). A routing pass picks only the scenes the note applies to and edits each one. Synchronous — a few seconds per affected scene. Returns the per-scene results; re-run export_video afterwards to see changes in the final render.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesProject-wide director note in natural language, e.g. "make the intro punchier" or "all captions bigger"
project_idYesProject ID, as returned by create_project or list_projects

TDQS

A4.5/5.0
Behavior5/5

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

Disclosure goes well beyond annotations: synchronous, per-scene processing, returns per-scene results, and necessity to re-run export_video. No 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.

Conciseness5/5

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

Two sentences, front-loaded with purpose, no filler. Every sentence adds value.

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

Completeness5/5

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

Describes behavior, post-conditions, and return value despite no output schema. With full schema coverage, handles completeness well.

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

Parameters3/5

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

Schema coverage 100%, description adds natural language examples to 'message' but no new meaning beyond schema. Baseline 3 is appropriate.

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

Purpose5/5

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

Starts with 'Apply a project-WIDE director note' with concrete examples, clearly distinguishing from sibling director_note (likely per-scene). Specific verb+resource+scope.

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

Usage Guidelines4/5

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

Describes when to use (project-wide note) and post-condition (re-run export_video). Lacks explicit exclusions or alternative tools, but context with sibling provides implicit guidance.

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

regenerate_segment_assetRegenerate segment assetAInspect

Regenerate a segment's primary image or video with optional overrides — the API equivalent of the editor's expert drawer. asset_type: "image" | "video" (for a video segment, "image" targets its start frame). Use a different model, override prompt sections (see get_section_template("segment_image")), or tweak settings (e.g. image quality), then re-run just this asset. Async — returns {job_id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModel ID to render with; empty uses the job's default (see list_models("segment_image") / list_models("segment_video"))
settingsNoModel-specific settings (e.g. image quality, video duration); valid keys come from the model's settings_schema in list_models
asset_typeYes"image" or "video"; for a video segment, "image" targets its start frame
project_idYesProject ID, as returned by create_project or list_projects
segment_numberYes1-based segment number, as reported by get_segments
editable_sectionsNoPer-call prompt section overrides, keyed by section name; see get_section_template("segment_image") or ("segment_video")

TDQS

A4.5/5.0
Behavior4/5

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

Annotations are non-committal (no readOnly/hints), but the description adds key behavioral details: async execution, returns {job_id}, and that it is the API equivalent of the editor's expert drawer. This goes 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.

Conciseness5/5

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

The description is concise (4 sentences) with no wasted words. It front-loads the main purpose, then clarifies key parameters and async behavior, making it easy to parse quickly.

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

Completeness5/5

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

Given no output schema, the description adequately explains the return value ({job_id}). It also references related tools for parameter details, making it self-contained for an agent. No gaps are apparent.

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

Parameters4/5

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

Schema coverage is 100% with descriptions, but the description adds context beyond the schema, such as clarifying that asset_type 'image' for a video segment targets the start frame, and listing the purpose of editable_sections and settings.

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

Purpose5/5

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

The description clearly states the tool regenerates a segment's primary image or video with optional overrides, explicitly mentioning asset_type and async behavior. It distinguishes itself from siblings by focusing on regenerating individual assets.

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

Usage Guidelines4/5

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

The description explains when to use the tool (re-run just this asset with different model, overrides, settings) and references related tools like get_section_template and list_models. However, it does not explicitly state when not to use it or mention alternatives.

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

remove_music_trackRemove music trackA
Destructive
Inspect

Remove a music track from the project.

ParametersJSON Schema
NameRequiredDescriptionDefault
track_idYesID of the music track to remove, from list_music_tracks

TDQS

A4/5.0
Behavior3/5

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

Annotations already set destructiveHint=true, so description confirms removal but adds no new behavioral details (e.g., irreversibility, permissions). 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.

Conciseness5/5

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

Single sentence, no unnecessary words, directly conveys the tool's function.

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

Completeness4/5

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

For a simple removal tool with one parameter, the description is sufficient. No output schema needed. Could mention if operation is reversible, but still complete enough.

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

Parameters4/5

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

Schema has 100% coverage with description for track_id including source hint 'from list_music_tracks'. Description adds context beyond schema, improving parameter clarity.

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

Purpose5/5

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

Description uses clear verb 'remove' and resource 'music track' with scope 'project'. Distinguishes well from siblings like 'add_music_track' and 'update_music_track'.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives (e.g., when to remove vs update). It mainly states the action without context on prerequisites or side effects.

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

remove_segment_sfxRemove segment sound effectA
Destructive
Inspect

Remove a sound effect from a segment. With one SFX attached, no name needed; with several, pass sfx_name (the asset name shown by get_segment_assets).

ParametersJSON Schema
NameRequiredDescriptionDefault
sfx_nameNoName of the SFX asset to remove, as shown by get_segment_assets; needed only when the segment has several SFX attached
project_idYesProject ID, as returned by create_project or list_projects
segment_numberYes1-based segment number, as reported by get_segments

TDQS

A4.6/5.0
Behavior4/5

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

The description aligns with the destructiveHint annotation (removal) and adds important behavioral detail: the conditional requirement for sfx_name based on the number of attached SFX. It does not contradict annotations. The description goes beyond what annotations provide by specifying the source of the asset name.

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

Conciseness5/5

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

Two sentences, each earning their place. The first sentence states the core action. The second provides critical usage guidance. No unnecessary words.

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

Completeness4/5

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

For a simple deletion tool with 3 well-documented parameters and no output schema, the description provides sufficient context without needing to explain return values. It could mention failure handling, but it's not essential for a basic removal operation.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by clarifying the conditional nature of sfx_name in a more natural language, reducing ambiguity for the agent.

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

Purpose5/5

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

The description clearly states 'Remove a sound effect from a segment', specifying the verb (remove), resource (sound effect), and scope (segment). It distinguishes itself from siblings like 'add_segment_sfx' and 'remove_music_track'.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to include the sfx_name parameter: 'With one SFX attached, no name needed; with several, pass sfx_name.' It also references 'get_segment_assets' for retrieving the correct name, helping the agent determine the right usage context.

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

rescan_voice_blocksRescan voice blocksA
Destructive
Inspect

Re-extract voice blocks from the active script WITHOUT touching assets or their reference images — the non-destructive alternative to scan_script after a script edit. Blocks whose spoken text is unchanged keep their audio; only edited blocks come back empty, so a follow-up generate_voiceover fills just the gaps. Synchronous and free — the split is deterministic. Returns {block_count}.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID, as returned by create_project or list_projects

TDQS

A3.7/5.0
Behavior1/5

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

The description repeatedly claims this is 'non-destructive' and that it works 'WITHOUT touching assets or their reference images,' but the annotations set destructiveHint=true. This is a direct contradiction about core side effects, making the description actively misleading rather than transparent.

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

Conciseness5/5

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

The description front-loads the core behavior and exclusion, then adds only high-value context: re-scan behavior, follow-up guidance, execution mode, cost, and return value. Every sentence earns its place; there is no filler.

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

Completeness3/5

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

For a single-parameter tool with no output schema, the description is otherwise quite complete: it states the return shape, the behavior on unchanged vs. edited blocks, and the recommended follow-up. However, the destructiveHint contradiction creates a critical gap in safety context, so the description cannot be considered fully trustworthy or complete.

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

Parameters3/5

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

The only parameter, project_id, is fully described in the schema, including its source ('as returned by create_project or list_projects'). Schema coverage is 100%, so the description need not add param-level detail. Baseline 3 is appropriate.

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

Purpose5/5

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

The description names a specific verb ('Re-extract') and resource ('voice blocks from the active script'), and immediately distinguishes itself from scan_script. Even without reading the schema, an agent understands exactly what this tool does and how it differs from its closest sibling.

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

Usage Guidelines5/5

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

Explicitly states when to use it ('after a script edit'), names the alternative it replaces (scan_script), and prescribes the follow-up tool (generate_voiceover) for edited blocks. This is model usage guidance with clear conditions and next steps.

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

revise_scriptRevise scriptAInspect

AI-rewrite a passage of the active script in the project's narrative voice (the same in-editor revise the UI offers). selected_text must appear verbatim in the script; omit it to revise the whole script. [SCENE: ...] directions in range are preserved exactly, in place, unless the instruction asks to change them. Synchronous — returns {revised_text}, which is NOT saved: splice it over selected_text (or replace the full script) and call save_script to keep it.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID, as returned by create_project or list_projects
instructionYesNatural-language edit instruction, e.g. "make the intro punchier"
selected_textNoExact passage to rewrite; must appear verbatim in the active script. Omit to revise the whole script

TDQS

A4.7/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing that the tool is synchronous, returns {revised_text}, does NOT save changes, preserves [SCENE: ...] directions, and requires explicit follow-up with save_script. This gives the agent a full picture of side effects 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.

Conciseness5/5

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

Three dense, front-loaded sentences cover purpose, key constraints, preservation behavior, synchronization, return value, and the required follow-up. Every sentence earns its place, with no redundant elaboration or restating of the title.

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

Completeness5/5

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

Given only 3 parameters, no output schema, and no nested objects, the description fully equips an agent to invoke the tool correctly. It explains return shape, non-persistence, selected_text constraints, scene-direction handling, and the save_script workflow, so no critical operational detail is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful context by explaining selected_text's verbatim requirement and that omitting it revises the whole script, plus clarifying the output shape. This goes beyond the schema's terse parameter descriptions.

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

Purpose5/5

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

The description clearly states a specific action ('AI-rewrite a passage') on a specific resource ('the active script') in a defined style ('the project's narrative voice'). It also distinguishes itself from nearby tools like generate_script and save_script by noting it's the same as the in-editor revise UI and explicitly not saved.

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

Usage Guidelines4/5

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

The description gives clear context on how to use the tool: selected_text must match verbatim, omit it for the whole script, and follow up with save_script. It does not explicitly name alternative tools or state when not to use it, but the workflow is unambiguous enough for an agent to choose correctly.

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

rollback_segment_assetRestore previous renderAInspect

Restore a previously rendered version of a segment's image or video — every regeneration archives the render it replaces (last 5), so a regen that came out worse is reversible for free. The current render is archived in its place, making the rollback itself reversible. The frame/clip pair restales as usual: rolling the image back marks a rendered clip out of date.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexNoWhich archived render to restore, 0 = the most recent (each asset's config.history in get_segment_assets lists them)
asset_typeYes"image" or "video" — which primary to restore; for a video segment, "image" targets its start frame
project_idYesProject ID, as returned by create_project or list_projects
segment_numberYes1-based segment number, as reported by get_segments

TDQS

A4.1/5.0
Behavior4/5

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

With only false boolean annotations, the description carries the behavioral burden and does substantial work: it discloses that the last 5 renders are archived, the previous render is archived in place so the rollback itself is reversible, and rolling back an image marks the rendered clip out of date. This goes well beyond the schema and annotations, though it does not describe failure modes or prerequisites.

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

Conciseness4/5

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

The description is front-loaded with the core action and each sentence contributes useful behavioral detail. It is slightly wordy and contains a typo ('restales'), but it remains concise and scannable.

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

Completeness4/5

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

For a 4-parameter tool with no output schema and only negative annotation hints, the description is nearly complete: it explains history depth, reversibility, and side effects on rendered clips. It stops short of describing return values or error conditions, but an agent has enough context to call the tool correctly.

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

Parameters3/5

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

The input schema already provides 100% parameter coverage with descriptions for project_id, segment_number, asset_type, and index. The tool description adds little parameter-specific meaning beyond restating that asset_type refers to image or video, so the schema carries the semantic load and the description earns a baseline 3.

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

Purpose5/5

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: 'Restore a previously rendered version of a segment's image or video.' It clearly identifies what the tool acts on and how it differs from regenerating or updating assets, especially alongside the sibling regenerate_segment_asset.

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

Usage Guidelines4/5

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

The description gives clear context: a regeneration that turned out worse can be reversed by rolling back to an archived render. It does not explicitly enumerate alternatives or state when not to use it, but the intended use case is strongly implied by the 'regen that came out worse is reversible' framing.

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

save_scriptSave scriptAInspect

Save script text (your own draft, or an edited version of the generated one). Saving UPDATES the active version in place — the previous text is not kept, so show the user the current script (get_script) before overwriting it. New versions are created by generate_script runs, and activate_script_version switches between those. Run scan_script afterwards so assets and voice blocks reflect the new text.

Three notations the script text carries, none of them ever spoken:

SCENE DIRECTIONS — `[SCENE: <visual direction>]` as its OWN paragraph
(blank line before and after; brackets inside a narration paragraph are
never matched). It directs the storyboard for the narration that follows
it, until the next direction. For that span it OUTRANKS the channel
director style's shot choices — say what is on screen, who is in frame,
and any on-screen text you need baked in verbatim — while the director
style still governs look and rhythm. It is NOT a segmentation constraint:
the storyboard still cuts the span into as many segments as the pacing
wants. scan_script's asset extraction reads directions too: a character
or place named ONLY inside a direction is still extracted, under the
exact name the direction uses — no manual create_asset needed for it.

PAUSES — `<break time="1.5s" />` is the ONLY thing that makes the voice
pause. Ellipses, em dashes and paragraph breaks produce no silence at
all, so a script without break tags is read as one continuous sprint.
Both engines honor it (MiniMax natively, ElevenLabs masked out of the
caption alignment). Use ~0.5s between thoughts, ~1.0s at act seams, and
longer where a card or list needs reading time on screen; write ONE tag
with the total ("4.0s"), never two tags back to back. Breaks are also
the pacing lever the project's narrator_speed can't reach: speed changes
how fast words are said, breaks add the silence between them.

SPEAKERS — a paragraph starting `Name: "..."` assigns that line to a
character, who gets their own voice (set_character_voice) and their own
shot. Narration with no prefix is the narrator's.
ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesFull script text to save as a new version; plain prose narration, optionally with `[SCENE: ...]` direction paragraphs, `<break time="0.5s" />` pauses, and `Name:` speaker prefixes
project_idYesProject ID, as returned by create_project or list_projects

TDQS

A4/5.0
Behavior1/5

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

The description prominently discloses that saving overwrites the active version and that the previous text is not kept, which is a destructive effect. However, the annotations declare destructiveHint:false, directly contradicting that disclosure; per the rubric this must score 1.

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

Conciseness4/5

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

The description is long but not padded: it is organized into labeled sections for core behavior and each notation, and each rule prevents a mistake an agent could make. It could trim minor repetition, but the structure makes the length navigable.

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

Completeness4/5

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

The description covers core mutation behavior, ordering constraints, notation details, scan_script extraction consequences, and exceptions such as brackets inside narration. It is nearly complete, but the contradiction with destructiveHint and the absence of any return-value/result information leave a small gap for an agent.

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

Parameters5/5

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

Although the schema already documents both parameters (100% coverage), the description greatly expands the meaning of content by specifying the three notations: SCENE DIRECTIONS syntax and matching rules, break tags as the only pause mechanism with recommended durations, and speaker prefix format. This is far more than the schema alone provides.

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

Purpose5/5

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

The description opens with a precise verb and resource: 'Save script text', and immediately scopes it to both user drafts and edited versions of generated scripts. It also distinguishes the tool from siblings by stating that saving updates the active version rather than creating or switching versions.

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

Usage Guidelines5/5

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

The description gives an explicit workflow: fetch the current script with get_script before overwriting, use generate_script for new versions, activate_script_version for switching, and run scan_script afterwards. This tells an agent exactly when save_script is appropriate and what to do around it.

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

scan_scriptScan scriptA
Destructive
Inspect

Analyze the active script: extracts character/environment/object assets and splits narration into voice blocks. DESTRUCTIVE on re-run (assets are recreated, not merged — curated descriptions, reference images, and voices are lost; prefer rescan_voice_blocks after script edits).

Extraction reads the narration AND any `[SCENE: ...]` directions — a
character or place named only inside a direction is still extracted,
under the exact name the direction uses. Directions never leak into
voice blocks (they ride onto the blocks they govern as staging instead).
Review list_assets afterwards and create_asset anything the video needs
that neither narration nor directions ever name. Async — returns
{job_id}.
ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModel ID to scan with; empty uses the default (see list_models("script_scan"))
project_idYesProject ID, as returned by create_project or list_projects
editable_sectionsNoPer-call prompt section overrides, keyed by section name; see get_section_template("script_scan")

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark destructiveHint=true, but the description adds crucial behavioral detail: assets are recreated not merged, curated descriptions/reference images/voices are lost, directions are included in extraction but never leak into voice blocks, and the call is async returning {job_id}. This far exceeds what annotations alone provide and does not contradict them.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, then the critical destructive warning, then edge-case extraction behavior and post-call steps. Every sentence adds actionable information and none feel redundant or wasted.

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

Completeness5/5

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

For a destructive, async tool with no output schema, the description covers the important operational facts: job_id return, destructive re-run behavior, how directions are handled, and recommended follow-up actions. An agent has enough context to decide whether to call it and what to expect.

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

Parameters3/5

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 all three parameters. The description adds some context about the active script and project scope, but it does not need to explain model or editable_sections because the schema already references list_models and get_section_template.

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

Purpose5/5

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

The description says exactly what the tool does: 'Analyze the active script: extracts character/environment/object assets and splits narration into voice blocks.' It names a specific verb and resources, and contrasts itself with rescan_voice_blocks, so an agent can distinguish it from siblings.

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

Usage Guidelines5/5

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

It explicitly warns that re-running is 'DESTRUCTIVE' and tells the agent to 'prefer rescan_voice_blocks after script edits.' It also gives follow-up guidance: 'Review list_assets afterwards and create_asset anything the video needs that neither narration nor directions ever name.' This is clear when-to-use and otherwise guidance.

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

set_character_voiceSet character voiceA
Idempotent
Inspect

Bind a TTS voice to a character asset — required before generate_voiceover for every character with dialogue (the narrator's voice is separate: set_narrator_voice). Browse ids with list_voices.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYesCharacter asset ID, from list_assets
voice_idYesTTS voice ID, from list_voices (use the provider matching the project's voice_tts_provider)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations indicate idempotentHint=true and destructiveHint=false, which the description doesn't contradict. Description adds context that it's a prerequisite binding, but lacks details on whether binding overwrites existing voices or affects other tools.

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

Conciseness5/5

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

Highly concise: two sentences that immediately state purpose and prerequisites with no superfluous words.

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

Completeness5/5

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

For a simple binding tool with no output schema, the description covers the essential purpose, prerequisites, and parameter sourcing. No gaps identified.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions. The description doesn't add new semantics beyond what's in the schema, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Bind a TTS voice to a character asset'), the resource ('character asset'), and distinguishes from sibling tools like set_narrator_voice by noting the narrator's voice is separate.

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

Usage Guidelines5/5

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

Explicitly states when to use ('required before generate_voiceover for every character with dialogue') and when not to (narrator handled by set_narrator_voice). Also provides guidance on browsing IDs with list_voices.

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

set_narrator_voiceSet narrator voiceA
Idempotent
Inspect

Set the project's narrator TTS voice — required before generate_voiceover whenever the script has narration. Browse ids with list_voices. (Character dialogue voices are separate: set_character_voice.)

ParametersJSON Schema
NameRequiredDescriptionDefault
voice_idYesTTS voice ID for the narrator, from list_voices (use the provider matching the project's voice_tts_provider)
project_idYesProject ID, as returned by create_project or list_projects

TDQS

A4.7/5.0
Behavior5/5

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

The description discloses the tool's role in the workflow and its prerequisite relationship with generate_voiceover. Annotations already provide idempotentHint and destructiveHint, so the description adds context about ordering and separation from character voices, which is sufficient transparency.

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

Conciseness5/5

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

Three succinct sentences with no fluff. The description is front-loaded with the core action, followed by usage guidance and distinction from sibling tool. Every word earns its place.

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

Completeness5/5

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 complete schema annotations and sibling context, the description covers purpose, usage timing, alternative tool, and source of allowed values. No output schema is needed; the description is complete.

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

Parameters3/5

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

Schema coverage is 100%, and the description does not add new parameter information beyond what the schema already provides (e.g., 'voice_id' description in schema already mentions list_voices and provider matching). Baseline 3 is appropriate as the description does not enhance parameter semantics.

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

Purpose5/5

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

The description clearly states the action: 'Set the project's narrator TTS voice'. It distinguishes from the sibling tool set_character_voice by noting that character dialogue voices are separate. The verb-resource pairing is specific and unambiguous.

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

Usage Guidelines5/5

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

Explicitly states when to use the tool: 'required before generate_voiceover whenever the script has narration.' It also directs users to browse voice IDs with list_voices and clearly separates narrator voices from character voices, providing a when-not-to-use scenario.

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

set_project_styleSet project styleA
Idempotent
Inspect

Set the project's default style — the style whose art/narrative/director fields drive its generations. Use after create_style to put a new visual identity into effect, or to switch a project between channel styles.

ParametersJSON Schema
NameRequiredDescriptionDefault
style_idYesID of the style to make the project's default, from create_style or list_styles
project_idYesProject ID, as returned by create_project or list_projects

TDQS

A4.5/5.0
Behavior4/5

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

The description explains that the set style's fields drive generations, adding behavioral context beyond annotations. Annotations already indicate non-destructiveness and idempotency; the description adds that this affects generation output. A higher score would require explicitly mentioning idempotency or side effects like permission requirements.

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

Conciseness5/5

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

Two sentences, front-loaded with the main action, efficient and direct with no unnecessary words.

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

Completeness5/5

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 and good annotations, the description is complete: it explains purpose, usage timing, and effect on generations. No gaps.

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

Parameters3/5

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

Schema coverage is 100% with detailed parameter descriptions. The tool description adds no extra parameter meaning; it repeats that style comes from create_style/list_styles and project from create_project/list_projects, already in schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool sets a project's default style, specifying that this style's art/narrative/director fields drive generations. This distinguishes it from siblings like create_style (creates a style) and update_style_fields (updates style properties).

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

Usage Guidelines5/5

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

Explicit usage guidance: 'Use after create_style to put a new visual identity into effect, or to switch a project between channel styles.' This tells when and why to use it, and implicitly contrasts with alternatives like create_style.

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

set_provider_keySet provider keyA
Idempotent
Inspect

Register a BYOK provider API key (encrypted at rest, BYOK plan only). Jobs whose model belongs to this provider then run on YOUR key and charge 0 credits. Providers: openai, gemini, anthropic, fal, elevenlabs, minimax.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesThe provider API key to register; stored encrypted at rest
providerYesProvider the key belongs to: "openai", "gemini", "anthropic", "fal", "elevenlabs", or "minimax"

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate idempotent and non-destructive; the description adds that the key is encrypted at rest, providing additional context beyond annotations. 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.

Conciseness5/5

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

Two concise sentences with purpose front-loaded. No unnecessary words; every sentence adds value.

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

Completeness5/5

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

Given the simple tool with full schema coverage and annotations, the description covers usage context (BYOK plan, zero credits) adequately. No output schema needed.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description reiterates the provider list and encryption but adds minimal new meaning; schema already covers param details.

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

Purpose5/5

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

The description clearly states the action ('Register') and resource ('BYOK provider API key'), and distinguishes from sibling tools like 'list_provider_keys' by specifying the operation type and constraints (encrypted at rest, BYOK plan only).

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

Usage Guidelines4/5

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

The description explicitly notes the requirement for a BYOK plan and explains the consequence (jobs charge 0 credits). It lists valid providers. While it doesn't mention alternatives, the context is sufficient for when to use.

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

set_segment_continuationSet segment continuationA
Idempotent
Inspect

Make a segment's image render as a continuation of an EARLIER segment's frame (same composition evolving — the storyboard's continues_from_segment, settable after the fact). continues_from is that earlier segment's number; pass 0 to clear the link. Regenerate the segment's image afterwards — the reference is applied at generation time.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID, as returned by create_project or list_projects
continues_fromNo1-based number of the EARLIER segment whose frame this one continues; pass 0 to clear the link
segment_numberYes1-based number of the segment whose image should continue an earlier frame, as reported by get_segments

TDQS

A4.3/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations: the reference is applied at generation time, and image must be regenerated. Annotations indicate idempotentHint=true (safe to retry) and destructiveHint=false, which aligns with the description. No contradictions.

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

Conciseness4/5

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

The description is a focused paragraph with all essential information, no filler. It could be slightly more structured (e.g., bullet points), but it is easily readable and front-loads the main action.

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

Completeness4/5

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

Given the tool has 3 parameters, no output schema, and annotations provide idempotentHint, the description covers the core behavior, parameter intent, and post-requisites (regenerate image). It is complete enough for an agent to use correctly.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds value by explaining 'continues_from' in practical terms: '1-based number of the EARLIER segment' and 'pass 0 to clear the link'. For 'segment_number', it reiterates the 1-based nature and references 'get_segments'. This clarifies ambiguous numeric values.

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

Purpose5/5

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

The description clearly states the tool's purpose: making a segment's image render as a continuation of an earlier segment's frame. It mentions key concepts like 'continues_from_segment' and 'settable after the fact', with concrete examples. This distinguishes it from sibling tools like 'split_segment' or 'combine_segments'.

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

Usage Guidelines4/5

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

The description provides explicit usage guidance: what 'continues_from' represents, how to clear the link with 0, and the need to regenerate the image afterwards. However, it does not explicitly state when not to use the tool or mention alternative tools, though the context makes its niche clear.

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

split_segmentSplit segmentA
Destructive
Inspect

Split a segment at the given time offsets (ms, 1-3 cuts → 2-4 parts). inherit_index picks which resulting part keeps the original creative data — that part keeps its rendered assets, SFX, overlays and continuation links (a rendered clip goes stale; re-render it). The other parts start fresh. Later segments renumber — re-check get_segments before further edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoTrue previews the consequences without changing anything
offsets_msYesCut points as millisecond offsets from the segment start, ascending; 1-3 cuts producing 2-4 parts
project_idYesProject ID, as returned by create_project or list_projects
inherit_indexNo0-based index of the resulting part that keeps the original creative data (default: the first part)
segment_numberYes1-based number of the segment to split, as reported by get_segments

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description discloses important side effects: non-inherited parts start fresh, the inherited part's rendered clip goes stale and must be re-rendered, and later segments renumber. This is exactly the behavioral depth needed for a destructive editing operation.

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

Conciseness5/5

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

The description is four short, information-dense sentences, each carrying distinct value: core action, inheritance behavior, freshness consequence, and renumbering warning. It is front-loaded, with no filler or redundant restatement of the tool name.

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

Completeness4/5

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

For a destructive tool with no output schema, the description covers the essential operational consequences well: asset inheritance, stale renders, and segment renumbering. The only notable gap is that it doesn't state what the call returns (e.g., updated segment list or preview output), which would be useful since no output schema exists.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantics to inherit_index by explaining what 'keeps original creative data' actually entails: rendered assets, SFX, overlays, and continuation links, plus the stale-render consequence. This goes beyond the schema without duplicating it excessively.

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

Purpose5/5

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

The description starts with a specific verb and resource: 'Split a segment at the given time offsets' and quantifies the outcome as 1-3 cuts producing 2-4 parts. This clearly differentiates it from sibling tools like combine_segments or change_segment_type.

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

Usage Guidelines4/5

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

It provides concrete usage context: cut count constraints, which part inherits creative data, and a warning to re-check get_segments after later segments renumber. It doesn't explicitly name alternative tools or when not to use it, but the guidance is clear enough for an agent to decide correctly.

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

update_assetUpdate assetAInspect

Rename an asset and/or rewrite its description. If the look changed, regenerate its reference image afterwards so renders match.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew asset name; empty leaves the name unchanged
asset_idYesAsset ID, as returned by list_assets or create_asset
descriptionNoNew generation-facing look description; empty leaves it unchanged

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate a non-read-only mutation. The description adds behavioral context by noting the need to regenerate the reference image if the look changes, which is beyond what annotations provide.

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

Conciseness5/5

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

Two concise sentences front-load the main purpose and include necessary guidance. No wasted words.

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

Completeness4/5

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

For a simple update tool, the description covers the essential action and side effect. It does not explain return values, but the schema covers parameters adequately.

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

Parameters3/5

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

Schema coverage is 100% with detailed parameter descriptions. The tool description does not add significant new meaning beyond summarizing the parameters, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool renames an asset and/or rewrites its description, using specific verbs and resources. This distinguishes it from siblings like create_asset or delete_asset.

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

Usage Guidelines4/5

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

The description provides a clear usage context: after updating the look, regenerate the reference image. It does not explicitly state when not to use or list alternatives, but the guidance is helpful.

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

update_caption_configUpdate caption configA
Idempotent
Inspect

Merge a patch into the project's burned-in caption config (keys like enabled, plus styling). Read the current value from get_project (caption_config). Applies at the next export — no rebuild needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID, as returned by create_project or list_projects
caption_configYesPartial caption config to merge (keys like enabled, plus styling); read the current value from get_project's caption_config

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate idempotent and not destructive. The description adds that it merges a patch (partial update) and applies at next export, which provides behavioral context beyond annotations. 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.

Conciseness5/5

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

Two sentences, front-loaded with the core action, no wasted words. Essential information is presented efficiently.

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

Completeness4/5

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

No output schema, but description provides necessary context: how to use (read first), what it does (merge patch), and when it takes effect (next export). Missing error handling or return info, but adequate for a 2-parameter tool.

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

Parameters3/5

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

Schema coverage is 100%. The description mentions keys like 'enabled' and 'styling' as examples but does not fully specify all possible keys in caption_config. It adds some value over schema by stating 'partial caption config to merge', but not enough to raise above baseline 3.

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

Purpose5/5

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

The description explicitly states the tool merges a patch into the project's burned-in caption config, specifying the resource (project's caption config) and action (merge patch), and distinguishes it from other update tools by referencing get_project.

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

Usage Guidelines4/5

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

It advises reading the current value from get_project before updating and clarifies that changes apply at next export with no rebuild needed, providing clear usage context. However, it does not explicitly state when not to use this tool or list alternatives.

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

update_music_trackUpdate music trackCInspect

Tweak a music track. fields keys: name, volume (0-1), loop, start_frame, duration_frames, position, trim_start_frame, trim_end_frame.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYesPartial dict of track fields to patch; allowed keys: name, volume (0-1), loop, start_frame, duration_frames, position, trim_start_frame, trim_end_frame
track_idYesMusic track ID, from list_music_tracks or add_music_track

TDQS

C2.9/5.0
Behavior2/5

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

Annotations indicate a write operation (readOnlyHint=false) but no destructive hint. The description adds no behavioral context beyond the schema, such as error behavior, idempotency, or side effects. It does not contradict annotations but fails to expand on them.

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

Conciseness4/5

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

The description is concise with two sentences: the action and the field keys. It is front-loaded but lacks structure like separate sections. It earns its place without wasting words.

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

Completeness2/5

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

The description omits return values, validation rules, and what constitutes a successful update. Given the nested object parameter and no output schema, the agent lacks critical context for invoking the tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, so the description is not required to add parameter details. It does repeat the allowed field keys, which are already in the schema, adding minimal value. A baseline of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action ('Tweak a music track') and lists the updatable fields, making the purpose explicit. However, it does not differentiate from sibling tools like update_asset or update_project, though within its domain (music tracks) it is specific enough.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as add_music_track or remove_music_track. It does not mention prerequisites (e.g., needing a track_id from list_music_tracks) or 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.

update_projectUpdate projectAInspect

Patch project fields. Updatable: title, description, sfx_level, video_concept, voice_mix, voice_tts_provider, script_target_minutes, narrator_speed, video_format. (The narrator's TTS voice is NOT here — use set_narrator_voice.)

narrator_speed is the narration rate (0.5-2.0, default 1.0; clamped to
0.7-1.2 on ElevenLabs). It changes how fast words are SAID and nothing
else — it adds no silence between them, so "slow this down" usually
wants `<break>` tags in the script text too (see save_script).

video_format ('landscape' | 'portrait') is only changeable until the
storyboard exists — after that the shots and overlays are composed for the
current frame and the patch 409s. Switch it before generate_storyboard.
ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYesPartial dict of fields to patch; allowed keys: title, description, sfx_level ('none'|'minimal'|'frequent'), video_concept, voice_mix ('narrator_only'|'narrator_led'|'balanced'|'character_led'), voice_tts_provider ('minimax'|'elevenlabs'), script_target_minutes, narrator_speed, video_format
project_idYesProject ID, as returned by create_project or list_projects

TDQS

A5/5.0
Behavior5/5

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

Annotations only indicate the tool is not read-only, not idempotent, and not destructive, so the description carries the behavioral burden. It reveals non-obvious behavior: narrator_speed clamped to 0.7-1.2 on ElevenLabs, no silence insertion, video_format 409s after storyboard exists, and the need for script break tags for slower pacing.

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

Conciseness5/5

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

The description is structured into focused paragraphs, each earning its place: updatable fields list, narrator_speed nuance, and video_format constraint. There is no filler or repetition of schema boilerplate.

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

Completeness5/5

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

The description is complete for invocation: it covers all fields, exclusions, constraints, and cross-tool pointers to set_narrator_voice, save_script, and generate_storyboard. No output schema exists, but for a patch operation the provided behavioral and scheduling context is sufficient.

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

Parameters5/5

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

Despite 100% schema description coverage, the description adds practical semantics beyond the schema: enumerates allowed field keys, gives the narrator_speed range and default, explains what narrator_speed does and does not affect, and clarifies video_format's enum and modification window.

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

Purpose5/5

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

The description states a specific action, 'Patch project fields', and explicitly lists every updatable field. It also distinguishes itself from a sibling by noting the narrator TTS voice is not here and belongs to set_narrator_voice.

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

Usage Guidelines5/5

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

Provides explicit when-not-to-use guidance: narrator TTS voice is excluded and routed to set_narrator_voice. It also gives a lifecycle constraint for video_format and advises switching before generate_storyboard, and points to save_script for silence/break tags.

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

update_segment_contentRewrite segment contentA
Destructive
Inspect

Rewrite one segment's creative direction from feedback ("make this shot a close-up", "show the machine from above") — an LLM rewrites the shot's prompts; continuation links, SFX, and overlays are preserved. The visual assets reset to not_started: re-render them afterwards (generate_segments or regenerate_segment_asset). When you already know the exact prompt text, use update_segment_prompts instead — it writes your words verbatim with no LLM in the loop.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoTrue previews the consequences (assets recreated, rendered assets lost) without changing anything
project_idYesProject ID, as returned by create_project or list_projects
user_inputYesNatural-language feedback describing the change to this shot, e.g. "make this a close-up" or "show the machine from above"
segment_numberYes1-based segment number, as reported by get_segments

TDQS

A4.9/5.0
Behavior5/5

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

The annotations already flag destructiveHint=true, and the description adds concrete consequences: visual assets reset to not_started, rendered assets will need regeneration, while continuation links, SFX, and overlays are preserved. It also clarifies that an LLM performs the rewrite, which informs expectations about output variability and the need for a dry_run preview. This goes well beyond the annotation's bare destructive flag.

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

Conciseness5/5

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

The description is three sentences with no filler: the main purpose comes first, followed by key side effects/next steps, then the alternative tool. Every sentence earns its place and the formatting with em-dashes and parentheticals keeps it readable.

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

Completeness5/5

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

For a destructive mutation tool with no output schema, the description covers the essential context: what the tool does, what is preserved, what is reset, what follow-up action is required, and which sibling to choose when appropriate. The parameter semantics are fully handled by the schema and the behavioral context is thoroughly disclosed.

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

Parameters4/5

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

The input schema already documents all four parameters with high coverage, so the baseline is 3. The description adds extra meaning beyond the schema by explaining what happens to user_input (an LLM rewrites prompts rather than writing verbatim) and by framing the dry_run consequences in terms of asset resets and re-rendering. This is modest but real added semantic value.

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

Purpose5/5

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

The description uses a specific verb ('Rewrite') and clearly identifies the resource ('one segment's creative direction') and the mechanism (an LLM rewrites the shot's prompts). It also distinguishes itself from the sibling update_segment_prompts by contrasting natural-language feedback with exact prompt text, so an agent can select the right tool 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.

Usage Guidelines5/5

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: when the user provides natural-language feedback about a shot. It also names the alternative update_segment_prompts and tells the agent to use that instead when exact prompt text is already known. It additionally instructs the agent to re-render assets afterward via generate_segments or regenerate_segment_asset, covering the post-invocation workflow.

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

update_segment_promptsUpdate segment promptsA
Idempotent
Inspect

Set one segment's final prompts VERBATIM — no LLM rewrite. The direct counterpart to update_segment_content: your text is written as-is to the segment's creative direction and to the matching asset configs the renderer reads. Asset statuses are untouched: an already-rendered asset stays complete, and generate_segments skips complete assets — so to see the edit rendered, call regenerate_segment_asset on that segment (the ONLY re-render path after a prompt edit). Continuation links, SFX, and overlays are untouched. Pass only the prompt(s) you want to change; media_queries edits a fetched segment's stock-search text the same way.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID, as returned by create_project or list_projects
image_promptNoNew scene-image prompt (image segments; also the retrieval-miss fallback on real-photo segments). Empty leaves it unchanged.
video_promptNoNew motion/video prompt (video segments; also the retrieval-miss fallback on real b-roll). Empty leaves it unchanged.
media_queriesNoNew stock-search queries for a fetched-media segment (real b-roll / real photo). Replaces the search text verbatim; re-fetch an already-fetched clip with regenerate_segment_asset. Omit to leave the search unchanged.
segment_numberYes1-based segment number, as reported by get_segments
start_frame_promptNoNew start-frame prompt (generated video segments). Empty leaves it unchanged.

TDQS

A4.9/5.0
Behavior5/5

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

The description explains side effects beyond the annotations: it writes verbatim to creative direction and asset configs, leaves asset statuses untouched, preserves continuation links/SFX/overlays, and clarifies the re-render implication. This is valuable behavioral context that the annotations alone (idempotentHint, destructiveHint) 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.

Conciseness5/5

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

The description is front-loaded with the core action and distinguishing trait, then efficiently packs necessary side-effect, re-render, and parameter-selection guidance into two dense sentences. Every clause carries information the agent needs, with no filler.

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

Completeness5/5

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

For a mutating tool with 6 parameters and important side effects, the description covers what happens, what does not happen, how re-rendering works, and how partial updates behave. The schema supplies parameter provenance, so 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.

Parameters4/5

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 adds useful cross-parameter guidance: passing only the desired prompts is a partial update, and media_queries behaves the same verbatim way as the prompt fields. This consolidates and clarifies semantics beyond the individual schema entries.

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

Purpose5/5

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

The description names a precise verb and resource ('Set one segment's final prompts VERBATIM') and immediately differentiates from update_segment_content by emphasizing the no-LLM-rewrite behavior. The scope ('one segment') and the mention of asset configs remove ambiguity about what is being modified.

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

Usage Guidelines5/5

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

It explicitly names update_segment_content as the direct counterpart and gives the critical routing rule: after an edit, regenerate_segment_asset is the ONLY re-render path because generate_segments skips complete assets. It also tells the agent to pass only the prompts it wants to change, providing clear when-and-how guidance.

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

update_style_fieldsUpdate style fieldsA
Destructive
Inspect

Hand-edit a style's analyzed fields after reviewing them — e.g. tighten the art_style wording or adjust the director_style pacing rules.

`fields` is a PATCH, merged over what the style already has: send only the
keys you are changing and leave the rest out — there is no need to read
the whole dict back with get_style and round-trip it. Pass {key: null} to
delete a user-added key (the well-known art_style / narrative_style /
director_style / script_prompt cannot be deleted, only rewritten, and
cannot be set empty). Editing fields does NOT trigger re-analysis, so your
edits stick.

Real media is switched by the literal `@real-media` tag inside
director_style's prose: add the tag plus prose describing when/how/how
much real media appears to turn it on; remove the tag (or its passage) to
turn it off.
ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYesSparse patch of style fields, shaped {key: {"value": str, "applies_to": [...]}} — send ONLY the keys you are changing; unlisted keys keep their current value
style_idYesStyle ID, as returned by create_style or list_styles

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description discloses critical behavior: PATCH-merge semantics, deletion via {key: null}, restrictions on well-known keys, the fact that edits do NOT trigger re-analysis, and the special @real-media tag behavior. This is rich, non-obvious context that an agent needs before invoking the tool.

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

Conciseness5/5

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

The description is longer than average but every sentence earns its place. It front-loads the core purpose, then explains patch semantics, deletion rules, re-analysis behavior, and the real-media tag without redundancy. The structure is logical and scannable.

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

Completeness5/5

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

For a destructive, nested-object tool with no output schema, the description covers everything needed to call it correctly: required arguments, how to shape fields, what can and cannot be updated, deletion behavior, and the effect on re-analysis. Nothing essential is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful semantics beyond the schema: it explains the PATCH merge model, that unlisted keys are preserved, that null deletes user-added keys, and that well-known keys cannot be empty. This materially helps an agent construct valid arguments.

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

Purpose5/5

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: 'Hand-edit a style's analyzed fields after reviewing them.' It names concrete examples (art_style wording, director_style pacing rules) that distinguish it from sibling tools like update_style_references or analyze_style. The purpose is unmistakable.

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

Usage Guidelines4/5

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

The description gives clear practical guidance: use this only for manual edits to analyzed fields, send only changed keys, and avoid round-tripping via get_style. It also warns that edits do NOT trigger re-analysis. It does not explicitly name alternatives such as analyze_style for re-analysis or update_style_references for reference fields, but the usage context is strong.

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

update_style_referencesUpdate style referencesA
Destructive
Inspect

Replace a style's reference set — add or remove references without touching the analyzed fields.

FULL REPLACE: read the current list with get_style first and send every
entry you're keeping plus the changes. New entries are youtube (video
link, or a channel link/@handle) or text; new image/video FILES can only
be added via the multipart REST endpoint PATCH /styles/{id}, but existing
ones round-trip fine. Optional `contributes_to` scopes an entry to a
subset of the analyzed fields (art_style / narrative_style /
director_style); omit it for all three.

Saving does NOT re-run analysis: the response's `inputs_stale` flips true
and the analyzed fields keep their current text until the user asks for
analyze_style (which rewrites them from the new set).
ParametersJSON Schema
NameRequiredDescriptionDefault
inputsYesThe COMPLETE reference list the style should have after this call, in display order: [{"input_type": "youtube" | "text" | "image" | "video", "value": "<url or text>", "contributes_to": ["art_style", ...]?}]. Include every existing entry you are keeping (copy them from get_style verbatim — public URL values are fine); anything left out is removed
style_idYesStyle ID, as returned by create_style or list_styles

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the destructiveHint=true annotation, the description reveals critical non-obvious behaviors: full-replace semantics (anything left out is removed), new entries restricted to youtube/text while files need the REST endpoint, and — most valuably — that saving does NOT re-run analysis, inputs_stale flips true, and analyzed fields keep their text until analyze_style is called. This is exactly the behavioral context an agent cannot infer from annotations or schema alone, and it contradicts nothing 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.

Conciseness4/5

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

The description is long (~180 words) but every section earns its place: full-replace semantics, entry-type restrictions, contributes_to scoping, and the stale-analysis behavior are all operationally necessary for correct invocation. It is front-loaded with the core purpose and organized into clear paragraphs. Could be tightened slightly, but the density 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.

Completeness5/5

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 and complex semantics, the description covers everything an agent needs: parameters are fully explained, response behavior (inputs_stale) is disclosed, destructive full-replace semantics are stated, and the alternative path for files is given. The order of operations (get_style → update → analyze_style) is specified. No material operational gap remains.

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

Parameters4/5

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

Schema coverage is 100% — both parameters are documented in the schema, so the baseline is 3. The description adds meaning beyond the schema by explaining that contributes_to scopes an entry to a subset of analyzed fields and can be omitted for all three, and by clarifying which input types are valid for new entries (youtube/text only). This meaningfully supplements the schema's structural example.

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

Purpose5/5

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

The first sentence states a specific verb and resource: "Replace a style's reference set — add or remove references without touching the analyzed fields." This clearly distinguishes the tool from siblings like update_style_fields (which touches analyzed fields) and analyze_style (which rewrites them). The purpose is unambiguous and the resource scope is precise.

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

Usage Guidelines4/5

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

The description gives concrete operational guidance: read the current list with get_style first, send every kept entry plus changes, and follow up with analyze_style when analysis should be re-run. It also explicitly excludes one case by directing new image/video files to the multipart REST endpoint. It does not explicitly name update_style_fields as the alternative for changing analyzed fields, though the contrast is implied by "without touching the analyzed fields."

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

update_voice_blockUpdate voice blockAInspect

Override one voice block's voice or playback volume (block ids from list_voice_blocks). Re-run generate_voiceover for the block afterwards if you changed its voice — existing audio is not regenerated automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
volumeNoPlayback volume for this block, 0-1; omit to leave unchanged
voice_idNoNew TTS voice ID for this block, from list_voices; empty leaves the voice unchanged
voice_block_idYesVoice block ID, from list_voice_blocks

TDQS

A4.2/5.0
Behavior4/5

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

The description notes that existing audio is not regenerated automatically, a behavioral trait beyond the annotations. Annotations indicate non-readOnly, non-destructive, non-idempotent, which aligns with the description. No contradictions.

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

Conciseness5/5

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

Two concise sentences that front-load the action and follow-up. Every sentence adds value with no wasted words.

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

Completeness4/5

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

The description covers the tool's purpose, required follow-up, and parameter sources. Given no output schema, it could mention return value, but the mutation's effect is clear.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for each parameter. The description adds minimal additional semantics (e.g., source of block IDs). Baseline 3 is appropriate as schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the tool overrides a voice block's voice or playback volume, using block IDs from list_voice_blocks. It distinguishes itself from siblings like list_voice_blocks (for IDs) and generate_voiceover (for regeneration).

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

Usage Guidelines4/5

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

The description advises re-running generate_voiceover after changing voice, providing a clear follow-up action. It does not explicitly state when not to use or list alternatives, but the guidance is sufficient.

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

view_imageView imageA
Read-onlyIdempotent
Inspect

Fetch a rendered Framesail image so you (and your user) can SEE it — pass a URL from get_segment_assets, get_style, or asset endpoints. Returns the image inline. Only Framesail media URLs are allowed.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic Framesail media URL to fetch — a public_url from get_segment_assets, a file_path from list_assets, or a template/preset image URL from get_style / list_style_presets; other hosts are rejected

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already define the tool as read-only and idempotent. The description adds that the image is returned inline and only Framesail URLs are allowed, which is useful but not providing significant behavioral insight beyond what annotations convey.

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

Conciseness5/5

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

The description is extremely concise—two sentences that pack essential information: purpose, input source, output format, and restriction. No unnecessary words.

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

Completeness5/5

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

Given the tool's simplicity (one parameter, no output schema), the description fully covers what the tool does, what input it accepts, and what to expect as output. No gaps remain.

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

Parameters3/5

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

The schema already has 100% coverage for the single parameter with a detailed description. The description repeats this information without adding new meaning, so it meets the baseline of 3.

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

Purpose5/5

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

The description clearly states the tool fetches a rendered Framesail image for visual inspection, distinguishing it from sibling tools that generate URLs (e.g., get_segment_assets) by specifying it accepts those URLs and returns the image inline.

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

Usage Guidelines4/5

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

It explicitly states when to use the tool (after obtaining a URL from specific endpoints) and restricts usage to Framesail media URLs, providing clear context. It does not explicitly state when not to use, but the restriction implicitly excludes other URL types.

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

whoamiWho am IA
Read-onlyIdempotent
Inspect

Verify the connection: the account email and plan behind the current credential. Call once after connecting — before creating anything — to confirm you're on the right account; costs nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Discloses it is a read-only, idempotent, non-destructive operation (supported by annotations) and returns email/plan. Lacks details on exact response shape but sufficient for a simple verification tool.

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

Conciseness5/5

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

Two sentences, front-loaded with the key verb 'Verify', and no extraneous words. Every sentence adds value.

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

Completeness5/5

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

Given zero parameters, no output schema, and annotations covering behavioral traits, the description fully equips the agent to use the tool correctly.

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

Parameters4/5

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

No parameters; baseline score of 4 is appropriate. No additional semantic description needed beyond what the schema already conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool verifies the connection and returns account email and plan. Distinguishes from siblings as no other sibling tool serves an identity/check purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises calling once after connecting and before creating anything, confirming the right account and noting it costs nothing. Provides clear when-to-use and implies not to call repeatedly.

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. Dates show when Glama detected each change.

  1. 17 tool updates
    • Addedanimate_segment
    • Changedchange_segment_type3 fields changed
      • addedInput schema / properties / dry_run
        Added value: +{
        +  "default": false,
        +  "description": "True previews the consequences (assets kept / staled / recreated / deleted, rendered assets lost) without changing anything",
        +  "title": "Dry Run",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / media_source
        Added value: +{
        +  "default": "",
        +  "description": "\"\" keeps the segment's current source; \"real\" makes the visual fetched stock footage / a real photo (b-roll) instead of a generated one; \"generated\" switches back",
        +  "title": "Media Source",
        +  "type": "string"
        +}
      • changedInput schema / properties / segment_type / description
        Previous value: -"New visual type: \"image\", \"video\", or \"overlay_scene\""New value: +"New visual type: \"image\", \"video\" (fetched b-roll only — requires media_source \"real\"), or \"overlay_scene\""
    • Changedcombine_segments1 field changed
      • addedInput schema / properties / dry_run
        Added value: +{
        +  "default": false,
        +  "description": "True previews the consequences without changing anything",
        +  "title": "Dry Run",
        +  "type": "boolean"
        +}
    • Changedgenerate_segments1 field changed
      • addedInput schema / properties / asset_scope
        Added value: +{
        +  "default": "",
        +  "description": "\"\" renders everything actionable; \"no_clips\" is the cheap base pass (images, overlays, fetched b-roll — no generated video clips); \"clips_only\" renders just the generated clips",
        +  "title": "Asset Scope",
        +  "type": "string"
        +}
    • Changedget_segments2 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 0,
        +  "description": "Maximum segments to return; 0 returns all. Long-form projects can hold 100+ segments — page with offset/limit instead of pulling everything at once.",
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "0-based index of the first segment to return (pagination)",
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Changedlist_scenes3 fields changed
      • addedInput schema / properties / include_composition
        Added value: +{
        +  "default": false,
        +  "description": "Include each scene's full composition JSON (layers, layout) — kilobytes per scene, so page with offset/limit when True; the default summary rows are enough for ids and director notes",
        +  "title": "Include Composition",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 0,
        +  "description": "Maximum scenes to return; 0 returns all",
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "0-based index of the first scene to return (pagination)",
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Changedlist_voice_blocks1 field changed
      • addedInput schema / properties / include_subtitle_data
        Added value: +{
        +  "default": false,
        +  "description": "Include each block's word-level subtitle timings — bulky and rarely needed; omitted by default (subtitle_data reports \"omitted\" when present but stripped)",
        +  "title": "Include Subtitle Data",
        +  "type": "boolean"
        +}
    • Changedlist_voices1 field changed
      • addedInput schema / properties / group
        Added value: +{
        +  "default": "",
        +  "description": "Return only this catalogue group (case-insensitive; e.g. \"Narration\", \"Characters\"). Empty returns every group — the ElevenLabs catalogue is 150+ voices, so filter it by group; the response's `groups` lists the valid names with counts.",
        +  "title": "Group",
        +  "type": "string"
        +}
    • Changedrescan_voice_blocks1 field changed
      • removedInput schema / properties / model
        Removed value: -{
        -  "default": "",
        -  "description": "Model ID for the re-extraction; empty uses the default (see list_models(\"voice_block_scan\"))",
        -  "title": "Model",
        -  "type": "string"
        -}
    • Addedrollback_segment_asset
    • Changedsave_script1 field changed
      • changedInput schema / properties / content / description
        Previous value: -"Full script text to save as a new version; plain prose narration, optionally with scene headings"New value: +"Full script text to save as a new version; plain prose narration, optionally with `[SCENE: ...]` direction paragraphs, `<break time=\"0.5s\" />` pauses, and `Name:` speaker prefixes"
    • Changedsplit_segment1 field changed
      • addedInput schema / properties / dry_run
        Added value: +{
        +  "default": false,
        +  "description": "True previews the consequences without changing anything",
        +  "title": "Dry Run",
        +  "type": "boolean"
        +}
    • Changedupdate_project1 field changed
      • changedInput schema / properties / fields / description
        Previous value: -"Partial dict of fields to patch; allowed keys: title, description, asset_mix, sfx_level ('none'|'minimal'|'frequent'), video_concept, voice_mix ('narrator_only'|'narrator_led'|'balanced'|'character_led'), voice_tts_provider ('minimax'|'elevenlabs'), script_target_minutes, narrator_speed, video_format"New value: +"Partial dict of fields to patch; allowed keys: title, description, sfx_level ('none'|'minimal'|'frequent'), video_concept, voice_mix ('narrator_only'|'narrator_led'|'balanced'|'character_led'), voice_tts_provider ('minimax'|'elevenlabs'), script_target_minutes, narrator_speed, video_format"
    • Changedupdate_segment_content1 field changed
      • addedInput schema / properties / dry_run
        Added value: +{
        +  "default": false,
        +  "description": "True previews the consequences (assets recreated, rendered assets lost) without changing anything",
        +  "title": "Dry Run",
        +  "type": "boolean"
        +}
    • Addedupdate_segment_prompts
    • Changedupdate_style_fields1 field changed
      • changedInput schema / properties / fields / description
        Previous value: -"FULL flat dict of analyzed fields to write, shaped {key: {\"value\": str, \"applies_to\": [...]}} — fetch with get_style, modify, send the whole dict back"New value: +"Sparse patch of style fields, shaped {key: {\"value\": str, \"applies_to\": [...]}} — send ONLY the keys you are changing; unlisted keys keep their current value"
    • Addedupdate_style_references
  2. 3 tool updates
    • Changeddirector_note7 fields changed
      • addedInput schema / properties / project_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Project ID; required (with segment_number) when not passing scene_id",
        +  "title": "Project Id"
        +}
      • addedInput schema / properties / scene_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / scene_id / default
        Added value: +null
      • changedInput schema / properties / scene_id / description
        Previous value: -"ID of the scene to edit, from list_scenes"New value: +"ID of the scene to edit, from a FRESH list_scenes call — scene ids change whenever segments are edited (split/combine/update-content), so never reuse ids saved earlier; prefer project_id + segment_number"
      • removedInput schema / properties / scene_id / type
        Removed value: -"string"
      • addedInput schema / properties / segment_number
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "1-based segment number of the scene to edit (from list_scenes or get_segments) — preferred over scene_id because it is resolved to the current scene at call time",
        +  "title": "Segment Number"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "scene_id",
        -  "message"
        -]New value: +[
        +  "message"
        +]
    • Changedgenerate_voiceover1 field changed
      • changedInput schema / properties / model / description
        Previous value: -"TTS model ID; empty uses the default (see list_models(\"voice_block\"))"New value: +"TTS model ID; empty uses the default for the project's TTS provider. If set, it must belong to that provider — see list_models(\"voice_block\") for each model's provider"
    • Changedupdate_project1 field changed
      • changedInput schema / properties / fields / description
        Previous value: -"Partial dict of fields to patch; allowed keys: title, description, asset_mix, sfx_level, video_concept, voice_mix, voice_tts_provider, script_target_minutes, narrator_speed, video_format"New value: +"Partial dict of fields to patch; allowed keys: title, description, asset_mix, sfx_level ('none'|'minimal'|'frequent'), video_concept, voice_mix ('narrator_only'|'narrator_led'|'balanced'|'character_led'), voice_tts_provider ('minimax'|'elevenlabs'), script_target_minutes, narrator_speed, video_format"
  3. 1 tool update
    • Changedcreate_style1 field changed
      • changedInput schema / properties / inputs / description
        Previous value: -"Reference material to analyze, [{\"input_type\": \"youtube\" | \"text\", \"value\": \"<url or description>\"}]; triggers an async analysis job. Mutually exclusive with presets"New value: +"Reference material to analyze, [{\"input_type\": \"youtube\" | \"text\", \"value\": \"<url or description>\"}]; a youtube value can be a video link or a channel link/@handle (resolved to that channel's newest usable upload). Triggers an async analysis job. Mutually exclusive with presets"
  4. 1 tool update
    • Changedupdate_project1 field changed
      • changedInput schema / properties / fields / description
        Previous value: -"Partial dict of fields to patch; allowed keys: title, description, asset_mix, sfx_level, video_concept, voice_mix, voice_tts_provider, script_target_minutes, narrator_speed"New value: +"Partial dict of fields to patch; allowed keys: title, description, asset_mix, sfx_level, video_concept, voice_mix, voice_tts_provider, script_target_minutes, narrator_speed, video_format"
  5. 1 tool update
    • Changedcreate_project1 field changed
      • addedInput schema / properties / video_format
        Added value: +{
        +  "default": "landscape",
        +  "description": "Output frame shape: 'landscape' (16:9, the default — YouTube and long-form) or 'portrait' (9:16 — Shorts, Reels, TikTok). Fixed once the storyboard is generated, so pick it up front.",
        +  "enum": [
        +    "landscape",
        +    "portrait"
        +  ],
        +  "title": "Video Format",
        +  "type": "string"
        +}
  6. 1 tool update
    • Changedgenerate_style_template1 field changed
      • addedInput schema / properties / replace
        Added value: +{
        +  "default": false,
        +  "description": "Set True ONLY to deliberately overwrite an existing template of this type — the user must have asked for a new one. Leave False and the call refuses rather than clobbering a template the style already has",
        +  "title": "Replace",
        +  "type": "boolean"
        +}
  7. 1 tool update
    • Changedadd_music_track2 fields changed
      • changedInput schema / properties / volume / default
        Previous value: -0.2New value: +0.12
      • changedInput schema / properties / volume / description
        Previous value: -"Playback volume 0-1; the 0.2 default sits at bed level under narration — don't raise it unless asked"New value: +"Playback volume 0-1; the 0.12 default sits at bed level under narration — don't raise it unless asked"
  8. 63 tool updates
    • Changedactivate_script_version1 field changed
      • addedInput schema / properties / script_id / description
        Added value: +"ID of the script version to activate, from get_script's version list"
    • Changedadd_music_track6 fields changed
      • addedInput schema / properties / library_track_id / description
        Added value: +"Audio library track ID, from browse_audio_library(category=\"music\")"
      • addedInput schema / properties / loop / description
        Added value: +"True loops the track under the whole video; false plays it once"
      • addedInput schema / properties / name / description
        Added value: +"Display name for the track on the project's timeline"
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
      • addedInput schema / properties / start_frame / description
        Added value: +"Timeline frame at which the track starts (0 = start of the video)"
      • addedInput schema / properties / volume / description
        Added value: +"Playback volume 0-1; the 0.2 default sits at bed level under narration — don't raise it unless asked"
    • Changedadd_segment_sfx3 fields changed
      • addedInput schema / properties / library_track_id / description
        Added value: +"Audio library track ID, from browse_audio_library(category=\"sfx\")"
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
      • addedInput schema / properties / segment_number / description
        Added value: +"1-based segment number, as reported by get_segments"
    • Changedanalyze_style1 field changed
      • addedInput schema / properties / style_id / description
        Added value: +"ID of the style to re-analyze, from create_style or list_styles"
    • Changedawait_jobs3 fields changed
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID whose jobs to wait for; pass exactly one of project_id or style_id"
      • addedInput schema / properties / style_id / description
        Added value: +"Style ID whose analysis/template jobs to wait for; pass exactly one of project_id or style_id"
      • addedInput schema / properties / timeout_seconds / description
        Added value: +"Max seconds to block server-side before returning done=false; keep <= 50 so the client doesn't time out the tool call"
    • Changedbrowse_audio_library4 fields changed
      • addedInput schema / properties / category / description
        Added value: +"Track kind: \"music\" (background tracks) or \"sfx\" (sound effects); empty returns both"
      • addedInput schema / properties / genre / description
        Added value: +"Filter by the track's genre tag; empty for no filter"
      • addedInput schema / properties / mood / description
        Added value: +"Filter by the track's mood tag; empty for no filter"
      • addedInput schema / properties / search / description
        Added value: +"Free-text search over track names/descriptions; empty for no filter"
    • Changedbuild_scenes1 field changed
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
    • Changedchange_segment_type4 fields changed
      • addedInput schema / properties / carry_frame / description
        Added value: +"True reuses the already-rendered frame as the new type's starting visual instead of recreating it from scratch"
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
      • addedInput schema / properties / segment_number / description
        Added value: +"1-based segment number, as reported by get_segments"
      • addedInput schema / properties / segment_type / description
        Added value: +"New visual type: \"image\", \"video\", or \"overlay_scene\""
    • Changedcombine_segments4 fields changed
      • addedInput schema / properties / keep / description
        Added value: +"Whose creative data survives the merge: \"this\" (segment_number) or \"other\" (with_segment_number)"
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
      • addedInput schema / properties / segment_number / description
        Added value: +"1-based segment number, as reported by get_segments"
      • addedInput schema / properties / with_segment_number / description
        Added value: +"1-based number of the adjacent segment to merge with (must neighbor segment_number)"
    • Changedcreate_asset4 fields changed
      • addedInput schema / properties / asset_type / description
        Added value: +"Kind of asset: \"character\", \"environment\", or \"object\""
      • addedInput schema / properties / description / description
        Added value: +"Generation-facing spec of the asset's look; every shot renders from it, so be specific"
      • addedInput schema / properties / name / description
        Added value: +"Asset name as the script refers to it (e.g. the character's name)"
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
    • Changedcreate_channel2 fields changed
      • addedInput schema / properties / description / description
        Added value: +"Optional free-text description of the channel's content focus"
      • addedInput schema / properties / name / description
        Added value: +"Display name for the new channel"
    • Changedcreate_project3 fields changed
      • addedInput schema / properties / channel_id / description
        Added value: +"ID of the channel to create the project in, from list_channels or create_channel"
      • addedInput schema / properties / description / description
        Added value: +"The video concept/topic; seeds script generation, so make it specific and meaningful"
      • addedInput schema / properties / title / description
        Added value: +"Project title shown in the app"
    • Changedcreate_style4 fields changed
      • addedInput schema / properties / channel_id / description
        Added value: +"ID of the channel to create the style in, from list_channels"
      • addedInput schema / properties / inputs / description
        Added value: +"Reference material to analyze, [{\"input_type\": \"youtube\" | \"text\", \"value\": \"<url or description>\"}]; triggers an async analysis job. Mutually exclusive with presets"
      • addedInput schema / properties / name / description
        Added value: +"Display name for the style"
      • addedInput schema / properties / presets / description
        Added value: +"Preset IDs per axis, {\"art_style\": id, \"narrative_style\": id, \"director_style\": id}, from list_style_presets; instant, no analysis. Mutually exclusive with inputs"
    • Changeddelete_asset1 field changed
      • addedInput schema / properties / asset_id / description
        Added value: +"ID of the asset to delete, from list_assets"
    • Changeddelete_project1 field changed
      • addedInput schema / properties / project_id / description
        Added value: +"ID of the project to permanently delete, from list_projects"
    • Changeddelete_style1 field changed
      • addedInput schema / properties / style_id / description
        Added value: +"ID of the style to delete, from list_styles"
    • Changeddirector_note3 fields changed
      • addedInput schema / properties / conversation_history / description
        Added value: +"Prior chat turns as [{\"role\": ..., \"content\": ...}] to continue an editing conversation on this scene; omit to start fresh"
      • addedInput schema / properties / message / description
        Added value: +"Natural-language edit note for this scene, e.g. \"move the caption to the top\" or \"remove the overlay\""
      • addedInput schema / properties / scene_id / description
        Added value: +"ID of the scene to edit, from list_scenes"
    • Changedexport_video1 field changed
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
    • Changedgenerate_asset_reference4 fields changed
      • addedInput schema / properties / asset_id / description
        Added value: +"ID of the asset to render a reference image for, from list_assets"
      • addedInput schema / properties / editable_sections / description
        Added value: +"Per-call prompt section overrides, keyed by section name; see get_section_template for the reference-image job"
      • addedInput schema / properties / model / description
        Added value: +"Image model ID; empty uses the server default for reference images"
      • addedInput schema / properties / settings / description
        Added value: +"Model-specific settings (e.g. image quality/orientation); valid keys come from the model's settings_schema in list_models"
    • Changedgenerate_script4 fields changed
      • addedInput schema / properties / editable_sections / description
        Added value: +"Per-call prompt section overrides, keyed by section name; see get_section_template(\"script\") for the sections this job exposes"
      • addedInput schema / properties / model / description
        Added value: +"Model ID to generate with; empty uses the default (see list_models(\"script\"))"
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
      • addedInput schema / properties / settings / description
        Added value: +"Model-specific settings; valid keys come from the model's settings_schema in list_models(\"script\")"
    • Changedgenerate_segments3 fields changed
      • addedInput schema / properties / dry_run / description
        Added value: +"True returns the credit-cost estimate without rendering anything; ALWAYS run true first and get user approval before the real run"
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
      • addedInput schema / properties / segment_numbers / description
        Added value: +"1-based segment numbers (from get_segments) to render only a subset; omit to render every actionable asset in the project"
    • Changedgenerate_storyboard4 fields changed
      • addedInput schema / properties / editable_sections / description
        Added value: +"Per-call prompt section overrides, keyed by section name; see get_section_template(\"storyboard\")"
      • addedInput schema / properties / model / description
        Added value: +"Model ID to plan with; empty uses the default (see list_models(\"storyboard\"))"
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
      • addedInput schema / properties / settings / description
        Added value: +"Model-specific settings; valid keys come from the model's settings_schema in list_models(\"storyboard\")"
    • Changedgenerate_style_template4 fields changed
      • addedInput schema / properties / editable_sections / description
        Added value: +"Per-call prompt section overrides, keyed by section name; see get_section_template for the template job"
      • addedInput schema / properties / model / description
        Added value: +"Image model ID; empty uses the template job's default (see list_models)"
      • addedInput schema / properties / style_id / description
        Added value: +"Style ID, as returned by create_style or list_styles"
      • addedInput schema / properties / template_type / description
        Added value: +"Which of the style's two template images to render: \"character\" or \"environment\" — run once for each"
    • Changedgenerate_voiceover5 fields changed
      • addedInput schema / properties / editable_sections / description
        Added value: +"Per-call prompt section overrides applied to every selected block; see get_section_template(\"voice_block\")"
      • addedInput schema / properties / model / description
        Added value: +"TTS model ID; empty uses the default (see list_models(\"voice_block\"))"
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
      • addedInput schema / properties / settings / description
        Added value: +"Model-specific TTS settings applied to every selected block; valid keys come from the model's settings_schema in list_models(\"voice_block\")"
      • addedInput schema / properties / voice_block_ids / description
        Added value: +"Block IDs (from list_voice_blocks) to explicitly REgenerate; omit to fill gaps — only blocks with no audio yet run"
    • Changedget_pipeline_progress1 field changed
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
    • Changedget_project1 field changed
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
    • Changedget_script1 field changed
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
    • Changedget_section_template1 field changed
      • addedInput schema / properties / job / description
        Added value: +"Generation job name, e.g. \"script\", \"script_scan\", \"storyboard\", \"segment_image\", \"segment_video\", \"voice_block\""
    • Changedget_segment_assets2 fields changed
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
      • addedInput schema / properties / segment_number / description
        Added value: +"1-based segment number, as reported by get_segments"
    • Changedget_segments1 field changed
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
    • Changedget_style1 field changed
      • addedInput schema / properties / style_id / description
        Added value: +"Style ID, as returned by create_style or list_styles"
    • Changedget_video_url1 field changed
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
    • Changedget_workflow_status2 fields changed
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID to scope jobs to; pass exactly one of project_id or style_id"
      • addedInput schema / properties / style_id / description
        Added value: +"Style ID to scope jobs to (style analysis); pass exactly one of project_id or style_id"
    • Changedlist_assets2 fields changed
      • addedInput schema / properties / asset_type / description
        Added value: +"Optional filter: \"character\", \"environment\", or \"object\"; empty lists all asset types"
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
    • Changedlist_models1 field changed
      • addedInput schema / properties / job / description
        Added value: +"Generation job whose allowed models to list, e.g. \"script\", \"storyboard\", \"segment_image\", \"segment_video\", \"voice_block\""
    • Changedlist_music_tracks1 field changed
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
    • Changedlist_projects1 field changed
      • addedInput schema / properties / channel_id / description
        Added value: +"ID of the channel whose projects to list, from list_channels or create_channel"
    • Changedlist_scenes1 field changed
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
    • Changedlist_styles1 field changed
      • addedInput schema / properties / channel_id / description
        Added value: +"ID of the channel that owns the styles, from list_channels"
    • Changedlist_voice_blocks1 field changed
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
    • Changedlist_voices1 field changed
      • addedInput schema / properties / provider / description
        Added value: +"TTS engine to list voices for: \"minimax\" (default engine) or \"elevenlabs\"; match the project's voice_tts_provider"
    • Changedproject_director_note2 fields changed
      • addedInput schema / properties / message / description
        Added value: +"Project-wide director note in natural language, e.g. \"make the intro punchier\" or \"all captions bigger\""
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
    • Changedregenerate_segment_asset6 fields changed
      • addedInput schema / properties / asset_type / description
        Added value: +"\"image\" or \"video\"; for a video segment, \"image\" targets its start frame"
      • addedInput schema / properties / editable_sections / description
        Added value: +"Per-call prompt section overrides, keyed by section name; see get_section_template(\"segment_image\") or (\"segment_video\")"
      • addedInput schema / properties / model / description
        Added value: +"Model ID to render with; empty uses the job's default (see list_models(\"segment_image\") / list_models(\"segment_video\"))"
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
      • addedInput schema / properties / segment_number / description
        Added value: +"1-based segment number, as reported by get_segments"
      • addedInput schema / properties / settings / description
        Added value: +"Model-specific settings (e.g. image quality, video duration); valid keys come from the model's settings_schema in list_models"
    • Changedremove_music_track1 field changed
      • addedInput schema / properties / track_id / description
        Added value: +"ID of the music track to remove, from list_music_tracks"
    • Changedremove_segment_sfx3 fields changed
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
      • addedInput schema / properties / segment_number / description
        Added value: +"1-based segment number, as reported by get_segments"
      • addedInput schema / properties / sfx_name / description
        Added value: +"Name of the SFX asset to remove, as shown by get_segment_assets; needed only when the segment has several SFX attached"
    • Changedrescan_voice_blocks2 fields changed
      • addedInput schema / properties / model / description
        Added value: +"Model ID for the re-extraction; empty uses the default (see list_models(\"voice_block_scan\"))"
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
    • Changedrevise_script3 fields changed
      • addedInput schema / properties / instruction / description
        Added value: +"Natural-language edit instruction, e.g. \"make the intro punchier\""
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
      • addedInput schema / properties / selected_text / description
        Added value: +"Exact passage to rewrite; must appear verbatim in the active script. Omit to revise the whole script"
    • Changedsave_script2 fields changed
      • addedInput schema / properties / content / description
        Added value: +"Full script text to save as a new version; plain prose narration, optionally with scene headings"
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
    • Changedscan_script3 fields changed
      • addedInput schema / properties / editable_sections / description
        Added value: +"Per-call prompt section overrides, keyed by section name; see get_section_template(\"script_scan\")"
      • addedInput schema / properties / model / description
        Added value: +"Model ID to scan with; empty uses the default (see list_models(\"script_scan\"))"
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
    • Changedset_character_voice2 fields changed
      • addedInput schema / properties / asset_id / description
        Added value: +"Character asset ID, from list_assets"
      • addedInput schema / properties / voice_id / description
        Added value: +"TTS voice ID, from list_voices (use the provider matching the project's voice_tts_provider)"
    • Changedset_narrator_voice2 fields changed
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
      • addedInput schema / properties / voice_id / description
        Added value: +"TTS voice ID for the narrator, from list_voices (use the provider matching the project's voice_tts_provider)"
    • Changedset_project_style2 fields changed
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
      • addedInput schema / properties / style_id / description
        Added value: +"ID of the style to make the project's default, from create_style or list_styles"
    • Changedset_provider_key2 fields changed
      • addedInput schema / properties / key / description
        Added value: +"The provider API key to register; stored encrypted at rest"
      • addedInput schema / properties / provider / description
        Added value: +"Provider the key belongs to: \"openai\", \"gemini\", \"anthropic\", \"fal\", \"elevenlabs\", or \"minimax\""
    • Changedset_segment_continuation3 fields changed
      • addedInput schema / properties / continues_from / description
        Added value: +"1-based number of the EARLIER segment whose frame this one continues; pass 0 to clear the link"
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
      • addedInput schema / properties / segment_number / description
        Added value: +"1-based number of the segment whose image should continue an earlier frame, as reported by get_segments"
    • Changedsplit_segment4 fields changed
      • addedInput schema / properties / inherit_index / description
        Added value: +"0-based index of the resulting part that keeps the original creative data (default: the first part)"
      • addedInput schema / properties / offsets_ms / description
        Added value: +"Cut points as millisecond offsets from the segment start, ascending; 1-3 cuts producing 2-4 parts"
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
      • addedInput schema / properties / segment_number / description
        Added value: +"1-based number of the segment to split, as reported by get_segments"
    • Changedupdate_asset3 fields changed
      • addedInput schema / properties / asset_id / description
        Added value: +"Asset ID, as returned by list_assets or create_asset"
      • addedInput schema / properties / description / description
        Added value: +"New generation-facing look description; empty leaves it unchanged"
      • addedInput schema / properties / name / description
        Added value: +"New asset name; empty leaves the name unchanged"
    • Changedupdate_caption_config2 fields changed
      • addedInput schema / properties / caption_config / description
        Added value: +"Partial caption config to merge (keys like enabled, plus styling); read the current value from get_project's caption_config"
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
    • Changedupdate_music_track2 fields changed
      • addedInput schema / properties / fields / description
        Added value: +"Partial dict of track fields to patch; allowed keys: name, volume (0-1), loop, start_frame, duration_frames, position, trim_start_frame, trim_end_frame"
      • addedInput schema / properties / track_id / description
        Added value: +"Music track ID, from list_music_tracks or add_music_track"
    • Changedupdate_project2 fields changed
      • addedInput schema / properties / fields / description
        Added value: +"Partial dict of fields to patch; allowed keys: title, description, asset_mix, sfx_level, video_concept, voice_mix, voice_tts_provider, script_target_minutes, narrator_speed"
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
    • Changedupdate_segment_content3 fields changed
      • addedInput schema / properties / project_id / description
        Added value: +"Project ID, as returned by create_project or list_projects"
      • addedInput schema / properties / segment_number / description
        Added value: +"1-based segment number, as reported by get_segments"
      • addedInput schema / properties / user_input / description
        Added value: +"Natural-language feedback describing the change to this shot, e.g. \"make this a close-up\" or \"show the machine from above\""
    • Changedupdate_style_fields2 fields changed
      • addedInput schema / properties / fields / description
        Added value: +"FULL flat dict of analyzed fields to write, shaped {key: {\"value\": str, \"applies_to\": [...]}} — fetch with get_style, modify, send the whole dict back"
      • addedInput schema / properties / style_id / description
        Added value: +"Style ID, as returned by create_style or list_styles"
    • Changedupdate_voice_block3 fields changed
      • addedInput schema / properties / voice_block_id / description
        Added value: +"Voice block ID, from list_voice_blocks"
      • addedInput schema / properties / voice_id / description
        Added value: +"New TTS voice ID for this block, from list_voices; empty leaves the voice unchanged"
      • addedInput schema / properties / volume / description
        Added value: +"Playback volume for this block, 0-1; omit to leave unchanged"
    • Changedview_image1 field changed
      • addedInput schema / properties / url / description
        Added value: +"Public Framesail media URL to fetch — a public_url from get_segment_assets, a file_path from list_assets, or a template/preset image URL from get_style / list_style_presets; other hosts are rejected"
  9. 68 tool updates
    • First observedactivate_script_version
    • First observedadd_music_track
    • First observedadd_segment_sfx
    • First observedanalyze_style
    • First observedawait_jobs
    • First observedbrowse_audio_library
    • First observedbuild_scenes
    • First observedchange_segment_type
    • First observedcombine_segments
    • First observedcreate_asset
    • First observedcreate_channel
    • First observedcreate_project
    • First observedcreate_style
    • First observeddelete_asset
    • First observeddelete_project
    • First observeddelete_style
    • First observeddirector_note
    • First observedexport_video
    • First observedgenerate_asset_reference
    • First observedgenerate_script
    • First observedgenerate_segments
    • First observedgenerate_storyboard
    • First observedgenerate_style_template
    • First observedgenerate_voiceover
    • First observedget_credit_balance
    • First observedget_pipeline_progress
    • First observedget_project
    • First observedget_script
    • First observedget_section_template
    • First observedget_segment_assets
    • First observedget_segments
    • First observedget_style
    • First observedget_video_url
    • First observedget_workflow_status
    • First observedlist_assets
    • First observedlist_channels
    • First observedlist_models
    • First observedlist_music_tracks
    • First observedlist_projects
    • First observedlist_provider_keys
    • First observedlist_scenes
    • First observedlist_style_presets
    • First observedlist_styles
    • First observedlist_voice_blocks
    • First observedlist_voices
    • First observedproject_director_note
    • First observedregenerate_segment_asset
    • First observedremove_music_track
    • First observedremove_segment_sfx
    • First observedrescan_voice_blocks
    • First observedrevise_script
    • First observedsave_script
    • First observedscan_script
    • First observedset_character_voice
    • First observedset_narrator_voice
    • First observedset_project_style
    • First observedset_provider_key
    • First observedset_segment_continuation
    • First observedsplit_segment
    • First observedupdate_asset
    • First observedupdate_caption_config
    • First observedupdate_music_track
    • First observedupdate_project
    • First observedupdate_segment_content
    • First observedupdate_style_fields
    • First observedupdate_voice_block
    • First observedview_image
    • First observedwhoami

Frequently Asked Questions

Discussions

jatchison40's avatar
jatchison40Jul 9, 2026

Hey there! I'm the co-founder of framesail. I made this MCP for content creators who want to run their video creation pipeline through an agent. I've been using it the last few weeks and it's been saving me a ton of time. Let me know if you have any suggestions, you can reach us on discord or shoot us an email! Jordan

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.6/5.0
Disambiguation3/5

Several tool families overlap in purpose, such as await_jobs/get_workflow_status/get_pipeline_progress, update_segment_content/update_segment_prompts, director_note/project_director_note, and scan_script/rescan_voice_blocks. The descriptions do a good job distinguishing them, but an agent must read carefully to avoid misselection, and there are more than a couple of confusable pairs.

Naming Consistency4/5

The set overwhelmingly follows a verb_noun snake_case convention with clear prefixes like get_, list_, set_, update_, create_, and delete_. Minor exceptions such as director_note, project_director_note, browse_audio_library, and whoami keep it from being perfectly consistent.

Tool Count1/5

At 72 tools, this is far beyond the 50+ extreme range and creates a heavy navigation burden for an agent. Even though the pipeline is complex, this many tools is not well-scoped for an MCP surface.

Completeness4/5

The surface covers the full script-to-export pipeline: styles, assets, voices, storyboards, segments, scenes, and rendering all have substantial lifecycle support. Some gaps exist—no delete_channel, delete_segment, delete_voice_block, or delete_provider_key—but most missing operations can be worked around through existing tools.

Resources