Skip to main content
Glama

Server Details

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

Ownership verified
Status
Healthy
Uptime
99.9% over 64 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.5/5.0

Scored across 28 tools

Disambiguation4/5

Tools are organized around distinct resources (script, assets, storyboard, segment, style, voiceover, editor, project) with per-resource actions, so most selections are obvious. A few boundaries require reading descriptions to separate: segment_edit vs segment_restructure, storyboard_edit vs segment_edit, and the many 'generate' tools (assets, script, storyboard, style, voiceover) which share a verb but target different resources.

Naming Consistency4/5

The dominant pattern is consistent snake_case resource_action (assets_edit, script_generate, voiceover_read, etc.), followed by nearly every resource. The main deviations are a handful of action-verb tools (render, delete, view_image, export_video) and the verb_noun retrieval pair get_status/get_generation_options, which mix ordering conventions (read vs get) with the rest of the set.

Tool Count4/5

28 tools is on the heavy side, but the server models a full multi-stage video pipeline (channels/styles, scripts, assets, storyboards, segments, renders, voiceover, editor, export), and each tool maps to a real stage or CRUD operation rather than being redundant. Slightly over the comfortable range but largely earned.

Completeness4/5

Lifecycle coverage is strong: read/edit/generate for style, script, assets, storyboard, and voiceover; segment restructure and rollback; render, editor, export, status with wait, and a delete tool covering projects, assets, music, and segment extras. Minor gaps remain, such as no channel or style deletion and no dedicated account-settings read (account_edit exists but reads are folded into get_status).

Available Tools

28 tools
account_editEdit accountAInspect

The account's default model and settings for one kind of generation, used when neither the call nor the item's prompt editor names one. voice_block needs provider and segment_video needs talking_head: each family keeps its own default.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoset_model_default: a model id from get_generation_options
actionYesset_model_default: model, optional settings; clear_model_default
providerNovoice_block: the voice engine (the project's voice_tts_provider)
settingsNoModel settings: keys of its settings_schema
generationYesscript_scan is Analyze Script; *_reference, reference images; voice_block, the voiceover; segment_image, a segment's image; segment_video, a clip; art_style_*_template, the style's template images
talking_headNosegment_video: true for talking head models, false for clips

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the description's added value is the fallback semantics (defaults only apply when nothing else names a model) and the per-family independence ('each family keeps its own default'). These are genuine behavioral traits not derivable from the annotations. It stops short of 5 by not addressing what clearing a default reverts to or any auth/scope constraints.

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

Conciseness3/5

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

It is short and each sentence carries information, so it is not padded. But the opening is a grammatically incomplete fragment that describes the resource rather than front-loading the action, which slightly obscures the tool's purpose at first read.

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

Completeness4/5

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

For a 6-parameter edit tool with full schema coverage, no output schema, and annotations that cover the safety profile, the description supplies the missing semantics: fallback behavior and conditional parameter requirements. It is close to complete, lacking only error/reset behavior when a default is cleared.

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 per-parameter meanings are already documented (baseline 3). The description adds cross-parameter conditional requirements — 'voice_block needs provider' and 'segment_video needs talking_head' — which the flat per-parameter schema descriptions do not express. That is real added value beyond the schema.

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 title ('Edit account') and the phrase 'The account's default model and settings for one kind of generation' together convey that this sets account-level defaults for a generation family. It is clearly distinguishable from siblings like editor_edit or segment_edit, which operate on other scopes. The opening is a noun fragment rather than an explicit verb+resource statement, so it stops short of a 5.

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

Usage Guidelines3/5

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

'used when neither the call nor the item's prompt editor names one' explains the fallback context in which these defaults matter, which is useful. However, it never states when an agent should invoke this tool versus the many *_edit siblings, nor any preconditions for calling it. Usage is implied rather than directed.

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

assets_editEdit assetsAInspect

Add a character, environment or object that Analyze Script missed, or rename one or rewrite its description. After a description change, render its reference image again (assets_generate asset_ids).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe name the script uses for it
actionYescreate: project_id, asset_type, name, optional description; update: asset_id and name and/or description
asset_idNoupdate: the asset id
asset_typeNocreate: the kind
project_idNoProject id
descriptionNoWhat it looks like; every render follows it, so be specific

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already disclose non-readOnly, non-destructive, non-idempotent behavior, so the bar is lower. The description adds genuine workflow context: a description change must be followed by re-rendering the reference image via assets_generate. It omits permission/auth requirements and what the update does to existing renders, but the downstream-invalidation note is real added value.

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

Conciseness5/5

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

Two tight sentences: the capability first, then the required follow-up action. Every clause earns its place and nothing is padded.

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 supplies the critical post-edit workflow (regenerate the reference image) that an agent would otherwise miss. For a mutation tool with full schema coverage and annotations, this is complete enough, though it could note what the operation returns.

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 fully documents all six parameters, including the action enum's per-action requirements. The description only restates name/description edits at a high level and adds no syntax or format detail beyond the 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?

States specific verbs (add, rename, rewrite) against a specific resource (assets: character/environment/object), which distinguishes it clearly from assets_read and assets_generate. The reference to 'Analyze Script missed' gives the concrete scenario the tool exists for. An agent can tell it apart from its siblings without opening any schema.

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

Usage Guidelines4/5

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

Gives a clear when-to-use trigger (when Analyze Script missed an asset) and names the follow-up alternative (assets_generate) for re-rendering reference images. It does not explicitly contrast create vs update behavior in prose, but the schema enum covers that split. Clear context with no strong exclusions stated.

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

assets_generateGenerate reference imagesAInspect

Render reference images, which keep each character, environment and object looking the same in every segment. Needs both style template images. Without asset_ids it renders every asset with none, skipping ones already rendering, so a repeat never bills twice. Afterwards, view_image them to check likeness.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModel id (get_generation_options); omit for the saved choice
dry_runNoReturn the count and credit estimate; start nothing
settingsNoModel settings: keys of its settings_schema
asset_idsNoAssets to render, again if they have one; omit for every asset without a reference image
project_idYesProject id
editable_sectionsNoTemplate prompt section overrides, keyed by section id

TDQS

A3.9/5.0
Behavior4/5

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

Annotations cover the mutation/safety profile, and the description adds real behavioral value beyond them: the style-template prerequisite, the dedupe of assets already rendering, and the billing guarantee that a repeat never bills twice. It does not describe failure handling or timing, so not a 5.

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

Conciseness4/5

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

Four sentences, front-loaded with the purpose before prerequisites and follow-up. Minor redundancy between 'skipping ones already rendering' and 'a repeat never bills twice', but nothing wasted overall.

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 non-destructive mutation with full annotation coverage and no output schema, the description supplies the prerequisite, default-omission behavior, billing/dedupe semantics, and a verification step. It omits only secondary details like timing and error 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 description coverage is 100%, so the baseline is 3. The description restates asset_ids omission behavior (render every asset with none) and adds the style-template requirement, but adds little on model, settings, editable_sections, or dry_run beyond what the schema already says.

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

Purpose4/5

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

States a specific verb (render) and resource (reference images) and explains their role: keeping characters/environments/objects consistent across segments. It names the sibling view_image as a follow-up step, though it does not explicitly contrast itself with style_generate or storyboard_generate.

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 a precondition (both style template images needed) and a follow-up workflow (view_image to check likeness), plus the effect of omitting asset_ids. It stops short of naming an explicit alternative tool to use instead for a different case.

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

assets_readRead assetsA
Read-onlyIdempotent
Inspect

The project's characters, environments and objects, each with its description (what every render follows), reference_image (null: not rendered; view_image it) and, for characters, voice_id. Each needs a reference image before the voiceover.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_typeNoOnly this kind
project_idYesProject id

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-destructive behavior, so those need not be restated. The description adds genuine value beyond them: it explains that description is 'what every render follows', that a null reference_image means 'not rendered', and that voice_id exists only for characters.

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?

Three compact lines that front-load the resource and then enumerate the returned fields. Every clause carries information; no filler. Slightly dense phrasing, but appropriately sized.

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 return-shape burden and does so well, naming the fields each asset returns and their meaning. For a simple two-parameter read tool this is sufficient for an agent to call and interpret it 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 project_id and asset_type are already documented by the schema (including the 'Only this kind' filter). The description echoes the three asset kinds but adds no syntax or filtering detail beyond what the schema provides, so the baseline 3 applies.

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 identifies the resource (the project's characters, environments and objects) and what each carries, and combined with the name/title it is clearly the read operation. It does not explicitly name that it reads versus its siblings (assets_edit, assets_generate), but the returned-field detail makes 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 Guidelines3/5

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

There is no explicit when-to-use versus assets_generate or assets_edit, but the parenthetical 'reference_image (null: not rendered; view_image it)' routes the agent to a sibling tool conditionally. The closing domain rule ('Each needs a reference image before the voiceover') hints at when this data matters but is not framed as usage guidance.

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

deleteDeleteA
Destructive
Inspect

Permanently delete; irreversible, so confirm with the user first. project: it and everything in it. asset: a character, environment or object. music_track: a background music track. segment_extra: a segment's sound effect or overlay, with its scene layers. A segment's image, clip and voiceover can't be deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoThe asset, music track, or segment sound effect or overlay
typeYesproject: project_id; asset, music_track: id; segment_extra: project_id, segment_number, and id if the segment has several
project_idNoProject id
segment_numberNoSegment number (1-based, from storyboard_read)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, but the description adds genuinely new behavioral detail: the operation is permanent and irreversible, requires user confirmation, and cascades (deleting a project removes everything in it; segment_extra removes scene layers). It does not discuss failure modes or partial-failure behavior, which keeps it from a 5.

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

Conciseness4/5

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

The critical irreversible/confirm warning is front-loaded in the first sentence, and every following clause carries type-specific information. The hard line-wrap formatting (breaks mid-sentence and mid-phrase) makes it slightly harder to scan than a flowing paragraph, but there is no 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 destructive, non-idempotent tool with no output schema, the definition covers what gets destroyed, the confirmation requirement, cascade scope, and unsupported targets. What is missing is post-deletion feedback (what the caller receives, how to verify success), which is a modest gap given annotations already flag destructiveness.

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 description coverage is 100%, so the baseline is 3, but the description goes further by giving semantic meaning to the enum values ('asset: a character, environment or object', 'music_track: a background music track'), which the schema only labels. It still relies on the schema for id/project_id/segment_number mechanics, so it is not a 5.

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+resource ('Permanently delete') and then enumerates exactly what each supported type removes (project, asset, music_track, segment_extra). The per-type breakdown lets an agent distinguish this destructive tool from siblings like assets_edit, segment_edit, or storyboard_edit without opening any schema.

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

Usage Guidelines4/5

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

Gives a clear precondition ('irreversible, so confirm with the user first') and an explicit exclusion ('a segment's image, clip and voiceover can't be deleted'), which steers the agent away from unsupported calls. It stops short of naming alternative tools for removing those unsupported artifacts, so it is not a full 5.

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

editor_editEdit the videoA
Destructive
Inspect

Polish the video in the editor; changes show in the next export.

scene_note: edit one scene with a note (move, restyle, add or remove layers and overlays, change the text of a lower third, title card or callout, change motion); spends credits. Returns the changes and skipped_mutations: edits that didn't land (applied=false) or landed differently than asked (applied=true), each with a reason; check them. Scene lengths follow the narration; the image, clip and voiceover layers can't be removed. project_note: a note for the whole video, applied to up to 10 scenes per call; spends credits. captions: merge caption settings. add_sfx: attach a sound effect to a segment. add_music / update_music: background music timed in seconds; a track's duration follows from its trim.

ParametersJSON Schema
NameRequiredDescriptionDefault
loopNoLoop the music under the whole video
nameNoThe music track's name
actionYesscene_note: segment_number, message; project_note: message; captions: caption_config; add_sfx: segment_number, library_track_id; add_music: library_track_id, optional name, volume, loop, start_seconds; update_music: track_id and any of name, volume, loop, start_seconds, trim_start_seconds, trim_end_seconds
volumeNoMusic volume 0-1; the 0.12 default sits under the narration, so raise it only if asked
messageNoThe note in plain words, e.g. "move the caption to the top"
track_idNoupdate_music: a track id from editor_read action=music
project_idNoProject id
start_secondsNoWhere the music starts in the video, in seconds
caption_configNocaptions: keys to merge into the caption settings (get_status shows them)
segment_numberNoSegment number (1-based, from storyboard_read)
library_track_idNoA track id from editor_read action=audio_library
trim_end_secondsNoupdate_music: where playback stops within the track, in seconds
trim_start_secondsNoupdate_music: where playback starts within the track, in seconds

TDQS

A4.2/5.0
Behavior5/5

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

Beyond the annotations (destructive/not idempotent), the description adds substantial behavioral context: edits spend credits, returns include a skipped_mutations list with applied/reason that the agent is told to check, project_note affects up to 10 scenes per call, scene lengths follow narration, and image/clip/voiceover layers cannot be removed. This is exactly the surplus detail the annotations cannot convey.

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 one-line purpose is front-loaded before the dense action breakdown, and every clause carries information (credits, return shape, layer constraints). It is a single semicolon-heavy block rather than cleanly separated sections, which slightly hurts scanability but there is little filler.

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 13-parameter, destructive, credit-spending tool with no output schema, the description covers the key gaps: credit cost, the skipped_mutations return and its semantics, per-action limits, and layer constraints. It omits auth/permission requirements and the return shape beyond skipped_mutations, so it is strong but not exhaustive.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds meaning not fully in the schema: captions act as a merge, music is timed in seconds and a track's duration follows from its trim, and the action-level parameter groupings mirror the enum. That extra semantic framing lifts it above 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 states a specific resource (the video in the editor) and enumerates the six distinct actions it can perform (scene_note, project_note, captions, add_sfx, add_music, update_music), so an agent can tell the scope apart from a read tool. The opening 'Polish the video' is generic, and it never explicitly names sibling tools like editor_read as the reading counterpart, so it stops short of a 5.

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

Usage Guidelines4/5

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

Each action is tied to a clear condition: scene_note for one scene, project_note for the whole video (10 scenes per call), captions to merge settings, add_sfx to attach a sound effect, add/update_music for background music. However it gives no explicit 'when not to use this' exclusion or direct routing to editor_read/segment_edit alternatives.

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

editor_readRead the editorA
Read-onlyIdempotent
Inspect

scenes: the editor timeline, one scene per segment, as {total, offset, returned, scenes}; scenes build on their own from the storyboard. music: {tracks}, timed in seconds. audio_library: tracks to add with editor_edit; when nothing matches, it lists the library's moods and genres.

ParametersJSON Schema
NameRequiredDescriptionDefault
moodNoaudio_library: a mood tag
genreNoaudio_library: a genre tag
limitNoscenes: how many; 0 returns all
actionYesscenes: the timeline (project_id); music: the project's music tracks (project_id); audio_library: music and sound effects to add
offsetNoscenes: first to return, 0-based
searchNoaudio_library: free text
categoryNoaudio_library: music or sfx (sound effects); omit for both
project_idNoProject id
include_compositionNoscenes: include each scene's full layer JSON (bulky: page it)

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description still adds real behavior: the paginated scenes shape, music timing in seconds, and the notable fallback where an empty audio_library match returns the library's moods and genres. It does not disclose auth or rate-limit traits, but those are minor here.

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?

Three tight, action-scoped clauses with no filler or repetition. It is slightly under-structured at the front, opening on 'scenes:' rather than a one-line statement of what the tool is, forcing the reader to assemble overall purpose from name and title.

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?

With 9 parameters and no output schema, the return-shape details (scenes object with total/offset/returned, music tracks, fallback listings) carry useful load, and the action enum covers the three modes. What is missing is only light framing (prerequisites for project_id, pagination guidance) already handled by the 100%-covered 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 description coverage is 100%, so every parameter (including the action enum, mood, genre, limit, offset, search, category, include_composition) is already documented in the schema. The description adds return-format context ('timed in seconds') but little that clarifies the parameters themselves, so the baseline 3 applies.

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 enumerates the three actions and what each returns (scenes timeline, music tracks, audio_library tracks), so the resource is identifiable per action. It never states the top-level verb+resource explicitly (the reader infers 'read editor data' from name/title), and only partially differentiates from siblings by naming editor_edit for the audio_library case.

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?

There is implicit routing: audio_library results are 'tracks to add with editor_edit', which frames this as the read counterpart to the edit tool, and the no-match fallback (listing moods/genres) is noted. But there is no explicit 'use this when you need to inspect X' statement or clear when-not guidance across the three actions.

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

export_videoExport the videoAInspect

Render the finished video from the editor timeline; free. When the export job completes, get_status carries export_url.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject id

TDQS

A3.7/5.0
Behavior4/5

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

Annotations declare non-read-only, non-destructive, non-idempotent, so the safety profile is already covered. The description adds real value beyond that: the operation is asynchronous (an 'export job' that 'completes' later) and the output surfaces through get_status rather than the immediate response, plus it is 'free', a cost signal annotations cannot convey.

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 short clauses, front-loaded with the action and its source timeline; nothing is padded. The 'free' note and the async follow-up pointer both earn their place, though the sentence could be tightened slightly.

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?

There is no output schema, and the description correctly fills that gap by telling the agent the export_url arrives via get_status rather than in this call's response. For a single-parameter, non-destructive tool this is nearly complete; only the relationship to the 'render' sibling is unaddressed.

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% with a single required 'project_id', so the schema carries the parameter documentation. The description adds no format, constraint, or sourcing detail for project_id, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Render the finished video from the editor timeline'), which is clear on its own. However, the sibling list contains a tool literally named 'render', and the description never distinguishes export_video from it, leaving ambiguity about which one produces the final deliverable.

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?

Usage is implied rather than stated: call this when you want the finished video. It does name get_status as the follow-up step, which is helpful workflow context, but there are no explicit when-not conditions and no explanation of how it relates to the 'render' sibling.

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

get_generation_optionsGet generation optionsA
Read-onlyIdempotent
Inspect

What a generate call can be told to use.

models: the allowed models with credit estimates and settings_schema (the valid settings keys); is_default marks the default (the account's saved choice, else Framesail's). Voice and clip models come in families, each with its own default: pass provider or talking_head for one family.

prompt_sections: sections with entity_backed=false can be overridden with editable_sections; entity_backed=true sections show the item's own content (description, prompts, text, brief): change it with the edit tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesmodels: the allowed models; prompt_sections: the prompt editor's sections
providerNovoice_block: the voice engine (the project's voice_tts_provider)
generationYesscript_scan is Analyze Script; *_reference, reference images; voice_block, the voiceover; segment_image, a segment's image; segment_video, a clip; art_style_*_template, the style's template images
talking_headNosegment_video: true for talking head models, false for clips

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds substantive context beyond that: credit estimates are returned, settings_schema exposes the valid settings keys, is_default reflects the account's saved choice falling back to Framesail's, and entity_backed=true sections cannot be overridden here and must be changed via edit tools — a real mutability boundary.

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?

It is information-dense and front-loaded with the core purpose, with no filler sentences. The parenthetical packing ('settings_schema (the valid settings keys)') and fragmentary opening slightly reduce readability, but every clause carries useful signal.

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?

There is no output schema, so the description must explain the return values, and it does: model lists with credit estimates and settings schema, the is_default flag, and prompt_sections with their entity_backed semantics. The top-level response shape is not spelled out, but the fields an agent needs to act on are covered.

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 genuinely elaborates: it explains what is_default means, what settings_schema contains, the model-family concept behind provider/talking_head, and the entity_backed flag that governs editable_sections. That is added meaning beyond the enum descriptions in the schema.

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 makes clear this is a discovery/read tool returning the options a generate call can accept (allowed models with credit estimates, settings schema, prompt sections), which cleanly separates it from the many *_generate siblings that actually produce assets. The opening sentence is a fragment ('What a generate call can be told to use') rather than a verb+resource statement, so it is clear but not maximally crisp.

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 conditional guidance tied to the parameters ('pass provider or talking_head for one family') and routes the agent to the alternative tool set for a specific case ('entity_backed=true sections ... change it with the edit tools'). It does not explicitly say when not to use this tool or that it should be called before a generate call, 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_statusGet statusA
Read-onlyIdempotent
Inspect

Where things stand and what to do next; start and resume here.

Always reports the account: plan, credits, credits held by running jobs, and credits_available to spend. project_id adds the project's settings, each step's state and web link, jobs with readable errors, export_url and next_step. channel_id reports the channel style instead: analysis_done, inputs_stale, templates, templates_stale and next_step. Without API access it reports only the account and subscription_needed: pass that on to the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoWait up to about 50 seconds for the jobs in scope to finish, then report only credits, jobs, step states and next_step; call again if some still run
channel_idNoReport this channel's style instead of a project
project_idNoProject id

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive). The description adds real behavioral context beyond them: the degraded no-API-access path returning subscription_needed, and the instruction to pass that on. It does not mention rate limits or pagination, but for a status read the disclosure is solid.

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

Conciseness4/5

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

The text is dense and front-loaded with the entry-point instruction, and each sentence carries new information about a different scope. The opening metaphor is slightly wasteful, but overall there is little filler.

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?

With no output schema, the description must convey return values, and it enumerates the key fields (plan, credits, credits_available, step states, web link, export_url, next_step, subscription_needed). It is nearly complete for the account path; the project and channel paths are described by key names rather than structure, which is a minor gap.

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 goes further by explaining what each parameter yields (project_id adds settings/step states/jobs/export_url/next_step; channel_id reports channel style keys), giving outcome-level meaning that the terse schema descriptions ('Project id', 'Report this channel's style') do not.

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 opening line is vague and metaphorical ('Where things stand and what to do next'), but the body states a specific resource (account status: plan, credits, credits_available) and distinguishes the three scopes (account, project_id, channel_id). An agent can tell it apart from projects_read or style_read once it reads past the first sentence.

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?

'start and resume here' tells the agent to call this first or to resume a workflow, and the body explains the conditional branches (project_id vs channel_id vs no API access). It stops short of naming explicit alternatives among siblings, but the context of use is clear.

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

projects_editEdit channels and projectsAInspect

Create a channel or a project, or change a project's title, brief or video format. A new project takes its channel's style; a channel with no style needs one (style_edit action=create) before anything is generated. Share the returned web_url so the user can follow along.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNocreate_channel: the channel name
titleNoThe project title
actionYescreate_channel: name, optional description; create_project: channel_id, title, optional description, video_format; update_project: project_id and any of title, description, video_format
channel_idNocreate_project: its channel
project_idNoProject id
descriptionNoA channel: what it is about. A project: the brief, what the video is about; it seeds the script, so make it specific
video_formatNolandscape (16:9, the default) or portrait (9:16: Shorts, Reels, TikTok); fixed once a storyboard exists

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover safety (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the bar is lower. The description adds genuine behavior beyond them: new projects inherit channel style, the style prerequisite, and that a web_url is returned for the user to follow — all useful side-effect 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?

Three tight sentences with the mutation scope front-loaded, followed by the dependency and the follow-up instruction. No repetition or filler, though it could be slightly more ordered around the action enum.

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 multi-action mutation tool with no output schema, the description covers scope, prerequisite, and return signal (web_url). An agent has enough to invoke it correctly; remaining gaps are minor given the rich schema and 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 description coverage is 100%, so the schema already documents every parameter including the action enum semantics. The description only echoes title/brief/video_format, adding no syntax or format detail beyond the schema; baseline 3 applies.

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 gives a concrete verb set (create/change) and the exact resources and fields affected (channel, project, title, brief, video_format). An agent can distinguish it from projects_read by the mutation framing, though it never names the read sibling explicitly.

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 supplies a real workflow prerequisite: a channel with no style needs style_edit action=create before anything is generated, and it tells the agent to surface the returned web_url. No explicit when-not or negative routing to alternatives is given, 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.

projects_readRead channels and projectsC
Read-onlyIdempotent
Inspect

Your channels, or the projects in one channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYeschannels: your channels; projects: the projects in channel_id
channel_idNoprojects: the channel

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is fully covered elsewhere. The description adds nothing beyond that — no statement of scope, pagination, or what a caller gets back for either action. It is effectively a restatement of the title.

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

Conciseness3/5

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

Six words, nothing wasted — but it is a sentence fragment that omits the verb, so brevity comes at the cost of clarity. It is front-loaded but under-specified for a two-action tool.

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 simple two-parameter read with full schema coverage and rich read-only annotations, the definition is minimally adequate — an agent can call it. What is missing is any guidance on selecting between the channels and projects actions and any hint of the return shape, since no output schema exists.

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%; both action and channel_id are documented with their semantics ('channels: your channels; projects: the projects in channel_id'). The description's clause 'or the projects in one channel' only loosely echoes channel_id and adds no format or constraint detail beyond the schema. Baseline 3 applies.

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

Purpose3/5

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

The description is a noun phrase ('Your channels, or the projects in one channel') rather than a verb+resource statement; the verb is only recoverable from the title. It does identify the two resources (channels, projects) and their nesting relationship, but it does not distinguish itself from sibling projects_edit or projects_read-style operations on its own.

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?

No when-to-use guidance, no mention of which of the two actions to pick in which situation, and no mention of the sibling projects_edit that operates on the same resource. The only routing signal is buried in the action enum description in the schema.

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

renderRender segmentsAInspect

Render segment images and clips, the biggest spend in the video: always run it with dry_run=true first and get the user's yes on the estimate.

generate: without segment_numbers, everything not yet rendered (items rendering are skipped); with them, those segments, finished renders included, e.g. the first minute before the whole video. Overrides need segment_numbers and what=images or what=clips.

animate: turn one segment's rendered image into a clip; animate only images worth motion. dry_run quotes the default clip or talking head model. A refused render leaves the segment as it was; to go back to the image, segment_restructure change_type to=image keep_image=true.

Check renders with storyboard_read action=segment_assets and view_image.

ParametersJSON Schema
NameRequiredDescriptionDefault
whatNogenerate: images (everything but clips: images, overlay segments, real photos, B-roll), clips, or allall
modelNoModel id (get_generation_options); omit for the saved choice
actionYesgenerate: optional segment_numbers, what; animate: segment_number, optional talking_head
dry_runNoReturn the count and credit estimate; start nothing
settingsNoModel settings: keys of its settings_schema
project_idYesProject id
talking_headNoanimate: true for a talking head (the person in the image speaks the narration with lip sync, billed on the segment's full length); false for a clip
segment_numberNoSegment number (1-based, from storyboard_read)
segment_numbersNogenerate: only these segments, finished ones included; omit for everything not yet rendered
editable_sectionsNoTemplate prompt section overrides, keyed by section id

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare the generic safety flags (destructiveHint=false, idempotentHint=false). The description adds high-value behavior beyond them: this is the biggest credit spend, dry_run quotes the estimate, animate defaults to a clip or talking-head model, a refused render leaves the segment unchanged, and there is a documented recovery path (segment_restructure change_type=to image keep_image=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?

Front-loaded with the critical instruction to run dry_run first, and each subsequent sentence carries distinct operational content. It is dense, multi-clause prose, but almost no sentence is 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 10-parameter mutation tool with no output schema, the description covers cost/estimation behavior, refusal handling, defaults, and post-run verification paths, which is what an agent needs. Nothing essential for correct invocation appears 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 baseline is 3, but the description adds cross-parameter semantics the schema does not: overrides need segment_numbers plus what=images/clips, and animate uses segment_number with optional talking_head. It leaves a few params (model, settings, editable_sections) to the schema alone.

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 (render) and resource (segment images and clips) and immediately distinguishes its two sub-actions, generate and animate, with the scope of each. It also flags the differentiating stakes ('the biggest spend in the video'), which no sibling touches.

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 when-to-use and when-not: dry_run=true first and get user confirmation; generate without segment_numbers = everything not yet rendered, with them = those segments including finished ones; overrides require segment_numbers and what=images/clips. It also routes to verification via storyboard_read action=segment_assets and view_image.

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

script_editEdit the scriptA
Destructive
Inspect

Change the script or its settings; only revise spends credits.

save: replace the active version's text (the old text is lost: show the user the current script first), then run Analyze Script. Notation, never read aloud: [SCENE: <visual direction>] as its own paragraph directs the storyboard for the narration after it, until the next one, over the director style. <break time="1.5s" /> is the only thing that makes the voice pause (about 0.5s between thoughts, 1.0s between sections; one tag with the total, never two in a row). A paragraph starting Name: "..." is that character's dialogue. A delivery cue in square brackets inside a line ([laughs], [sighs], [whispers]) shapes how it is said; keep it inline, never on its own line. MiniMax performs sounds such as laughs, sighs, breathes, gasps and coughs and drops other cues.

activate_version: switch to another version (each generated script is one). revise: an AI rewrite of a passage or the whole script in the narrative voice; returns revised_text without saving it: splice it in and save.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYessave: content; activate_version: script_id; revise: instruction, optional selected_text; settings: script_target_minutes and/or voice_mix; set_concept: visual_concept
contentNosave: the full script text
script_idNoactivate_version: a version id from script_read
voice_mixNosettings: narration versus character dialogue
project_idYesProject id
instructionNorevise: what to change, e.g. "make the intro punchier"
selected_textNorevise: the exact passage to rewrite; omit for the whole script
visual_conceptNoset_concept: how the video looks
script_target_minutesNosettings: length of the next generated script, in minutes

TDQS

A4.2/5.0
Behavior5/5

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

Goes well beyond the annotations (destructiveHint, non-idempotent) by disclosing the concrete consequence: the old text is lost and should be surfaced first, revise spends credits, and revise returns revised_text without persisting. This is exactly the kind of consequence detail an agent needs before calling a destructive tool.

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?

Core purpose and the destructive warning are front-loaded in the first two sentences; per-action blocks follow. The notation paragraph is dense and run-on, but its rules are operationally relevant to authoring `content`, so little of it is genuinely wasted.

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 9-parameter, 5-action tool with no output schema, the description covers the risky paths (save overwrite, credit-spending revise, non-persisting revise return) well. The remaining gap is that settings and set_concept get no behavioral treatment beyond the schema's action enum mapping.

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 real meaning the schema cannot carry: the notation grammar for `content` (SCENE blocks, break tags, dialogue naming, inline delivery cues) and the revise/selected_text splice workflow. It leaves the settings and set_concept fields to the schema.

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 opening line states a specific verb+resource ('Change the script or its settings') and adds a differentiating cost note ('only revise spends credits') that separates it from script_generate/script_read. It does not explicitly name a sibling, so it lands just short of a 5.

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

Usage Guidelines4/5

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

Gives per-action guidance (save replaces the active text; activate_version switches versions; revise rewrites without saving and must be spliced in then saved) and a prerequisite ('show the user the current script first'). Clear context, though it never explicitly routes to siblings like script_read for ids beyond a passing mention.

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

script_generateGenerate the script or analyze itAInspect

generate: write the script from the brief and the narrative style; each run is a new version (review it with script_read).

analyze (Analyze Script): find the script's characters, environments and objects (including any named only in [SCENE: ...] directions) and split it into voice blocks. Existing assets are kept as they are (description, reference image, voice) and new ones added; assets the script no longer names stay until the user deletes them. Review with assets_read.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModel id (get_generation_options); omit for the saved choice
actionYesgenerate: write the script; analyze: Analyze Script
settingsNoModel settings: keys of its settings_schema
project_idYesProject id
editable_sectionsNoTemplate prompt section overrides, keyed by section id

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare non-readOnly, non-idempotent, non-destructive, and the description is consistent with them while adding real behavioral detail: each run creates a new version, and analyze preserves existing assets (description, reference image, voice) and adds new ones while stale assets persist until the user deletes them. That side-effect disclosure goes meaningfully beyond the structured fields, though permissions and failure behavior are unstated.

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

Conciseness4/5

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

The two modes are front-loaded and labeled, and the follow-up read tools are attached to the relevant mode. The parenthetical about [SCENE: ...] directions is useful but slightly dense; overall it is tight and earns its length.

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 two-action mutation tool with full schema coverage and no output schema, the description covers what each action does, how versions behave, what analyze does to existing assets, and which read tool verifies each result. 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.

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 model, settings, project_id, and editable_sections. The description enriches the meaning of the `action` enum values considerably, but says nothing about the other four parameters, so it only marginally exceeds the baseline.

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 the two modes explicitly (generate: write the script; analyze: find characters/environments/objects and split into voice blocks), giving a specific verb+resource for each. It also names the sibling tools used to inspect results (script_read, assets_read), so an agent can place it in the workflow without opening the schema.

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

Usage Guidelines4/5

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

It tells the agent what each action is for and how to follow up (review with script_read, review assets with assets_read), plus the important context that each generate run produces a new version. It does not address when to prefer script_edit over re-generating, nor any prerequisites, so the routing guidance is clear but not exhaustive.

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

script_readRead the scriptA
Read-onlyIdempotent
Inspect

The active script, its versions, and the script settings (script_target_minutes, voice_mix, visual concept). Show the script to the user before Analyze Script.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject id

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description goes beyond them by enumerating the payload contents (active script, versions, settings) — meaningful given there is no output schema — though it says nothing about size, versioning behavior, or what happens when no script exists.

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?

Very short and dense: payload contents first, then the user-facing directive. The parenthetical field list is slightly cluttered but every element carries information; no filler sentences.

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 read tool with full annotation coverage, the description covers what it returns and when in the workflow to invoke it. With no output schema, a bit more detail on the returned shape (e.g. empty/absent script case) would be needed for a 5, but 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 coverage is 100% with a single project_id parameter, so the schema already carries the parameter documentation. The description adds no additional meaning about project_id (format, source, or scoping), which is the expected baseline when the schema does the work.

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?

Names the exact resource returned — the active script, its versions, and script settings with three named setting fields — so an agent knows precisely what this fetches. It is phrased as a noun list rather than a verb+resource statement, but the read intent is unambiguous and it is distinguishable from script_edit and script_generate by naming script content rather than changes.

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?

"Show the script to the user before Analyze Script" supplies one workflow cue and a sequencing constraint, which is real guidance. However, it never names the sibling tools (script_edit, script_generate) or states when-not to use this versus those, so the routing information is only partially implied.

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

segment_editEdit a segmentAInspect

Change one segment without losing renders; only split spends credits. Returns the changed segments.

set_prompts: write prompts verbatim, no AI rewrite. The renders stay as they are: render the segment again to apply the new prompts. set_continuation: make this segment's image continue an earlier one's (same composition, only the change); render the image again. rollback: restore one of the last 5 renders of the image or clip; the current one takes its place, so it can be undone, and the prompt editor's model stays as it is. split: cut into 2-4 parts; the inheriting part keeps the prompts and renders; the others start empty and get prompts written from their narration in the background (spends credits), or give them prompts with set_prompts. Later segments renumber: read the storyboard again before more edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
whatNorollback: restore the image or the clip
indexNorollback: which earlier render, 0 = the latest
actionYesset_prompts: image_prompt, video_prompt and/or media_queries; set_continuation: continues_from; rollback: what, optional index; split: offsets_ms, optional inherit_index
offsets_msNosplit: 1-3 ascending cut points, in ms from the segment's start; word timings: voiceover_read action=blocks include_subtitle_data=true
project_idYesProject id
image_promptNoset_prompts: the image prompt
video_promptNoset_prompts: the motion used when the image is animated
inherit_indexNosplit: the part (0-based) that keeps the prompts and renders
media_queriesNoset_prompts: searches for a real photo or B-roll
continues_fromNoset_continuation: an EARLIER segment number; 0 clears the link
segment_numberYesSegment number (1-based, from storyboard_read)

TDQS

A4.2/5.0
Behavior5/5

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

Goes well beyond the annotations: 'only split spends credits', set_prompts leaves renders unchanged until re-rendered, rollback is itself undoable and preserves the prompt-editor model, split leaves non-inheriting parts empty and auto-writes prompts from narration (spending credits), and later segments renumber requiring a fresh storyboard read. That is exactly the side-effect and cost disclosure an agent needs.

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

Conciseness4/5

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

The lead sentence front-loads the key constraint (no render loss except split) and the 'Returns the changed segments' clause covers the absent output schema. The action paragraphs are dense but each earns its place; a bulleted structure would read better than the current run-on lines.

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 11-parameter, four-action mutation tool with no output schema, the description covers costs, reversibility, ordering side effects (renumbering), and the return value. The main omission is any routing guidance versus segment_restructure and storyboard_edit.

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, but the description adds meaning the schema does not: it links each action to its parameters conceptually (e.g., the inherited part keeping prompts for inherit_index, continuation meaning 'same composition, only the change') and clarifies that split inheritors 'start empty' until prompts are written.

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

Purpose4/5

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

States a specific verb+resource ('Change one segment') and then enumerates four distinct actions (set_prompts, set_continuation, rollback, split) with their effects, so an agent understands the tool's scope well. It does not differentiate itself from the sibling segment_restructure, which is the only real gap.

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?

Each action carries its own when-to-use context: set_prompts for verbatim prompt writes with unchanged renders, set_continuation for chaining an earlier image, rollback for undoing to one of the last 5 renders, split for cutting into 2-4 parts. It never names an alternative sibling tool or states when NOT to use this one, 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.

segment_restructureRestructure a segmentA
Destructive
Inspect

Change what a segment is. Every call previews first: when no rendered image or clip would be lost it runs; otherwise it changes nothing and returns what would be lost. Show the user, then call again with confirm=true.

combine: merge with a neighboring segment. The kept segment's renders stay, retimed to the combined length, but go stale: its prompts are rewritten for the combined narration, so render it again after. The other's are deleted (the preview names it).

change_type: to an image, real photo, B-roll (both fetched) or overlay segment. Clips and talking heads come from render action=animate. keep_image turns a clip back into its image, keeping the render. A change between an image, real photo and B-roll keeps the prompts; render the image again.

rewrite: an AI rewrite of the prompts from feedback; render the image and clip again after. For exact text, use segment_edit set_prompts.

combine, rewrite and a change to or from an overlay segment write prompts in the background, and a change to a real photo or B-roll with no searches yet writes its searches (its prompts stay): a small AI step that spends credits (get_status wait=true). Until it finishes, change_type is refused (409). Sound effects and overlays always survive; change an overlay's text with editor_edit scene_note. Later segments may renumber: read the storyboard again.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNochange_type: the new kind
keepNocombine: whose prompts and renders survivethis
actionYescombine: with_segment_number, optional keep; change_type: to, optional keep_image; rewrite: feedback
confirmNoRun even though renders are lost; only after the user saw which
feedbackNorewrite: what to change, e.g. "make this a close-up"
keep_imageNochange_type from a clip to image: keep the rendered image
project_idYesProject id
segment_numberYesSegment number (1-based, from storyboard_read)
with_segment_numberNocombine: the neighboring segment

TDQS

A4.8/5.0
Behavior5/5

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

Far exceeds the annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=false): it discloses the preview-first contract, the confirm=true gate, the 409 refusal while background AI runs, credit spend, what renders survive or go stale, retiming of kept renders, and renumbering of later segments.

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?

Long but front-loaded: the preview/confirm workflow comes first before per-action detail. Each paragraph is organized by action and every sentence carries operational content, though the density is close to the upper limit of comfortable scanning.

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 9-parameter destructive mutation with no output schema, the description covers the preview return ('returns what would be lost'), the refusal mode, async background steps, credit cost, and downstream effects. Little an agent needs to call it correctly is missing.

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

Parameters4/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 each parameter, giving a baseline of 3. The description adds genuine meaning on top: what 'keep' means for surviving prompts/renders and staleness, and what keep_image preserves when converting a clip back to an image.

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+resource scoped to a single segment, then names and defines its three sub-actions (combine, change_type, rewrite). An agent can distinguish it from sibling segment_edit or render without opening any schema.

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

Usage Guidelines5/5

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

Explicitly routes across alternatives: exact text goes to segment_edit set_prompts, clips/talking heads come from render action=animate, overlay text goes to editor_edit scene_note, and renumbering requires re-reading the storyboard. It also states the when-to-confirm condition ('only after the user saw which').

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

storyboard_editEdit storyboard settingsCInspect

Storyboard settings, used by the next storyboard run.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYessettings: sfx_level
sfx_levelYesHow many sound effects the storyboard plans
project_idYesProject id

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the safety profile is covered structurally. The description adds one behavioral fact, that settings apply to the next run rather than retroactively, but says nothing about what is overwritten, whether existing settings must be preserved, or auth requirements. Value beyond annotations is minimal.

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

Conciseness3/5

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

It is a single short sentence with no padding, which is structurally fine, but the brevity comes at the cost of under-specification rather than efficiency. Nothing is front-loaded beyond a restatement of the title.

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?

For a mutation tool with no output schema, the description should at minimum explain the write and its effect on downstream storyboard generation. It gestures at the run dependency but leaves the operation, overwrite behavior, and relationship to storyboard_generate/storyboard_read unexplained, which is too thin for a 3-parameter required-schema edit 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 description coverage is 100%, so action, sfx_level and project_id are each documented at the schema level, including the enum meanings for sfx_level. The description adds no parameter semantics at all, so the baseline 3 for fully covered schemas applies.

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

Purpose2/5

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

The description 'Storyboard settings, used by the next storyboard run' restates the title rather than stating an action verb, so it never says what the tool actually does (edit/set). The clause about the next storyboard run is the only added information, and it describes effect timing rather than the operation. Without the name and title, an agent could not tell this mutates settings.

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?

There is no explicit when-to-use guidance and no named alternatives, though the sibling storyboard_generate and storyboard_read exist and are the natural contrast points. The phrase 'used by the next storyboard run' weakly implies invocation prior to generation, but nothing states when not to use it or how it relates to the read/generate siblings.

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

storyboard_generateGenerate the storyboardA
Destructive
Inspect

Plan the storyboard: every segment, its timing, image and motion prompts, overlays and continuations, following the channel style and any [SCENE: ...] directions. Needs the finished voiceover (its timing drives the cuts). It plans images, plus real photos and B-roll when the director style has the @real-media tag; clips come later, by animating rendered images. Running it again replaces the whole plan, edits included. The longest step (several minutes): get_status wait=true, repeatedly.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModel id (get_generation_options); omit for the saved choice
settingsNoModel settings: keys of its settings_schema
project_idYesProject id
editable_sectionsNoTemplate prompt section overrides, keyed by section id

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, but the description earns credit by specifying exactly what is destroyed ('Running it again replaces the whole plan, edits included') and disclosing cost/latency ('The longest step (several minutes)') that annotations cannot express. This is behaviorally richer than the structured hints.

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?

Front-loaded with the verb and the plan's contents, then moves to prerequisites, behavior, and runtime. It is dense and slightly run-on with stacked parentheticals ('(its timing drives the cuts)', '(several minutes)'), but every clause carries information rather than filler.

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?

Covers the prerequisite, the conditional media behavior, the destructive re-run semantics, and the monitoring loop, which is substantial for a four-parameter mutation with no output schema. It does not describe the shape of the returned plan, which is the main remaining gap for an agent consuming the result.

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 project_id, model, settings, and editable_sections. The description adds no syntax or format details for any parameter (e.g. nothing on how editable_sections maps to the mentioned [SCENE: ...] directions), so baseline 3 applies.

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 and resource ('Plan the storyboard') and enumerates the exact artifacts produced: segments, timing, image and motion prompts, overlays, continuations. It also distinguishes itself from the edit/read siblings by noting that clips come later and that re-running replaces the plan, so an agent can separate it from storyboard_edit, render, and storyboard_read without opening a schema.

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

Usage Guidelines4/5

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

Gives a concrete prerequisite ('Needs the finished voiceover (its timing drives the cuts)') and conditional scope ('real photos and B-roll when the director style has the @real-media tag'), plus a monitoring instruction ('get_status wait=true, repeatedly'). No sibling tool is named as an alternative, so it stops short of explicit when-not routing.

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

storyboard_readRead the storyboardB
Read-onlyIdempotent
Inspect

segments: {total, offset, returned, segments}. Each segment has its segment_number (the handle segment tools take), kind (image, clip, talking head, real photo, B-roll or overlay segment), narration, duration, direction, image_prompt, video_prompt (the motion when animated), media_queries (searches for a real photo or B-roll), the characters, environments and objects it shows, continues_from_segment (its image continues that earlier segment's image) and its assets.

segment_assets: {segment_number, assets}: its image, clip, real photos, overlays and sound effects, each with kind, status, prompt, model, earlier_renders (what a rollback can restore) and public_url (for view_image).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNosegments: how many; 0 returns all. Long videos have 100+, so page.
actionYessegments: the storyboard, paged; segment_assets: one segment's assets (segment_number)
offsetNosegments: first to return, 0-based
project_idYesProject id
segment_numberNoSegment number (1-based, from storyboard_read)

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower, and the description adds real cross-tool context beyond them: earlier_renders means 'what a rollback can restore' and public_url is 'for view_image'. Those hints link returned data to segment_edit rollback and view_image usage, though return size/paging behavior is only implied.

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 dense definition-style blocks keyed by the two action values, front-loaded with 'segments:' and 'segment_assets:' and no filler. It is efficient, but the absence of any lead sentence stating the tool's purpose makes the entry feel like a schema dump.

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?

With no output schema, the description carries the response-shape burden and does so thoroughly for both actions (segment fields, asset fields, statuses, URLs, rollback data). It omits only an explicit purpose/usage statement, so an agent knows what comes back but must infer when to call it.

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 every parameter is already documented in the schema; baseline 3 applies. The description adds no parameter syntax or format detail beyond what the schema states (e.g. segment_number as a handle, limit=0 returns all) and instead spends its budget on return fields.

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

Purpose3/5

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

The description never states a purpose sentence; it documents the two returned shapes (segments, segment_assets). Combined with the title 'Read the storyboard' and the action enum, an agent can infer this reads storyboard data, but the description itself never says what the tool does and does not differentiate it from storyboard_edit or segment_edit.

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?

There is no when-to-use or when-not-to-use guidance and no alternative named. The only routing information (segments vs segment_assets, paging via limit/offset) lives in the schema's action/limit descriptions, not the description text.

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

style_editEdit the channel styleA
Destructive
Inspect

Create or change the channel style (one per channel, used by all its projects).

create: offer the user two real options, never invented ones. (a) References (best): YouTube links of their channel or of videos whose look they like, or a written description. Analysis starts at once and writes the fields: wait with get_status channel_id wait=true, then render both template images (style_generate action=template). A reference informs every axis, narrative included; for its look only, give it contributes_to ["art_style"]. (b) Presets: one per axis, all three; instant, and the art preset brings its template images. Presets and references don't mix.

update_fields: replace fields' text; it never starts an analysis (an analysis rewrites art_style, narrative_style, director_style and text_style). Those four and script_prompt can't be removed, every field needs text, and summaries are written only by analysis. Real photos and B-roll are turned on by the literal @real-media tag in director_style, with prose on when and how much; remove it to turn them off.

update_references: replace the references, fields untouched (inputs_stale turns true). File references can only be added in the app.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNocreate: the style name
actionYescreate: name, and references or presets; update_fields: fields; update_references: references
fieldsNoupdate_fields: {key: "new text"} for the keys you change; {key: null} removes a key you added
presetsNocreate: {"art_style": id, "narrative_style": id, "director_style": id} from style_read action=presets
channel_idYesThe channel whose style this is
referencesNo[{"input_type": "youtube" | "text", "value": "<link or description>", "contributes_to": ["art_style", ...]?}]. A youtube value is a video link, or a channel link or @handle. update_references: the COMPLETE list in order; copy kept entries from style_read verbatim.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is known. The description adds real substance on top: exactly what each action replaces (fields' text, the reference list), that four fields plus script_prompt cannot be removed, that analysis silently rewrites art/narrative/director/text styles, and that update_references sets inputs_stale=true. It stops short of permissions/auth scope and what happens when a style already exists on create.

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?

Front-loads the purpose and then segments cleanly by action label (create/update_fields/update_references), with dense, low-waste prose. A few asides such as 'offer the user two real options, never invented ones' read as instruction padding, but nothing is redundant enough to hurt.

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 complex, destructive, multi-action tool with no output schema, the description covers workflow ordering, field-level constraints, tag conventions, and the app-only limitation for file references. Remaining gaps are error/edge behavior (creating over an existing style, validation failures) and what the call returns.

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 3-baseline is met by default; the description goes beyond it by explaining conventions the schema does not: contributes_to ['art_style'] for look-only references, presets being one-per-axis, the literal @real-media tag in director_style, and that references must be the COMPLETE list in order copied verbatim from style_read. This is meaningful added semantic content, not restatement.

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 line gives a specific verb+resource with scope: 'Create or change the channel style (one per channel, used by all its projects)'. The three action branches then differentiate this tool from siblings by offloading reads to style_read (action=presets) and template images to style_generate (action=template), so an agent never confuses it with those tools.

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 when/when-not is given per action: 'Presets and references don't mix', 'never invented ones', 'update_fields ... never starts an analysis', 'File references can only be added in the app'. It also names the prerequisite workflow (wait via get_status wait=true, then style_generate action=template) and the alternative read tool for source data.

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

style_generateGenerate for the channel styleAInspect

analyze: read the references again and rewrite art_style, narrative_style, director_style and text_style, replacing hand edits.

template: render one of the style's two template images. Reference images render on them (characters on the character template, environments and objects on the environment one) and segment images fall back on them, so finish both before any reference image. An existing one is refused unless replace=true: replacing it changes the look of everything rendered after.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModel id (get_generation_options); omit for the saved choice
actionYesanalyze; template: template_type
replaceNotemplate: true only when the user asked for a new image (or agreed to render a stale one again)
settingsNoModel settings: keys of its settings_schema
channel_idYesThe channel whose style this is
template_typeNotemplate: which template image; run once for each
editable_sectionsNoTemplate prompt section overrides, keyed by section id

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), and the description adds genuinely useful behavior on top: an existing template is refused unless replace=true, and replacing it 'changes the look of everything rendered after'. That downstream-impact warning is exactly the kind of context annotations cannot convey. It does not describe the analyze mutation's reversibility or scope, keeping it below 5.

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

Conciseness3/5

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

Every sentence carries information, but the structure is cramped notes-style prose with awkward line breaks and no leading sentence stating the tool's overall purpose. The reader must reconstruct the two-action model from the body rather than getting it front-loaded, which is a genuine structural gap rather than mere length.

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 7-parameter, two-action tool with no output schema and no destructive annotations, the description covers the action semantics, ordering constraints, and the template-replacement consequence well. The remaining parameters (model, settings, editable_sections) are only covered by schema text, and there is no explanation of what analyze returns, but nothing critical to 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 semantics the terse enum descriptions do not: it spells out what 'analyze' actually rewrites (art_style, narrative_style, director_style, text_style, 'replacing hand edits') and ties 'replace' to the user's intent ('true only when the user asked for a new image'). That is meaningful meaning beyond the schema labels.

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 names two specific actions and their effects: 'analyze' rewrites the four style fields, and 'template' renders one of the style's two template images. That is a concrete verb+resource statement an agent can act on. It never distinguishes itself from siblings like style_edit or style_read, so it stops short of a 5.

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

Usage Guidelines4/5

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

Real sequencing guidance is given: finish both template images 'before any reference image', and run template once per type ('run once for each' appears in the schema). It also states the refusal condition and the replace escape hatch. It offers no routing guidance relative to style_edit/style_read alternatives, so it is clear context rather than full when/when-not coverage.

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

style_readRead the channel styleA
Read-onlyIdempotent
Inspect

get: the channel style: its references, its fields (art_style, narrative_style, director_style, text_style, any added; script_prompt on request), the summary analysis wrote for each, and templates, the character and environment template images (null: not rendered; a URL: it exists, so view_image it rather than render it again). inputs_stale: the references changed since the last analysis (offer style_generate action=analyze). templates_stale: the art style changed since the templates were rendered (offer to render them again).

presets: the preset catalog, one list per axis (art_style, narrative_style, director_style), with labels, descriptions and, for art presets, preview images. Let the user pick one per axis.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesget: the channel style (channel_id or project_id); presets: the preset catalog
channel_idNoget: the channel (or pass project_id)
project_idNoProject id
include_script_promptNoget: include the long script_prompt

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial context beyond them: null vs URL semantics for templates with the implication that re-rendering is wasteful, staleness flags that drive follow-up actions, and the fact that script_prompt is long and only returned on request.

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?

It is dense but nearly every clause carries information (field list, template semantics, staleness behavior, preset contents), and the primary action is front-loaded. The colon-fragmented, typo-laden formatting ('the summary analysis wrote for each') makes it harder to scan than it needs to be.

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

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, so the description carries the full return-value burden, and it does so thoroughly for both actions: what each style field is, how templates are represented, what the stale flags mean, and what the preset catalog contains per axis. An agent has everything needed to call it and act on the result.

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 real meaning: channel_id and project_id are interchangeable for the get action, and include_script_prompt is characterized as pulling a 'long' field 'on request', telling the agent to avoid it by default. The presets action is also explained rather than left to the enum alone.

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 and opening state a specific verb+resource ('read the channel style'), and the description enumerates exactly what is returned per action (references, style fields, summaries, templates) plus preset catalog contents. It also implicitly separates itself from siblings by pointing to style_generate action=analyze and view_image as distinct operations rather than doing those things itself.

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 conditional routing for follow-ups: offer style_generate action=analyze when inputs_stale, offer to re-render when templates_stale, and view_image instead of re-rendering when a template URL exists. It does not explicitly say when to choose style_read over style_edit or when not to call it, so it stops short of full when/when-not guidance.

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

view_imageView imageA
Read-onlyIdempotent
Inspect

Show a Framesail image inline: a segment image, reference image, style template or preset preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesAn image URL from a read tool (public_url, reference_image, template or preset); other hosts are refused

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior. The description adds 'inline' display behavior and accepted image categories, while the schema adds host restriction. These are useful behavioral details 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?

A single front-loaded sentence with no wasted words. It efficiently states the action and gives examples of accepted image types.

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 one-parameter viewer with safety annotations, the description plus schema are nearly complete. 'Show inline' conveys the return behavior in the absence of an output schema, and the schema covers host refusal, though more detail on output format could help.

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?

With 100% schema description coverage, the single URL parameter is already well documented in the schema, including the host restriction. The description's enumeration of image categories overlaps with the schema and adds only slight contextual value.

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

Purpose4/5

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

States a specific verb ('Show') and resource ('Framesail image inline'), and enumerates image categories (segment, reference, style template, preset preview). It does not explicitly differentiate itself from sibling read tools, but the purpose is clear.

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 use for viewing images sourced from read tools, and the schema states that other hosts are refused. However, it gives no explicit when-to-use/when-not guidance and does not name alternatives among the many sibling tools.

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

voiceover_editEdit voices and voice blocksAInspect

Voices and voice blocks; free. set_voice: the narrator's or a character's voice; every speaker needs one before the voiceover. rescan_blocks: split the active script into voice blocks again after an edit, assets untouched; blocks whose words are unchanged keep their audio. settings: the voice engine and narrator speed.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesset_voice: speaker, voice_id; rescan_blocks; settings: voice_tts_provider and/or narrator_speed
speakerNoset_voice: "narrator", or a character's name
voice_idNoset_voice: a voice id from voiceover_read action=voices
project_idYesProject id
narrator_speedNosettings: speaking rate, 0.5-2.0 (default 1.0); pauses come only from `<break>` tags
voice_tts_providerNosettings: the voice engine

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=false; the description adds cost information ('free'), a prerequisite for set_voice, and specific non-destructive behavior for rescan_blocks ('assets untouched; blocks whose words are unchanged keep their audio'). It does not cover error modes or what happens to blocks whose words did change.

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 compact and front-loads the action breakdown. The opening phrase 'Voices and voice blocks; free.' is slightly cryptic, but overall it uses space efficiently without unnecessary repetition.

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 multi-action edit tool with no output schema and rich parameter descriptions, the description covers the three actions, prerequisites, and key behavioral effects. A small gap remains around rescan_blocks consequences when block words change, but the core call context is present.

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 six parameters and the action enum in detail. The description adds prerequisite and action context but little parameter-specific meaning beyond what the schema provides, which is the baseline-3 case.

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 enumerates three specific actions (set_voice, rescan_blocks, settings) on the voices/voice-blocks resource, making the tool's scope clear. It does not explicitly name or route against sibling tools like voiceover_read or voiceover_generate, so sibling differentiation rests on the title and schema rather than the description itself.

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 usage context for each action: set_voice is needed before a voiceover ('every speaker needs one before the voiceover'), rescan_blocks applies after an edit, and settings controls engine and speed. It stops short of naming alternative tools or stating when not to use the tool.

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

voiceover_generateGenerate the voiceoverAInspect

Generate voice block audio. Every speaker needs a voice first, and every asset a reference image. Without voice_block_ids it fills every block with no audio, skipping ones already generating. A model must match the project's voice engine. An existing storyboard retimes to the new audio on its own.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModel id (get_generation_options); omit for the saved choice
dry_runNoReturn the count and credit estimate; start nothing
settingsNoModel settings: keys of its settings_schema
project_idYesProject id
voice_block_idsNoBlocks to generate, again if they have audio; omit for every block without audio
editable_sectionsNoTemplate prompt section overrides, keyed by section id

TDQS

A4.2/5.0
Behavior5/5

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

Annotations only cover the safety profile (write, open-world, non-idempotent, non-destructive); the description adds substantial behavior beyond them: required dependency ordering, the skip of already-generating blocks, the constraint that the model must match the project's voice engine, and the side effect that an existing storyboard retimes automatically.

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?

Four short sentences, the core action front-loaded, and each clause carries a distinct constraint (prerequisites, default scope, model rule, retiming). Slightly terse/fragmented phrasing ('and every asset a reference image') costs a little readability but not 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 six-parameter mutation tool with no output schema, the description covers prerequisites, default behavior, the model constraint, and the storyboard side effect. It leaves out failure modes (e.g. missing voice/reference image handling) and what a successful run returns, but annotations and the dry_run parameter cover most of the remaining ground.

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, but the description adds value the schema lacks: the re-generation semantics of voice_block_ids ('again if they have audio' vs 'omit for every block without audio') and the hard constraint that the chosen model must match the project's voice engine.

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 opening 'Generate voice block audio' gives a specific verb plus resource, and the surrounding constraints (blocks, speakers, reference images, retiming) make clear this is the audio synthesis step rather than a settings edit. It does not name the sibling it should not be confused with (voiceover_edit / voiceover_read), so it stops short of full differentiation.

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

Usage Guidelines4/5

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

It states real prerequisites ('Every speaker needs a voice first, and every asset a reference image') and the selection condition for voice_block_ids ('without ... it fills every block with no audio'). No explicit when-not or named alternative is given, so the agent must still infer that voiceover_edit handles post-generation changes.

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

voiceover_readRead voices and voice blocksA
Read-onlyIdempotent
Inspect

voices: one engine's voice ids, labels and preview audio, as {groups, voices}. blocks: the voice blocks (narration and dialogue) with their speaker, voice_id (the speaker's voice), audio and any [SCENE: ...] direction over them (never spoken), as {blocks, total_duration_ms, all_complete}.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNovoices: one catalog group; each engine has its own (see groups). Filter the large ElevenLabs catalog.
actionYesvoices: the voice catalog for provider; blocks: the project's voice blocks
providerNovoices: the voice engine (the project's voice_tts_provider)minimax
project_idNoProject id
include_subtitle_dataNoblocks: include word-level timings (bulky)

TDQS

A3.7/5.0
Behavior4/5

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

With readOnly, idempotent, non-destructive and closed-world hints already declared, the description adds genuinely new context: it spells out the two return shapes in the absence of an output schema, notes that `[SCENE: ...]` directions are 'never spoken', and exposes all_complete/reference-timing fields. It stops short of covering pagination or error behavior.

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

Conciseness4/5

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

Two tightly keyed clauses, 'voices:' and 'blocks:', are front-loaded with the action names so an agent can scan the right one immediately. The brace/field notation is compact and slightly telegraphic but wastes no sentences.

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 tool with no output schema, the description usefully enumerates both result shapes and flags the non-spoken scene directions. The main gap is that it never states the project_id requirement for the blocks action or anything about size/limits, but otherwise it covers what an agent needs.

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 input schema already documents every parameter, including the group filter ('large ElevenLabs catalog') and the bulky word-level timings flag. The description adds only marginal meaning (voice_id = the speaker's voice) and does not clarify that project_id is needed for the blocks action.

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 precisely what each of the two read actions yields: voices returns {groups, voices} for an engine, and blocks returns {blocks, total_duration_ms, all_complete}. That is a specific resource description tied to the action enum, though it never names a sibling (e.g. voiceover_edit / voiceover_generate) to differentiate the read path.

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?

There is no explicit when-to-use or when-not guidance and no mention of alternative tools. Usage is only implied by the action enum and its schema descriptions, so an agent can infer that 'voices' is for catalog lookup and 'blocks' for project data, but the description itself does no routing.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 98 tool updates
    • Addedaccount_edit
    • Removedactivate_script_version
    • Removedadd_music_track
    • Removedadd_segment_sfx
    • Removedanalyze_style
    • Removedanimate_segment
    • Addedassets_edit
    • Addedassets_generate
    • Addedassets_read
    • Removedawait_jobs
    • Removedbrowse_audio_library
    • Removedbuild_scenes
    • Removedchange_segment_type
    • Removedcombine_segments
    • Removedcreate_asset
    • Removedcreate_channel
    • Removedcreate_project
    • Removedcreate_style
    • Addeddelete
    • Removeddelete_asset
    • Removeddelete_project
    • Removeddelete_style
    • Removeddirector_note
    • Addededitor_edit
    • Addededitor_read
    • Changedexport_video3 fields changed
      • changedInput schema / properties / project_id / description
        Previous value: -"Project ID, as returned by create_project or list_projects"New value: +"Project id"
      • removedInput schema / properties / project_id / title
        Removed value: -"Project Id"
      • removedInput schema / title
        Removed value: -"export_videoArguments"
    • Removedgenerate_asset_reference
    • Removedgenerate_script
    • Removedgenerate_segments
    • Removedgenerate_storyboard
    • Removedgenerate_style_template
    • Removedgenerate_voiceover
    • Removedget_credit_balance
    • Addedget_generation_options
    • Removedget_pipeline_progress
    • Removedget_project
    • Removedget_script
    • Removedget_section_template
    • Removedget_segment_assets
    • Removedget_segments
    • Addedget_status
    • Removedget_style
    • Removedget_video_url
    • Removedget_workflow_status
    • Removedlist_assets
    • Removedlist_channels
    • Removedlist_models
    • Removedlist_music_tracks
    • Removedlist_projects
    • Removedlist_provider_keys
    • Removedlist_scenes
    • Removedlist_style_presets
    • Removedlist_styles
    • Removedlist_voice_blocks
    • Removedlist_voices
    • Removedproject_director_note
    • Addedprojects_edit
    • Addedprojects_read
    • Removedregenerate_segment_asset
    • Removedremove_music_track
    • Removedremove_segment_asset
    • Addedrender
    • Removedrescan_voice_blocks
    • Removedrevise_script
    • Removedrollback_segment_asset
    • Removedsave_script
    • Removedscan_script
    • Addedscript_edit
    • Addedscript_generate
    • Addedscript_read
    • Addedsegment_edit
    • Addedsegment_restructure
    • Removedset_character_voice
    • Removedset_narrator_voice
    • Removedset_project_style
    • Removedset_provider_key
    • Removedset_segment_continuation
    • Removedsplit_segment
    • Addedstoryboard_edit
    • Addedstoryboard_generate
    • Addedstoryboard_read
    • Addedstyle_edit
    • Addedstyle_generate
    • Addedstyle_read
    • Removedupdate_asset
    • Removedupdate_caption_config
    • Removedupdate_music_track
    • Removedupdate_project
    • Removedupdate_segment_content
    • Removedupdate_segment_prompts
    • Removedupdate_style_fields
    • Removedupdate_style_references
    • Removedupdate_voice_block
    • Changedview_image3 fields changed
      • changedInput schema / properties / url / description
        Previous 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"New value: +"An image URL from a read tool (public_url, reference_image, template or preset); other hosts are refused"
      • removedInput schema / properties / url / title
        Removed value: -"Url"
      • removedInput schema / title
        Removed value: -"view_imageArguments"
    • Addedvoiceover_edit
    • Addedvoiceover_generate
    • Addedvoiceover_read
    • Removedwhoami
  2. 2 tool updates
    • Changedgenerate_asset_reference1 field changed
      • changedInput schema / properties / model / description
        Previous value: -"Image model ID; empty uses the server default for reference images"New value: +"Image model ID; empty uses the asset's saved drawer choice, else the account default, else the server default"
    • Changedlist_models2 fields changed
      • addedInput schema / properties / lip_sync
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "segment_video only: whether the shot is lip-synced to the narration (the asset's config.lip_sync). Video models split on it, so pass it to get that family's list and the account default for it.",
        +  "title": "Lip Sync"
        +}
      • addedInput schema / properties / provider
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "voice_block only: the project's voice_tts_provider (\"minimax\" or \"elevenlabs\"). Voice models split by provider, so pass it to get that family's list and the account default for it.",
        +  "title": "Provider"
        +}
  3. 3 tool updates
    • Changeddirector_note1 field changed
      • changedInput schema / properties / message / description
        Previous value: -"Natural-language edit note for this scene, e.g. \"move the caption to the top\" or \"remove the overlay\""New value: +"Natural-language edit note for this scene, e.g. \"move the caption to the top\" or \"calmer motion\""
    • Addedremove_segment_asset
    • Removedremove_segment_sfx
  4. 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
  5. 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"
  6. 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"
  7. 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"
  8. 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"
        +}
  9. 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"
        +}
  10. 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"
  11. 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"
  12. 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

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources