Skip to main content
Glama

Server Details

Clip Studio MCP: add https://clipstudio.ai/api/mcp to Claude, Cursor, ChatGPT, or Grok. Sign in once. Agents generate on the same monthly plan as the website.

Ownership verified
Status
Healthy
Uptime
99.3% over 22 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.5/5.0

Scored across 98 tools

Disambiguation3/5

The set uses a systematic quote/generate/get/list pipeline that helps distinguish tools, but with 98 tools across many parallel product lines (Topic Shorts, Talking Shorts, Character Film, Ad Lab, Paint Lab), numerous near-neighbors such as generate_ad_explain vs generate_ad_tip_pack or create_topic_short_story vs create_topic_short_series create real misselection risk. Descriptions are detailed, but the cognitive load remains high.

Naming Consistency5/5

Nearly all tools follow a consistent snake_case verb_noun pattern with clear operation prefixes (quote_, generate_, get_, list_, create_, edit_, publish_, unpublish_, etc.). Minor deviations like complete_generation_asset and presign_generation_asset still fit the same pattern, so naming is highly predictable.

Tool Count1/5

98 tools is an extreme count for any single MCP server; even accounting for the multi-product studio domain, the surface is far beyond the typical 3-15 well-scoped range and risks overwhelming agent context and tool selection. The rubric classifies 50+ tools as an extreme mismatch.

Completeness4/5

The tool surface covers quote, generate, fetch, list, publish, export, and account/billing workflows across Image, Video, Audio, Paint, Ad, and Shorts labs, plus asset uploads and Story/Last Frame lifecycles. Gaps are minor (e.g., no delete/cancel for most generations), but core operations are well represented.

Available Tools

98 tools
arm_last_frame_itemB
Read-only
Inspect

Arm a Last Frame inventory item for the next move. itemIndex is 0-based.

ParametersJSON Schema
NameRequiredDescriptionDefault
runIdYesLast Frame run id from start_last_frame.
itemIndexYes0-based inventory index to arm for the next move.

Output Schema

ParametersJSON Schema
NameRequiredDescription
runIdNoLast Frame run id. Pass this to get_last_frame_run and the move tools.
stateNoPlay state: current shot, choices, inventory, and HUD fields.
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.

TDQS

B3/5.0
Behavior1/5

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

The description says to 'Arm' an inventory item, which implies a state-changing mutation, while annotations declare readOnlyHint=true. This directly contradicts the annotation and is comparable to a 'create' tool marked read-only. No other behavioral context is provided.

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

Conciseness5/5

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

The description is two short sentences with no filler. The core action and purpose are front-loaded, and the itemIndex clarification is useful and brief.

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?

Although the schema and output schema fully document parameters, the description omits usage context and, more importantly, the readOnlyHint contradiction makes the tool's actual behavioral contract unclear. An agent could be misled into thinking the call has no side effects.

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 per baseline the description need not add much. The description repeats 'itemIndex is 0-based' which the schema already states, and adds no new semantic information beyond what the schema provides.

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

Purpose5/5

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

The description names a specific verb ('Arm'), a precise resource ('Last Frame inventory item'), and the purpose ('for the next move'), making the tool's function immediately clear. It is distinguishable from siblings like choose_last_frame or start_last_frame because no other sibling describes arming an inventory item.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool relative to alternatives, no sequence context, and no prerequisites. While the schema mentions runId comes from start_last_frame, the description itself does not explain where this tool fits in the Last Frame workflow.

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

choose_last_frameAInspect

Pick a numbered Last Frame option. Films the next shot and uses this month’s generation allowance.

ParametersJSON Schema
NameRequiredDescriptionDefault
runIdYesLast Frame run id from start_last_frame.
optionIndexYes0-based index of the numbered choice to film next.

Output Schema

ParametersJSON Schema
NameRequiredDescription
runIdNoLast Frame run id. Pass this to get_last_frame_run and the move tools.
stateNoPlay state: current shot, choices, inventory, and HUD fields.
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.

TDQS

A3.8/5.0
Behavior4/5

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

The description discloses the important side effect that the tool 'uses this month's generation allowance' and that it films, which is beyond what the annotations provide. Annotations declare non-read-only and non-destructive; no contradiction exists.

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

Conciseness5/5

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

Two short sentences with no filler. The main action is front-loaded and the cost/side-effect follows naturally in the second sentence.

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

Completeness4/5

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

For a cost-incurring action with only two well-documented parameters, the description gives the essential workflow context and side-effect. It does not spell out the run lifecycle prerequisites, but the schema reference to start_last_frame and the presence of an output schema make the tool usable.

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

Parameters3/5

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

Schema coverage is 100% and both parameters are documented (runId origin and 0-based optionIndex). The description adds little parameter-level detail beyond the schema, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description uses a specific verb-resource combination ('Pick a numbered Last Frame option') and states the concrete effect ('films the next shot'). It is clear about what the tool does, though it does not explicitly name sibling tools or contrast itself with start/type/end Last Frame operations.

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 context is implied rather than spelled out: picking a numbered option and filming the next shot suggests it is called after a run has produced options, and the runId parameter references start_last_frame. The description does not state explicit conditions, prerequisites, or alternatives such as quote_last_frame or end_last_frame_clip.

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

complete_generation_assetB
Read-only
Inspect

Mark a source image or MP4 upload ready for Video Lab, Image Lab, or Paint Lab. Returns the asset id, width, and height.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetIdYesAsset id returned by presign_generation_asset after the file has been uploaded.

Output Schema

ParametersJSON Schema
NameRequiredDescription
assetYesReady asset descriptor. Pass this id as a Video Lab source.

TDQS

B3.2/5.0
Behavior1/5

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

The description's operative verb 'Mark ... ready' is a state-changing write, yet the annotations declare readOnlyHint=true. An agent relying on the annotation would assume this call has no side effects, which is the opposite of what finalizing an upload does. This is a direct description/annotation conflict, so the rubric's score of 1 applies.

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

Conciseness5/5

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

Two short sentences, zero filler, with the action front-loaded before the return values. Every clause earns its place.

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

Completeness4/5

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

For a one-parameter finalization call with an output schema present, the description covers the essential action and even summarizes the return (asset id, width, height), which is not required. The remaining gap is the unstated upload prerequisite and the mis-signalled side-effect profile, not missing return-value documentation.

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

Parameters3/5

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

There is a single parameter with 100% schema description coverage, and the schema already explains that assetId comes from presign_generation_asset. The description adds nothing about the parameter, so the baseline of 3 for fully documented schemas is correct.

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+resource ('Mark a source image or MP4 upload ready') and scopes it to three destination labs (Video Lab, Image Lab, Paint Lab), so an agent knows exactly what state transition it performs. It stops short of naming the sibling it pairs with (presign_generation_asset) in the description text itself, so it is clear but not fully sibling-differentiated.

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?

'Mark ... ready' implies the tool belongs at the end of an upload flow, but the description never states the prerequisite explicitly (that the file must already be uploaded via presign_generation_asset) or when not to call it. The prerequisite only surfaces in the schema's assetId description, so usage is implied rather than stated.

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

continue_character_filmAInspect

Continue a Character Film: film the remaining blocks after the opening is completed. Billed under the same plan as the site. Requires a completed opening. Optional quoteId from quote_character_film with range remaining; when omitted this tool quotes remaining first. Optional idempotencyKey is generated when omitted. Poll get_character_film. Submit and poll — do not wait here for the full render.

ParametersJSON Schema
NameRequiredDescriptionDefault
quoteIdNoQuote id from quote_character_film for range remaining. Optional; this tool quotes remaining first when omitted.
projectIdYesProject id from plan_character_film. The opening on this project must already be completed.
idempotencyKeyNoOptional key to retry an ambiguous continue submit with the same project and quote. Generated when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rangeNoremaining.
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.
renderIdYesRender id. Poll get_character_film with this renderId until status is completed or failed.
projectIdNoProject this render belongs to.
idempotentNoTrue when this call reused an in-flight or finished job with the same idempotency key.
billingSourceNoHow this render was billed. Continue uses the same plan as the site.
creditsChargedNoUsage already consumed from this month’s generation allowance (internal units).

TDQS

A4.7/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the description doesn't need to restate those. The description adds valuable behavioral context: it bills under the same plan as the site, it quotes remaining first when quoteId is omitted, it generates an idempotencyKey when omitted, and it explicitly says not to wait for the full render. This goes beyond the annotations and helps the agent understand side effects and async behavior.

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

Conciseness5/5

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

The description is compact and front-loaded. The first sentence states the action and scope. The following sentences cover billing, prerequisites, optional parameters, and async behavior without redundancy. Every sentence earns its place.

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

Completeness5/5

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

Given the tool's complexity (async submit-and-poll, optional quote, idempotency), the description covers the key operational details: prerequisite, billing, quote behavior, idempotency, and polling. The output schema exists, so return values don't need to be described. The sibling list shows related tools, and the description clearly differentiates this from quote_character_film and generate_character_film.

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 schema already documents all three parameters. The description adds meaning by explaining the relationship between quoteId and the tool's quoting behavior, and by clarifying that idempotencyKey is generated when omitted. It also ties projectId to the prerequisite that the opening must be completed. This is meaningful added value beyond the schema.

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

Purpose5/5

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

The description states a specific verb ('Continue') and resource ('Character Film'), and clarifies the exact scope: 'film the remaining blocks after the opening is completed.' This distinguishes it from related tools like generate_character_film and quote_character_film. The title is null, but the description itself is unambiguous.

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

Usage Guidelines5/5

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

The description explicitly states when to use it: after the opening is completed, and it names the prerequisite ('Requires a completed opening'). It also explains the optional quoteId behavior and directs the agent to poll get_character_film. It even gives a workflow instruction: 'Submit and poll — do not wait here for the full render.' This is strong usage guidance.

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

create_checkout_urlA
Read-only
Inspect

Create a Stripe Checkout URL for a plan. After HTTP 402, prefer Clip Pro $19/mo price_1PsryR07fQ1sqleOUNzbksZh or Studio Elite $39/mo price_1Psrzg07fQ1sqleOVBf1tv1P (also on get_account.offerCheckout). Do not use Content Creator $9 default_price or Content Creator $19 as the site wall or post-value offers. Returns a Stripe Checkout URL. Does not take card data.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoOptional in-app path to attach to checkout metadata, starting with /.
sourceNoCheckout source label for analytics. Defaults to mcp_create_checkout_url.
priceIdYesStripe price id. After a 402 prefer Clip Pro $19 price_1PsryR07fQ1sqleOUNzbksZh or Studio Elite $39 price_1Psrzg07fQ1sqleOVBf1tv1P from get_account.offerCheckout. Do not use Content Creator $9 or Content Creator $19 as the site wall offers.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYesStripe Checkout URL, or /subscription?status=current when this account already has a live plan. Never /pricing.
planNoPlan name when known.
priceIdNoStripe price id used for this checkout.
checkoutSessionIdNoStripe Checkout Session id, or the live subscription id when already current.

TDQS

A3.7/5.0
Behavior1/5

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

Annotations declare readOnlyHint=true, but the description says 'Create a Stripe Checkout URL' and describes the operation as creating a checkout artifact. This mirrors the create_record contradiction: an operation described as creating something cannot be read-only. The additional pricing guidance and 'Does not take card data' are useful but do not resolve the annotation conflict.

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-loaded with the core purpose, then adds pricing guardrails and return behavior. It repeats some price guidance already present in the schema, which is slightly redundant, but every sentence serves a real decision-making purpose.

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 essential context: purpose, HTTP 402 trigger, acceptable prices, forbidden prices, return value, and the fact that card data is not collected. The output schema exists, so return-type detail is available separately. The main gap is the unresolved read-only annotation contradiction.

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 path, source, and priceId. The description adds domain guidance on which priceId values are preferred or forbidden, but this largely repeats the schema's own parameter description rather than adding substantial new semantic meaning.

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 action ('Create a Stripe Checkout URL') and resource ('for a plan'). This clearly distinguishes it from the generate/quote/list siblings and makes the tool's role immediately understandable.

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?

Gives explicit triggering context ('After HTTP 402'), names the preferred price IDs, and explicitly forbids the Content Creator prices as wall or post-value offers. It also points to get_account.offerCheckout as the source of valid offers, which routes the agent to the correct supporting tool.

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

create_last_frame_worldC
Read-only
Inspect

Create a custom Last Frame world from a description.

ParametersJSON Schema
NameRequiredDescriptionDefault
descriptionYesWhat this custom world looks like, in a few sentences.

Output Schema

ParametersJSON Schema
NameRequiredDescription
worldYesCustom world synthesized from the description.

TDQS

C2.9/5.0
Behavior1/5

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

Annotation Contradiction: The description states 'Create' which implies a write/mutation operation, while annotations declare readOnlyHint=true. This is a fundamental inconsistency that leaves the agent unable to trust either the description or the annotations.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no filler words. It earns its place by stating the core action, though it could be slightly more informative without losing conciseness.

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

Completeness2/5

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

The tool has only one parameter and an output schema, so the basic shape is simple. However, the contradiction between the 'Create' description and readOnlyHint annotation leaves the behavioral contract ambiguous, which is a significant completeness gap.

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

Parameters3/5

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

Schema description coverage is 100%, and the sole parameter 'description' is already documented in the schema. The tool description adds no meaningful semantic detail beyond what the schema provides, so the baseline score of 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?

The description clearly states a specific verb ('Create'), a concrete resource ('custom Last Frame world'), and the input basis ('from a description'). This distinguishes it from sibling tools like list_last_frame_worlds or start_last_frame.

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 guidance is given about when to use this tool versus alternatives such as list_last_frame_worlds, choose_last_frame, or start_last_frame. The verb 'Create' implies some usage context, but no explicit conditions, exclusions, or alternative routing are provided.

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

create_storyboardA
Read-only
Inspect

Start a Story project from a full story or script. Does not write a part or film. Next: generate_storyboard_part (first part, or continue my story on this projectId), then render_storyboard.

ParametersJSON Schema
NameRequiredDescriptionDefault
themeNoTheme id from list_storyboard_themes. Carries across later parts when you continue.
titleNoOptional project title. Reused when you continue later parts.
motionNoStory Motion. stills, seedance (default Standard), or h3 (Cinematic).
scriptYesFull story or script. Paste the whole thing; generate the next part now and continue my story later on this project.
renderModeNoAlias for motion.
captionStyleNoBurned-in caption look: off, spotlight (default — each spoken word lights up on a blue highlight), impact (bold outlined caps, two words at a time), highlighter (caps with one yellow key word), editorial (quiet lower-third phrases), boxed (phrases on a rounded dark pill), or kicker (phrase chunks with one oversized cyan word up top). Shared by Story and Topic Shorts. Does not change the quote. Caption failure still ships the film.spotlight

Output Schema

ParametersJSON Schema
NameRequiredDescription
themeNoTheme locked on this project.
projectNoCreated Story project. Use project.id as projectId for later parts.

TDQS

A3.8/5.0
Behavior1/5

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

Annotations declare readOnlyHint=true, but the description says 'Start a Story project,' which implies a creation/write operation. This directly contradicts the read-only annotation and gives an agent conflicting safety signals. Additional behavioral notes about not writing a part or film cannot compensate for this contradiction.

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

Conciseness5/5

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

Two concise sentences front-load the core action, state an important exclusion, and provide the next steps. There is no filler or redundant explanation.

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

Completeness4/5

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

The description covers the initiation semantics and downstream workflow well, and an output schema exists so return values do not need prose. It loses a point because the read-only annotation conflict is unresolved and no guidance distinguishes this from estimate_storyboard or create_topic_short_story, though the latter may be out of scope.

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

Parameters3/5

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

Schema description coverage is 100% and each parameter already has detailed descriptions, including enums and defaults. The tool description adds workflow context about pasting the whole story and continuing later, but most parameter meaning is already handled by the schema, so a baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb and resource ('Start a Story project') and clearly states what it does not do ('Does not write a part or film'). It also names the next tools in the workflow, which distinguishes it from generate_storyboard_part and render_storyboard.

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

Usage Guidelines5/5

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

The description explicitly gives the workflow: call this with a full story or script, then generate_storyboard_part, then render_storyboard. It even clarifies the branching decision between generating the first part and continuing on an existing projectId.

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

create_topic_short_seriesB
Read-only
Inspect

Start a Topic Short series from a saved style and a niche (for example “deep sea creatures”). Returns the series; add or propose episodes with queue_topic_short_episodes. Free: each episode is quoted and generated like any short.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional series name. Defaults to the niche.
nicheYesWhat the series is about.
styleIdYesSaved style id from save_topic_short_style or list_topic_short_styles.

Output Schema

ParametersJSON Schema
NameRequiredDescription
seriesYesThe new series (id, name, niche, style, episodes). Pass id as seriesId to queue_topic_short_episodes.

TDQS

B3/5.0
Behavior1/5

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

The description says the tool starts/creates a series, a state-mutating operation, while annotations declare readOnlyHint=true and destructiveHint=false. This is a direct contradiction that would mislead an agent into treating a write as a safe read. The one useful disclosure ("Free: each episode is quoted and generated like any short") does not offset the conflict.

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 short sentences, front-loaded with the core action and example, then the follow-up tool, then billing. No filler, though the closing "Free" sentence is somewhat tangential.

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?

An output schema exists so return values need not be explained, and inputs are fully schema-documented. But the annotation contradiction plus the absence of any prerequisite guidance (e.g. requiring a pre-saved style) leaves the definition not fully trustworthy for a mutating creator 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 name, niche, and styleId are already documented, including that styleId comes from save_topic_short_style or list_topic_short_styles. The description repeats the two main concepts (saved style, niche) without adding format or constraint detail beyond the schema, 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 ("Start a Topic Short series") plus its inputs (a saved style and a niche) with a concrete example. It clearly is not a generation tool, but it doesn't sharply differentiate itself from nearby siblings like create_topic_short_story or generate_topic_short beyond the word "series."

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?

It routes the agent forward by naming queue_topic_short_episodes for adding episodes, which is useful follow-up guidance. However, it gives no when-to-use versus alternatives (e.g. create_topic_short_story) and no exclusions or prerequisites such as needing an existing styleId.

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

create_topic_short_storyA
Read-only
Inspect

Preview a Topic Short story with hook, setup, reveal, and payoff beats, narration, and English Pexels search terms. Narration is written to fill the selected length (about 2.6 words per second). A short supplied script is expanded; a too-long script is packed down to the speaking-pace envelope. A script that already fills the length is kept word for word. Keep topic nouns in the queries (Messi, soccer, football). Prefer on-topic action over unrelated lifestyle B-roll. Put the strongest hook visual first. Generate fail-opens with broader topic-near sports footage if a beat misses on Pexels, then unused clips, then a neutral scenery catalog, then cached or synthesized last-resort clips if the provider is down — never the same clip on every shot when unused footage exists. Does not render. Choose any storyFormat (mini_documentary, myth_check, story_twist, how_it_works, ranking, quiz, scary_story, history_pov, reddit_story, what_if); edit the returned plan before quoting and generating. language writes the narration in en, es, pt, de, fr or hi. sourced (or sourceUrl / sourceUrls / sourceText) researches the topic and plans only claims it can cite. seriesEpisodeId plans an approved series episode. Optional hookTemplateId seeds the topic from Opening hooks (script opening, not Hook captions).

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoTopic to plan from. Required unless hookTemplateId seeds it or seriesEpisodeId supplies it. An explicit topic wins over either seed.
voiceNoNarration voice id from list_audio_lab_voices. Defaults to the product default voice.
aiHookNoOptional AI hook: the opening shot is an AI clip and abstract beats can get AI stills; the rest stays judged stock. Quoted higher. Any AI shot that misses its 2-minute deadline falls back to the best stock clip. Not available on the free short.
formatNoAlias of storyFormat. storyFormat wins when both are set.
scriptNoOptional supplied narration. If it already fills the selected length it is preserved word for word; if it is too short the planner expands it so speech fills the duration. Too-long scripts are packed down to the speaking-pace envelope (never fail generate for narration length). Maximum 8,192 UTF-8 bytes.
sourcedNoSourced script: research the topic, cite real sources, and soften or drop claims it cannot verify. The finished short carries a Sources card; get_topic_short returns the citations. Implied by sourceUrl, sourceUrls or sourceText. Not available on the free short.
languageNoNarration and caption language: en (English), es (Spanish), pt (Portuguese), de (German), fr (French), hi (Hindi). Default en. The planner writes the script in this language; pass a script already written in it. Stock search terms stay English.en
sourceUrlNoOne https article or page link that grounds a sourced script. Same as a one-item sourceUrls.
storyPlanNoOptional reviewed story from create_topic_short_story. Pass the same plan when quoting and generating; omit to plan automatically. A plan whose narration is too short for the selected length is expanded at generate so speech fills the duration. A too-long plan is packed down; generate never fails for narration length.
charactersNoauto (default) keeps one recurring fictional character consistent across shots on story formats (story_twist, mini_documentary) with cinematic or aiHook; off turns that off. Real people are never generated.
hookBlanksNoFill [bracket] keys from the Opening hooks seed. Example: { "the annoying thing": "soggy leftovers" }. Does not change the quote.
hookIntentNoOptional Opening hooks intent. Browse with list_hook_bank. Ignored when seeding if hookTemplateId is set.
hostLayoutNoWhere the host appears: pip_circle (default), pip_corner, or full frame. Only with hostNarratorId.pip_circle
sourceTextNoPasted article text (200–20,000 characters) that grounds a sourced script.
sourceUrlsNoUp to 3 https links that ground a sourced script. PDF uploads are website-only; paste the text with sourceText instead.
aspectRatioNoFrame size. 9:16 vertical (default), 16:9 landscape, or 1:1 square for feeds.9:16
storyFormatNoStorytelling format: mini_documentary (Mini documentary), myth_check (Myth check), story_twist (Story with a twist), how_it_works (How it works), ranking (Top 5), quiz (Quiz), scary_story (Scary story), history_pov (History POV), reddit_story (Post story), what_if (What if). Defaults to mini_documentary. Each format has its own pacing, cards and music mood.
visualStyleNoVisual style: standard (judged stock footage, default) or cinematic (every shot is an AI keyframe animated to video). Cinematic is quoted higher and takes a few minutes longer. Not available on the free short. Real people and brands are never AI-generated.standard
voiceCloneIdNoOptional id of one of your ready cloned voices (list_topic_short_voice_clones). Replaces voice. Paid plans only. Shorts narrated with a clone keep the AI-voice disclosure unless it was turned off when the voice was recorded.
hookTemplateIdNoOptional Opening hooks template (catalog id hook_bank). The workspace picker is hidden. Seeds topic or Talking Shorts brief when that field is empty. Fill [brackets] via hookBlanks or by editing the seeded text. This is a script opening, not a caption look (captionStyle). Does not change the quote, consume, or refund.
hostNarratorIdNoOptional recurring host: a Character Films narrator (list_character_film_catalog) who appears lip-synced in the hook and outro. Quoted higher. Not available on the free short.
durationSecondsNoTarget length of the finished short in seconds (15–180). Spoken narration is written to fill this length. Quoted on this duration, not word count.
seriesEpisodeIdNoOptional approved episode id from queue_topic_short_episodes. Uses that episode as the topic (when topic is empty) and the series style as the setup; explicit arguments still win. The short is linked to the episode. Quoted like any other short.
clipDurationSecondsNoLength of each stock B-roll clip in seconds (2–6, default 3). Not the full short length.

Output Schema

ParametersJSON Schema
NameRequiredDescription
beatsNoHook, setup, reveal, and payoff beats.
titleNoPlanned title when returned at the top level.
storyPlanNoReviewed plan with title and beats. Pass this to quote_topic_short and generate_topic_short.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description usefully reinforces this with 'Does not render.' Beyond that it discloses real behavior: the fail-open chain for Pexels misses, the 2-minute AI-shot deadline fallback to stock, and the never-reuse rule. Mostly about the produced artifact's internals rather than call semantics, but still substantial added context.

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

Conciseness3/5

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

Front-loaded with the key purpose, but the body is a dense wall of text whose final sentence crams many unrelated argument behaviors ('Does not render. Choose any storyFormat...; edit the returned plan...') into one run-on paragraph. Information density is high, but the lack of structure and heavy redundancy with the schema hurt readability.

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 24-parameter, nested-schema tool with an output schema present, the description covers formats, language limits, sourcing, seeding, and rendering behavior adequately. Return values need not be explained given the output schema, but the description could route more clearly between the plan/preview/quote/generate lifecycle.

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 24 params and the baseline is 3. The description adds some cross-parameter meaning (sourceUrl/Urls/Text imply sourced, storyFormat wins over format, hookTemplateId seeds the topic), but much is restated and the nested storyPlan semantics largely duplicate the schema.

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

Purpose5/5

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

The first clause states a specific verb and resource: 'Preview a Topic Short story with hook, setup, reveal, and payoff beats, narration, and English Pexels search terms.' It enumerates the concrete outputs (beats, narration, search terms) and implicitly separates itself from render/generate siblings by noting it 'Does not render.'

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 clear context: 'edit the returned plan before quoting and generating,' and conditionals for seeded topics ('Required unless hookTemplateId seeds it or seriesEpisodeId supplies it. An explicit topic wins'). However it never states when NOT to use this vs. generate_topic_short or edit_topic_short explicitly, so exclusions are left to inference.

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

delete_paint_lab_trained_styleA
Read-only
Inspect

Delete one of your trained Paint Lab styles (ready or failed). A style that is still training cannot be deleted yet. Does not charge or refund. Results already made in that style are kept.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleIdYesTrained style id from train_paint_lab_style or list_paint_lab_trained_styles.

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedYesTrue when the style was deleted.
styleIdNoId of the deleted style.

TDQS

A3.6/5.0
Behavior1/5

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

The description announces a destructive operation ('Delete') while the annotations declare readOnlyHint=true and destructiveHint=false. That is a direct, serious inconsistency between description and structured metadata. Although the description does add genuine side-effect context (no charge or refund, existing results preserved), the contradiction with the annotations forces the floor score.

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

Conciseness5/5

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

Four short sentences, zero filler: scope first, then precondition, then cost behavior, then retention behavior. Each sentence carries distinct, decision-relevant information.

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

Completeness4/5

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

For a one-parameter delete with an output schema, the description covers preconditions, billing impact, and what is retained, which is close to complete. The one thing it fails to resolve is the conflict with its own annotations, which is why it is not a 5.

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

Parameters3/5

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

Schema description coverage is 100% and the single styleId parameter is already documented in the schema, including where to obtain the id. The description adds no format or sourcing detail beyond that, so the 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?

Specific verb+resource ('Delete ... trained Paint Lab styles') with an explicit scope qualifier ('ready or failed'). An agent can distinguish it immediately from the nearby siblings get_paint_lab_trained_style, rename_paint_lab_trained_style, and train_paint_lab_style.

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 ('A style that is still training cannot be deleted yet'), which tells the agent when this call will fail. It does not explicitly route to a sibling (e.g., list_paint_lab_trained_styles to find a deletable id), so it stops short of full when/when-not/alternatives guidance.

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

edit_topic_shortAInspect

Edit a finished Topic Short. Free kinds use no generation allowance: captions (captionStyle: off, spotlight, impact, highlighter, editorial, boxed, kicker), music (trackId from get_topic_short editCapabilities.musicOptions, or none) and swap_shot (beatIndex, shotIndex and an alternateId from get_topic_short shots). Paid kinds are quoted first with quote_topic_short_edit and run on that quoteId with the same fields: revoice (beatIndex plus the new narration for that line) and regenerate_shot (beatIndex and shotIndex of an AI shot); a shortfall returns HTTP 402 with numeric requiredCredits and availableCredits. nl takes an instruction ("make the hook punchier") and only interprets it: it returns a proposal of steps, each with a label and either a ready request (kind and params, with a quoteId and quote facts on paid steps) or the reason it cannot run. Apply each runnable step with its own edit_topic_short call, passing its params fields and quoteId. Each applied edit makes a new version; poll get_topic_short until it is completed. A public page stays on the version it was published from until you call publish_generation again. Restoring an earlier version is done on the clip page. Up to 20 free edits per short.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTopic Short generation id from generate_topic_short.
kindYescaptions restyles or removes the burned-in captions; music swaps or removes the music bed; swap_shot replaces one shot with a judged alternate; revoice re-records one line; regenerate_shot re-rolls one AI shot; nl interprets a written instruction into these edits.
quoteIdNoWith revoice or regenerate_shot: the quoteId from quote_topic_short_edit (or an nl proposal step) for this exact change. The change runs only on its own quote.
trackIdNoWith kind music: a music option id from get_topic_short editCapabilities.musicOptions, or none for no music.
beatIndexNoWith swap_shot, revoice or regenerate_shot: the beat to change (0 is the hook).
narrationNoWith revoice: the new spoken line for that beat, in the short’s language.
shotIndexNoWith swap_shot or regenerate_shot: the shot inside that beat (default 0).
alternateIdNoWith swap_shot: an alternate clip id for that shot from get_topic_short shots.
instructionNoWith nl: a written edit request, for example “make the hook punchier” or “more footage of the harbour”.
captionStyleNoWith kind captions: the new caption look, or off for a clean frame.
idempotencyKeyNoOptional. Reuse the same key when retrying an ambiguous edit so it is applied once.

Output Schema

ParametersJSON Schema
NameRequiredDescription
editNoThe new version (editId, version, kind, status, outputUrl, current, published). Poll get_topic_short until it is completed.
proposalNokind nl only (nothing is applied): summary, steps (each with op, label, request with kind and params plus quoteId on paid steps, quote with numeric requiredCredits and facts on paid steps, and unavailable when the step cannot run), total numeric requiredCredits and availableCredits, and affordable. Apply each runnable step with its own edit_topic_short call.
replayedNoTrue when this idempotencyKey already made this edit and the same version is returned.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnlyHint false, destructiveHint false, openWorldHint false), and the description adds substantial behavior beyond that: HTTP 402 with requiredCredits/availableCredits on shortfall, each edit creating a new version that must be polled via get_topic_short, published pages staying pinned until publish_generation, restoration happening on the clip page, and a 20-free-edit cap.

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 core purpose before diving into kind-specific detail, and nearly every sentence carries operational information (quote flow, 402 semantics, versioning, polling). The main weakness is that the middle is one dense run-on paragraph, which costs scannability, but there is little filler to cut.

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 multi-kind mutation tool with an output schema already present, the description covers what an agent still needs: the free/paid split, the quote prerequisite, error behavior, versioning and publication semantics, and the follow-up polling loop. Nothing material about invoking it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description goes further by mapping each kind to its relevant fields (captionStyle for captions, trackId from editCapabilities.musicOptions, beatIndex/shotIndex/alternateId for swap_shot, quoteId for paid kinds) and clarifying that nl takes an instruction. It stops short of documenting idempotencyKey usage beyond what the schema already states.

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 ('Edit a finished Topic Short') and immediately distinguishes itself from generate_topic_short by operating on an existing generation. It then enumerates the exact kinds of edits it supports, so an agent can tell it apart from siblings like quote_topic_short_edit or get_topic_short 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 Guidelines5/5

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

Explicitly partitions usage into free kinds (captions, music, swap_shot) versus paid kinds (revoice, regenerate_shot) and states the prerequisite that paid edits must be quoted first via quote_topic_short_edit and run on that quoteId. It also names the alternative path for natural language (nl returns a proposal to be applied step-by-step) and points to quote_topic_short_edit and get_topic_short as companion tools.

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

end_last_frame_clipA
Read-only
Inspect

Tell Last Frame the current shot finished playing so the next choice can appear.

ParametersJSON Schema
NameRequiredDescriptionDefault
runIdYesLast Frame run id whose current shot finished playing.

Output Schema

ParametersJSON Schema
NameRequiredDescription
runIdNoLast Frame run id. Pass this to get_last_frame_run and the move tools.
stateNoPlay state: current shot, choices, inventory, and HUD fields.
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.

TDQS

A3.6/5.0
Behavior1/5

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

The description describes an event notification that advances Last Frame's state ('so the next choice can appear'), which implies a meaningful side effect. However, the annotations declare readOnlyHint: true, suggesting the tool performs no state-changing work. This is an annotation contradiction, and the description does not resolve or clarify the mismatch.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or repeated information. Every phrase earns its place: the target, the triggering event, and the resulting outcome are all conveyed efficiently.

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

Completeness4/5

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

For a one-parameter tool with an output schema, the description provides enough context to understand when and why to invoke it. It does not explain ordering relative to other Last Frame tools or how to obtain the runId, but those details are partly inferable from the parameter schema and sibling context.

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

Parameters3/5

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

The parameter schema already fully describes runId as 'Last Frame run id whose current shot finished playing,' so schema coverage is 100%. The description adds no additional parameter-level detail beyond that, making the baseline score of 3 appropriate.

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

Purpose5/5

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

The description uses a specific action ('tell Last Frame') tied to a concrete event ('current shot finished playing') and a clear outcome ('so the next choice can appear'). This uniquely distinguishes it from sibling tools like start_last_frame, type_last_frame, and timeout_last_frame based on the trigger condition.

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

Usage Guidelines4/5

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

The description clearly states the usage context: it should be called when the current shot has finished playing. It does not explicitly contrast with alternatives like timeout_last_frame or type_last_frame, so it stops short of full exclusion guidance, but the triggering situation is unambiguous.

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

estimate_storyboardA
Read-only
Inspect

Estimate the next Story part from a script. Does not render. Use this before render_storyboard when you continue my story.

ParametersJSON Schema
NameRequiredDescriptionDefault
motionNoStory Motion. stills, seedance (default Standard), or h3 (Cinematic). renderMode is an alias.
scriptYesScript for this part (not the whole novel). Same text you will render or continue from.
renderModeNoAlias for motion.
resolutionNoOptional Story output resolution. Defaults to the product default (typically 1080p vertical).

Output Schema

ParametersJSON Schema
NameRequiredDescription
motionNoMotion used for this estimate: stills, seedance, or h3.
durationSecondsNoEstimated spoken duration for this part, in seconds.
providerCostUsdNoEstimated provider cost in USD before markup.
requiredCreditsNoUsage this quote would consume from this month’s generation allowance (internal units).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false, covering safety. The description adds the key behavioral trait 'Does not render,' clarifying that this is a non-rendering estimation step, which is useful context beyond the annotations.

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

Conciseness5/5

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

Two sentences with no fluff. The purpose and the critical 'does not render' fact are front-loaded, followed by clear usage direction. Every word earns its place.

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?

An output schema exists, so return values are covered. The description explains when to use it and its relationship to render_storyboard. It doesn't define what 'estimate' returns, but that's handled by the output schema. It is complete for an agent to invoke correctly.

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

Parameters3/5

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

All parameters are described in the schema (100% coverage), so the description does not need to add parameter details. It implicitly refers to the script parameter but adds no extra meaning beyond the schema descriptions.

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

Purpose5/5

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

The description states a specific verb ('Estimate'), a specific resource ('the next Story part from a script'), and explicitly distinguishes from render_storyboard by noting it does not render. This clearly separates it from sibling 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?

It explicitly instructs 'Use this before render_storyboard when you continue my story,' and adds 'Does not render,' which implies when not to use. This is direct, actionable guidance with an alternative named.

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

export_topic_shortA
Read-only
Inspect

Get a posting export of a finished Topic Short, made from its stored voice, music and caption tracks at no cost. no_music is voice and captions without music (add a trending sound in the app); clean is voice and music without burned-in captions; srt and vtt return the subtitle file as text; cover is the opening frame as a still. Video exports and the cover may return rendering with retryAfterMs: call again until status is ready (url) or unavailable.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTopic Short generation id from generate_topic_short.
formatYesno_music, clean, srt, vtt, or cover.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNoDownload URL when a video export or the cover is ready.
textNoSubtitle file contents for srt or vtt.
formatYesExport format: no_music, clean, srt, vtt, or cover.
statusYesready, rendering, busy, or unavailable.
retryAfterMsNoWait this long before calling again while rendering or busy.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare a safe read (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower. The description nonetheless adds real behavioral context: exports are free, video and cover may come back still rendering, and callers must poll using retryAfterMs until status is 'ready (url)' or 'unavailable'.

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 capability statement is front-loaded and every sentence carries information (format meanings, polling behavior). It runs long across multiple clauses, but there is little filler and no repetition of the schema.

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 an output schema present, return values need not be explained, yet the description still conveys the async rendering contract (retryAfterMs, ready/unavailable). Combined with cost, input preconditions, and format semantics, an agent has everything needed to call and handle results correctly.

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

Parameters5/5

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

Schema coverage is 100% so the baseline is 3, but the description goes well beyond the schema's bare enum list by defining each value: no_music = voice+captions without music, clean = voice+music without burned-in captions, srt/vtt = subtitle file as text, cover = opening frame still. This meaningfully disambiguates the single most consequential parameter choice.

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

Purpose5/5

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

The first sentence states a specific verb and resource: 'Get a posting export of a finished Topic Short,' immediately distinguishing this from generate_topic_short (creation) and get_topic_short (metadata). The 'finished Topic Short' scope plus the format enumeration makes the tool's output unambiguous without opening the schema.

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

Usage Guidelines3/5

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

'Finished Topic Short' and 'at no cost' imply when the tool is applicable, and the per-format notes hint at intent (e.g., use no_music if you want to 'add a trending sound in the app'). However, there is no explicit when-to-use/when-not guidance, no statement of prerequisites beyond 'finished,' and no routing to a sibling.

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

generate_adAInspect

Generate Ad Lab stills. Uses this month’s generation allowance. Poll get_ad_generation. layout is 9:16, 1:1, 4:5, or 16:9.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional job name shown in the library.
layoutNoStill aspect: 9:16, 1:1, 4:5, or 16:9.
quoteIdNoQuote id from quote_ad. Optional; generate quotes first when omitted.
companyIdYesAd Lab company id from import_ad_website.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoJob id when the service uses id instead of jobId.
jobIdNoAd Lab job id. Poll get_ad_generation.
statusNoJob status such as pending, queued, in_progress, completed, or failed.

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the annotations, the description discloses non-obvious behavior: the call consumes monthly generation allowance and requires a follow-up poll to get_ad_generation. It also surfaces the quote prerequisite. This is meaningful behavioral context that the annotations alone do not provide.

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

Conciseness4/5

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

The description is short, front-loaded with the core purpose, and contains no fluff. The layout sentence is somewhat redundant with the schema but is still compact and useful. Structure is strong, if slightly informal with the lowercase 'layout.'

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

Completeness4/5

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

Given that an output schema exists and the input schema covers all parameters, the description is mostly complete: it covers the async polling pattern, quota usage, and quote prerequisite. It could be slightly richer by naming sibling alternatives, but an agent has enough to call it correctly.

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

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 parameters. The description largely repeats what the schema states, such as layout values and the optional quoteId flow. It adds no new parameter-level meaning beyond the structured definitions.

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

Purpose4/5

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

The description states a specific verb ('Generate') and resource ('Ad Lab stills'), and it clarifies the output format via the layout options. It doesn't explicitly distinguish this from sibling tools like generate_ad_studio or generate_ad_proof_pack, though 'stills' narrows the scope considerably.

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 gives useful context: it consumes the monthly generation allowance, requires polling get_ad_generation, and implies quotes should be generated first when quoteId is omitted. However, it never explicitly says when to use this tool versus alternatives or when not to use it, so usage guidance remains mostly implied.

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

generate_ad_explainAInspect

Generate an Ad Lab Explain film from a product photo and a brief. Optional style still. Uses this month’s generation allowance. Poll get_ad_generation. Stay on Ad Lab; the stitched film is on the job.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional job name shown in the library.
briefYesWhat the clay-character film should explain about the product.
languageNoOptional spoken language. Defaults to English.
styleImageUrlNoOptional public style-reference still URL.
productImageUrlNoPublic product photo URL. Required unless productImageAssetId is set.
styleImageAssetIdNoOptional generation-asset id for the style-reference still.
productImageAssetIdNoGeneration-asset id for the product photo. Required unless productImageUrl is set.

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobIdNoAd Lab job id. Poll get_ad_generation.
statusNoJob status such as pending, queued, in_progress, completed, or failed.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations convey readOnly=false and destructive=false, but the description adds meaningful behavioral context: this operation consumes a monthly quota ('Uses this month’s generation allowance'), is asynchronous ('Poll get_ad_generation'), and the final stitched film is available on the job rather than immediately. This goes well beyond the structured annotations.

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

Conciseness5/5

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

Three short, dense sentences. The core action is front-loaded, followed by allowance/asynchrony and result-location guidance. Every sentence contributes either to selecting the tool or to invoking it correctly; there is no filler.

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

Completeness5/5

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

Given the 100% schema coverage and the presence of an output schema, the description supplies the missing operational essentials: quota consumption, the polling endpoint, and where the final film appears. Nothing an agent needs to correctly invoke this tool is omitted.

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 parameters are already fully documented. The description only echoes what the schema already states by mentioning 'a product photo and a brief' and 'Optional style still.' It adds no new parameter semantics, warranting the baseline score of 3.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Generate an Ad Lab Explain film from a product photo and a brief.' It clearly distinguishes this from siblings like generate_ad by naming the Ad Lab Explain artifact and adding the operational note to poll get_ad_generation. An agent can tell what this tool does and roughly how it differs from related ad-generation tools.

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

Usage Guidelines4/5

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

The description clearly states what inputs trigger this tool ('from a product photo and a brief') and gives post-invocation guidance: 'Poll get_ad_generation.' It also warns the agent to 'Stay on Ad Lab; the stitched film is on the job,' which provides context about where results live. It does not explicitly describe when not to use this tool versus other ad generation siblings, 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.

generate_ad_proof_packAInspect

Generate an Ad Lab Proof pack (hook, niche in-the-life stills, soft CTA) at 4:5. Optional product name, screenshot asset or URL, and CTA URL. Uses this month’s generation allowance. Poll get_ad_generation; download slides and zip from the job. Never invent a fake UI; missing screenshot falls back to a text CTA.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional job name shown in the library.
briefNoOptional extra product or lifestyle context for the stills.
nicheYesAudience or niche this Proof pack is for.
ctaUrlNoOptional https URL for the last-slide call to action.
slideCountNoNumber of slides. Default 6.
productNameNoOptional product name shown on slides. Never invent a fake UI if omitted.
screenshotUrlNoOptional public screenshot URL to composite on the last slide.
screenshotAssetIdNoOptional generation-asset id for the last-slide screenshot.

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobIdNoAd Lab job id. Poll get_ad_generation.
statusNoJob status such as pending, queued, in_progress, completed, or failed.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the sparse annotations (all false), the description discloses real behavioral traits: it consumes this month's generation allowance, requires polling a sibling job and downloading slides/zip, and forbids inventing fake UIs with a text-CTA fallback. This is exactly the kind of non-obvious context an agent needs and far exceeds what annotations provide.

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

Conciseness5/5

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

Three sentences with no filler. The purpose is front-loaded, followed by optional inputs/workflow, then critical behavioral constraints. Every sentence contributes essential information.

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

Completeness5/5

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

Despite 8 parameters and an async job workflow, the description covers the output format, optional inputs, resource cost, retrieval method, and a key edge-case fallback. With an output schema present, no return-value details are missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by mapping key optional parameters (product name, screenshot asset or URL, CTA URL) and clarifying behavior around them — specifically the fallback to a text CTA when no screenshot is provided, which is not in the schema.

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

Purpose5/5

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

The description names a specific verb and resource: 'Generate an Ad Lab Proof pack' with explicit contents (hook, niche in-the-life stills, soft CTA) and aspect ratio (4:5). This clearly differentiates it from siblings like generate_ad_studio and generate_ad_tip_pack even without seeing their schemas.

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 gives useful context (generation allowance, polling get_ad_generation) and implies this tool is for creating proof packs, but it never explicitly states when to choose this over alternative generate_* tools or what conditions would route elsewhere. The guidance is inferred rather than stated.

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

generate_ad_studioAInspect

Start a paid Ad Studio clip. Uses this month’s generation allowance. Poll get_ad_studio until it finishes. Hard failures return that job’s allowance.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoProduct page URL. Must match the quote when quoteId is set.
beatsYesLocked 5-beat English script. Hook is the first 0–3s. Soft close is close.
briefNoProduct brief. Required even when a URL is set.
voiceNoNarration voice id from list_audio_lab_voices.
familyYesAngle chip: Problem, Curiosity, Trust, or Niche.
actorIdYesTalking Shorts catalog creator id from list_talking_short_actors.
angleIdNoAngle id from research_ad_studio.
quoteIdNoFrom quote_ad_studio. Optional; generate quotes first when omitted.
captionModeNoCurrent karaoke (workspace is Current only). off and hook remain accepted for API compatibility; hook burns as Current.current
idempotencyKeyNoOptional key to retry an ambiguous Ad Studio submit with the same inputs.
captionsEnabledNoLegacy on/off. Prefer captionMode. false selects Off captions.
durationSecondsNoClip length in seconds. 15, 20, or 25. Default 15.
ugcFinishEnabledNoPhone-cam finish on the exported MP4. Defaults on. Does not change the quote.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.
idempotentNoTrue when this call reused an in-flight or finished job with the same idempotency key.
generationIdYesGeneration id. Poll the matching get_* tool until status is completed or failed.
creditsChargedNoUsage already consumed from this month’s generation allowance (internal units).

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the sparse annotations, the description discloses critical behavior: the operation consumes paid generation allowance, is asynchronous, and has a specific failure-refund policy. This is exactly the kind of behavioral context an agent needs before invoking a paid generation tool.

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

Conciseness5/5

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

Three short sentences, each earning its place: what the tool does, the cost implication, and the required follow-up behavior. No filler or repetition of schema content.

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

Completeness5/5

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

For a complex 13-parameter tool with nested objects and an output schema, the description plus schema covers the essential workflow: start generation, poll via get_ad_studio, and know the failure cost behavior. Nothing critical 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 every parameter. The description adds no extra parameter-level meaning, which is acceptable because the schema carries the burden. Baseline 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource ('Start a paid Ad Studio clip'), which clearly identifies the action and target. It also distinguishes itself from quote/research/get siblings by emphasizing that this tool starts the actual paid generation.

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

Usage Guidelines4/5

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

The description gives clear operational context: it uses this month's allowance, requires polling get_ad_studio, and hard failures return the allowance. It does not explicitly name alternatives or say when not to use it, but the paid-generation context makes the intended use obvious.

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

generate_ad_tip_packAInspect

Generate an Ad Lab tip pack (hook, numbered tips, soft CTA), with a distinct topic-matched image per slide by default. Uses this month’s generation allowance. Poll get_ad_generation; download slides and zip from the job. Set uniquePlates false to reuse one image across the pack.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional job name shown in the library.
topicYesWhat this tip pack is about.
ctaUrlNoOptional https URL for the last-slide call to action.
slideCountNoNumber of slides. Default 6. Use the same value as the quote.
aspectRatioNoPack aspect. Default 4:5. Optional 9:16. Use the same value as the quote.
uniquePlatesNoGenerate a distinct image for each slide. Set false to reuse one image across the pack. Use the same value when quoting and generating.

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobIdNoAd Lab job id. Poll get_ad_generation.
statusNoJob status such as pending, queued, in_progress, completed, or failed.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only signal readOnlyHint=false, openWorldHint=false, destructiveHint=false, so the description carries the burden of behavioral disclosure. It adds meaningful context: consumption of a monthly generation allowance, async job semantics requiring polling, and a download step. No contradiction with annotations.

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

Conciseness5/5

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

Four short sentences, each earning its place: the deliverable definition, the quota side effect, the retrieval workflow, and the key parameter deviation. Front-loaded with the purpose and zero 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?

An output schema exists, so return values need no explanation. The description covers the essential usage loop (generation, polling, download) and the quota impact. A minor gap: it never references the quote step that the schema hints at ('Use the same value as the quote'), though the schema itself carries that information.

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 baseline is 3; the schema already documents all six parameters. The description adds marginal value by re-explaining uniquePlates behavior ('reuse one image across the pack') but contributes no new semantics for slideCount, aspectRatio, or ctaUrl beyond what the schema already states.

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 ('Generate an Ad Lab tip pack') and defines the deliverable's structure (hook, numbered tips, soft CTA), which distinguishes it from siblings like generate_ad or generate_ad_proof_pack. It doesn't explicitly name sibling alternatives, but the content breakdown makes the tool's identity 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?

Provides workflow context — 'Poll get_ad_generation; download slides and zip from the job' and 'Uses this month's generation allowance' — which tells an agent what to do after invoking. However, it never states when to choose this tool over siblings (generate_ad_studio, generate_ad_proof_pack) or when not to use it.

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

generate_audio_labAInspect

Start a paid Audio Lab narration. Uses this month’s generation allowance. Poll get_audio_lab_generation until it finishes.

ParametersJSON Schema
NameRequiredDescriptionDefault
voiceNoClip Studio voice name from list_audio_lab_voices (for example Russ). Not the ElevenLabs voice_id. Omit when quoteId is set.
scriptNoNarration script. Omit when quoteId is set. 5,000 characters or fewer when quoting from generate.
quoteIdNoQuote id from quote_audio_lab. Optional; generate quotes first when omitted if script is set.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.
idempotentNoTrue when this call reused an in-flight or finished job with the same idempotency key.
generationIdYesGeneration id. Poll the matching get_* tool until status is completed or failed.
creditsChargedNoUsage already consumed from this month’s generation allowance (internal units).

TDQS

A4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, but they say nothing about cost. The description adds genuinely new behavioral context: this is a paid operation that consumes the monthly allowance and is asynchronous (must be polled). It stops short of stating quota-exhaustion behavior or duration expectations.

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

Conciseness5/5

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

Three short sentences covering action, cost, and follow-up, with the core purpose front-loaded. No filler or redundancy.

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 a full input schema and an output schema present, the description does not need to explain parameters or return values. It covers the operation's cost and async nature, leaving only minor gaps such as auth requirements or what happens when the allowance is exhausted.

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 voice, script, and quoteId in detail (including the quoteId/voice mutual exclusion). The description adds no further parameter semantics, 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 opens with a specific verb and resource: 'Start a paid Audio Lab narration,' which is clearly distinguishable from siblings like quote_audio_lab, generate_image_lab, and generate_video_lab. It does not explicitly name the sibling it is not, so it falls short of the top score, but the action is unambiguous.

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

Usage Guidelines4/5

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

It gives lifecycle guidance by naming the follow-up tool ('Poll get_audio_lab_generation until it finishes') and states the cost model ('Uses this month's generation allowance'). It lacks an explicit quote-first prerequisite or exclusions, which the schema hints at, so it is clear context but not a full when/when-not statement.

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

generate_character_filmAInspect

Start the Character Film opening (block 1, at most 8 seconds) on the same plan as the site. Optional quoteId from quote_character_film with range opening; when omitted this tool quotes the opening first. Optional idempotencyKey is generated when omitted. Poll get_character_film. Submit and poll — do not wait here for the full render. After the opening is completed, call continue_character_film for the rest (same plan as the site).

ParametersJSON Schema
NameRequiredDescriptionDefault
quoteIdNoQuote id from quote_character_film for range opening. Optional; this tool quotes the opening first when omitted.
projectIdYesProject id from plan_character_film.
idempotencyKeyNoOptional key to retry an ambiguous opening submit with the same project and quote. Generated when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rangeNoopening or remaining.
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.
renderIdYesRender id. Poll get_character_film with this renderId until status is completed or failed.
projectIdNoProject this render belongs to.
idempotentNoTrue when this call reused an in-flight or finished job with the same idempotency key.
billingSourceNoHow this render was billed: the monthly plan (older renders may show the retired complimentary film opening).
creditsChargedNoUsage already consumed from this month’s generation allowance (internal units).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark this as a non-read-only, non-destructive, non-open-world write, so the safety profile is covered. The description adds real behavioral context on top: it is an async submit-and-poll operation ('do not wait here for the full render'), idempotencyKey is auto-generated, and omitting quoteId triggers an implicit quoting step (a hidden side-effect/cost). It does not cover failure or retry behavior, 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?

Front-loaded with the core action and then the workflow, which is the right order. It is slightly redundant — 'same plan as the site' appears twice and 'Submit and poll — do not wait here' overlaps with the earlier 'Poll get_character_film' — so a small amount of trimming is possible.

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?

An output schema exists, so return values need not be described, and the description supplies the full call sequence (quote → submit → poll → continue). For a 3-parameter async generation tool this is nearly complete; only error/retry handling on an ambiguous submit is left implicit.

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's parameter notes ('this tool quotes the opening first when omitted', 'generated when omitted') effectively restate what the schema already says for quoteId and idempotencyKey, adding no new syntax, format, or constraint beyond the schema.

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

Purpose5/5

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

States a specific verb and resource with scope: 'Start the Character Film opening (block 1, at most 8 seconds)'. It separates itself from the sibling quote_character_film (quoting) and continue_character_film (the rest of the film) inside the same sentence, so an agent can distinguish it 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?

Explicit when-to-use and what-to-do-next: poll get_character_film, do not block for the full render, and call continue_character_film once the opening completes. It also names the alternative to supplying quoteId (omit it and the tool quotes first), which is exactly the routing decision an agent must make.

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

generate_image_labAInspect

Start a paid Image Lab generation (ChatGPT Image 2.5, Nano Banana, Nano Banana 2, Nano Banana 2.1, Nano Banana Pro, FLUX 3 Image, FLUX.2 Pro, Ideogram V4.5, MAI Image 2.5, MAI Image 2.5 Pro, Seedream 5 Lite, Seedream 5 Flash, Muse Image, Grok Imagine Image 2.0, Qwen Image 3, Kling Omni 3, or Recraft V4.1 Flash). Uses this month’s generation allowance. Poll get_image_lab_generation until it finishes.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNotext_to_image or image_to_image. Must match the quote when quoteId is set. Same as inputMode.
promptNoWhat to draw. Omit when quoteId is set.
quoteIdNoQuote id from quote_image_lab. Optional; generate quotes first when omitted if modelSlug and prompt are set.
inputModeNoSame as mode: text_to_image or image_to_image.
modelSlugNoImage Lab model slug from list_image_lab_models. Required unless quoteId is set.
aspectRatioNoStill aspect from list_image_lab_models for that slug. Omit when quoteId is set.
sourceAssetIdsNoSame source still asset ids used on the quote. Omit when quoteId is set.
sourceImageAssetIdNoSource still generation-asset id for image_to_image. Omit when quoteId is set.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.
idempotentNoTrue when this call reused an in-flight or finished job with the same idempotency key.
generationIdYesGeneration id. Poll the matching get_* tool until status is completed or failed.
creditsChargedNoUsage already consumed from this month’s generation allowance (internal units).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly=false, destructive=false, openWorld=false; the description adds the behavior the annotations cannot: the call is billed against a monthly generation allowance and is asynchronous (poll a sibling until it finishes). That is meaningful non-schema context, though quota-exhaustion 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.

Conciseness3/5

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

Purpose and the polling instruction are front-loaded and useful, but the first sentence is dominated by an 18-item model name dump that largely duplicates list_image_lab_models rather than earning its place inline. Two sentences are appropriately short overall, yet a third of the token budget is a catalog listing.

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 an output schema present, return values need not be explained, and the description covers the two things structured fields omit: cost/allowance semantics and the async poll flow. It is close to complete for this tool, missing only prerequisite ordering (quote first vs supply modelSlug+prompt).

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 eight parameters (mode vs inputMode aliasing, quoteId-vs-modelSlug/prompt exclusivity, aspectRatio derivation) are already fully documented in the schema. The description adds only the model-slug vocabulary, not any parameter syntax or constraints beyond it.

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

Purpose5/5

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

Starts with a specific verb+resource ('Start a paid Image Lab generation'), scopes it as the paid generation entry point, and names the sibling used to follow up (get_image_lab_generation). An agent can distinguish it from quote_image_lab and list_image_lab_models from the description alone.

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

Usage Guidelines3/5

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

It tells the agent the operation is paid, consumes this month's allowance, and requires polling get_image_lab_generation until finished, which is genuine workflow guidance. However it never states when to use this versus quote_image_lab first, nor what happens if the allowance is exhausted — prerequisites live only in the schema's quoteId description.

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

generate_paint_labAInspect

Start a paid Paint Lab AI action: finish a sketch, edit with words, fill a masked area, color line art without changing the lines, upscale, or remove a background. Uses this month’s generation allowance. Pass quoteId from quote_paint_lab, or the op settings to quote and generate in one call. Poll get_paint_lab_generation until status is completed or failed. A failed job returns its allowance.

ParametersJSON Schema
NameRequiredDescriptionDefault
opNoAI action: finish (finish a sketch, optional style), edit (edit with words; prompt required), fill (fill the white area of maskAssetId; prompt required), colorize (color line art without changing the lines; optional paletteHex), upscale (2× or 4×), or remove_background (cutout). Required unless quoteId is set.
styleNofinish only. Style id from list_paint_lab_styles (default concept). Does not change the quote.
factorNoupscale only: 2 or 4 (default 2). The result must stay within 4096 × 4096.
promptNoWhat to make or change, up to 2000 characters. Required for edit and fill; optional for finish and colorize; ignored by upscale and remove_background.
qualityNofast or best. finish only (default best). Ignored for other actions.
quoteIdNoQuote id from quote_paint_lab. Optional; when omitted, op is required and this call quotes first.
paletteHexNocolorize only: up to 12 swatches to color with ("Use my swatches"). Does not change the quote.
variationsNoHow many results to make: 1, 2, or 4. finish, edit, and fill only (default 1). One quote covers every variation.
maskAssetIdNoMask generation-asset id, same pixel size as sourceAssetId. White = fill (change), black = keep. Required for fill; optional for edit (limits the change to the white area). Not used by other actions.
sourceAssetIdYesReady image generation-asset id from complete_generation_asset. Use the same image you quoted. For colorize this is the line art (dark lines on a white background).
idempotencyKeyNoOptional request key (8–128 letters, numbers, dots, dashes, colons, or underscores). A quoteId is already single-use: retrying generate with the same quoteId returns the same job and never charges twice.
trainedStyleIdNofinish and edit only. Id of one of your ready trained styles from list_paint_lab_trained_styles. The result is made in that style, and the quote includes it. On generate_paint_lab with quoteId this is ignored: the quote already decides the style.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoSame as generationId.
opNoAI action: finish, edit, fill, colorize, upscale, or remove_background.
errorNoUser-safe failure message when status is failed.
factsNoJob facts line, for example "Finish sketch · Best · 1024 × 1024 · ×2".
styleNoFinish style id, when set.
widthNoSource width in px.
clipIdNoLibrary clip id when the result is saved to the library (upscale).
factorNoUpscale factor, when the action is upscale.
heightNoSource height in px.
promptNoYour own prompt for this job, when one was sent.
statusYessubmitting, queued, running, completed, or failed.
outputsNoOne entry per finished variation: index, public PNG outputUrl, width, and height.
qualityNofast or best, when the action has quality tiers.
refundedNoTrue when a failed job returned its allowance.
createdAtNoISO timestamp when this job was created.
errorCodeNoStable failure code when status is failed.
outputUrlNoPublic PNG URL of the first finished variation.
variationsNoNumber of variations requested.
completedAtNoISO timestamp when this job finished.
outputWidthNoResult width in px.
generationIdYesPaint Lab generation id. Poll get_paint_lab_generation until status is completed or failed.
outputHeightNoResult height in px.
trainedStyleIdNoYour trained style used for this result, when one was applied.

TDQS

A4.6/5.0
Behavior4/5

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

Adds real behavioral context beyond the annotations: the call is paid and draws down this month's generation allowance, a failed job refunds that allowance, and polling is required after submission. Annotations only declare the generic safety triad, so this cost/refund/polling disclosure is the valuable part, though rate limits and latency are not mentioned.

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

Conciseness5/5

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

Four dense sentences, front-loaded with the action and scope, each carrying distinct information (what it does, cost, quoting paths, polling/refund). No filler or 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 12-parameter paid generation tool with an output schema present, the description covers the essential workflow — quoting, allowance consumption, refunds, and polling — so return-value explanation is rightly delegated to the output schema. It is complete enough to call correctly, with only minor omissions like timeout expectations.

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 cross-parameter meaning the schema doesn't state on its own: the quoteId-vs-op mutual dependency ('when omitted, op is required and this call quotes first') and the fact that one quote covers every variation and that a quoteId is single-use.

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+resource ('Start a paid Paint Lab AI action') and enumerates the six concrete ops (finish, edit, fill, colorize, upscale, remove_background), which lets an agent distinguish this from siblings like quote_paint_lab and get_paint_lab_generation 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 the agent: pass a quoteId from quote_paint_lab, or supply op settings to quote and generate in one call, then poll get_paint_lab_generation until completed/failed. It names both the upstream and downstream sibling tools and the condition selecting each path.

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

generate_storyboard_partA
Read-only
Inspect

Continue my story: write the next Story part on an existing project (or the first part after create_storyboard). Pass projectId from create_storyboard or get_storyboard. Uses previous parts for continuity. Does not film — call render_storyboard after.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptNoWhat happens in this next part (continue my story). Optional if you paste script. Falls back to the project logline.
scriptNoOptional pasted script for this part. If omitted, Clip Studio writes the next part from the prompt and previous parts.
projectIdYesStory project to continue. From create_storyboard or get_storyboard. Required.

Output Schema

ParametersJSON Schema
NameRequiredDescription
partNoThe new Story part (id, order, script, summary).

TDQS

A3.9/5.0
Behavior1/5

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

Annotation contradiction: annotations set readOnlyHint=true while the description repeatedly describes a write operation ('write the next Story part', 'Clip Studio writes the next part'). This inconsistency is serious and would mislead an agent about side effects.

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

Conciseness5/5

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

Three tight sentences front-load the core action, add source-of-truth guidance, and close with a useful exclusion and next step. No filler.

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

Completeness5/5

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

For a tool with an output schema and full schema coverage for parameters, the description covers purpose, invocation context, continuity behavior, and the correct next tool. The only real gap is the annotation contradiction, which is scored separately.

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 parameters thoroughly. The description adds the continuity behavior and projectId provenance, but doesn't materially extend parameter meaning beyond the schema, making baseline 3 appropriate.

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

Purpose5/5

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

Description states a specific action ('write the next Story part') and resource ('existing project'), and differentiates from create_storyboard by covering the first-part case and from render_storyboard by explicitly saying it 'does not film.' An agent can see what this tool does and what it is not.

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?

Explains exactly where projectId comes from ('Pass projectId from create_storyboard or get_storyboard') and names the successor step: 'Does not film — call render_storyboard after.' This is explicit when-to-use and follow-up guidance.

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

generate_talking_shortAInspect

Start a paid Talking Short. Uses this month’s generation allowance. Poll get_talking_short until it finishes. captionMode defaults to current. phrase is MCP-ungated. The Phrase chip is operator-email only in the workspace. hook burns Current karaoke. Optional hookTemplateId seeds the brief from Opening hooks (script opening, not caption style) and does not change consume or refund.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoProduct page URL. Must match the quote when quoteId is set.
briefNoProduct brief. Must match the quote when quoteId is set.
voiceNoNarration voice id from list_audio_lab_voices.
scriptNoTalking-head script used for this generate.
actorIdNoCatalog creator id from list_talking_short_actors.
angleIdNoAngle id from research_talking_short.
quoteIdNoQuote id from quote_talking_short. Optional; generate quotes first when omitted.
hookBlanksNoFill [bracket] keys from the Opening hooks seed. Example: { "the annoying thing": "soggy leftovers" }. Does not change the quote.
hookIntentNoOptional Opening hooks intent. Browse with list_hook_bank. Ignored when seeding if hookTemplateId is set.
aspectRatioNoFrame size. Talking Shorts is 9:16 vertical.
captionModeNoOff, Current karaoke (default), or Phrase overlays. phrase is MCP-ungated for any caller. The Phrase chip is operator-email only in the Talking Shorts workspace. hook remains accepted and burns Current karaoke (Talking Shorts has no hook_kinetic). English only. Does not change the quote amount.current
faceImageUrlNoOptional public face still URL when not using a catalog actorId.
hookTemplateIdNoOptional Opening hooks template (catalog id hook_bank). The workspace picker is hidden. Seeds topic or Talking Shorts brief when that field is empty. Fill [brackets] via hookBlanks or by editing the seeded text. This is a script opening, not a caption look (captionStyle). Does not change the quote, consume, or refund.
idempotencyKeyNoOptional key to retry an ambiguous Talking Short submit with the same inputs.
captionsEnabledNoLegacy on/off. Prefer captionStyle. false selects Off captions.
durationSecondsNoClip length in seconds. 15, 20, or 25.
ugcFinishEnabledNoPhone-cam finish on the exported MP4. Defaults on. Does not change the quote.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.
idempotentNoTrue when this call reused an in-flight or finished job with the same idempotency key.
generationIdYesGeneration id. Poll the matching get_* tool until status is completed or failed.
creditsChargedNoUsage already consumed from this month’s generation allowance (internal units).

TDQS

A4.7/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, which are not very informative. The description compensates by disclosing important behaviors: 'Uses this month's generation allowance,' 'hook burns Current karaoke,' and 'hookTemplateId ... does not change consume or refund.' It also explains the captionMode nuances. No contradictions found.

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

Conciseness5/5

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

The description is dense but highly efficient, packing critical facts into a few sentences. It front-loads the main action and immediate follow-up (poll), then clarifies key parameters without redundancy. Every sentence adds new information, and the structure is streamlined.

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

Completeness5/5

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

Given the complexity (17 parameters, nested objects, enums) and the presence of an output schema, the description provides sufficient context for correct invocation. It covers the most complex behavioral aspects (captionMode, hookTemplateId, idempotency) and directs the agent to the right polling tool. The output schema handles return values, so nothing critical is missing.

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

Parameters4/5

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

With 100% schema description coverage, the schema already documents each parameter well. However, the description adds extra context for specific parameters like hookTemplateId ('seeds the brief from Opening hooks, script opening, not caption style') and captionMode details about operator-email limitation. This goes beyond the schema, justifying a score above baseline 3.

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

Purpose5/5

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

The description clearly states the tool's action: 'Start a paid Talking Short.' It specifies the resource (a paid Talking Short generation) and differentiates it from siblings like generate_topic_short, generate_ad, and the other generate_* tools. It also mentions key constraints like using the monthly allowance and polling get_talking_short for completion.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when and how to use the tool: 'Poll get_talking_short until it finishes.' It also explains conditional behavior like captionMode defaults and the operator-email restriction for the Phrase chip. This is clear enough for an agent to know exactly what to do.

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

generate_topic_shortAInspect

Generate a Topic Short from a reviewed storyPlan or automatically plan one from the topic and storyFormat. Spoken narration fills the selected length. A short reviewed plan is expanded so the voiceover is not a music-only tail. A too-long plan is packed down; generate never fails for narration length. captionStyle defaults to spotlight (off, spotlight, impact, highlighter, editorial, boxed, kicker — the Story caption looks, burned from the voiceover word timings); transitionMode defaults to dynamic. Uses this month’s generation allowance or complimentary quota. Poll get_topic_short. Stock matching fail-opens: a Pexels miss or outage still returns a finished short. Caption failure also fail-opens (captionBurn.verdict = fallback). Legacy captionMode values are aliased onto captionStyle. Optional hookTemplateId seeds the topic from Opening hooks (script opening, not a caption look) and does not change consume or refund. Takes the same setup as quote_topic_short (storyFormat, aspectRatio, visualStyle, aiHook, language, host, sources, voiceCloneId, seriesEpisodeId); pass the same values on both. Cinematic and AI hook shots that miss their 2-minute deadline fall back to judged stock, so the short still ships. A seriesEpisodeId short is linked to that episode.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoTopic to plan from. Required unless hookTemplateId seeds it or seriesEpisodeId supplies it. An explicit topic wins over either seed.
voiceNoNarration voice id from list_audio_lab_voices. Defaults to the product default voice.
aiHookNoOptional AI hook: the opening shot is an AI clip and abstract beats can get AI stills; the rest stays judged stock. Quoted higher. Any AI shot that misses its 2-minute deadline falls back to the best stock clip. Not available on the free short.
formatNoAlias of storyFormat. storyFormat wins when both are set.
scriptNoOptional supplied narration. If it already fills the selected length it is preserved word for word; if it is too short the planner expands it so speech fills the duration. Too-long scripts are packed down to the speaking-pace envelope (never fail generate for narration length). Maximum 8,192 UTF-8 bytes.
quoteIdNoQuote id from quote_topic_short. Optional; generate quotes first when omitted if topic is set.
sourcedNoSourced script: research the topic, cite real sources, and soften or drop claims it cannot verify. The finished short carries a Sources card; get_topic_short returns the citations. Implied by sourceUrl, sourceUrls or sourceText. Not available on the free short.
languageNoNarration and caption language: en (English), es (Spanish), pt (Portuguese), de (German), fr (French), hi (Hindi). Default en. The planner writes the script in this language; pass a script already written in it. Stock search terms stay English.en
sourceUrlNoOne https article or page link that grounds a sourced script. Same as a one-item sourceUrls.
storyPlanNoOptional reviewed story from create_topic_short_story. Pass the same plan when quoting and generating; omit to plan automatically. A plan whose narration is too short for the selected length is expanded at generate so speech fills the duration. A too-long plan is packed down; generate never fails for narration length.
charactersNoauto (default) keeps one recurring fictional character consistent across shots on story formats (story_twist, mini_documentary) with cinematic or aiHook; off turns that off. Real people are never generated.
hookBlanksNoFill [bracket] keys from the Opening hooks seed. Example: { "the annoying thing": "soggy leftovers" }. Does not change the quote.
hookIntentNoOptional Opening hooks intent. Browse with list_hook_bank. Ignored when seeding if hookTemplateId is set.
hostLayoutNoWhere the host appears: pip_circle (default), pip_corner, or full frame. Only with hostNarratorId.pip_circle
sourceTextNoPasted article text (200–20,000 characters) that grounds a sourced script.
sourceUrlsNoUp to 3 https links that ground a sourced script. PDF uploads are website-only; paste the text with sourceText instead.
aspectRatioNoFrame size. 9:16 vertical (default), 16:9 landscape, or 1:1 square for feeds.9:16
captionModeNoLegacy Topic Shorts caption mode, accepted for old clients only. current maps to spotlight, hook to impact, phrase to kicker, off to off. Prefer captionStyle.
storyFormatNoStorytelling format: mini_documentary (Mini documentary), myth_check (Myth check), story_twist (Story with a twist), how_it_works (How it works), ranking (Top 5), quiz (Quiz), scary_story (Scary story), history_pov (History POV), reddit_story (Post story), what_if (What if). Defaults to mini_documentary. Each format has its own pacing, cards and music mood.
visualStyleNoVisual style: standard (judged stock footage, default) or cinematic (every shot is an AI keyframe animated to video). Cinematic is quoted higher and takes a few minutes longer. Not available on the free short. Real people and brands are never AI-generated.standard
captionStyleNoTopic Short caption look: off, spotlight (default — each spoken word lights up on a blue highlight), impact (bold outlined caps, two words at a time), highlighter (caps with one yellow key word), editorial (quiet lower-third phrases), boxed (phrases on a rounded dark pill), or kicker (phrase chunks with one oversized cyan word up top). Same seven looks as Story; burned by the API from the voiceover word timings, in the narration language (Hindi uses a Devanagari font). Does not change the quote amount. Caption failure still returns a finished short.spotlight
recipeSourceNoWith recipeGenerationId: part_two makes Part 2 of that short; same_style reuses only its setup for a new topic. Pass the same value when quoting and generating.part_two
voiceCloneIdNoOptional id of one of your ready cloned voices (list_topic_short_voice_clones). Replaces voice. Paid plans only. Shorts narrated with a clone keep the AI-voice disclosure unless it was turned off when the voice was recorded.
hookTemplateIdNoOptional Opening hooks template (catalog id hook_bank). The workspace picker is hidden. Seeds topic or Talking Shorts brief when that field is empty. Fill [brackets] via hookBlanks or by editing the seeded text. This is a script opening, not a caption look (captionStyle). Does not change the quote, consume, or refund.
hostNarratorIdNoOptional recurring host: a Character Films narrator (list_character_film_catalog) who appears lip-synced in the hook and outro. Quoted higher. Not available on the free short.
idempotencyKeyNoReuse this key and the same quoteId and inputs when retrying an ambiguous submission.
transitionModeNoClassic current cuts and dissolves, Dynamic punchier motion (default), or Off hard cuts. Does not change the quote.dynamic
captionsEnabledNoLegacy on/off. Prefer captionStyle. false selects Off captions.
durationSecondsNoTarget length of the finished short in seconds (15–180). Spoken narration is written to fill this length. Quoted on this duration, not word count.
seriesEpisodeIdNoOptional approved episode id from queue_topic_short_episodes. Uses that episode as the topic (when topic is empty) and the series style as the setup; explicit arguments still win. The short is linked to the episode. Quoted like any other short.
recipeGenerationIdNoOptional id of one of your earlier Topic Shorts (from generate_topic_short or get_topic_short). Copies its setup: voice, caption look, transitions, format, frame size, length and shot length. Any setting you pass explicitly wins. Never copies the topic, script or plan. Does not change how the short is priced. Pass the same value when quoting and generating.
clipDurationSecondsNoLength of each stock B-roll clip in seconds (2–6, default 3). Not the full short length.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.
idempotentNoTrue when this call reused an in-flight or finished job with the same idempotency key.
generationIdYesGeneration id. Poll the matching get_* tool until status is completed or failed.
creditsChargedNoUsage already consumed from this month’s generation allowance (internal units).

TDQS

A4.6/5.0
Behavior5/5

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

With annotations only covering readOnly/destructive hints, the description carries the real behavioral load: quota consumption ('this month's generation allowance or complimentary quota'), fail-open stock matching and caption burn (captionBurn.verdict = fallback), 2-minute AI-shot deadlines, narration length never failing generation, and legacy captionMode aliasing. One tension: the description depicts external Pexels/AI interaction while openWorldHint=false, but the write/read/destructive profile is consistent.

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

Conciseness4/5

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

Core behavior (generate from plan, auto-plan, source of narration) is front-loaded in the first two sentences and the volume is defensible for a 32-parameter tool. It loses a point because several later sentences restate defaults already carried by the schema (captionStyle='spotlight', transitionMode='dynamic') and repeat the short/long-plan expansion rule.

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?

An output schema exists so return values need no explanation, and the description still covers quota, polling, fail-open paths, and the quote/generate pairing. Nothing an agent needs to invoke this correctly 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 the baseline is 3, but the description adds cross-tool semantics the schema does not: the shared setup list with quote_topic_short, that hookTemplateId seeds the topic without affecting consume/refund, and that hookTemplateId is a script opening rather than a caption look. These are genuine disambiguations between easily confused parameters.

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

Purpose5/5

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

The opening sentence names a specific verb and resource and states the two accepted inputs (a reviewed storyPlan or auto-planning from topic + storyFormat), which no sibling like quote_topic_short or create_topic_short_story does. An agent can distinguish this as the terminal render step from quote (pricing) and get_topic_short (polling) without opening schemas.

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

Usage Guidelines4/5

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

It routes the agent explicitly: 'Poll get_topic_short' after submitting, reuse 'the same setup as quote_topic_short ... pass the same values on both', and the schema notes quoting first when quoteId is omitted. It never states a when-not case, so it falls short of full alternative/exclusion guidance.

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

generate_video_labAInspect

Start a paid Video Lab generation. Uses this month’s generation allowance. Poll get_video_lab_generation until it finishes. FLUX 3 Edit clip uses mode=edit_video plus the same source clip used on the quote. Duration and aspect follow the source; output is 720p. Keeps the source clip’s audio.

ParametersJSON Schema
NameRequiredDescriptionDefault
fpsNoFrames per second when the catalog lists that control.
modeNoInput mode: text_to_video, image_to_video, first_last_frame, reference_to_video, or edit_video. Must match the quote when quoteId is set.
seedNoSeed when the catalog lists that control.
styleNoStyle id when the catalog lists that control. Omit or none for the default look.
promptNoWhat to film. Omit when quoteId is set. Up to 8,192 UTF-8 bytes when quoting from generate.
quoteIdNoQuote id from quote_video_lab. Optional; generate quotes first when omitted if modelSlug and prompt are set.
inputModeNoSame as mode: text_to_video, image_to_video, first_last_frame, reference_to_video, or edit_video.
modelSlugNoVideo Lab model slug from list_video_lab_models. Required unless quoteId is set.
multiShotNoMulti-shot / intelligent shot type when the catalog lists that control.
resolutionNoOutput resolution from the model catalog. Omit when quoteId is set.
aspectRatioNoFrame size from the model catalog. Omit when quoteId is set.
audioEnabledNoNative audio flag for models that list audio as optional. Omit when quoteId is set.
sourceClipIdNoLibrary clip id used as the edit_video source. Prefer passing the quote’s source video asset id on generate.
klingElementsNoKling 3 Pro / Kling 3 4K subject packs. Each element needs a frontal still and supporting references. The first primary still is the start frame when startImageAssetId is omitted. Do not send leftover stills as sourceAssetIds references on those models.
idempotencyKeyNoUUID to retry an ambiguous submit. Not a Video Lab batch key. Reuse the same key and inputs; the service mints a single-clip batch after the quote is accepted.
negativePromptNoNegative prompt when list_video_lab_models lists that control for the mode.
sourceAssetIdsNoSame source generation-asset ids used on the quote.
sourceVideoUrlNoPublic MP4 URL used as the edit_video source. Prefer passing the quote’s source video asset id on generate.
durationSecondsNoClip length in seconds. Omit when quoteId is set; generate uses the quoted setup.
endImageAssetIdNoEnd-frame generation-asset id. Same as sourceAssetIds[1] for first_last_frame.
promptEnhancementNoPrompt expansion when the catalog lists that control. false maps to fal disabled on MiniMax H3 and H3 Max.
startImageAssetIdNoStart-frame generation-asset id. Same as sourceAssetIds[0] for image_to_video and first_last_frame.
sourceVideoAssetIdNoSource MP4 generation-asset id for edit_video. Same as sourceAssetIds[0] for that mode.
referenceImageAssetIdsNoReference stills for reference_to_video. Do not send leftover stills here on Kling 3 Pro / Kling 3 4K when klingElements is set.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.
idempotentNoTrue when this call reused an in-flight or finished job with the same idempotency key.
generationIdYesGeneration id. Poll the matching get_* tool until status is completed or failed.
creditsChargedNoUsage already consumed from this month’s generation allowance (internal units).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations establish this as a non-read-only, non-destructive, closed-world write, so the description's job is to add cost and lifecycle context. It does: "paid" plus "uses this month's generation allowance" signals consumption/irreversibility, and the polling directive discloses the async nature. It does not discuss idempotency/retry behavior, which is left to the schema.

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

Conciseness5/5

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

Four tightly packed sentences with no filler: purpose, cost, lifecycle, then the one mode-specific caveat. The most decision-relevant facts (paid, poll, mode constraint) are front-loaded.

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 an output schema present, return values need not be explained, and the schema covers all 24 optional parameters. The description supplies the cost, async, and mode caveats an agent needs, though the quote-first prerequisite and the meaning of the zero-required-parameter surface are largely delegated to the schema.

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 parameter baseline is 3. The description goes beyond the schema by stating the edit_video constraint (use mode=edit_video plus the same source clip used on the quote, duration/aspect follow source, 720p output, source audio retained) — genuine semantic context that constrains how sourceClipId, mode, durationSeconds, and aspectRatio must be supplied.

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

Purpose5/5

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

The first sentence gives a precise verb and resource ("Start a paid Video Lab generation") and the word "paid" plus the allowance note distinguishes it from the free quote_video_lab step. The FLUX 3 Edit sentence further scopes one mode. An agent can tell this apart from quote_video_lab, get_video_lab_generation, and list_video_lab_models without opening schemas.

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

Usage Guidelines4/5

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

"Poll get_video_lab_generation until it finishes" gives the required follow-up action after invocation, and the edit_video note tells the agent when a special input path applies. It stops short of an explicit "call quote_video_lab first when quoteId is absent" instruction in the description (that lives only in the schema), so the when-to-use routing is clear but not fully closed.

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

get_accountA
Read-only
Inspect

Plan and usage for the signed-in Clip Studio account. resetsAt is an ISO timestamp when the monthly allowance resets, or null when there is no reset window. Includes offerCheckout price IDs for Clip Pro $19/mo and Studio Elite $39/mo after a 402.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
emailNoAccount email, or null when unknown.
userIdNoSigned-in Clip Studio user id.
creditsNoRemaining generation allowance in internal usage units.
resetsAtNoISO timestamp when the monthly allowance resets, or null when there is no reset window (no period, unlimited operator, or unknown).
planUsageNoAllowance already used this cycle (internal units).
packBalanceNoAdd-on pack balance (internal units).
offerCheckoutNoClip Pro $19 and Studio Elite $39 Stripe price ids for create_checkout_url after a 402.
planAllowanceNoThis month’s plan generation allowance (internal units).
planRemainingNoPlan allowance still unused this cycle (internal units).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish the read-only, non-destructive, closed-world profile, so the description adds value beyond them by explaining field semantics: resetsAt is an ISO timestamp that is null when there is no reset window, and checkout price IDs appear in the 402 path. That is meaningful behavioral context, though return handling is not fully described.

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 purpose front-loaded, then field semantics. No filler, though most of the length is devoted to describing output fields that a dedicated output schema may already cover.

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 zero-parameter read tool with annotations and an existing output schema, the description covers what it is and why the notable fields behave as they do. Auth is only implied by 'signed-in', and no error/pagination behavior is mentioned, leaving a small 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?

The tool takes zero parameters, so the baseline is 4. There is nothing for the description to disambiguate, and it correctly does not invent parameter guidance.

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 the resource precisely — the plan and usage for the signed-in Clip Studio account — which is a noun-phrase but unambiguous about what is retrieved. It does not name or contrast against any sibling tool, so it falls short of the differentiation a 5 requires.

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 statement or named alternative, but the sentence about offerCheckout price IDs being included 'after a 402' implies the scenario in which the returned data matters. Usage is inferred rather than stated.

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

get_ad_generationA
Read-only
Inspect

Fetch one Ad Lab generation.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYesAd Lab job id from generate_ad, generate_ad_tip_pack, generate_ad_proof_pack, or generate_ad_explain.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoAd Lab job id.
kindNostatic, tip_pack, proof_pack, or explain.
statusNoJob status such as pending, queued, in_progress, completed, or failed.
outputUrlNoDownload or playback URL when the job has finished.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only safety profile is covered. The description adds the singular retrieval scope but does not mention error cases, job-state requirements, or idempotency, all of which are minor for a simple getter.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. Every word contributes to specifying the action and the resource.

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

Completeness4/5

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

The definition is mostly complete for a single-parameter getter: output schema covers return values, annotations cover safety, and the parameter is well documented. It lacks explicit guidance on preferring this over list_ad_generations, but the core call information is sufficient.

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

Parameters4/5

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

The schema documents the only parameter with 100% coverage. The parameter description adds meaningful provenance by specifying that jobId must come from generate_ad, generate_ad_tip_pack, generate_ad_proof_pack, or generate_ad_explain, which helps the agent supply a valid value.

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

Purpose5/5

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

The description uses a specific verb, 'Fetch', and a specific resource, 'one Ad Lab generation'. This distinguishes it from list_ad_generations and from other lab-specific getters like get_image_lab_generation or get_video_lab_generation.

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 itself does not explicitly state when to use this tool versus alternatives. However, the schema's parameter description implies follow-up use after generate_ad-family calls, and the singular 'one' lightly contrasts with list_ad_generations. This is implied usage rather than explicit guidance.

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

get_ad_studioA
Read-only
Inspect

Fetch an Ad Studio generation. Submit and poll; do not wait on generate_ad_studio for the full render.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAd Studio generation id from generate_ad_studio.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.
outputUrlNoDownload or playback URL when the job has finished.
generationIdNoGeneration id. Poll the matching get_* tool until status is completed or failed.
creditsChargedNoUsage already consumed from this month’s generation allowance (internal units).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark this as read-only and non-destructive. The description adds valuable context about the async polling pattern and the relationship to generate_ad_studio, which annotations do not convey. It could add more about what states the generation may be in, but the output schema likely covers return structure.

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

Conciseness5/5

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

Two sentences with zero filler: first states the operation, second gives the critical usage caveat. Information is front-loaded and every word earns its place.

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

Completeness5/5

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

For a single-parameter, read-only fetch with an output schema and clear polling guidance, the description is complete. An agent knows what to call, when to call it, and how it relates to the generation workflow without needing additional context.

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

Parameters3/5

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

Schema coverage is 100% and the sole parameter id is already described as 'Ad Studio generation id from generate_ad_studio.' The description adds no further semantic detail beyond what the schema provides, 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?

The description states a specific verb ('Fetch') and resource ('an Ad Studio generation'), clearly distinguishing it from the sibling generate_ad_studio and related generation tools. Even with many similar get_* siblings, the 'Ad Studio' qualifier makes the scope unambiguous.

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

Usage Guidelines5/5

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

The description gives explicit workflow guidance: submit via generate_ad_studio, then poll this tool, and do not block on generate_ad_studio for the full render. This directly tells the agent when to use this tool versus the alternative it is paired with.

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

get_audio_lab_generationA
Read-only
Inspect

Fetch one Audio Lab generation by id and refresh it from the provider. Does not charge again.

ParametersJSON Schema
NameRequiredDescriptionDefault
generationIdYesAudio Lab generation id from generate_audio_lab or list_audio_lab_generations.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoRow id. Some list tools use id instead of generationId.
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.
videoUrlNoPlayback URL when the job has finished.
createdAtNoISO timestamp when this job was created.
modelSlugNoCatalog model slug from the matching list_*_models tool.
outputUrlNoDownload or playback URL when the job has finished.
generationIdNoGeneration id. Poll the matching get_* tool until status is completed or failed.
creditsChargedNoUsage already consumed from this month’s generation allowance (internal units).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint, so no contradiction. The description adds meaningful behavioral context beyond annotations: it refreshes from the provider and does not charge again, which is useful cost and freshness information.

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

Conciseness5/5

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

Two short sentences, no filler. The core fetching purpose is front-loaded, and the cost note is a valuable bonus that earns its place.

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

Completeness5/5

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

For a single-parameter read tool with an output schema and readOnly annotations, the description covers the essential behavior: what it fetches, how it identifies the generation, that it refreshes, and that it does not incur a charge. Nothing needed 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.

Parameters3/5

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

The schema covers the single parameter fully with a clear description of where the id comes from. The tool description itself adds only 'by id', but with 100% schema coverage, the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Fetch') and resource ('Audio Lab generation') and uniquely identifies one generation by id. It distinguishes itself from list_audio_lab_generations and generate_audio_lab by using 'one' and 'by id'.

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

Usage Guidelines4/5

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

The description clearly indicates when to use it: when you need a single Audio Lab generation by its id. The refresh and non-charge details add context about what invoking it does, though it does not explicitly name sibling alternatives or state when not to use them.

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

get_character_filmA
Read-only
Inspect

Fetch a Character Film render or project. Pass renderId from generate_character_film or continue_character_film, or projectId from plan_character_film. Returns status, stage, blocksDone, blocksTotal, outputUrl, and canContinue. Poll until status is completed or failed. Submit and poll; do not wait on generate for the full render.

ParametersJSON Schema
NameRequiredDescriptionDefault
renderIdNoRender id from generate_character_film or continue_character_film. Required unless projectId is set.
projectIdNoProject id from plan_character_film. Required unless renderId is set. Includes canContinue for the remaining range.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rangeNoopening or remaining for the render being reported.
stageNoPipeline stage: planning, narrator, keyframes, voice, shots, score, edit, or done.
blocksNoRendered or planned blocks for this film.
statusNoJob status such as pending, queued, in_progress, completed, or failed.
projectNoProject record when loaded.
rendersNoAll renders on this project when loaded.
videoIdNoLibrary clip id for this job, when one exists.
refundedNoTrue when a failed render returned that job’s allowance.
renderIdNoRender id when this lookup is for a render, or the latest render on the project.
outputUrlNoDownload or playback URL when the job has finished.
projectIdNoProject id.
blocksDoneNoBlocks finished in this render.
blocksTotalNoBlocks in this render.
canContinueNoTrue when the opening has completed and the remaining range has not been filmed yet. Call continue_character_film.
failureCodeNoStable failure code when status is failed.
failureStageNoPipeline stage that failed, when known.
billingSourceNoHow this render was billed.
failureDetailNoSanitized provider detail (endpoint, HTTP status, first 300 characters). Never a prompt.
creditsChargedNoUsage already consumed from this month’s generation allowance (internal units).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover read-only and non-destructive behavior. The description adds the polling behavior, the terminal statuses to watch for, and the exact returned fields, which is useful behavioral context beyond the structured annotations. No contradiction.

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

Conciseness5/5

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

Four tight sentences, zero filler. It front-loads the purpose, then gives parameter wiring, return fields, and the polling instruction – every sentence earns its place.

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

Completeness5/5

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

The description covers the complete usage pattern: submit, pass the right ID, poll to terminal states, and what the result contains. Combined with the output schema and annotations, nothing essential is missing for an agent to call this tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so both parameters are already documented. The description adds provenance for the IDs, linking renderId to generate/continue and projectId to plan, plus reiterating that projectId includes canContinue – this helps the agent wire the asynchronous workflow correctly.

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

Purpose5/5

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

The first sentence, 'Fetch a Character Film render or project,' states a specific verb, resource, and the two modes (render vs. project). It further names the sibling tools that produce the required IDs, distinguishing it from other get_* and generation tools.

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

Usage Guidelines4/5

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

The description explicitly tells the agent where to get the IDs ('from generate_character_film or continue_character_film' and 'from plan_character_film') and gives the polling workflow ('Poll until status is completed or failed'). It lacks explicit alternatives/exclusions, but the context is clear enough for an agent to know when to call this tool.

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

get_clipA
Read-only
Inspect

Fetch one library clip.

ParametersJSON Schema
NameRequiredDescriptionDefault
clipIdYesLibrary clip id from list_library or a generate tool.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoLibrary clip id.
stateNoProcessing state such as pending, completed, or failed.
video_urlNoPlayback URL when ready.
created_atNoISO timestamp when this clip was created.
footage_typeNoProduct that created this clip.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds only the singular-fetch behavior ('one') and otherwise provides no extra behavioral context such as not-found behavior or access requirements.

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

Conciseness4/5

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

The description is a single efficient sentence with no filler or repetition. It is front-loaded with the action and resource, though it is minimal enough that it does not add much contextual richness beyond the structured fields.

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, read-only getter with an output schema present and full parameter documentation in the schema, the description is nearly sufficient. It lacks only a small amount of usage context, but nothing critical is missing for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, and the single parameter clipId is already well documented in the schema as coming from list_library or a generate tool. The description adds no additional parameter meaning, so it stays at the high-coverage 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 uses a specific verb ('Fetch') and a specific resource ('one library clip'), clearly distinguishing it from sibling getters that target other entities. The singular 'one' also signals a single-object retrieval rather than a list operation.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as list_library or the other get_* tools. The only usage-related hint, that clipId comes from list_library or a generate tool, lives in the parameter schema rather than the description.

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

get_generation_publicationA
Read-only
Inspect

Get whether a library generation is public, and its public URL if it is.

ParametersJSON Schema
NameRequiredDescriptionDefault
clipIdYesLibrary clip id to check publication status for.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNoAbsolute public URL, or null when unpublished.
pathNoSite path such as /p/{id}, or null when unpublished.
publishedNoTrue when this generation has a live public page.
publicationNoPublic page payload when this tool returns the full record.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by noting the conditional nature of the public URL ('if it is'). This goes slightly 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?

The description is a single, front-loaded sentence that states the primary purpose first and adds the conditional detail. Every word earns its place with no redundancy.

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

Completeness5/5

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

The tool is simple, has one well-documented parameter, safe read-only annotations, and an output schema. Nothing essential is missing for an agent to correctly invoke and interpret 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?

The input schema has 100% coverage with a clear description of clipId, so the schema does the heavy lifting. The tool description adds no extra parameter meaning, which matches the baseline of 3.

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

Purpose5/5

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

The description clearly identifies the specific action ('Get whether...is public, and its public URL'), the resource ('library generation'), and the conditional output. This distinguishes it from broader getters like get_public_generation and write tools like publish_generation.

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

Usage Guidelines4/5

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

The description clearly implies the tool is used when checking the publication status of a library clip and retrieving its public URL. It does not explicitly exclude alternatives, but the context is specific enough that an agent knows when to select it.

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

get_image_lab_generationA
Read-only
Inspect

Fetch one Image Lab generation by id and refresh it from the provider. Does not charge again.

ParametersJSON Schema
NameRequiredDescriptionDefault
generationIdYesImage Lab generation id from generate_image_lab or list_image_lab_generations.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoRow id. Some list tools use id instead of generationId.
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.
videoUrlNoPlayback URL when the job has finished.
createdAtNoISO timestamp when this job was created.
modelSlugNoCatalog model slug from the matching list_*_models tool.
outputUrlNoDownload or playback URL when the job has finished.
generationIdNoGeneration id. Poll the matching get_* tool until status is completed or failed.
creditsChargedNoUsage already consumed from this month’s generation allowance (internal units).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark readOnlyHint=true and destructiveHint=false, so the description needn't restate safety. It adds meaningful behavioral context beyond annotations: the call refreshes from the provider and is explicitly not a repeat charge, which is valuable for an agent deciding whether to call it.

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

Conciseness5/5

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

Two short sentences with no filler: the first states the action and resource, the second preempts a cost concern. The most important scoping information is front-loaded.

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

Completeness5/5

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

For a single-parameter, read-only getter with an output schema, the description plus annotations cover input source, safety profile, refresh side effect, and billing. Nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

The input schema fully documents generationId, including its source, so the description adds no necessary parameter semantics beyond the word 'by id'. The baseline of 3 applies because schema coverage is 100%.

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

Purpose5/5

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

The description states a specific verb ('Fetch'), a precise resource ('one Image Lab generation by id'), and an additional behavior ('refresh it from the provider'), making it clearly distinct from enumeration siblings like list_image_lab_generations and from getters of other generation types.

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 clearly implies this is the singular-getter path when you already have a generationId, and the schema description tells the agent where IDs come from (generate_image_lab or list_image_lab_generations). It doesn't explicitly exclude listing, but the contrast with the list sibling is evident.

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

get_last_frame_runA
Read-only
Inspect

Get a Last Frame run, including the latest shot and choices.

ParametersJSON Schema
NameRequiredDescriptionDefault
runIdYesLast Frame run id from start_last_frame.

Output Schema

ParametersJSON Schema
NameRequiredDescription
runIdNoLast Frame run id. Pass this to get_last_frame_run and the move tools.
stateNoPlay state: current shot, choices, inventory, and HUD fields.
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds the useful fact that the response includes the latest shot and choices, but does not disclose any additional behavioral traits such as error cases, freshness guarantees, or whether a missing runId yields an error.

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

Conciseness5/5

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

The description is a single clear sentence with no filler. It front-loads the action and resource, then adds one useful qualifier about the returned content. Every word earns its place.

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

Completeness5/5

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

For a simple, read-only getter with one well-documented parameter, a rich output schema, and annotations covering side effects, the description is complete. The agent has enough information to call the tool correctly without further explanation.

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

Parameters3/5

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

Schema coverage is 100% and the runId parameter is already described as coming from start_last_frame. The description does not add parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

"Get a Last Frame run" names a specific verb and resource, and "including the latest shot and choices" clarifies what the run object contains. This is clearly distinct from other getters like get_clip or get_storyboard, and the Last Frame domain is reinforced by siblings such as start_last_frame.

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: the agent should call this after starting a Last Frame run, using a runId from start_last_frame. However, the description gives no explicit when-to-use guidance, no exclusions, and names no alternative tools, so it does not fully help the agent route between the many get_* siblings.

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

get_paint_lab_generationA
Read-only
Inspect

Fetch one Paint Lab AI result by id and refresh it from the provider. Completed results include a public PNG outputUrl per variation. Does not charge again.

ParametersJSON Schema
NameRequiredDescriptionDefault
generationIdYesPaint Lab generation id from generate_paint_lab or list_paint_lab_generations.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoSame as generationId.
opNoAI action: finish, edit, fill, colorize, upscale, or remove_background.
errorNoUser-safe failure message when status is failed.
factsNoJob facts line, for example "Finish sketch · Best · 1024 × 1024 · ×2".
styleNoFinish style id, when set.
widthNoSource width in px.
clipIdNoLibrary clip id when the result is saved to the library (upscale).
factorNoUpscale factor, when the action is upscale.
heightNoSource height in px.
promptNoYour own prompt for this job, when one was sent.
statusYessubmitting, queued, running, completed, or failed.
outputsNoOne entry per finished variation: index, public PNG outputUrl, width, and height.
qualityNofast or best, when the action has quality tiers.
refundedNoTrue when a failed job returned its allowance.
createdAtNoISO timestamp when this job was created.
errorCodeNoStable failure code when status is failed.
outputUrlNoPublic PNG URL of the first finished variation.
variationsNoNumber of variations requested.
completedAtNoISO timestamp when this job finished.
outputWidthNoResult width in px.
generationIdYesPaint Lab generation id. Poll get_paint_lab_generation until status is completed or failed.
outputHeightNoResult height in px.
trainedStyleIdNoYour trained style used for this result, when one was applied.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly, non-destructive, closed-world), and the description adds meaningful extra context: it refreshes from the provider, completed results expose a public PNG outputUrl per variation, and it does not incur a new charge. This is useful behavioral detail beyond the annotation set, though it doesn't cover failure/pending states.

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 short sentences, front-loaded with the core action and followed by output and billing notes. No filler; every sentence carries information.

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

Completeness4/5

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

With a full output schema present, the description need not explain return values, yet it still hints at outputUrl. Combined with annotation coverage and complete parameter docs, an agent has enough to call it correctly; only provider-refresh timing/error behavior 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% and the single generationId is fully documented in the schema, including its origin tools. The description adds no further syntax or format meaning, so 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 ('Fetch one Paint Lab AI result by id') and distinguishes itself from list_paint_lab_generations by making the singular/by-id nature explicit. It does not name a sibling directly, so it stops short of the top of the scale.

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 the use case (retrieve and refresh a single result), but gives no explicit when-to-use vs. when-not, nor does it point to list_paint_lab_generations or generate_paint_lab as prerequisites/alternatives.

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

get_paint_lab_trained_styleA
Read-only
Inspect

Fetch one trained Paint Lab style and refresh its training status. Once status is ready, pass its id as trainedStyleId to quote_paint_lab or generate_paint_lab (finish or edit). Does not charge again.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleIdYesTrained style id from train_paint_lab_style or list_paint_lab_trained_styles.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesTrained style id. Pass it as trainedStyleId once status is ready.
nameNoStyle name.
errorNoUser-safe failure message when status is failed.
statusYessubmitting, queued, training, ready, or failed.
readyAtNoISO timestamp when the style became ready.
styleIdNoSame as id.
refundedNoTrue when a failed training returned its allowance.
createdAtNoISO timestamp when training was started.
errorCodeNoStable failure code when status is failed.
imageCountNoHow many of your drawings trained this style.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower. The description still adds two non-obvious traits the annotations do not: the call refreshes training status (a side effect on a read-flagged tool) and it 'does not charge again,' which is real billing context.

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

Conciseness5/5

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

Three short sentences with zero filler. The core action and its status-refresh behavior are front-loaded before the downstream routing and billing note.

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?

An output schema exists, so return values need not be explained. Purpose, polling intent, downstream consumption, and the no-recharge guarantee are all covered. It stops short of describing the status lifecycle (e.g. pending/ready/failed) or what happens if training has not finished.

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% and the single styleId parameter is already fully documented in the schema, so baseline is 3. The description earns an extra point by explaining where the returned id flows next (trainedStyleId for quote/generate), which the schema does not say.

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: 'Fetch one trained Paint Lab style and refresh its training status.' The word 'one' explicitly separates it from the plural sibling list_paint_lab_trained_styles, and the naming makes it distinct from delete_/rename_ variants.

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 clear downstream routing: once status is ready, pass the id to quote_paint_lab or generate_paint_lab (finish or edit). It implies the polling use case well, but never states when to prefer this over list_paint_lab_trained_styles or what to do if status is not ready.

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

get_public_generationA
Read-only
Inspect

Fetch one public published generation by clip id.

ParametersJSON Schema
NameRequiredDescriptionDefault
clipIdYesPublic clip id from a /p/{id} URL or list_public_generations.

Output Schema

ParametersJSON Schema
NameRequiredDescription
publicationNoPublic generation page, or null when unpublished.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the 'public published' constraint, which clarifies that private or unpublished generations are not accessible, though it does not disclose error behavior or return details beyond what the output schema provides.

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 states exactly what the tool does and how the target is identified. No filler or redundant explanation, so every word earns its place.

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 one required parameter, full schema coverage, safety annotations, and an output schema present, the definition covers the essential call contract. The only notable gap is the lack of explicit differentiation from get_generation_publication, but the overall context is sufficient for a simple read 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 the clipId parameter is already fully documented in the input schema. The description only repeats 'by clip id' and adds no additional semantic information 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 description uses a specific verb ('Fetch'), a specific resource ('one public published generation'), and the identifier ('clip id'), making the core action unambiguous. It does not explicitly differentiate from the similar sibling get_generation_publication, but the resource phrase and retrieval-by-clip-id scope are clear enough for basic selection.

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

Usage Guidelines4/5

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

The parameter description gives clear sourcing context: the clipId comes from a /p/{id} URL or list_public_generations, which tells an agent when this tool is appropriate. It does not state exclusions or name alternative tools, but the context is sufficient for a simple public read.

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

get_storyboardA
Read-only
Inspect

Fetch a Story project and its parts, or omit projectId to list recent projects. Use this to pick up a story and continue the next part.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNoStory project to load. Omit to list recent projects so you can continue my story on one of them.

Output Schema

ParametersJSON Schema
NameRequiredDescription
partsNoStory parts in order, including scripts and filmed clip ids.
themeNoTheme on this project.
projectNoStory project when projectId was set.
projectsNoRecent projects when projectId was omitted.
charactersNoCharacters on this project.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the mode-switching behavior (fetch vs list) and implies the output includes parts, but does not detail pagination, error handling, or auth, which is acceptable given the read-only nature and existing output schema.

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

Conciseness5/5

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

The description is two sentences with zero fluff, front-loads the primary action, and efficiently covers both modes of operation. Every word earns its place.

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 read-only tool with one optional parameter and an output schema, the description covers the essential behaviors and use case. It does not explain the return structure, but that is handled by the output schema. The dual-mode behavior is clearly communicated.

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

Parameters3/5

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

The schema description for projectId is already descriptive and covers 100% of the parameter meaning. The tool description essentially repeats the same info, so it adds minimal new semantic value beyond what the schema provides. Baseline 3 applies.

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

Purpose5/5

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

The description uses the specific verb 'Fetch' with a clear resource 'Story project and its parts', and explicitly distinguishes the dual behavior (fetch by ID vs list recent projects). This clearly differentiates it from creation/generation tools like create_storyboard and generate_storyboard_part.

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

Usage Guidelines4/5

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

It provides a direct use case: 'Use this to pick up a story and continue the next part.' This implies when to use it, but does not explicitly state when not to use it or mention alternatives, leaving that to inference from sibling names.

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

get_talking_shortA
Read-only
Inspect

Fetch a Talking Short generation.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTalking Short generation id from generate_talking_short.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.
outputUrlNoDownload or playback URL when the job has finished.
generationIdNoGeneration id. Poll the matching get_* tool until status is completed or failed.
creditsChargedNoUsage already consumed from this month’s generation allowance (internal units).

TDQS

A3.9/5.0
Behavior3/5

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

The description is consistent with the readOnlyHint/destructiveHint annotations and adds no behavioral claims that would surprise the agent. It does not go beyond the annotations to disclose things like failure behavior, polling semantics, or authentication requirements, so transparency is adequate but not rich.

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

Conciseness5/5

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

One short, front-loaded sentence with no filler; every word carries meaning. The description is appropriately sized for the tool's simplicity.

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 only one required parameter, a documented output schema, and annotations covering the read-only safety profile, the description provides the necessary anchor for an agent to select and call the tool. Nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100%: the single id parameter is already documented as 'Talking Short generation id from generate_talking_short.' The description itself adds no additional parameter nuance, so the high-coverage baseline of 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 uses a specific verb, 'Fetch', and names the exact resource, 'a Talking Short generation', which separates it from generation/quote tools and from other domain getters like get_topic_short or get_ad_generation. It does not explicitly contrast with generic publication retrieval tools, so it is clear but not fully differentiated.

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

Usage Guidelines4/5

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

The one-line description alone only implies usage, but the id parameter description states the id comes from generate_talking_short, giving a clear workflow context. It does not, however, state when not to use this tool or mention alternatives such as get_generation_publication.

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

get_topic_shortA
Read-only
Inspect

Fetch a Topic Short generation, including captionBurn persisted on the completed record. status moves through queued and in_progress, then composing while the final edit is put together, then completed or failed; keep polling through composing. setup echoes the options it was made with (format, frame size, language, visual style and render tier, host, sources, voice clone, series episode). A sourced short also returns sources: the citations shown on its Sources card. shots lists each shot with its judged alternates for swap_shot edits. On a completed short it also returns versions (the original plus each edit; current marks the one the library shows), editCapabilities (including musicOptions for edit_topic_short) and publication (which version a public page is pinned to). On a completed short it also returns postingPack (title, caption, hashtags), coverUrl when the cover is ready, and exports (each format and whether export_topic_short can make it).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTopic Short generation id from generate_topic_short.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoTopic Short generation id.
setupNoThe setup this short was made with: storyFormat, aspectRatio, language, visualStyle, renderTier, aiHook, characters, hostNarratorId, sourced, sourceInputs, voiceCloneId, seriesId and seriesEpisodeId (omitted fields are the defaults).
shotsNoCompleted short, when recorded: per-shot picks by beatIndex and shotIndex with judged alternates. An alternate id is the alternateId edit_topic_short kind swap_shot takes.
statusNoJob status: submitting, queued, in_progress, composing (the voiceover and shots are done and the final edit is being put together), completed, or failed. Keep polling while it is composing.
exportsNoWhen the posting pack is on: each export format and whether export_topic_short can make it for this short.
sourcesNoSourced shorts only, once completed: the cited sources behind the narration (title, publisher, url, accessedAt), as shown on the clip page Sources card.
videoIdNoLibrary clip id for this job, when one exists.
coverUrlNoCover still URL (opening frame), once export_topic_short format cover has made it.
versionsNoCompleted short only, when edits are on: version 0 is the original, then one per edit_topic_short call (editId, version, kind, status, outputUrl, current, published).
outputUrlNoDownload or playback URL when the job has finished.
captionBurnNoPersisted caption-burn record on a completed short, when present.
postingPackNoWhen the posting pack is on: suggested title, caption and hashtags for posting this short.
publicationNoWhen edits are on: whether a public page exists and which version it is pinned to.
editCapabilitiesNoWhen edits are on: whether captions and music can be edited, musicOptions (id, mood, previewUrl) for edit_topic_short, and freeEditsRemaining.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), and the description adds real behavioral value beyond them: the full status state machine (queued → in_progress → composing → completed/failed) and the explicit instruction to keep polling during composing, which prevents premature abandonment. It does not mention auth scope, rate limits, or what happens for an unknown id.

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?

The first sentence is front-loaded and efficient, but the remainder is a long enumeration of returned fields (setup, sources, shots, versions, editCapabilities, publication, postingPack, coverUrl, exports) that largely duplicates the output schema. Roughly two-thirds of the text is redundant with structured data that the agent already receives.

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-and-poll endpoint with one required parameter, the description is more than sufficient: it explains the lifecycle, what triggers continued polling, and how to read the completed payload. Since an output schema exists, the field-by-field listing is surplus rather than a gap, and only error/not-found behavior is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the single 'id' parameter is already documented in the schema as coming from generate_topic_short. The description repeats that same fact rather than adding format, constraints, or validity semantics, so the baseline 3 for a fully-covered schema 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 opening clause states a specific verb and resource ('Fetch a Topic Short generation'), which separates it cleanly from write siblings like generate_topic_short and edit_topic_short. It never names the closest read alternative (get_talking_short or get_public_generation), so the differentiation is by name only rather than explicit routing.

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?

'keep polling through composing' is genuine operational guidance that tells the agent this is a re-invoked status endpoint, not a one-shot fetch. There is no explicit when-not or alternative-tool routing, which keeps it out of the top band.

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

get_video_lab_generationB
Read-only
Inspect

Fetch one Video Lab generation by video id.

ParametersJSON Schema
NameRequiredDescriptionDefault
videoIdYesVideo Lab video id from generate_video_lab or list_video_lab_generations.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoRow id. Some list tools use id instead of generationId.
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.
videoUrlNoPlayback URL when the job has finished.
createdAtNoISO timestamp when this job was created.
modelSlugNoCatalog model slug from the matching list_*_models tool.
outputUrlNoDownload or playback URL when the job has finished.
generationIdNoGeneration id. Poll the matching get_* tool until status is completed or failed.
creditsChargedNoUsage already consumed from this month’s generation allowance (internal units).

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description merely restates 'Fetch' without adding further behavioral context. It doesn't mention error handling, return shape, or any side effects beyond what annotations already imply.

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

Conciseness5/5

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

The description is a single sentence with no filler, front-loading the verb and resource. Every word earns its place.

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 get-by-id tool with an output schema and safety annotations, the description is minimally adequate. However, it omits any context about what a Video Lab generation is or how it differs from other generation types, though the sibling tool names partially compensate.

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

Parameters3/5

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

Schema coverage is 100%, and the schema description explains that videoId comes from generate_video_lab or list_video_lab_generations, so the baseline is 3. The tool description only repeats 'by video id' without adding new parameter meaning.

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 a specific verb ('Fetch'), a clear resource ('Video Lab generation'), and the lookup mechanism ('by video id'). It distinguishes from siblings like list_video_lab_generations by implying a single-record fetch, though it doesn't explicitly name an alternative.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as get_clip or list_video_lab_generations. The source of the videoId appears only in the schema parameter description, not in the tool description, leaving the agent to infer usage.

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

import_ad_websiteA
Read-only
Inspect

Read a public website into an Ad Lab company profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic https website to import as an Ad Lab company profile.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNoImported brand or site name.
companyIdNoAd Lab company id to pass to quote_ad and generate_ad.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, which the description does not contradict. The description adds context about the source being public and the target being an Ad Lab profile, but does not elaborate on any behavioral traits beyond that.

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

Conciseness4/5

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

The description is a single, concise sentence that front-loads the core action. It is efficient without waste, though it could have included more context without becoming verbose.

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 tool with an output schema and annotations covering safety, the description is adequate. It explains the purpose and target, and the output schema handles return-value documentation. Nothing critical 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%, so the parameter 'url' is fully documented in the schema. The description does not add any additional meaning or constraints beyond the schema's description, meeting the baseline for high coverage.

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

Purpose4/5

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

The description states a specific verb ('Read') and resource ('public website into an Ad Lab company profile'), clearly indicating the action. It is distinct from siblings since no other import tool exists, though 'read' is slightly vague compared to 'import'.

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

Usage Guidelines3/5

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

The description implies usage (when you want to import a website) but provides no explicit when-to-use or when-not-to-use guidance. Since there is no alternative tool, this is acceptable but not explicit.

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

list_ad_generationsA
Read-only
Inspect

List Ad Lab generations this account owns. Pass companyId for static ads, or kind tip_pack, proof_pack, or explain.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoOptional filter: tip_pack, proof_pack, or explain. Omit for static ads when companyId is set.
companyIdNoOptional Ad Lab company id to list static ads for that brand.

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobsNoAd Lab jobs this account owns.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description adds useful behavioral context: the tool only returns generations owned by the account and distinguishes static ads from kind-based generations. This goes beyond the annotations without contradicting them.

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

Conciseness5/5

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

Two concise sentences with no filler. The core purpose is front-loaded and the parameter guidance is packed into a single actionable sentence.

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

Completeness5/5

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

For a simple read-only list tool with two optional parameters, full schema coverage, and an output schema, the description covers purpose, scope, and invocation conditions. Nothing critical is missing for correct selection and usage.

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 meaning beyond the schema by explaining when to use companyId versus kind and listing the valid kinds. This helps the agent decide how to construct the call.

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

Purpose5/5

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

States a specific verb ('List'), a specific resource ('Ad Lab generations'), and scope ('this account owns'), which distinguishes it from sibling listers like list_audio_lab_generations and public listings like list_public_generations. An agent can understand exactly what this tool retrieves.

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

Usage Guidelines4/5

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

Provides clear conditional invocation guidance: 'Pass companyId for static ads, or kind tip_pack, proof_pack, or explain.' It does not explicitly name alternatives or exclusions, but the account-ownership scope and the categories make the intended use fairly clear.

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

list_audio_lab_generationsA
Read-only
Inspect

List this account’s Audio Lab generations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
generationsNoThis account’s jobs for this product, newest first.

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the 'this account's' scoping detail, which clarifies the resource domain, but does not disclose additional behavior such as pagination, ordering, or output size.

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 contains the verb, resource, and scope with no wasted words. It is appropriately concise for such a simple operation.

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

Completeness5/5

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

Given zero parameters, the presence of an output schema, and annotations that establish read-only, non-destructive behavior, the description provides everything needed to invoke this tool correctly.

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

Parameters4/5

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

The tool has zero parameters, so there is nothing for the description to clarify beyond what the empty schema already communicates. Per the baseline for zero-parameter tools, this is adequate.

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

Purpose5/5

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

The description states a specific verb (list), a specific resource (Audio Lab generations), and an explicit scope (this account). This clearly distinguishes it from siblings like list_public_generations and get_audio_lab_generation.

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

Usage Guidelines4/5

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

The description makes the context clear: use it to list the current account's Audio Lab generations. It does not explicitly mention alternatives or exclusion conditions, but the account-scoped phrasing is sufficient to guide selection among the sibling list tools.

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

list_audio_lab_voicesA
Read-only
Inspect

List Audio Lab narration voices with accent and locale. id and name are the Clip Studio voice name (for example Russ), not the ElevenLabs voice_id. Same catalog as /audio-lab.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
engineNoNarration engine id.
voicesNoNarration voices. id and name are the Clip Studio voice name, plus accent, locale, and preview URL.
defaultVoiceNoDefault Clip Studio voice name (not an ElevenLabs voice_id).
maxScriptCharactersNoMaximum script length in characters.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare this is a safe, read-only, non-open-world operation, so the safety profile is covered. The description adds genuinely useful context beyond annotations: the identity scheme of id/name (Clip Studio names, not ElevenLabs voice_ids) and that it mirrors the /audio-lab catalog. It stops short of describing ordering or any caching traits, but the bar is lower given full annotation coverage.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core action and return fields, then the disambiguation caveat. No filler, no repetition of the tool name.

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

Completeness4/5

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

With an output schema present, the description needn't enumerate return values, and it correctly avoids doing so. Combined with full annotation coverage and zero parameters, the definition is close to complete; only guidance on choosing this over sibling voice catalogs is missing.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; 4 is the baseline for a no-parameter tool. The naming caveat about id vs voice_id is a bonus clarification rather than parameter semantics.

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

Purpose5/5

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

States a specific verb and resource ('List Audio Lab narration voices') and immediately scopes what it returns (accent and locale). The clarification that ids are Clip Studio voice names rather than ElevenLabs voice_ids lets an agent distinguish this catalog from other voice-related siblings like list_storyboard_voices.

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 or when-not-to-use guidance, and no alternative sibling is named (e.g. list_storyboard_voices). The only contextual hint is 'Same catalog as /audio-lab,' which is informational rather than directive. An agent must infer usage purely from the tool name.

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

list_character_film_catalogA
Read-only
Inspect

List Character Films narrators, looks, and lengths. Same catalog as /character-films. Each narrator includes voiceName (the narrator’s fixed voice). Does not render or charge. Subtitles are burned automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
looksYesIllustration looks (id, name, tagline) for reference. Each narrator has a fixed lookId; there is no separate look choice.
lengthsNoFull film lengths in seconds (30, 60, 120, 180).
narratorsYesNarrators (id, name, tagline, archetype, voiceName, lookId). Pick narratorId from this list; the narrator brings its own look and voice.
freeOpeningMaxSecondsNoMaximum length of the free first opening, in seconds.

TDQS

A4.4/5.0
Behavior4/5

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

The description adds behavior beyond the readOnlyHint annotation by stating it 'does not render or charge' and that subtitles are burned automatically. This informs the agent of side-effect-free operation and a property of the returned data, which is useful and consistent with the annotations.

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

Conciseness5/5

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

The description is three concise sentences with no fluff. The primary purpose is front-loaded in the first sentence, additional context follows, and every sentence contributes meaningful information without redundancy.

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 parameterless list tool with an output schema present and annotations covering safety, the description adequately covers behavior (no render/charge), output content (narrators, looks, lengths, voiceName), and a notable data property (subtitles). It does not specify pagination or sorting, but these are likely detailed in the output schema, making this sufficient.

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

Parameters4/5

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

The input schema has zero parameters, so there is no parameter information to add. The description correctly omits any param explanations, and the baseline score of 4 applies since the schema fully covers an empty parameter set.

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

Purpose5/5

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

The description clearly states the tool lists Character Films with specific attributes (narrators, looks, lengths) and references the canonical catalog endpoint. This precise resource and verb set it apart from other list_* tools like list_audio_lab_voices or list_storyboard_themes, so an agent knows exactly what it retrieves.

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

Usage Guidelines4/5

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

The description provides clear context: it is the list operation for the character film catalog and mentions the equivalent endpoint. It does not explicitly exclude alternatives or state when not to use it, but given the tool's name and the limited sibling set for this resource, the intended usage is unambiguous. A short note about using get_character_film for single-film details would push it to 5.

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

list_free_toolsA
Read-only
Inspect

List public free tools at /tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolsNoIndexable free tools (slug, title, path).
featuredNoFeatured free tools (slug, title, path).

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only behavior is covered. The description adds the location (/tools) and the public/free scope, but it does not disclose additional behaviors such as whether the list is complete, ordered, or paginated.

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

Conciseness5/5

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

The description is a single concise sentence that contains the essential action, object, and location. Every word adds value, and the most important information is front-loaded.

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

Completeness4/5

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

Given zero parameters, safe read-only annotations, and the presence of an output schema, the description is mostly complete for invoking the tool correctly. It could briefly mention that this is the discovery entrypoint for run_free_tool, but this is a minor gap rather than a functional omission.

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

Parameters4/5

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

The tool has no parameters, so there is nothing for the description to explain about inputs. The baseline for zero-parameter tools applies, and the description sufficiently identifies what is being listed.

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

Purpose5/5

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

The description states a specific verb (List) and resource (public free tools at /tools), making its function immediately clear. It also distinguishes itself from the many list_* and run_free_tool siblings by narrowing the scope to public free tools.

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 gives clear context that this lists public free tools, but it does not explicitly state when to prefer it over related tools like run_free_tool or list_public_generations. Usage is implied rather than directly guided.

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

list_hook_bankA
Read-only
Inspect

List Opening hooks script-opening templates (Problem, Curiosity, Trust, Niche). Catalog id hook_bank. The workspace picker is hidden; this catalog is for MCP seeding. Optional intent filter. This is not Hook captions (captionMode=hook / hook_kinetic), which stay hidden in the workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
intentNoOptional Problem, Curiosity, Trust, or Niche filter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoCatalog id. Always hook_bank.
helperNoHow to use these templates as script openings.
intentsNoProblem, Curiosity, Trust, and Niche filters.
surfaceNoVisible product name: Opening hooks.
templatesNoScript-opening templates (id, intent, label, seed, blanks).
blankGuidanceNoHow to fill [bracket] keys via hookBlanks.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark the tool as read-only, non-destructive, and not open-world. The description adds meaningful behavioral context beyond that: the catalog is hidden from the workspace picker and exists only for MCP seeding, and it disambiguates from Hook captions. No mention of auth or pagination is needed given the simple read-only nature.

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

Conciseness5/5

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

Three short sentences pack purpose, enumeration, catalog identity, visibility context, and an exclusion without wasted words. The key identifying information is front-loaded.

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 one optional parameter, full parameter schema coverage, and an output schema, the description covers all selection and invocation needs. It also resolves the ambiguity against Hook captions, making it complete for an agent.

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%: the single intent parameter already has an enum and a descriptive comment. The description's 'Optional intent filter' adds no new semantics, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

Description names a specific verb and resource: 'List Opening hooks script-opening templates', enumerates the four intent categories, and gives the catalog id. It explicitly contrasts itself with Hook captions, so it is distinguishable from related list tools without opening schemas.

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

Usage Guidelines5/5

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

The description states the intended context ('for MCP seeding'), notes that the workspace picker is hidden, and explicitly warns that this is not the Hook captions catalog. This gives an agent clear when-to-use and when-not-to-use signals, even though no alternative tool is named.

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

list_image_lab_generationsA
Read-only
Inspect

List this account’s Image Lab generations.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of Image Lab jobs to return. Newest first.

Output Schema

ParametersJSON Schema
NameRequiredDescription
generationsNoThis account’s jobs for this product, newest first.

TDQS

A4.3/5.0
Behavior4/5

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

The read-only and non-destructive behavior is already covered by annotations (readOnlyHint=true, destructiveHint=false). The description adds the account-scoping context, which is useful, though it doesn't discuss ordering or pagination beyond what the schema already states.

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?

One short, front-loaded sentence with no filler; every word contributes to identifying the operation and resource.

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

Completeness5/5

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

For a simple read-only list tool, the description, complete schema for the optional limit parameter, output schema, and annotations together cover selection and invocation. No critical information 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?

The schema already fully documents the single limit parameter, including newest-first ordering. The description adds no parameter-level detail, so the 100% schema coverage sets 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 uses a specific verb ('List') and a specific resource ('Image Lab generations') with account scope. This distinguishes it from sibling tools such as list_audio_lab_generations and get_image_lab_generation.

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

Usage Guidelines4/5

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

The description gives clear context for when to call it: when listing the current account's Image Lab generations. It does not explicitly compare alternatives, but the resource name and pluralization make the intended use easy to identify.

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

list_image_lab_modelsB
Read-only
Inspect

List Image Lab models, modes, and aspect ratios. Same catalog as /image-lab: ChatGPT Image 2.5, Nano Banana, Nano Banana 2, Nano Banana 2.1, Nano Banana Pro, FLUX 3 Image, FLUX.2 Pro, Ideogram V4.5, MAI Image 2.5, MAI Image 2.5 Pro, Seedream 5 Lite, Seedream 5 Flash, Muse Image, Grok Imagine Image 2.0, Qwen Image 3, Kling Omni 3, and Recraft V4.1 Flash.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
modelsNoImage Lab catalog (slug, modes, aspect ratios).
defaultModelSlugNoDefault Image Lab model slug.

TDQS

B3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered and the description adds nothing behavioral on top of it — no caching, no auth requirement, no note that the catalog is static versus dynamic. It does disclose that the result includes modes and aspect ratios alongside models, which is modest added value, but not a behavioral trait beyond the annotation coverage.

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

Conciseness3/5

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

The purpose is correctly front-loaded in sentence one, but sentence two is a seventeen-item model roster that is volatile data and, with an output schema present, duplicates what the tool returns. That roster consumes the majority of the text without changing how an agent selects or invokes the 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 zero-parameter, read-only catalog tool with an output schema, return values need not be explained, so the definition is functionally callable. What is missing is the surrounding context an agent needs — namely that this catalog feeds model selection in generate_image_lab or quote_image_lab — leaving the tool adequately described but not well placed in the workflow.

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

Parameters4/5

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

The tool takes zero parameters, which is the baseline-4 case. Schema description coverage is 100% and there is nothing for the description to disambiguate, so no penalty is warranted.

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 first sentence gives a specific verb and resource ("List Image Lab models, modes, and aspect ratios") and the name plus resource scope cleanly separates it from list_image_lab_generations, which lists past runs rather than the catalog. The "Same catalog as /image-lab" aside is a routing note, not purpose, and the rest of the text is content enumeration rather than further purpose definition.

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 statement of when to call this versus alternatives, even though the sibling set contains obvious consumers (generate_image_lab, quote_image_lab, list_image_lab_generations). The only contextual hint is "Same catalog as /image-lab," which implies equivalence but never says the tool should be called to discover valid model identifiers before generating or quoting.

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

list_last_frame_gamesA
Read-only
Inspect

List Last Frame games (Adventure, Heist, Tape, and the rest).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
gamesNoLast Frame games (slug, name, playable, tagline).

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so no safety contradiction exists. The description adds a small scoping detail (which game categories are included) but does not describe response shape, pagination, or any other runtime behavior; with annotations present, this is adequate but not rich.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. Every word earns its place: it states the action, resource, and scope categories.

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 zero parameters, read-only annotations, and an output schema present, the description is nearly complete for a simple list operation. The main gap is the lack of sibling differentiation, but that is already penalized under usage guidelines and does not make the tool uncallable.

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

Parameters4/5

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

The tool has zero parameters and schema coverage is 100%, so the baseline is 4. There is no parameter information the description needs to add; the only possible improvement would be naming the exact game categories, but that is not a parameter concern.

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 a specific verb and resource ('List Last Frame games') and gives concrete examples ('Adventure, Heist, Tape'), which is clear. It does not explicitly contrast with sibling tools like list_last_frame_worlds, and 'and the rest' is imprecise, so it stops short of full sibling differentiation.

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 or alternative guidance is provided. The many list_* siblings (list_last_frame_worlds, list_library) mean an agent has no explicit basis for choosing this tool over them, despite the name being somewhat self-explanatory.

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

list_last_frame_worldsB
Read-only
Inspect

List Last Frame catalog worlds/maps.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
themesNoCatalog worlds/maps you can film.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds a small useful nuance by stating the data source is the 'catalog,' implying curated/pre-made content rather than arbitrary user data. This adds modest context but does not go further into behaviors like ordering or limits, which is acceptable for a 0-parameter list tool.

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

Conciseness5/5

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

A single five-word sentence with zero filler. The verb is front-loaded and every word ('List', 'Last Frame catalog', 'worlds/maps') carries meaning. No redundancy with the schema or annotations.

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 0-parameter read-only tool with an output schema, the description is mostly sufficient: safety is covered by annotations, return values are covered by the output schema, and the purpose is stated. The clear gap is the lack of differentiation from list_last_frame_games, which is a plausible source of agent confusion given the otherwise minimal context.

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

Parameters4/5

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

The input schema is an empty object with zero parameters, so there is no parameter documentation burden. Per the rubric, 0 parameters earns a baseline of 4; the description has nothing to compensate for since there is nothing to document.

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 uses a specific verb ('List') and a recognizable resource ('Last Frame catalog worlds/maps'), so an agent can tell what the tool returns. However, it does not explicitly differentiate itself from the closely-related sibling list_last_frame_games, leaving the distinction to name inference.

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 guidance on when to use this tool versus alternatives like list_last_frame_games, list_library, or list_public_products. With 70+ siblings and several other list_* tools, the description gives the agent no explicit selection criteria or exclusions.

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

list_libraryB
Read-only
Inspect

List clips in the library.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoLibrary page to list (1-based, 12 clips per page). Defaults to 1.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageNoLibrary page you requested (1-based, 12 clips per page).
clipsNoOwned library clips on this page.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear, and the word 'List' is consistent. The description adds little behavioral context beyond that, such as pagination behavior, but pagination is already documented in the page parameter schema.

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

Conciseness4/5

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

The description is a single clear sentence with no filler, and the key action/object are front-loaded. It sacrifices some context about what 'library' means, but it is not verbose.

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 read-only paginated listing with a single optional parameter, an output schema, and safety annotations, the description plus schema covers what is needed to invoke it. The only gap is the ambiguous meaning of 'library' and the lack of any routing guidance against sibling list tools.

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

Parameters3/5

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

Schema description coverage is 100%, and the sole page parameter is fully described with type, 1-based indexing, 12-per-page, and default. Since the schema carries the full parameter semantics, the description needs no additional parameter explanation.

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 uses a specific verb and resource, 'List clips in the library', so an agent can tell it is a read-only listing operation. It does not explicitly distinguish itself from the many sibling list_* tools, but 'clips' and 'library' provide a concrete object that is not present in siblings like list_ad_generations or list_video_lab_generations.

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

Usage Guidelines2/5

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

The description gives no guidance on when to choose this tool over the many list_* siblings, and it names no alternatives or exclusions. An agent must infer that 'library clips' is the intended case.

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

list_paint_lab_generationsA
Read-only
Inspect

List this account’s Paint Lab AI results, newest first. Refreshes in-flight jobs. Does not charge.

ParametersJSON Schema
NameRequiredDescriptionDefault
opNoOptional AI action filter.
limitNoMaximum results to return (default 20, max 50).
cursorNonextCursor from the previous page.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nextCursorNoPass as cursor for the next page. Omitted on the last page.
generationsNoThis account’s Paint Lab results, newest first (same shape as get_paint_lab_generation).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint=false, and openWorldHint=false. The description adds valuable context beyond that: it refreshes in-flight jobs and does not charge. These are useful behavioral traits, though the 'refreshes' side-effect wording sits slightly awkwardly with readOnlyHint (not a full contradiction).

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

Conciseness5/5

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

Three short, front-loaded sentences with zero waste. The primary purpose and behavioral caveats are presented efficiently.

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 an output schema, full parameter descriptions, and rich annotations, the description is complete enough for selection and invocation. It covers purpose, ordering, refresh behavior, and cost, leaving only minor usage-competition details to inference.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents op, limit, and cursor. The description adds no parameter-specific meaning beyond what the schema provides, making the baseline 3 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 a specific verb ('List'), resource ('Paint Lab AI results'), scope ('this account's'), and ordering ('newest first'). Clearly distinguishes from get_paint_lab_generation (singular) and other list_* siblings by its resource.

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 by the listing description, but no explicit when-to-use guidance or alternative tools are named. The 'Refreshes in-flight jobs' line hints at a reason to call, but it doesn't say when to prefer this over get_paint_lab_generation or other siblings.

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

list_paint_lab_stylesA
Read-only
Inspect

List Paint Lab AI actions (finish, edit, fill, colorize, upscale, remove_background), which ones need a prompt, a mask, or line art, plus finish styles, qualities, variation counts, upscale factors, and size limits. Same catalog as /paint-lab. The drawing canvas is on the website.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
opsNoAI actions with needsPrompt, needsMask, needsInk (line art), qualities, variation counts, and upscale factors.
canvasNoWhere the drawing canvas lives (the website).
inputsNoHow to send images: presign_generation_asset then complete_generation_asset; mask white = fill.
limitsNoSize and prompt limits for AI actions.
stylesNoFinish styles (id, label).
defaultsNoDefault action and style.
qualitiesNoQuality tiers (fast, best).

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered without the description. The description usefully adds that this is a static spec catalog (not user data) and what the catalog contains, but says nothing about auth, rate limits, or freshness of the catalog, which is the residual burden for a zero-parameter read tool.

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

Conciseness4/5

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

Front-loaded with the verb and the catalog contents, with no preamble or filler. The trailing fragment 'The drawing canvas is on the website' is marginally useful (it tells the agent no canvas tool exists) but is the weakest sentence and slightly dilutes an otherwise tight definition.

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 an output schema present, return values need no explanation, and annotations carry the safety profile; the description fills the remaining job of saying what the catalog enumerates. The one gap is that it does not disambiguate itself from the similarly named list_paint_lab_trained_styles / list_paint_lab_generations siblings.

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

Parameters4/5

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

The tool takes no parameters, so the baseline is 4 per the rubric. The description neither needs nor attempts to explain parameter semantics, and there is nothing in the schema for it to duplicate or contradict.

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 ('List') and a precisely enumerated resource ('Paint Lab AI actions… finish styles, qualities, variation counts, upscale factors, size limits'). The enumeration of catalog contents lets an agent distinguish it from data-listing siblings like list_paint_lab_generations or list_paint_lab_trained_styles without opening the schema, though it never states that distinction explicitly.

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 only implied: an agent can infer this is the discovery call for 'what can Paint Lab do and what inputs does each action need', but there is no explicit when-to-use, when-not-to-use, or naming of the alternative catalogs (e.g. list_paint_lab_trained_styles). 'Same catalog as /paint-lab' is a pointer to a UI route, not routing guidance for the agent.

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

list_paint_lab_trained_stylesA
Read-only
Inspect

List this account’s trained Paint Lab styles, newest first: id, name, status (submitting, queued, training, ready, failed), and drawing count. Refreshes styles still training. Failed trainings are included; deleted ones are not. Does not charge.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
stylesNoYour trained styles, newest first (same shape as get_paint_lab_trained_style).

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnly/destructive annotations, it discloses real runtime behavior: newest-first ordering, that still-training entries are refreshed on read, that failed trainings appear while deleted ones do not, and that the call costs nothing. These are exactly the traits an agent needs and cannot infer from annotations.

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

Conciseness5/5

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

Three tight sentences, front-loaded with purpose and scope, then the field list, then the inclusion/exclusion and cost rules. 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?

With an output schema present and no parameters, the description needs only to convey scope, ordering, filtering rules, and cost, all of which it covers. Nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

There are zero parameters, so there is nothing for the description to disambiguate; the baseline is 4. It even goes slightly beyond by describing output fields, though the output schema already carries that.

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

Purpose5/5

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

States a specific verb ('List') and resource ('this account's trained Paint Lab styles'), and the word 'trained' distinguishes it from the sibling list_paint_lab_styles that enumerates base styles. It also enumerates the exact fields returned, so an agent knows precisely what it gets.

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 scope ('this account's', 'trained') implies when it applies, but the description never names an alternative or a when-not condition (e.g. use get_paint_lab_trained_style for a single style). Usage is only implied, which is the definition of a 3.

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

list_public_generationsA
Read-only
Inspect

List public published generations. Optional kind, model, and limit filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoOptional product kind filter (topic_short, video_lab, story, talking_short, ad_studio, character_film, and other public kinds).
limitNoMaximum number of public pages to return.
modelNoOptional model slug filter for Video Lab or Image Lab publications.

Output Schema

ParametersJSON Schema
NameRequiredDescription
publicationsNoLive public generations.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is known. The description adds the 'public published' scope, which is useful context beyond annotations. However, it does not disclose pagination, sorting, or any response format details, though the output schema likely covers some of that.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the action and scope, followed by a list of filters. There is no wasted words or redundant details.

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 read-only list tool with an output schema and full parameter documentation, the description is largely sufficient. It clearly states the resource and available filters. The only gap is lack of explicit differentiation from sibling list tools, but that is already addressed in purpose clarity. Overall, an agent can call this tool correctly with the given information.

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 all three parameters (kind, model, limit) are fully documented in the schema. The description merely lists them without adding syntax, defaults, or examples, so it provides no extra value beyond what the schema already offers.

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

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'public published generations', which distinguishes it from sibling tools like get_public_generation (singular) and list_public_products. It also implies a broad scope across all generation types, setting it apart from type-specific lists like list_ad_generations.

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 gives context by specifying 'public published generations' but does not explicitly contrast with alternatives. It neither states when to use this over type-specific list tools nor excludes private generations. Since many sibling list tools exist, more explicit routing would be helpful, but the description is not misleading.

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

list_public_productsA
Read-only
Inspect

List Clip Studio public products an agent can use through this MCP server.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolsNoEnabled tools with name, product, whether they consume allowance, and description.
productsNoPublic Clip Studio products this server wraps.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the useful scoping details that these are 'public products' and 'an agent can use' them, which goes beyond the annotations, but it does not disclose additional behavior such as pagination, rate limits, or result ordering. With annotation coverage already strong, a 3 is appropriate.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It immediately names the action and resource, making it easy for an agent to parse and act on.

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 no-parameter, read-only listing tool with an output schema present, the description is complete enough. It identifies exactly what will be listed and the availability scope; the output schema can carry the return-value details.

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

Parameters4/5

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

The input schema has zero parameters slash schema coverage is effectively 100% through its empty schema. The baseline of 4 for zero-parameter tools applies, and the description does not need to document parameter semantics.

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

Purpose4/5

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

The description states a specific verb and resource: 'List Clip Studio public products an agent can use through this MCP server.' It clearly distinguishes the scope as 'public products' available via this server, but it does not explicitly differentiate itself from similar list-style siblings like list_free_tools or list_library.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention any exclusions, prerequisites, or situations where a sibling tool should be preferred. The only implied context is that this lists agent-usable public products, but no alternative routing is provided.

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

list_storyboard_themesA
Read-only
Inspect

List Story visual themes. The chosen theme carries across parts when you continue my story on the same project.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
themesNoStory visual themes (id, name, description).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark the tool as read-only and non-destructive. The description adds a useful behavioral fact beyond annotations: the chosen theme carries across parts when continuing a story on the same project. No contradiction exists.

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

Conciseness5/5

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

Two sentences, front-loaded with the action verb and resource, and the second sentence contributes meaningful persistence context without padding. No wasted words.

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

Completeness5/5

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

For a zero-parameter, read-only list tool with an output schema available, the description covers the purpose and the one subtle behavioral aspect (persistence). Nothing essential is missing.

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

Parameters4/5

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

The tool has zero parameters and the schema fully documents that fact with 100% coverage, so there is no parameter detail missing. The description does not need to add parameter semantics.

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

Purpose5/5

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

The description states a specific verb ('List') and resource ('Story visual themes'), and the second sentence clarifies how themes function in the workflow. This distinguishes it from sibling tools like list_storyboard_voices by the 'visual themes' scope.

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 this tool is for retrieving available visual themes, but it does not explicitly state when to use it over alternative tools or any exclusions. The persistence note provides useful context but does not offer direct usage guidance.

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

list_storyboard_voicesA
Read-only
Inspect

List Story narration voices with accent and locale. Same catalog as Audio Lab. The chosen voice carries across parts when you continue my story.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
voicesNoStory narration voices (id, name, accent, locale).

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is established. The description adds useful behavioral context by noting 'the chosen voice carries across parts when you continue my story,' which hints at persistent selection state beyond a simple read-only list. This goes beyond what the annotations alone provide.

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

Conciseness5/5

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

The description is three short sentences with no filler. It front-loads the core purpose, then provides the Audio Lab catalog relationship and the persistence behavior, all of which are relevant and likely to help an agent select and invoke the tool correctly.

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

Completeness5/5

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

For a zero-parameter, read-only listing tool with an output schema, the description is complete. It names the resource, distinguishes the catalog context, and explains a relevant behavioral nuance. There are no missing details that would prevent correct invocation.

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

Parameters4/5

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

The input schema has no parameters, so the baseline is 4. The description adds meaning by indicating the returned voices include accent and locale details, and the output schema is present to cover return structure. There is no parameter documentation burden to satisfy.

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

Purpose4/5

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

The description states a specific verb and resource: 'List Story narration voices with accent and locale.' It is clear that this tool lists voices for Story narration, which distinguishes it from sibling tools like list_talking_short_actors and list_storyboard_themes. However, it does not explicitly differentiate itself from list_audio_lab_voices beyond saying 'Same catalog as Audio Lab,' which leaves some ambiguity about when one is preferred over the other.

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 that this tool is for Story narration voice listings and notes the relationship to Audio Lab, but it does not explicitly state when to use this tool instead of list_audio_lab_voices or other voice-related tools. There is enough context for basic selection but no explicit exclusions or alternative routing.

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

list_talking_short_actorsA
Read-only
Inspect

List Talking Shorts catalog stills. Does not render.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
actorsNoCatalog creators (id, name, imageUrl).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish the read-only, non-destructive profile, so the bar is low. The description adds a useful behavioral detail—this listing does not trigger rendering—and makes clear the result is stills from the catalog, not a rendered video.

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

Conciseness5/5

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

Two short sentences, both substantive; no redundant filler. The front-loaded purpose is immediately followed by a useful constraint.

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 parameterless read-only list with an output schema, the description covers the essential purpose and non-rendering behavior. It is slightly incomplete in resolving the actors/stills terminology and providing no sibling guidance, but nothing required to invoke it is missing.

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

Parameters4/5

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

The input schema has zero parameters, so the baseline is 4. There is nothing for the description to add, and it rightly omits parameter detail.

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 a specific operation ('List ... catalog stills') and adds a clarifying negative ('Does not render'), which sets it apart from rendering-related siblings. However, it never explicitly says 'actors,' so the resource being listed is slightly ambiguous against the tool name.

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 guidance is given for when to choose this tool over its many sibling list/get/research tools. 'Does not render' only forecloses rendering use cases; it does not name alternatives or selection conditions.

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

list_topic_short_stylesA
Read-only
Inspect

List your saved Topic Short styles and the series built on them. Free.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
seriesNoYour active series (id, name, niche, styleId, styleName, episode counts by status).
stylesNoYour saved styles, newest first (id, name, recipe, introLine, outroLine).

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds two useful pieces of context beyond the annotations: the operation is free, and the payload includes series built on each style. It does not disclose return format or pagination, which keeps it at a modest 3.

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

Conciseness5/5

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

Two short, front-loaded sentences with no filler. The core action leads and the cost note trails as a compact fragment—every word earns its place.

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 an output schema present, return values need no explanation, and with no parameters and read-only annotations the definition is nearly self-sufficient. The only mild gap is the absence of guidance on how this list relates to the save/edit siblings.

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter semantics for the description to explain; the baseline of 4 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 (List) and resource (your saved Topic Short styles), and adds a distinguishing detail—that each style's associated series is included. It does not explicitly name how it differs from siblings like save_topic_short_style or list_topic_short_voice_clones, 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 Guidelines2/5

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

The description offers no when-to-use or when-not-to-use guidance. 'Free' signals cost (no credits consumed) but does not tell the agent when to prefer this over save_topic_short_style or other list_* siblings.

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

list_topic_short_voice_clonesA
Read-only
Inspect

List your cloned narration voices and whether this account can use them. Pass a ready clone id as voiceCloneId to quote_topic_short and generate_topic_short. Read-only: enrolling a clone needs a voice recording and consent, so it is done on the web in the Topic Shorts workspace. Voice clones need an active plan. A short narrated by a clone carries an AI-voice disclosure.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
clonesNoYour cloned voices (id, name, status, disclosure, failureCode, createdAt). disclosure true means shorts narrated with it carry the AI-voice disclosure. Pass a ready id as voiceCloneId to quote_topic_short and generate_topic_short.
limitsNoClone limits: maxPerUser and the recording length bounds used on the website.
entitledNoTrue when this account can use cloned voices (a paid plan).

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only declare it is a safe read (readOnlyHint=true, destructiveHint=false, openWorldHint=false); the description adds substantive context beyond that — enrollment requires a voice recording and consent and happens on the web, clones require an active plan, and outputs carry an AI-voice disclosure.

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

Conciseness5/5

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

Four sentences, no filler, and front-loaded: what it lists, what to do with the result, then the constraints (read-only enrollment, plan requirement, disclosure). Each sentence carries distinct operational information.

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?

An output schema exists, so return-value documentation is not needed. What an agent needs beyond that — eligibility gating, the enrollment path, and where the returned ids go next — is all present.

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

Parameters4/5

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

Zero input parameters, so the baseline is 4. The description does add meaning by naming 'voiceCloneId' as the identifier these voices produce and consume elsewhere, which is not visible in the empty input schema.

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

Purpose5/5

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

States a specific verb+resource ('List your cloned narration voices') plus the qualifying dimension it returns ('whether this account can use them'). That distinguishes it from the adjacent listing tools in the same family (list_topic_short_styles, list_storyboard_voices, list_audio_lab_voices), which cover different resource types.

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 prescribes the downstream action: 'Pass a ready clone id as voiceCloneId to quote_topic_short and generate_topic_short.' It also states the condition under which this tool yields nothing actionable (no active plan) and redirects enrollment to the web workspace, so the agent knows what this tool cannot do.

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

list_video_lab_generationsA
Read-only
Inspect

List this account’s Video Lab generations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
generationsNoThis account’s jobs for this product, newest first.

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds a useful scoping behavior ('this account’s') but does not discuss pagination, ordering, or other response-related behaviors; the output schema covers the return shape.

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 filler. Every word contributes to identifying the operation and its scope.

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

Completeness5/5

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

For a zero-parameter read-only list tool with an output schema and safety annotations, this description is complete. It clearly identifies the resource and account scope, and no additional details are necessary for correct invocation.

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

Parameters4/5

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

The tool has zero parameters)Skip. According to the rubric, a tool with 0 params receives a baseline 4. The description adds no parameter-level detail, but none is needed.

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

Purpose5/5

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

The description uses a specific verb ('List') with a clear resource ('this account’s Video Lab generations'). The account scope distinguishes it from public-generation list siblings, and the resource scope distinguishes it from list_video_lab_models.

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

Usage Guidelines4/5

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

The phrase 'this account’s' provides clear context: use this tool for the authenticated account's own Video Lab generations, not public generations. It does not explicitly exclude alternatives like get_video_lab_generation for a single item, so it stops short of a 5.

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

list_video_lab_modelsA
Read-only
Inspect

List Video Lab models, modes, and defaults. Same catalog as /video-lab.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
modelsNoPublic catalog entries (slug, modes, defaults).

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already cover the read-only, non-destructive safety profile. The description does not contradict them and adds modest context by equating the catalog to /video-lab, but it does not describe any output behavior or edge cases. With annotations carrying the burden, this is adequate but not enriched.

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

Conciseness5/5

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

Two sentences, front-loaded with the core action and content. No filler; the '/video-lab' note is the only supporting detail.

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 parameterless read-only list with an output schema, the description supplies the essential purpose and an equivalence anchor. Nothing needed to invoke the tool is missing.

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

Parameters4/5

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

Input schema has zero parameters, so there is no semantic burden on the description. Baseline 4 applies; the description does not need to explain parameter syntax or meaning.

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

Purpose5/5

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

States a specific verb ('List'), a resource ('Video Lab models, modes, and defaults'), and scope. The 'Video Lab' qualifier distinguishes it from sibling catalog tools like list_image_lab_models and list_audio_lab_voices.

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 when the agent needs the Video Lab catalog, but it does not state when to prefer this tool over related list_* tools or provide exclusions. 'Same catalog as /video-lab' offers continuity but no alternative routing, so guidance is only implicit.

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

plan_character_filmA
Read-only
Inspect

Plan a Character Film: pick a narrator, type a topic, and get a full-length block script saved as a project. Film scripts are directed by Anthropic’s Claude Opus 5.5. Does not render or charge. Next: generate_character_film for the opening, then continue_character_film for the rest.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesWhat the narrator should explain. One topic, one film.
lookIdNoIgnored. The narrator’s fixed look is used. Kept so older agents that still send lookId do not hard-fail.
voiceIdNoIgnored. The narrator’s fixed voice is used. Kept so older agents that still send voiceId do not hard-fail.
narratorIdYesNarrator id from list_character_film_catalog. The narrator is the whole character: its look and voice are used; there is no separate look or voice choice.
aspectRatioNoFrame size. 16:9 landscape (default) or 9:16 vertical.16:9
lengthSecondsYesFull film length in seconds (30, 60, 120, or 180). The opening (block 1, at most 8 seconds) renders first; continue_character_film films the rest.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleNoPlanned film title.
topicNoTopic this film explains.
blocksNoOrdered script blocks. Block 1 is the opening (at most 8 seconds).
lookIdNoLook id locked on this project.
videoIdNoLibrary clip id for this job, when one exists.
voiceIdNoVoice id locked on this project.
createdAtNoISO timestamp when this project was created.
projectIdYesProject id. Pass this to quote_character_film, generate_character_film, continue_character_film, and get_character_film.
narratorIdNoNarrator id locked on this project.
aspectRatioNoFrame size, 16:9 or 9:16.
totalSecondsNoSum of block durations in seconds.
lengthSecondsNoFull planned film length in seconds.
openingSecondsNoDuration of block 1, at most 8 seconds.
narratorSheetUrlNoNarrator model-sheet still once the first render has drawn it, or null.

TDQS

A3.5/5.0
Behavior1/5

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

The description states the call results in a script 'saved as a project', i.e. a persisted server-side artifact, while the annotations declare readOnlyHint=true. This is the same class of inconsistency as a 'creates/records' description paired with a read-only hint; the extra disclosures about no rendering/charging and the directing model are useful but do not resolve the conflict.

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: purpose first, behavioral constraints (no render/charge) second, routing third. Nothing is padded, though the Claude Opus 5.5 attribution is flavor more than actionable guidance.

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 an output schema present, return values need not be explained, and the description covers what is produced, its persistence, that nothing renders or bills, and the follow-up tool sequence. The main omissions are the dependency on list_character_film_catalog for narratorId and any statement about whether the plan is reused or replaced on repeat calls.

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%, including semantics for the deliberately ignored lookId/voiceId and the narrator-as-whole-character rule, so the schema already carries parameter meaning. The description only restates the inputs at a high level ('pick a narrator, type a topic') and adds nothing about length or aspect choices, which is the expected baseline when the schema does the heavy lifting.

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

Purpose5/5

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

States a concrete verb+resource (plan a Character Film) plus the concrete output (a full-length block script saved as a project) and the inputs involved (narrator, topic). It also explicitly separates itself from the render siblings by noting it 'Does not render or charge' and naming generate_character_film and continue_character_film as the later stages.

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 explicit sequencing: this tool first, then generate_character_film for the opening, then continue_character_film for the remainder, and 'Does not render or charge' signals when this cheap step is appropriate. It stops short of stating prerequisites (e.g. that the narrator id must come from list_character_film_catalog) or an explicit 'do not call this if you already have a script' exclusion.

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

presign_generation_assetA
Read-only
Inspect

Create an upload slot for a Video Lab, Image Lab, or Paint Lab source image (or a Video Lab MP4). Then complete_generation_asset.

ParametersJSON Schema
NameRequiredDescriptionDefault
byteSizeNoFile size in bytes. Images up to 20 MB; MP4 sources up to 50 MB.
filenameYesOriginal filename, including extension (for example product.jpg or clip.mp4).
contentTypeYesMIME type: image/jpeg, image/png, image/webp, or video/mp4 for an edit_video source clip.

Output Schema

ParametersJSON Schema
NameRequiredDescription
assetYesAsset descriptor (id, status, content type). Use asset.id with complete_generation_asset.
uploadNoPresigned upload target (URL and headers) for the source file.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, covering the safety profile. The description adds the follow-up step and asset scope but no additional behavioral details like slot expiration, auth needs, or upload mechanics.

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

Conciseness5/5

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

Two short sentences with no waste; the purpose is front-loaded and the follow-up action is clearly placed. Every sentence earns its place.

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?

With an output schema and full parameter coverage, the description needn't explain return values. It covers the basic purpose and next step, but leaves gaps about how the upload slot works and how it relates to the broader generation workflow.

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 parameters are fully documented in the schema. The description adds no syntax or format details beyond what the schema provides, making the baseline 3 appropriate.

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

Purpose4/5

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

The description states a specific verb ('Create an upload slot') and resource ('source image or Video Lab MP4') for named labs. It differentiates from generation siblings by targeting source uploads rather than generation, though it does not explicitly contrast 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 Guidelines3/5

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

It implies usage by naming the labs and asset types, and it provides a next-step instruction ('Then complete_generation_asset'). However, it gives no explicit when-to-use vs alternatives, no prerequisites, and no exclusions.

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

publish_generationB
Read-only
Inspect

Publish a completed library generation to a public page. Does not use extra allowance.

ParametersJSON Schema
NameRequiredDescriptionDefault
clipIdYesCompleted library clip id to publish at /p/{id}.

Output Schema

ParametersJSON Schema
NameRequiredDescription
publicationNoPublic page record at /p/{id}.

TDQS

B3.3/5.0
Behavior2/5

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

Annotations declare readOnlyHint=true and destructiveHint=false, but the description says 'Publish' which implies a mutating action. This is a potential contradiction: publishing likely creates a public page, which is not read-only. The description also lacks details such as idempotency, whether it can be undone (though unpublish exists), or the resulting URL format beyond the schema's '/p/{id}'. Given the mutation implication, the description does not add sufficient transparency and may even conflict with annotations.

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

Conciseness5/5

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

The description is a single, concise sentence that states the purpose and a key behavioral note. It is front-loaded with the core purpose and the extra clause caps it off without waste. Ideal length for this 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?

Given the tool's simplicity (one parameter, no enums) and that an output schema exists, the description is reasonably complete. However, it lacks clarity on whether publishing is reversible or what the exact outcome is (e.g., updating an existing page). The sibling unpublish_generation implies reversibility but is not mentioned. For a publishing action, a bit more context would be helpful.

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 clipId parameter is fully documented in the input schema. The description adds no extra semantic meaning about the parameter beyond what the schema provides. Per the rubric, baseline of 3 is appropriate when schema covers parameters well.

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

Purpose4/5

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

The description clearly states the verb 'Publish' and the resource 'completed library generation', which is specific enough. It also adds a distinguishing detail ('Does not use extra allowance') that hints at a difference from other publish/quote tools, though it doesn't explicitly name a sibling. Given the large sibling list, some differentiation is helpful but could be stronger.

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 the tool is for publishing completed generations and mentions it doesn't use extra allowance, which suggests when to use it (when no extra allowance is desired). However, it does not explicitly state when NOT to use it or mention alternatives like unpublish_generation or other publishing tools. The clear context is there, but exclusions are missing.

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

queue_topic_short_episodesA
Read-only
Inspect

Fill a Topic Short series episode queue. Add your own episodes, approve or skip proposed ones, and by default propose new episode angles that do not repeat earlier ones. Make an approved episode by passing its id as seriesEpisodeId to quote_topic_short and generate_topic_short. Does not render. Free.

ParametersJSON Schema
NameRequiredDescriptionDefault
proposeNoPropose new episode angles after the changes above. Default true.
episodesNoEpisodes to add, each approved.
seriesIdYesSeries id from create_topic_short_series.
skipEpisodeIdsNoProposed episode ids to skip.
approveEpisodeIdsNoProposed episode ids to approve.

Output Schema

ParametersJSON Schema
NameRequiredDescription
seriesYesThe series after this change, with episodes (id, title, angle, status, generationId, videoId). Pass an approved episode id as seriesEpisodeId to quote_topic_short and generate_topic_short.

TDQS

A3.5/5.0
Behavior1/5

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

The description explicitly describes write operations — 'Fill a queue', 'Add your own episodes', 'approve or skip', 'propose new episode angles' — while annotations declare readOnlyHint=true. That is a direct inconsistency between the stated behavior and the structured safety profile, exactly the contradiction class flagged in the rubric. Useful extras ('Does not render', 'Free') do not offset the contradiction.

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, front-loaded with the core action and ending with the two constraints an agent most needs ('Does not render. Free.'). Dense and free of filler, though the compound opening sentence packs three operations together that could be split for scanability.

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?

An output schema exists, so return values need not be explained, and the schema covers all five parameters. The description supplies the workflow position (queue -> quote -> generate) and the cost/render caveats. The one unresolved item is the mutation semantics, which the annotations actively misstate.

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 (propose, episodes, seriesId, skipEpisodeIds, approveEpisodeIds) is already documented with defaults and limits. The description restates the propose default and the role of episode ids without adding format or constraint detail beyond the schema, which is the baseline case.

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?

Names a specific verb and resource ('Fill a Topic Short series episode queue') and enumerates the three operations available: add, approve/skip, propose. It goes further by distinguishing itself from the downstream siblings quote_topic_short and generate_topic_short, so an agent can place it correctly in the series workflow 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 clear context ('Add your own episodes, approve or skip proposed ones') and an explicit handoff: 'Make an approved episode by passing its id as seriesEpisodeId to quote_topic_short and generate_topic_short.' It also states the default propose behavior. It stops short of stating exclusions or prerequisites (e.g., that a series must exist first), so it is strong but not exhaustive.

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

quote_adA
Read-only
Inspect

Quote an Ad Lab layout. Does not generate.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoHow many stills to quote. Optional; defaults to the product default.
layoutNoStill aspect: 9:16, 1:1, 4:5, or 16:9.
companyIdYesAd Lab company id from import_ad_website.

Output Schema

ParametersJSON Schema
NameRequiredDescription
imageCountNoNumber of stills this quote covers.
requiredCreditsNoUsage this quote would consume from this month’s generation allowance (internal units).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds a non-obvious behavioral limitation: this tool produces a quote, not a generated asset. That 'Does not generate' caveat is useful context beyond the safety annotations and does not contradict them.

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

Conciseness5/5

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

Two short sentences with no waste. The first sentence front-loads the action and resource, and the second sentence earns its place by dispelling a likely generation expectation. Nothing is redundant with the schema or annotations.

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?

Strong structured context—100% schema coverage, an output schema, and read-only annotations—makes the sparse description adequate for invoking the API call correctly. However, the description leaves the meaning of 'quote' and the relationship to the quote_ad_explain/studio/proof_pack/tip_pack siblings implicit, which is a notable gap given the large sibling cluster.

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

Parameters3/5

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

The input schema covers 100% of the parameters, including the meaning of count, the valid layout aspects, and the companyId provenance from import_ad_website. The description adds no parameter-level detail beyond the schema, so the baseline score 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 uses a specific verb ('Quote') and a specific resource ('Ad Lab layout') and adds a scope limitation ('Does not generate') that separates it from the generate_ad family. However, it does not differentiate among the many quote_ad_* siblings such as quote_ad_explain, quote_ad_proof_pack, quote_ad_studio, and quote_ad_tip_pack, so the agent must rely on the tool name for that distinction.

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 the tool is for quoting Ad Lab layouts, and the 'Does not generate' clause gives a when-not signal that should steer agents toward generate_ad for actual generation. It does not explicitly name alternatives or specify when to choose quote_ad over its quote_ad_* siblings, so routing guidance is mostly implied rather than stated.

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

quote_ad_explainA
Read-only
Inspect

Quote an Ad Lab Explain film. Does not generate. Pass hasStyleRef true when a style still is included.

ParametersJSON Schema
NameRequiredDescriptionDefault
hasStyleRefNoTrue when a style still will be included on generate_ad_explain.

Output Schema

ParametersJSON Schema
NameRequiredDescription
i2vModelNoImage-to-video model used for this film.
sceneCountNoNumber of scenes in the Explain film.
aspectRatioNoExplain film aspect ratio.
clipSecondsNoQuoted film length in seconds.
hasStyleRefNoTrue when a style still was included in the quote.
requiredCreditsNoUsage this quote would consume from this month’s generation allowance (internal units).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark the tool as readOnly and non-destructive, so the bar is lower. The description adds the specific behavioral point that this tool does not generate, and clarifies that the hasStyleRef flag relates to a future generation step. No contradiction with annotations exists.

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

Conciseness5/5

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

Two short sentences with no filler. The core action is stated first, the key exclusion is second, and the only parameter condition is included concisely.

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

Completeness5/5

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

For a single-optional-parameter read-only quote tool with an output schema and annotations, the description covers what the tool does, what it does not do, and when to set the lone parameter. 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%, so the schema already documents hasStyleRef. The description restates the condition in imperative form ('Pass hasStyleRef true...') but adds little beyond the schema's own description. Baseline 3 is appropriate since the description does not introduce new semantic meaning.

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

Purpose5/5

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

The description names a specific verb ('Quote') and resource ('Ad Lab Explain film'), and explicitly clarifies that it 'Does not generate.' This cleanly distinguishes it from the sibling generate_ad_explain and other generation tools without requiring schema inspection.

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

Usage Guidelines4/5

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

The description clearly communicates that this tool is not for generation, which implicitly tells an agent when not to use it. It also references generate_ad_explain in the parameter guidance, providing workflow context. It stops short of explicitly saying 'use generate_ad_explain when generation is needed,' but the guidance is sufficient.

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

quote_ad_proof_packA
Read-only
Inspect

Quote an Ad Lab Proof pack. Does not generate. Default 6 slides at 4:5: hook, in-the-life stills for the user’s niche, and a soft CTA. Pass hasScreenshot true when a product screenshot will be composited on the last slide.

ParametersJSON Schema
NameRequiredDescriptionDefault
briefNoOptional extra product or lifestyle context for the stills.
nicheNoAudience or niche this Proof pack is for (for example busy parents).
slideCountNoNumber of slides. Default 6.
hasScreenshotNoTrue when a product screenshot will be composited on the last slide.

Output Schema

ParametersJSON Schema
NameRequiredDescription
slideCountNoNumber of slides this quote covers.
hasScreenshotNoTrue when a product screenshot is included on the last slide.
requiredCreditsNoUsage this quote would consume from this month’s generation allowance (internal units).

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses concrete behavior: no generation occurs, the default output is 6 slides at 4:5, the slide structure is hook/in-the-life stills/soft CTA, and screenshot compositing is controlled by hasScreenshot. This meaningfully exceeds the annotation-only picture.

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

Conciseness5/5

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

Three short sentences with no filler. The core purpose and key exclusions come first, then defaults and parameter behavior. Every sentence adds necessary information.

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 read-only quoting tool with an output schema, the description covers what the tool does, what it does not do, default behavior, and the one parameter that materially changes output. An agent has enough to select and invoke it correctly.

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

Parameters4/5

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

The input schema already covers all parameters at 100%, so the baseline is 3. The description adds real value by specifying the default slide count, aspect ratio, slide composition, and tying niche to the stills content, which is more than incidental 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?

States a specific verb and resource: 'Quote an Ad Lab Proof pack.' The explicit 'Does not generate' immediately distinguishes it from the sibling generate_ad_proof_pack, so an agent can tell it apart without inspecting either 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?

The description clearly implies this tool is for quoting rather than generating, and 'Does not generate' is a useful exclusion. It also gives parameter-level guidance for hasScreenshot. However, it does not explicitly name an alternative such as generate_ad_proof_pack for the generation case.

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

quote_ad_studioA
Read-only
Inspect

Quote an Ad Studio job. Does not render. Uses the Talking Shorts generation curve. Catalog creators only.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoProduct page URL. Optional when brief is set.
beatsYesLocked 5-beat English script. Hook is the first 0–3s. Soft close is close.
briefNoShort product brief. Required even when a URL is set.
voiceNoNarration voice id from list_audio_lab_voices. Defaults to the product default voice.
familyYesAngle chip: Problem, Curiosity, Trust, or Niche.
actorIdYesTalking Shorts catalog creator id from list_talking_short_actors.
angleIdNoAngle id from research_ad_studio.
captionModeNoCurrent karaoke (workspace is Current only). off and hook remain accepted for API compatibility; hook burns as Current. Does not change the quote.current
captionsEnabledNoLegacy on/off. Prefer captionMode. false selects Off captions.
durationSecondsNoClip length in seconds. 15, 20, or 25. Default 15.
ugcFinishEnabledNoPhone-cam finish on the exported MP4. Defaults on. Does not change the quote.

Output Schema

ParametersJSON Schema
NameRequiredDescription
creditsNoUsage this quote would consume from this month’s generation allowance (internal units).
quoteIdYesQuote id. Pass this to the matching generate tool. Quotes expire.
expiresAtNoISO timestamp when this quote expires.
pricingVersionNoPricing version used for this quote.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds meaningful behavioral context beyond this: the tool does not render, uses the Talking Shorts pricing curve, and restricts to catalog creators. These are concrete traits an agent would not otherwise know.

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

Conciseness5/5

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

Three short sentences, each carrying distinct information: the action, a non-rendering exclusion, and two scoping constraints. No filler or restatement of schema details.

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

Completeness4/5

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

Given the output schema and 100% parameter schema coverage, the description does not need to explain return values or parameters. The key behavioral caveats — no render, Talking Shorts curve, catalog creators only — are present, making the definition adequate for correct invocation.

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 and enum. The description adds only one parameter-relevant constraint — catalog-creator-only actor IDs — which marginally reinforces the actorId schema text but does not compensate or add much beyond it.

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

Purpose5/5

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

Description opens with the specific verb 'Quote' targeting the Ad Studio resource, and immediately distinguishes itself from generation tools by adding 'Does not render.' The qualifiers 'Uses the Talking Shorts generation curve' and 'Catalog creators only' further transparently bound what the tool does.

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

Usage Guidelines4/5

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

The description gives clear contextual selection signals: it is a quoting (not rendering) operation for Ad Studio jobs, specific to Talking Shorts catalog creators. It does not explicitly name alternative quote tools like quote_ad or quote_talking_short, but the constraints provide enough guidance to route the call correctly.

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

quote_ad_tip_packA
Read-only
Inspect

Quote an Ad Lab tip pack. Does not generate. Default 6 slides at 4:5, each with a distinct topic-matched image. Optional 9:16. Set uniquePlates false to reuse one image across the pack.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoWhat this tip pack is about.
slideCountNoNumber of slides. Default 6.
aspectRatioNoPack aspect. Default 4:5. Optional 9:16.
uniquePlatesNoGenerate a distinct image for each slide. Set false to reuse one image across the pack. Use the same value when quoting and generating.

Output Schema

ParametersJSON Schema
NameRequiredDescription
slideCountNoNumber of slides this quote covers.
aspectRatioNoPack aspect ratio, usually 4:5 or 9:16.
uniquePlatesNoTrue when each slide gets its own image.
requiredCreditsNoUsage this quote would consume from this month’s generation allowance (internal units).

TDQS

A4.3/5.0
Behavior4/5

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

With readOnlyHint=true and destructiveHint=false, the safety profile is already covered by annotations. The description adds beyond that by clarifying the tool does not generate contentched and by documenting default behavior (6 slides at 4:5) and the uniquePlates reuse behavior. This gives the agent a clear picture of what the quote represents without contradicting the annotations.

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

Conciseness5/5

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

The description is compact and well-structured: a clear purpose statement, an important behavioral exclusion, then the key defaults and option behavior. Every sentence adds value and there is no padding or repetition of structured fields.

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

Completeness5/5

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

Given the output schema exists to document return valuesency and annotations cover safety behavior, the description is complete for selecting and invoking the tool. It explains defaults, aspect ratio options, uniquePlates behavior, and the no-generation guarantee. No critical operational detail is missing.

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

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 adds minor context by noting 'distinct topic-matched image' for slides and restating the default slide count and aspect ratio, but it does not meaningfully enrich parameter understanding beyond what the schema already provides.

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

Purpose5/5

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

The description begins with a specific verb ('Quote') and a precise resource ('Ad Lab tip pack'), making the tool's purpose immediately clear. The explicit statement 'Does not generate' distinguishes it from the generate_ad_tip_pack sibling and other generation tools, so an agent can select it correctly based on intent.

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

Usage Guidelines4/5

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

The context is clear: this tool is for quoting a tip pack, not generating one, and 'Does not generate' provides an explicit exclusion. However, it does not name an alternative tool or describe scenarios such as 'use generate_ad_tip_pack when you need actual assets,' so the guidance is good but not fully explicit.

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

quote_audio_labA
Read-only
Inspect

Quote an Audio Lab script. Does not generate or charge.

ParametersJSON Schema
NameRequiredDescriptionDefault
voiceNoClip Studio voice name from list_audio_lab_voices (for example Russ). Not the ElevenLabs voice_id. Defaults to the product default voice.
scriptYesNarration script to quote. 5,000 characters or fewer. Character count drives the quote.

Output Schema

ParametersJSON Schema
NameRequiredDescription
voiceNoClip Studio voice name this quote locked in.
quoteIdYesQuote id. Pass this to the matching generate tool. Quotes expire.
expiresAtNoISO timestamp when this quote expires.
characterCountNoScript character count used for the quote.
requiredCreditsNoUsage this quote would consume from this month’s generation allowance (internal units).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false. The description adds a billing guarantee ('does not charge') that annotations do not cover, which is genuinely valuable for an agent deciding whether it is safe to call this before committing to a generation.

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

Conciseness5/5

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

Two short sentences, fully front-loaded, with zero wasted words. The cost/scope constraint is stated immediately after the purpose.

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?

An output schema exists, so return values need not be described, and the two parameters are fully documented in the schema. Combined with clear read-only and no-charge framing, the definition is sufficient for correct invocation, though it could note whether the quote expires or how the price is returned.

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 voice and script parameters (including the 5,000-char limit and the list_audio_lab_voices reference) are already fully documented in the schema. The description adds no parameter detail beyond that 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?

States a specific verb (quote) and resource (Audio Lab script), and the negative clause 'Does not generate or charge' separates it from the sibling generate_audio_lab. It does not explicitly name that sibling, so it falls just short of 5.

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

Usage Guidelines3/5

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

'Does not generate or charge' implies this is the pre-generation pricing step, which is useful context, but no explicit when-to-use or alternative-naming guidance is given. Usage is inferred rather than stated.

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

quote_character_filmB
Read-only
Inspect

Quote a Character Film range. Does not render. range opening is block 1 (at most 8 seconds). range remaining is the rest of the planned film and follows the same plan as the site. Pass projectId from plan_character_film.

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeYesopening is the first block (at most 8 seconds). remaining is every later block. Continue this film uses remaining after the opening is completed.
projectIdYesProject id from plan_character_film.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rangeNoopening (block 1) or remaining (every later block).
creditsNoUsage this quote would consume from this month’s generation allowance (internal units).
quoteIdYesQuote id. Pass this to the matching generate tool. Quotes expire.
expiresAtNoISO timestamp when this quote expires.
projectIdNoProject this quote is for.
blockCountNoHow many blocks this quote covers.
resolutionNoOutput resolution (1080p).
aspectRatioNoFrame size locked on the project.
complimentaryNoAlways false for new quotes. The free film opening is retired.
pricingVersionNoPricing version used for this quote.
durationSecondsNoQuoted range duration in seconds.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds 'Does not render', which usefully confirms no compute/side effect, but the remaining range explanation largely restates the schema, and nothing is said about price persistence, expiry, or output shape.

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

Conciseness3/5

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

Short and front-loaded with the key 'does not render' caveat, but sentence fragments like 'range remaining is the rest of the planned film and follows the same plan as the site' are vague filler that an agent cannot act on.

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 an output schema present and two fully documented parameters, the description only needs to clarify purpose and prerequisite, which it does. A little more on quoting behavior (e.g. cost-per-range differences) would make it complete.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters carry their own descriptions, including the enum semantics for 'range'. The description's 'Pass projectId from plan_character_film' duplicates the schema text rather than adding format or constraint detail, 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 ('Quote') and resource ('Character Film range') and immediately scopes it with 'Does not render', which separates it from generation siblings like generate_character_film. It stops short of naming a sibling tool explicitly, but the quote/generate/plan distinction is inferable.

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 phrase 'Pass projectId from plan_character_film' implies the plan-then-quote prerequisite, and 'Does not render' hints at when to prefer this over generation. However it never states when a quote should be obtained versus calling generate_character_film directly, nor are alternatives named.

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

quote_image_labA
Read-only
Inspect

Quote an Image Lab still. Does not generate or charge. Paid generate needs this quote.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNotext_to_image or image_to_image. image_to_image needs sourceAssetIds. Same as inputMode.
promptYesWhat to draw. Up to 8,192 UTF-8 bytes.
inputModeNoSame as mode: text_to_image or image_to_image.
modelSlugYesImage Lab model slug from list_image_lab_models (gpt-image-2-5, nano-banana, nano-banana-2, nano-banana-2-1, nano-banana-pro, flux-2-pro, mai-image-2-5, mai-image-2-5-pro, seedream-5-lite, muse-image, grok-imagine-image-2, qwen-image-3, kling-image-o3, flux-3-image, ideogram-v4-5, seedream-5-flash, recraft-v4-1-flash).
aspectRatioNoStill aspect from list_image_lab_models for that slug (for example 16:9 or 9:16). Not every model lists every ratio.
sourceAssetIdsNoSource still asset ids from complete_generation_asset for image_to_image.
sourceImageAssetIdNoSource still generation-asset id for image_to_image. Same as sourceAssetIds[0].

Output Schema

ParametersJSON Schema
NameRequiredDescription
quoteIdYesQuote id. Pass this to the matching generate tool. Quotes expire.
expiresAtNoISO timestamp when this quote expires.
modelSlugNoCatalog model slug from the matching list_*_models tool.
normalizedInputNoNormalized Image Lab setup this quote locked in.
requiredCreditsNoUsage this quote would consume from this month’s generation allowance (internal units).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's real value-add is the cost and pipeline semantics: 'Does not generate or charge' clarifies it is a non-billing prerequisite. It does not disclose quote validity/expiry or how the returned quote is redeemed by the generate call.

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 short sentences with the verb and the no-charge constraint front-loaded; nothing is wasted. The clipped grammar ('Paid generate needs this quote') is efficient but slightly telegraphic, forcing the agent to infer the pipeline.

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 an output schema present and 100% schema coverage, return values and parameters are covered elsewhere, and annotations handle the safety profile. The remaining gap is downstream mechanics: nothing explains that the resulting quote must be supplied to generate_image_lab or how long it stays valid.

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 (mode, prompt, modelSlug, aspectRatio, sourceAssetIds) is already documented in the schema, including cross-references to list_image_lab_models and complete_generation_asset. The description adds no parameter meaning beyond that 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?

States a specific verb+resource ('Quote an Image Lab still') and immediately scopes it against the obvious sibling by declaring it 'Does not generate or charge,' which separates it from generate_image_lab. Strong, but it names no sibling tool explicitly.

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?

'Paid generate needs this quote' implies the precondition (obtain a quote before a paid image generation) but never states the alternative case, e.g. that free generations can skip it. Usage is inferable rather than stated.

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

quote_last_frameA
Read-only
Inspect

Quote a Last Frame opening or next shot. Does not film.

ParametersJSON Schema
NameRequiredDescriptionDefault
gameNoLast Frame game slug from list_last_frame_games (for example adventure, heist, tape).
themeKeyNoCatalog world key from list_last_frame_worlds. Required unless customWorld is set.
customWorldNoFree-text world to synthesize instead of a catalog themeKey.

Output Schema

ParametersJSON Schema
NameRequiredDescription
worldNoWorld that will be filmed if you start this quote.
creditsNoUsage this quote would consume from this month’s generation allowance (internal units).
quoteIdYesQuote id. Pass this to the matching generate tool. Quotes expire.
expiresAtNoISO timestamp when this quote expires.
perShotCreditsNoUsage for one filmed shot (internal units).
pricingVersionNoPricing version used for this quote.

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, so the description adds a small behavioral note ('Does not film') that clarifies the tool does not produce actual footage. It does not elaborate on output format, async behavior, or other side effects, but given the read-only annotation, the added context is modest.

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

Conciseness5/5

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

The description is two short sentences, front-loading the core purpose and then adding a key exclusion. Every word contributes, with no filler or redundancy.

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

Completeness4/5

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

Given the tool's simplicity (3 optional parameters, all documented in schema), the presence of a read-only annotation, and an output schema, the concise description is largely sufficient. It could mention the mutual exclusivity of themeKey and customWorld, but that is already covered in the schema, so the description is adequate.

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

Parameters3/5

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

All three parameters are fully described in the input schema (game, themeKey, customWorld), including the dependency between themeKey and customWorld. The description adds no parameter-specific information, so with 100% schema coverage, the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description names the specific action ('Quote') and resource ('Last Frame opening or next shot'), and explicitly states what it does not do ('Does not film'), distinguishing it from sibling filming tools like start_last_frame. This meets the standard of a specific verb+resource with sibling differentiation.

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 provides minimal usage guidance: it implies this is for quoting a Last Frame segment but does not explicitly state when to choose this over alternatives. The only exclusion is 'Does not film', which hints that filming is out of scope, but no positive routing to the appropriate sibling is given.

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

quote_paint_labA
Read-only
Inspect

Quote one Paint Lab AI action on an uploaded image. Does not generate or charge. Upload first with presign_generation_asset and complete_generation_asset. Returns quoteId, the job facts line, and the result size. Quotes expire after about 5 minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYesAI action: finish (finish a sketch, optional style), edit (edit with words; prompt required), fill (fill the white area of maskAssetId; prompt required), colorize (color line art without changing the lines; optional paletteHex), upscale (2× or 4×), or remove_background (cutout).
factorNoupscale only: 2 or 4 (default 2). The result must stay within 4096 × 4096.
qualityNofast or best. finish only (default best). Ignored for other actions.
variationsNoHow many results to make: 1, 2, or 4. finish, edit, and fill only (default 1). One quote covers every variation.
sourceAssetIdYesReady image generation-asset id from complete_generation_asset: the drawing to change. For colorize this is the line art (dark lines on a white background; transparency is not kept). The quote is sized from this image. The longest side must be 256–2048 px.
trainedStyleIdNofinish and edit only. Id of one of your ready trained styles from list_paint_lab_trained_styles. The result is made in that style, and the quote includes it. On generate_paint_lab with quoteId this is ignored: the quote already decides the style.

Output Schema

ParametersJSON Schema
NameRequiredDescription
opNoAI action this quote covers.
factsNoJob facts line for this quote (action · quality · size · variations).
widthNoSource width in px.
factorNoUpscale factor, when the action is upscale.
heightNoSource height in px.
qualityNoQuality tier this quote locked in, when the action has tiers.
quoteIdYesQuote id. Pass this to the matching generate tool. Quotes expire.
expiresAtNoISO timestamp when this quote expires.
variationsNoVariations this quote covers.
outputWidthNoResult width in px.
outputHeightNoResult height in px.
sourceAssetIdNoImage this quote was sized from. Pass it again on generate_paint_lab.
pricingVersionNoPricing version used for this quote.
trainedStyleIdNoYour trained style this quote applies, when one was set.
requiredCreditsNoUsage this quote would consume from this month’s generation allowance (internal units).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint=false, so safety is covered; the description adds genuine context beyond that: no charge is incurred, the returned payload includes quoteId/job facts/result size, and quotes expire after ~5 minutes. The expiry and no-charge facts are exactly the behavioral detail an agent needs before quoting.

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

Conciseness5/5

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

Four tight sentences, front-loaded with the core purpose, then the non-charge caveat, the prerequisite, and the return/expiry facts. No filler; each sentence carries distinct information.

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

Completeness4/5

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

An output schema exists, so return values need not be spelled out, yet the description still names the key returned fields. Combined with prerequisites, non-charge, and expiry, the definition is complete for a quoting tool; only the explicit follow-up-to-generate linkage is left implicit.

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 in detail (enum meanings, factor/quality/variations constraints). The description adds no parameter-level meaning beyond what the schema provides, so the 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 a specific verb (quote) and resource (one Paint Lab AI action on an uploaded image), and immediately differentiates from the generate sibling by clarifying 'Does not generate or charge.' An agent can tell this is a pre-flight cost/quote step, not the generation 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?

Gives the prerequisite flow explicitly: upload first with presign_generation_asset and complete_generation_asset. It also signals this is a non-executing step. It stops short of naming generate_paint_lab as the follow-up call that consumes the quoteId, so the full when-to-use path is only implied.

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

quote_paint_lab_style_trainingA
Read-only
Inspect

Quote training your own Paint Lab style from 8–20 of your own paintings. Does not train or charge. Returns quoteId and the job facts line. Quotes expire after about 10 minutes. You can keep up to 12 styles; delete one to train another.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesStyle name, 1–40 characters (for example "Ink and wash").
imagesYes8–20 different paintings you own in Paint Lab. Pick the ones that look most like your style; more variety teaches it better.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNoStyle name this quote locked in.
factsNoJob facts line for this training, for example "12 drawings · Your style".
stepsNoTraining steps (fixed).
quoteIdYesQuote id. Pass this to the matching generate tool. Quotes expire.
expiresAtNoISO timestamp when this quote expires.
imageCountNoHow many drawings this quote covers.
pricingVersionNoPricing version used for this quote.
requiredCreditsNoUsage this quote would consume from this month’s generation allowance (internal units).

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the readOnlyHint/destructiveHint=false annotations by disclosing that no charge occurs, that a quoteId and job facts line are returned, that quotes expire in ~10 minutes, and that a 12-style capacity cap exists. Expiration and capacity are operationally critical traits not captured by any structured field.

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

Conciseness5/5

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

Four short sentences, front-loaded with the core purpose followed by constraints. No filler; every clause (no charge, return value, expiry, capacity) carries distinct operational value.

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

Completeness5/5

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

For a quoting tool with an output schema already documenting returns, the description supplies the missing behavioral context an agent needs: cost behavior, expiry window, and style-capacity limits. Nothing required to call it correctly is absent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both the name and images parameters in detail (including the 8–20 range and layerId semantics). The description only echoes the 8–20 painting count, adding no syntax or format meaning beyond the schema.

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

Purpose5/5

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

States a specific verb and resource (quote Paint Lab style training) plus the scope (8–20 of your own paintings), and explicitly disambiguates from the sibling that actually trains by saying 'Does not train or charge.' An agent can distinguish this from train_paint_lab_style and quote_paint_lab 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?

The 'Does not train or charge' clause signals this is a preliminary, non-committal step, and the capacity note ('keep up to 12 styles; delete one to train another') hints at the delete_paint_lab_trained_style workflow. However, it never explicitly states 'use this before train_paint_lab_style,' leaving the ordering to inference.

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

quote_talking_shortA
Read-only
Inspect

Quote a Talking Short. Does not render. captionMode defaults to current and does not change the quote. phrase is MCP-ungated. The Phrase chip is operator-email only in the workspace. hook remains accepted and burns Current karaoke. Optional hookTemplateId seeds the brief from Opening hooks and does not change the quote.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoProduct page URL. Required unless brief is set.
briefNoProduct brief. Required unless url is set. An explicit brief wins over an Opening hooks seed.
voiceNoNarration voice id from list_audio_lab_voices. Defaults to the product default voice.
scriptNoTalking-head script. Pass the researched or edited script.
actorIdNoCatalog creator id from list_talking_short_actors.
angleIdNoAngle id from research_talking_short. Defaults to angle-1 when omitted.
hookBlanksNoFill [bracket] keys from the Opening hooks seed. Example: { "the annoying thing": "soggy leftovers" }. Does not change the quote.
hookIntentNoOptional Opening hooks intent. Browse with list_hook_bank. Ignored when seeding if hookTemplateId is set.
aspectRatioNoFrame size. Talking Shorts is 9:16 vertical.
captionModeNoOff, Current karaoke (default), or Phrase overlays. phrase is MCP-ungated for any caller. The Phrase chip is operator-email only in the Talking Shorts workspace. hook remains accepted and burns Current karaoke (Talking Shorts has no hook_kinetic). English only. Does not change the quote amount.current
faceImageUrlNoOptional public face still URL when not using a catalog actorId.
hookTemplateIdNoOptional Opening hooks template (catalog id hook_bank). The workspace picker is hidden. Seeds topic or Talking Shorts brief when that field is empty. Fill [brackets] via hookBlanks or by editing the seeded text. This is a script opening, not a caption look (captionStyle). Does not change the quote, consume, or refund.
captionsEnabledNoLegacy on/off. Prefer captionStyle. false selects Off captions.
durationSecondsNoClip length in seconds. 15, 20, or 25. Defaults to 20.
ugcFinishEnabledNoPhone-cam finish on the exported MP4. Defaults on. Does not change the quote.

Output Schema

ParametersJSON Schema
NameRequiredDescription
creditsNoUsage this quote would consume from this month’s generation allowance (internal units).
quoteIdYesQuote id. Pass this to the matching generate tool. Quotes expire.
expiresAtNoISO timestamp when this quote expires.
pricingVersionNoPricing version used for this quote.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint=true, destructiveHint=false), the description discloses key behaviors: it does not render, several parameters (captionMode, hookTemplateId, ugcFinishEnabled) do not change the quote, phrase is MCP-ungated while the Phrase chip is operator-email only, and hook 'burns Current karaoke' – a side effect the annotations alone do not convey. This adds real context for safe invocation.

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 about five sentences, compact and front-loaded with the core purpose ('Quote a Talking Short. Does not render.'). Each sentence adds a meaningful behavioral detail. It avoids verbosity but is slightly dense, packing multiple caveats in a short space.

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

Completeness4/5

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

Given 15 optional parameters, a 100% schema coverage, and an output schema, the description covers the essential purpose, non-rendering behavior, key side effects, and access constraints. It could be more explicit about when to use this vs. generate_talking_short or other quote tools, but the name and first sentence largely cover that. Overall, it is sufficient for an agent to call correctly.

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

Parameters4/5

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

Schema coverage is 100%, so each parameter is documented. The description adds meaning to specific parameters: captionMode defaults and does not change the quote, hookTemplateId seeds the brief without changing the quote, phrase has MCP-ungated access, and hook burns karaoke. These enrich understanding beyond the schema's simple field types.

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

Purpose5/5

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

The description opens with 'Quote a Talking Short' – a specific verb, resource, and type. 'Does not render' immediately distinguishes it from generate_talking_short. The name itself aligns with sibling quote_* tools, and the content clarifies it is for obtaining a quote, not producing media.

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

Usage Guidelines4/5

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

The tool's purpose and name imply when to use it (for pricing a Talking Short), and 'Does not render' rules out generation. However, it does not explicitly state 'use this when you need a quote for a Talking Short' or contrast with other quote_* tools, though the name and purpose make it fairly evident.

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

quote_topic_shortA
Read-only
Inspect

Quote a Topic Short. Does not render. Spoken narration is planned to fill the selected length; that does not change the quote (quoted on duration, not word count). captionStyle defaults to spotlight (same seven looks as Story: off, spotlight, impact, highlighter, editorial, boxed, kicker); transitionMode defaults to dynamic. Neither changes the quote. Legacy captionMode values are aliased onto captionStyle. Optional hookTemplateId seeds the topic from Opening hooks (script opening, not a caption look) and does not change the quote. The setup that does change the quote: length, visualStyle cinematic, aiHook (and the recurring characters they bring on story formats), a host (hostNarratorId) and sourced research; language, aspectRatio (9:16, 16:9, 1:1), storyFormat and a cloned voice (voiceCloneId) do not change the price. Cinematic, aiHook, host, sourced and voice clone are paid options, not available on the free short. seriesEpisodeId quotes an approved series episode with its series style.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoTopic to plan from. Required unless hookTemplateId seeds it or seriesEpisodeId supplies it. An explicit topic wins over either seed.
voiceNoNarration voice id from list_audio_lab_voices. Defaults to the product default voice.
aiHookNoOptional AI hook: the opening shot is an AI clip and abstract beats can get AI stills; the rest stays judged stock. Quoted higher. Any AI shot that misses its 2-minute deadline falls back to the best stock clip. Not available on the free short.
formatNoAlias of storyFormat. storyFormat wins when both are set.
scriptNoOptional supplied narration. If it already fills the selected length it is preserved word for word; if it is too short the planner expands it so speech fills the duration. Too-long scripts are packed down to the speaking-pace envelope (never fail generate for narration length). Maximum 8,192 UTF-8 bytes.
sourcedNoSourced script: research the topic, cite real sources, and soften or drop claims it cannot verify. The finished short carries a Sources card; get_topic_short returns the citations. Implied by sourceUrl, sourceUrls or sourceText. Not available on the free short.
languageNoNarration and caption language: en (English), es (Spanish), pt (Portuguese), de (German), fr (French), hi (Hindi). Default en. The planner writes the script in this language; pass a script already written in it. Stock search terms stay English.en
sourceUrlNoOne https article or page link that grounds a sourced script. Same as a one-item sourceUrls.
storyPlanNoOptional reviewed story from create_topic_short_story. Pass the same plan when quoting and generating; omit to plan automatically. A plan whose narration is too short for the selected length is expanded at generate so speech fills the duration. A too-long plan is packed down; generate never fails for narration length.
charactersNoauto (default) keeps one recurring fictional character consistent across shots on story formats (story_twist, mini_documentary) with cinematic or aiHook; off turns that off. Real people are never generated.
hookBlanksNoFill [bracket] keys from the Opening hooks seed. Example: { "the annoying thing": "soggy leftovers" }. Does not change the quote.
hookIntentNoOptional Opening hooks intent. Browse with list_hook_bank. Ignored when seeding if hookTemplateId is set.
hostLayoutNoWhere the host appears: pip_circle (default), pip_corner, or full frame. Only with hostNarratorId.pip_circle
sourceTextNoPasted article text (200–20,000 characters) that grounds a sourced script.
sourceUrlsNoUp to 3 https links that ground a sourced script. PDF uploads are website-only; paste the text with sourceText instead.
aspectRatioNoFrame size. 9:16 vertical (default), 16:9 landscape, or 1:1 square for feeds.9:16
captionModeNoLegacy Topic Shorts caption mode, accepted for old clients only. current maps to spotlight, hook to impact, phrase to kicker, off to off. Prefer captionStyle.
storyFormatNoStorytelling format: mini_documentary (Mini documentary), myth_check (Myth check), story_twist (Story with a twist), how_it_works (How it works), ranking (Top 5), quiz (Quiz), scary_story (Scary story), history_pov (History POV), reddit_story (Post story), what_if (What if). Defaults to mini_documentary. Each format has its own pacing, cards and music mood.
visualStyleNoVisual style: standard (judged stock footage, default) or cinematic (every shot is an AI keyframe animated to video). Cinematic is quoted higher and takes a few minutes longer. Not available on the free short. Real people and brands are never AI-generated.standard
captionStyleNoTopic Short caption look: off, spotlight (default — each spoken word lights up on a blue highlight), impact (bold outlined caps, two words at a time), highlighter (caps with one yellow key word), editorial (quiet lower-third phrases), boxed (phrases on a rounded dark pill), or kicker (phrase chunks with one oversized cyan word up top). Same seven looks as Story; burned by the API from the voiceover word timings, in the narration language (Hindi uses a Devanagari font). Does not change the quote amount. Caption failure still returns a finished short.spotlight
recipeSourceNoWith recipeGenerationId: part_two makes Part 2 of that short; same_style reuses only its setup for a new topic. Pass the same value when quoting and generating.part_two
voiceCloneIdNoOptional id of one of your ready cloned voices (list_topic_short_voice_clones). Replaces voice. Paid plans only. Shorts narrated with a clone keep the AI-voice disclosure unless it was turned off when the voice was recorded.
hookTemplateIdNoOptional Opening hooks template (catalog id hook_bank). The workspace picker is hidden. Seeds topic or Talking Shorts brief when that field is empty. Fill [brackets] via hookBlanks or by editing the seeded text. This is a script opening, not a caption look (captionStyle). Does not change the quote, consume, or refund.
hostNarratorIdNoOptional recurring host: a Character Films narrator (list_character_film_catalog) who appears lip-synced in the hook and outro. Quoted higher. Not available on the free short.
transitionModeNoClassic current cuts and dissolves, Dynamic punchier motion (default), or Off hard cuts. Does not change the quote.dynamic
captionsEnabledNoLegacy on/off. Prefer captionStyle. false selects Off captions.
durationSecondsNoTarget length of the finished short in seconds (15–180). Spoken narration is written to fill this length. Quoted on this duration, not word count.
seriesEpisodeIdNoOptional approved episode id from queue_topic_short_episodes. Uses that episode as the topic (when topic is empty) and the series style as the setup; explicit arguments still win. The short is linked to the episode. Quoted like any other short.
recipeGenerationIdNoOptional id of one of your earlier Topic Shorts (from generate_topic_short or get_topic_short). Copies its setup: voice, caption look, transitions, format, frame size, length and shot length. Any setting you pass explicitly wins. Never copies the topic, script or plan. Does not change how the short is priced. Pass the same value when quoting and generating.
clipDurationSecondsNoLength of each stock B-roll clip in seconds (2–6, default 3). Not the full short length.

Output Schema

ParametersJSON Schema
NameRequiredDescription
creditsNoUsage this quote would consume from this month’s generation allowance (internal units).
quoteIdYesQuote id. Pass this to the matching generate tool. Quotes expire.
expiresAtNoISO timestamp when this quote expires.
pricingVersionNoPricing version used for this quote.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations are minimal (readOnlyHint=true, destructiveHint=false), so the description carries the load and delivers real behavioral context: what changes the quote vs. what doesn't, which options are paid and unavailable on the free short, and that a caption failure still returns a finished short. It stops short of permissions/auth or refund semantics beyond a passing 'consume, or refund' mention.

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 purpose and the non-render constraint, then grouped by pricing relevance, so the structure is purposeful rather than rambling. It is dense and repeats 'does not change the quote' several times, but each instance earns its place by mapping a specific parameter group to pricing.

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 30-parameter tool with nested objects and an existing output schema, the description supplies the conceptual model an agent needs: pricing drivers, paid/free tier gating, seeding precedence (topic vs hookTemplateId vs seriesEpisodeId), and the quote-vs-generate handoff. It omits any mention of the edit quote sibling and does not address auth or rate limits.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3; the description adds a genuine layer the schema lacks by classifying parameters into quote-affecting (length, visualStyle cinematic, aiHook, host, sourced research, voice clone) versus quote-neutral (language, aspectRatio, storyFormat, captionStyle, transitionMode). It also flags that legacy captionMode is aliased onto captionStyle, aiding correct invocation.

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+resource ('Quote a Topic Short') and immediately adds the disambiguating constraint 'Does not render', which cleanly separates it from generate_topic_short. An agent can tell what it produces (a price estimate) 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?

The 'Does not render' clause and the repeated 'does not change the quote' framing give clear context for using this as a cost-preview step before generation. It never explicitly names generate_topic_short as the alternative or states when-not to use it, and it does not distinguish from the sibling quote_topic_short_edit.

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

quote_topic_short_editA
Read-only
Inspect

Quote one paid edit of a finished Topic Short before it runs. kind revoice re-records one line (beatIndex plus the new narration, in the short’s language; it must fit that beat) and kind regenerate_shot re-rolls one AI shot (beatIndex and shotIndex). Nothing is charged. Returns quoteId, numeric requiredCredits and availableCredits (null for unlimited accounts), affordable, expiresAt and facts (the job facts, for example Beat 3 · New voiceover · 4s line). Pass quoteId with the same fields to edit_topic_short within 10 minutes; a new edit on the short invalidates it. When affordable is false, edit_topic_short returns HTTP 402: use create_checkout_url. Free edits (captions, music, swap_shot) need no quote.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTopic Short generation id from generate_topic_short.
kindYesrevoice re-records one line; regenerate_shot re-rolls one AI shot.
beatIndexYesThe beat to change (0 is the hook).
narrationNoWith revoice: the new spoken line for that beat, in the short’s language.
shotIndexNoWith regenerate_shot: the shot inside that beat (default 0).

Output Schema

ParametersJSON Schema
NameRequiredDescription
quoteYesThe paid edit quote. Pass quote.quoteId with the same fields to edit_topic_short.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already mark it read-only/non-destructive, and the description adds real behavioral context beyond them: nothing is charged, the quote expires in 10 minutes, a new edit on the short invalidates it, and the 402/payment escalation path. These are operational traits an agent cannot infer from readOnlyHint.

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?

Dense but front-loaded: purpose and the two kinds come first, then charging, returns, follow-up, and exclusions. The enumeration of return fields (quoteId, requiredCredits, availableCredits, affordable, expiresAt, facts) is partly redundant given an output schema exists, which costs a point.

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 quote tool feeding a paid mutation, the description covers the whole loop: input kinds, no-charge guarantee, quote lifetime and invalidation, how to spend the quote, and the insufficient-credits recovery path. Nothing an agent needs to call it correctly is missing.

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

Parameters4/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 five parameters and the baseline is 3. The description adds genuine semantics on top: revoice needs beatIndex plus narration in the short's language and 'must fit that beat', while regenerate_shot takes beatIndex and shotIndex.

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 ('Quote one paid edit of a finished Topic Short before it runs') and immediately scopes it to the two paid edit kinds, which separates it from quote_topic_short (quoting the initial generation) and from the free-edit path. An agent can tell what this tool prices 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 Guidelines5/5

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

Explicitly says when to use it (before a paid edit runs), what to do with the result (pass quoteId with the same fields to edit_topic_short within 10 minutes), the failure branch (affordable false → edit_topic_short returns HTTP 402 → use create_checkout_url), and the exclusion (free edits captions/music/swap_shot need no quote). When/when-not/alternatives are all covered.

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

quote_video_labA
Read-only
Inspect

Quote a Video Lab setup. Does not generate or charge. Paid generate needs this quote. FLUX 3 Edit clip uses mode=edit_video plus a source MP4 (sourceAssetIds, sourceClipId, or sourceVideoUrl). Duration and aspect follow the source; output is 720p. Keeps the source clip’s audio. Clips must be MP4, under 15 seconds and 50 MB.

ParametersJSON Schema
NameRequiredDescriptionDefault
fpsNoFrames per second when the catalog lists that control.
modeNoInput mode: text_to_video, image_to_video, first_last_frame, reference_to_video, or edit_video (FLUX 3 Edit clip). Must be supported by the chosen model.
seedNoSeed when the catalog lists that control.
styleNoStyle id when the catalog lists that control. Omit or none for the default look.
promptYesWhat to film. At least 3 characters, up to 8,192 UTF-8 bytes. For edit_video, describe the change to the source clip.
inputModeNoSame as mode: text_to_video, image_to_video, first_last_frame, reference_to_video, or edit_video.
modelSlugYesVideo Lab model slug from list_video_lab_models (for example seedance-2-5, minimax-h3, grok-imagine-video-1-5).
multiShotNoMulti-shot / intelligent shot type when the catalog lists that control.
resolutionNoOutput resolution from the model catalog (720p, 1080p, and other listed values). edit_video is 720p.
aspectRatioNoFrame size from the model catalog (21:9, 16:9, 9:16, 1:1, and other listed ratios). edit_video keeps the source clip’s aspect.
audioEnabledNoWhether the model should generate native audio, when the catalog lists audio as optional. edit_video keeps the source clip’s audio.
sourceClipIdNoLibrary clip id to import as the edit_video source MP4 when you do not already have a generation-asset id.
klingElementsNoKling 3 Pro / Kling 3 4K subject packs. Each element needs a frontal still and supporting references. The first primary still is the start frame when startImageAssetId is omitted. Do not send leftover stills as sourceAssetIds references on those models.
negativePromptNoNegative prompt when list_video_lab_models lists that control for the mode.
sourceAssetIdsNoGeneration-asset ids from complete_generation_asset. Start/end/reference stills, or sourceAssetIds[0] as the edit_video MP4.
sourceVideoUrlNoPublic MP4 URL to import as the edit_video source when you do not have a library clip or asset id. Under 15 seconds and 50 MB.
durationSecondsNoClip length in seconds. Must be in the chosen model’s duration range. edit_video takes duration from the source MP4.
endImageAssetIdNoEnd-frame generation-asset id. Same as sourceAssetIds[1] for first_last_frame.
promptEnhancementNoPrompt expansion when the catalog lists that control. false maps to fal disabled on MiniMax H3 and H3 Max.
startImageAssetIdNoStart-frame generation-asset id. Same as sourceAssetIds[0] for image_to_video and first_last_frame.
sourceVideoAssetIdNoSource MP4 generation-asset id for edit_video. Same as sourceAssetIds[0] for that mode.
referenceImageAssetIdsNoReference stills for reference_to_video. Do not send leftover stills here on Kling 3 Pro / Kling 3 4K when klingElements is set.

Output Schema

ParametersJSON Schema
NameRequiredDescription
creditsNoUsage this quote would consume from this month’s generation allowance (internal units).
quoteIdYesQuote id. Pass this to the matching generate tool. Quotes expire.
expiresAtNoISO timestamp when this quote expires.
normalizedInputNoNormalized Video Lab setup this quote locked in.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, so the safety profile is covered. The description still adds real context beyond them: the financial distinction ('does not charge'), the edit_video mode's input requirements, and the MP4/<15s/<50MB acceptance limits for source clips.

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 correctly: purpose, then the no-charge/no-generate boundary, then the prerequisite, then mode-specific detail. Dense but every sentence is on-topic; the edit_video block partially duplicates schema text, which is the only mild waste.

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?

An output schema exists, so return values need no explanation. For a 22-parameter tool with only 2 required, the description covers the quote's role and the trickiest mode (edit_video) adequately, though it says nothing about the other modes (first_last_frame, reference_to_video) or model/Kling-specific input combinations.

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's edit_video guidance (duration, aspect, 720p, audio all follow the source; source may come from sourceAssetIds, sourceClipId, or sourceVideoUrl) largely restates what the individual parameter descriptions already say, adding only slight connective value.

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

Purpose5/5

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

States a specific verb and resource ('Quote a Video Lab setup') and immediately bounds it ('Does not generate or charge'), which cleanly separates it from generate_video_lab and the other quote_* siblings. The sibling relationship is made explicit: 'Paid generate needs this quote.'

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 for use — the quote must precede a paid generate — which tells the agent where this tool sits in the workflow. It does not name generate_video_lab directly or state when a quote is unnecessary, so it stops short of full when/when-not routing.

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

reconcile_video_lab_generationA
Read-only
Inspect

Refresh a Video Lab job from the provider. Does not charge again.

ParametersJSON Schema
NameRequiredDescriptionDefault
videoIdYesVideo Lab video id to refresh from the provider. Does not charge again.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoRow id. Some list tools use id instead of generationId.
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.
videoUrlNoPlayback URL when the job has finished.
createdAtNoISO timestamp when this job was created.
modelSlugNoCatalog model slug from the matching list_*_models tool.
outputUrlNoDownload or playback URL when the job has finished.
generationIdNoGeneration id. Poll the matching get_* tool until status is completed or failed.
creditsChargedNoUsage already consumed from this month’s generation allowance (internal units).

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the billing-relevant trait 'Does not charge again' and the external-provider dependency, but it does not explain what 'refresh' does (e.g., whether it updates local state or returns latest status) beyond what a reader would infer.

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

Conciseness5/5

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

Two short sentences with no filler; the core action is front-loaded and the non-charge note is a useful qualifier. It is well-sized for a single-parameter 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?

The output schema and annotations cover return values and read-only safety, so the description only needs to convey the operation's purpose. However, it leaves unclear how this tool relates to get_video_lab_generation or when a refresh is necessary, which an agent would need for confident selection.

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 fully documents the videoId parameter. The description and the schema field repeat the same 'refresh from provider / does not charge again' information, so the description adds no additional parameter meaning 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 description states a specific action ('Refresh') on a clear resource ('a Video Lab job') and notes that it does not re-charge, distinguishing it from generation/quote tools. It does not explicitly name sibling alternatives like get_video_lab_generation, so the differentiation is implied rather than stated.

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

Usage Guidelines3/5

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

The description implies this tool is for existing Video Lab jobs by saying 'refresh from the provider' and 'does not charge again,' which signals it is not for creation. It does not provide explicit when-to-use guidance or contrast with get_video_lab_generation or generate_video_lab, leaving the choice to inference.

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

rename_paint_lab_trained_styleB
Read-only
Inspect

Rename one of your trained Paint Lab styles. Does not charge or retrain.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesStyle name, 1–40 characters (for example "Ink and wash").
styleIdYesTrained style id from train_paint_lab_style or list_paint_lab_trained_styles.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesTrained style id. Pass it as trainedStyleId once status is ready.
nameNoStyle name.
errorNoUser-safe failure message when status is failed.
statusYessubmitting, queued, training, ready, or failed.
readyAtNoISO timestamp when the style became ready.
styleIdNoSame as id.
refundedNoTrue when a failed training returned its allowance.
createdAtNoISO timestamp when training was started.
errorCodeNoStable failure code when status is failed.
imageCountNoHow many of your drawings trained this style.

TDQS

B3.4/5.0
Behavior1/5

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

The description declares a mutating operation ('Rename') while the annotations set readOnlyHint=true, which asserts the tool does not modify its environment. That is a direct conflict for a tool that visibly changes stored state. Despite the useful 'does not charge' cost disclosure, the contradiction governs this dimension.

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

Conciseness5/5

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

Two short sentences with zero filler, and the core operation is front-loaded before the cost clarification. Nothing could be cut without losing meaning.

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?

An output schema exists, so return values need not be explained, and both parameters are documented in the schema. The cost/no-retrain note covers the main behavioral question an agent would have, though the mismatch between the write action and the read-only annotation leaves the tool's side effects ambiguous.

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 'name' (with length bounds and an example) and 'styleId' (with the source tools named) are fully documented in the input schema. The description adds no parameter detail beyond that, so the 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 ('Rename') and a precisely scoped resource ('one of your trained Paint Lab styles'), which cleanly separates it from train_paint_lab_style, list_paint_lab_trained_styles, get_paint_lab_trained_style, and delete_paint_lab_trained_style. An agent can identify the operation 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 Guidelines3/5

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

The clause 'Does not charge or retrain' implicitly steers the agent toward this tool rather than re-running training just to change a label, which is useful implied guidance. However, it never states when to use this versus alternatives explicitly, nor any prerequisites (e.g., that the style must be yours or already trained).

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

render_storyboardAInspect

Film the latest Story part. After generate_storyboard_part — including continue my story — render that part. Uses this month’s generation allowance. Poll get_storyboard.

ParametersJSON Schema
NameRequiredDescriptionDefault
motionNoOptional Motion for this render. stills, seedance, or h3. Defaults to the project setting.
projectIdYesStory project whose latest part should be filmed. Same id you used to continue my story.
renderModeNoAlias for motion.
captionStyleNoBurned-in caption look: off, spotlight (default — each spoken word lights up on a blue highlight), impact (bold outlined caps, two words at a time), highlighter (caps with one yellow key word), editorial (quiet lower-third phrases), boxed (phrases on a rounded dark pill), or kicker (phrase chunks with one oversized cyan word up top). Shared by Story and Topic Shorts. Does not change the quote. Caption failure still ships the film. Defaults to the project setting.spotlight

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.
clipPathNoIn-app clip path such as /clips/{videoId}.
estimateNoDuration and usage estimate used for this render.

TDQS

A4.3/5.0
Behavior4/5

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

The description discloses a non-obvious cost behavior ('Uses this month's generation allowance') and implies an asynchronous operation by instructing to poll get_storyboard. These go beyond the annotations, which are minimal. No contradiction with the readOnly/destructive hints; the description's 'film/render' action aligns with readOnlyHint=false.

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

Conciseness5/5

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

The description is three short sentences with all key information front-loaded: the action, the dependency, the cost, and the polling step. There is no filler or redundant restating of the name.

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

Completeness5/5

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

Given the fully documented input schema and the presence of an output schema, the description provides the missing workflow context: when to invoke, the dependency on generate_storyboard_part, the allowance impact, and the monitoring call. An agent has enough to select and invoke the tool correctly.

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

Parameters3/5

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

The input schema provides 100% coverage, including enums, defaults, and an alias for motion/renderMode. The free-text description adds no extra parameter semantics beyond what is already in the schema, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description opens with 'Film the latest Story part,' a specific verb-resource pair that clearly identifies the operation. It further situates the tool in the pipeline ('After generate_storyboard_part — including continue my story — render that part'), distinguishing it from siblings like generate_storyboard_part and get_storyboard.

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

Usage Guidelines4/5

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

The tool explicitly says when to use it: after generate_storyboard_part, including the 'continue my story' path. It also tells the agent what to do afterward ('Poll get_storyboard'). It does not include explicit 'when not to use' instructions, but the sequential context is clear and actionable.

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

research_ad_studioA
Read-only
Inspect

Research Ad Studio from a product URL or brief. Returns Problem, Curiosity, Trust, and Niche angles with a locked 5-beat script (Hook / Problem / Product / Result / Soft close). Does not render or charge.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoProduct page URL. Required unless brief is set.
briefNoProduct brief. Required unless url is set.

Output Schema

ParametersJSON Schema
NameRequiredDescription
briefNoProduct brief used for this research.
anglesNoProblem, Curiosity, Trust, and Niche angles with locked 5-beat scripts.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond annotations: it does not render, does not charge, and returns a 'locked' script. This helps the agent understand side effects and constraints without contradicting the annotations.

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

Conciseness5/5

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

The description is three sentences with no fluff. It front-loads the main action and input, then covers the output contract and side-effect boundaries. Every sentence carries a distinct piece of information.

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

Completeness4/5

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

For a simple, read-only research tool with 100% schema coverage, an output schema, and clear annotations, the description covers input, output, and side effects adequately. It does not mention exact script format details, but the output schema likely covers those; overall, it is complete enough for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, and each parameter already includes the 'Required unless the other is set' relationship. The description merely restates 'from a product URL or brief' without adding new meaning about parameter format, constraints, or edge cases. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Research'), names the resource ('Ad Studio'), lists the accepted input ('product URL or brief'), and enumerates the exact output ('Problem, Curiosity, Trust, and Niche angles with a locked 5-beat script'). This clearly differentiates it from generation or quoting sibling tools.

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 the tool should be used when the agent has a product URL or brief and needs research angles/script. However, it does not explicitly say when to prefer this over siblings like generate_ad_studio or quote_ad_studio, and it does not give any 'use this, not that' guidance. It relies mostly on the tool name and general phrasing.

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

research_talking_shortA
Read-only
Inspect

Research a Talking Short from a product URL or a brief. Does not render or charge. Optional hookTemplateId seeds the brief from Opening hooks (script opening, not caption style).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoProduct page URL to research. Required unless brief is set.
briefNoProduct brief to research. Required unless url is set. An explicit brief wins over an Opening hooks seed.
hookBlanksNoFill [bracket] keys from the Opening hooks seed. Example: { "the annoying thing": "soggy leftovers" }. Does not change the quote.
hookIntentNoOptional Opening hooks intent. Browse with list_hook_bank. Ignored when seeding if hookTemplateId is set.
hookTemplateIdNoOptional Opening hooks template (catalog id hook_bank). The workspace picker is hidden. Seeds topic or Talking Shorts brief when that field is empty. Fill [brackets] via hookBlanks or by editing the seeded text. This is a script opening, not a caption look (captionStyle). Does not change the quote, consume, or refund.

Output Schema

ParametersJSON Schema
NameRequiredDescription
briefNoResearched brief for the talking-head ad.
anglesNoAngle options. Pick one angleId before quoting.
scriptNoDraft script when research produced one.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/destructive hints, and the description adds meaningful behavioral context beyond them: the tool does not render or charge. It also clarifies hookTemplateId's effect ('seeds the brief from Opening hooks') and distinguishes script opening from caption style, which is valuable behavioral nuance.

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

Conciseness4/5

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

Two sentences are used efficiently, with the core purpose front-loaded. The parenthetical about caption style is slightly dense but earns its place by preventing a common misunderstanding.

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 an output schema present, annotations covering safety, and near-complete parameter documentation, the description covers the essential invocation context well. It could be more complete by explicitly routing to generation/quoting sibling tools, but that gap is better attributed to usage guidance than overall completeness.

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 reinforces the url/brief choice and hookTemplateId behavior, but it does not add meaning that the schema does not already provide.

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

Purpose5/5

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

The description names a specific verb and resource ('Research a Talking Short') and identifies the two accepted inputs (product URL or brief). It also distinguishes itself from sibling tools by explicitly stating it 'does not render or charge,' making the purpose unambiguous.

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 when you need a Talking Short researched before rendering, and the 'does not render or charge' line provides exclusion criteria. However, it never explicitly names alternatives like generate_talking_short or quote_talking_short, nor gives direct when-to-use versus when-not-to-use guidance.

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

run_free_toolA
Read-only
Inspect

Run a public free tool (hooks, scripts, briefs). Does not generate video.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesFree tool slug from list_free_tools (hooks, scripts, briefs).
inputNoTool-specific fields for that slug (topic, product, audience, and similar copy inputs).

Output Schema

ParametersJSON Schema
NameRequiredDescription
slugNoFree tool slug that ran.
outputNoGenerated copy, hooks, or brief text.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the useful behavioral constraint that it 'does not generate video,' but it does not disclose any other runtime behavior such as return handling or dependencies; with annotations present, this is adequate but not rich.

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

Conciseness5/5

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

Two short sentences, no filler. The first sentence states the action and scope, the second adds the key exclusion for video generation. Every word earns its place.

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 two-parameter tool with a rich output schema and annotations covering safety, the description is nearly complete. It could have explicitly pointed to list_free_tools as the source of valid slugs, but that is already encoded in the schema parameter description, so the overall tool definition is sufficient.

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 the slug and input object sufficiently. The description reinforces the slug's meaning by mentioning 'hooks, scripts, briefs' but adds no new parameter-level guidance beyond what the schema provides.

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

Purpose5/5

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

The description states a specific verb ('Run') and a concrete resource class ('public free tool'), further narrowed by the parenthetical types 'hooks, scripts, briefs.' It also explicitly excludes video generation, which cleanly differentiates it from the many generate_video_lab-like siblings.

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 gives a clear signal that this tool is for free tools and not for video generation, which is useful for excluding generate_* siblings. However, it does not name specific alternative tools or explicitly say when to prefer run_free_tool over them; usage guidance is implied rather than stated.

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

save_topic_short_styleA
Read-only
Inspect

Save the setup of a finished Topic Short as a reusable style: its format, length, visual style, voice, captions, transitions, music mood and frame size, plus an optional intro and outro line. Up to 10 styles. Use a style with create_topic_short_series. Free.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoTopic Short generation id from generate_topic_short. Pass id or videoId.
nameYesStyle name, for example “Ocean facts”.
videoIdNoLibrary clip id of the finished short. Pass id or videoId.
introLineNoOptional line every episode opens with.
outroLineNoOptional line every episode ends with.

Output Schema

ParametersJSON Schema
NameRequiredDescription
styleYesThe saved style (id, name, recipe, introLine, outroLine, sourceGenerationId). Pass id as styleId to create_topic_short_series.

TDQS

A3.5/5.0
Behavior1/5

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

The description plainly describes a state-changing operation: saving a new persistent style ("Up to 10 styles"). The annotations declare readOnlyHint=true, which asserts the tool does not modify its environment. This is a direct contradiction, so per the rules the score is 1.

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

Conciseness4/5

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

The core purpose is front-loaded in the first clause, and the two trailing fragments ("Up to 10 styles." / "Free.") are terse and useful. The long enumeration is dense but earns its place by naming the saved attributes; overall it is tight with little waste.

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 an output schema present, return values need not be described, and the description covers purpose, the 10-style limit, cost, and downstream usage. It is nearly complete for a save tool, though the annotation mismatch leaves the mutation semantics unreliable.

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 id/videoId, name, introLine and outroLine are already documented in the schema. The description reinforces the intro/outro concept and the optionality but adds no syntax, format, or selection logic beyond the schema, 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?

The description pairs a specific verb ("Save ... as a reusable style") with the resource and enumerates exactly what is captured (format, length, visual style, voice, captions, transitions, music mood, frame size, intro/outro lines). It is clearly distinguishable from siblings like list_topic_short_styles or delete_paint_lab_trained_style.

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 names the downstream consumer explicitly ("Use a style with create_topic_short_series") and states the operative constraints ("Up to 10 styles", "Free"), giving an agent clear context for when this fits. It stops short of stating when NOT to use it or naming a competing alternative, 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.

start_last_frameAInspect

Start a Last Frame run and film the opening shot. Uses this month’s generation allowance.

ParametersJSON Schema
NameRequiredDescriptionDefault
gameNoLast Frame game slug from list_last_frame_games (for example adventure, heist, tape).
quoteIdNoQuote id from quote_last_frame. Optional; start quotes first when omitted if themeKey or customWorld is set.
themeKeyNoCatalog world key from list_last_frame_worlds. Required unless customWorld is set.
customWorldNoFree-text world to synthesize instead of a catalog themeKey.

Output Schema

ParametersJSON Schema
NameRequiredDescription
runIdNoLast Frame run id. Pass this to get_last_frame_run and the move tools.
stateNoPlay state: current shot, choices, inventory, and HUD fields.
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.

TDQS

A4/5.0
Behavior4/5

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

The description adds a meaningful behavioral trait beyond the sparse annotations: 'Uses this month’s generation allowance.' This tells the agent the operation consumes quota, which is not disclosed by readOnlyHint, openWorldHint, or destructiveHint. It does not contradict any annotation.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and followed by the key cost side effect. Every word earns its place, with no filler or repetition of schema content.

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

Completeness4/5

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

For a tool with four documented parameters and an output schema, the description covers the essential purpose and the main side effect (allowance consumption). It is slightly thin on explicit sibling routing, but the schema and output schema fill most remaining gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (game, quoteId, themeKey, customWorld) are already documented. The description adds no parameter-level detail, but it does not need to; the baseline of 3 is appropriate because the schema carries the semantic load.

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

Purpose5/5

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

The description states a specific verb and resource: 'Start a Last Frame run and film the opening shot.' This clearly differentiates the tool from siblings like end_last_frame_clip, timeout_last_frame, and type_last_frame without needing to inspect their schemas.

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 purpose implies usage: this is the tool to start a Last Frame run, not to end, choose, or time one out. However, it never explicitly names alternatives or gives when-not-to-use guidance, so an agent must infer routing from the tool name and sibling list.

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

timeout_last_frameC
Read-only
Inspect

Apply the Last Frame choice timeout (same as the play HUD timer running out).

ParametersJSON Schema
NameRequiredDescriptionDefault
runIdYesLast Frame run id whose HUD timer should expire.

Output Schema

ParametersJSON Schema
NameRequiredDescription
runIdNoLast Frame run id. Pass this to get_last_frame_run and the move tools.
stateNoPlay state: current shot, choices, inventory, and HUD fields.
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.

TDQS

C2.9/5.0
Behavior1/5

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

The description says the tool 'Apply[s]' a timeout and equates it with the HUD timer running out, implying a state-changing operation, while annotations set readOnlyHint=true. This is an annotation contradiction, and the description does not clarify side effects or state impact beyond the conflicting hint.

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?

One concise, front-loaded sentence with a useful parenthetical analogy. Every word contributes to the intended behavior without unnecessary padding.

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 state-triggering action, the description is thin: it does not explain the consequences of applying the timeout, whether the run ends, or how this relates to the choice workflow. The output schema may cover return shape, but the behavioral impact and relationship to siblings remain underspecified.

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

Parameters3/5

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

The only parameter, runId, is fully documented in the input schema (100% coverage), so the description does not need to repeat it. The description adds no additional parameter meaning beyond the schema, meeting the baseline.

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

Purpose4/5

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

The description uses a specific verb ('Apply') and resource ('Last Frame choice timeout') and clarifies with an analogy to the play HUD timer running out. It is reasonably distinct from siblings like choose_last_frame, though it does not explicitly differentiate itself.

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: use when the Last Frame choice timeout should be applied, equivalent to the HUD timer expiring. However, there is no explicit guidance about when to prefer this over choose_last_frame or related Last Frame actions, so routing is left to inference.

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

train_paint_lab_styleAInspect

Start training your own Paint Lab style from a quote. Uses this month’s generation allowance. Returns the style at once (status submitting or queued); poll get_paint_lab_trained_style until status is ready or failed. Training takes a few minutes. Retrying with the same quoteId returns the same style and never charges twice. A failed training returns its allowance.

ParametersJSON Schema
NameRequiredDescriptionDefault
quoteIdYesQuote id from quote_paint_lab_style_training.
idempotencyKeyNoOptional request key (8–128 letters, numbers, dots, dashes, colons, or underscores). The quoteId is already single-use.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesTrained style id. Pass it as trainedStyleId once status is ready.
nameNoStyle name.
errorNoUser-safe failure message when status is failed.
statusYessubmitting, queued, training, ready, or failed.
readyAtNoISO timestamp when the style became ready.
styleIdNoSame as id.
refundedNoTrue when a failed training returned its allowance.
createdAtNoISO timestamp when training was started.
errorCodeNoStable failure code when status is failed.
imageCountNoHow many of your drawings trained this style.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only cover the safety profile (not read-only, not destructive). The description adds substantial behavior beyond them: it consumes the monthly generation allowance, returns immediately with status submitting/queued, takes a few minutes, is idempotent per quoteId (never charges twice), and refunds the allowance on failure.

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?

Every sentence earns its place: action, cost, immediate return, next step, latency, idempotency, and refund are each stated once and front-loaded. No filler or repetition.

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

Completeness5/5

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

With an output schema present, return shape need not be detailed, yet the description still explains the immediate response status and the polling loop. Billing, retry, and failure behavior are all covered, so an agent has everything needed to call and follow up correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful semantics the schema does not: the quoteId is single-use and reusing it returns the same style rather than starting a new training. That is real guidance beyond the raw field definitions.

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 (train) and resource (Paint Lab style) and the precondition (from a quote). It is clearly distinguishable from quote_paint_lab_style_training, which only prices the training, and from get_paint_lab_trained_style, which is the poll target.

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

Usage Guidelines4/5

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

Explicitly names the follow-up flow: poll get_paint_lab_trained_style until status is ready or failed, and states retry semantics for the same quoteId. It does not spell out when NOT to use this tool (e.g. versus list_paint_lab_trained_styles), so it falls short of a full 5.

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

type_last_frameAInspect

Type a custom Last Frame move. Films the next shot and uses this month’s generation allowance.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesCustom move to film instead of a numbered choice.
runIdYesLast Frame run id from start_last_frame.

Output Schema

ParametersJSON Schema
NameRequiredDescription
runIdNoLast Frame run id. Pass this to get_last_frame_run and the move tools.
stateNoPlay state: current shot, choices, inventory, and HUD fields.
statusNoJob status such as pending, queued, in_progress, completed, or failed.
videoIdNoLibrary clip id for this job, when one exists.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already signal this is not read-only and not destructive. The description adds the key side effects that calling it advances the run ('films the next shot') and consumes a limited resource ('uses this month's generation allowance'), which is useful behavior an agent could not infer from the annotations alone.

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

Conciseness5/5

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

Two short sentences, front-loaded with the primary purpose and followed by effect and cost. No filler or repetition of schema details.

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 two-parameter tool with 100% schema coverage, an output schema, and annotations, the key invocation facts are present: what to pass, what happens, and what it costs. It stops short of relating this move to the rest of the Last Frame flow (e.g., prerequisites like an active run or whether end_last_frame_clip is needed afterward), but the schema's runId reference mitigates this.

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 parameter descriptions already document both runId and text, including that text is for a custom move and runId comes from start_last_frame. The tool description adds no new parameter-level meaning, so the baseline of 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?

The description states a specific verb ('Type') and resource ('a custom Last Frame move'), and describes the concrete effect ('Films the next shot'). The word 'custom' plus the parameter text 'instead of a numbered choice' distinguishes it from the sibling choose_last_frame.

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

Usage Guidelines4/5

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

The description makes the use case clear: type a custom move rather than a numbered choice. It implies the alternative (choose a numbered Last Frame move) without explicitly naming choose_last_frame or stating when not to use this tool, so it falls just short of full routing guidance.

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

unpublish_generationB
Read-only
Inspect

Unpublish a library generation you previously made public. Does not use extra allowance.

ParametersJSON Schema
NameRequiredDescriptionDefault
clipIdYesLibrary clip id to take off /p/{id}.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNoAbsolute public URL, or null when unpublished.
pathNoSite path such as /p/{id}, or null when unpublished.
publishedNoTrue when this generation has a live public page.
publicationNoPublic page payload when this tool returns the full record.

TDQS

B3.4/5.0
Behavior1/5

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

Annotation readOnlyHint:true directly contradicts the description's 'Unpublish' action, which is a state-changing operation. The description does not reconcile this contradiction and the annotation undercuts trust. The extra note about allowance is irrelevant given the inconsistency.

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

Conciseness5/5

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

Two sentences with zero redundancy; the core action is front-loaded, and the note about allowance is a distinct useful trait. Efficient and well-structured.

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

Completeness2/5

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

While the output schema exists and the parameter is documented, the contradiction between description and annotations leaves serious ambiguity about whether the tool mutates state. The description also doesn't address prerequisites like the generation being currently public, beyond an implicit phrase. Incomplete due to the unresolved behavioral conflict.

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

Parameters3/5

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

Schema coverage is 100% for the single clipId parameter, and the schema description already explains its role. The tool description adds context about the parameter's purpose ('previously made public') but no additional syntax or constraints beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'Unpublish' and the resource 'library generation', with the scope 'you previously made public'. It implicitly distinguishes from sibling publish_generation, making the agent able to select it correctly.

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

Usage Guidelines4/5

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

The phrase 'you previously made public' gives clear context for when to use this tool. However, it does not explicitly name alternate tools or state when not to use it, though the context is enough for an informed agent.

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. 1 tool update
    • Changedget_account4 fields changed
      • changedOutput schema / properties / email / description
        Previous value: -"Account email, when known."New value: +"Account email, or null when unknown."
      • changedOutput schema / properties / email / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / resetsAt / description
        Previous value: -"ISO timestamp when the monthly allowance resets, when known."New value: +"ISO timestamp when the monthly allowance resets, or null when there is no reset window (no period, unlimited operator, or unknown)."
      • changedOutput schema / properties / resetsAt / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
  2. 1 tool update
    • Changedquote_image_lab1 field changed
      • changedInput schema / properties / modelSlug / description
        Previous value: -"Image Lab model slug from list_image_lab_models (gpt-image-2-5, nano-banana, nano-banana-2, nano-banana-pro, flux-2-pro, mai-image-2-5, mai-image-2-5-pro, seedream-5-lite, muse-image, grok-imagine-image-2, qwen-image-3, kling-image-o3, flux-3-image, ideogram-v4-5, seedream-5-flash, recraft-v4-1-flash)."New value: +"Image Lab model slug from list_image_lab_models (gpt-image-2-5, nano-banana, nano-banana-2, nano-banana-2-1, nano-banana-pro, flux-2-pro, mai-image-2-5, mai-image-2-5-pro, seedream-5-lite, muse-image, grok-imagine-image-2, qwen-image-3, kling-image-o3, flux-3-image, ideogram-v4-5, seedream-5-flash, recraft-v4-1-flash)."
  3. 12 tool updates
    • Addedcreate_topic_short_series
    • Changedcreate_topic_short_story23 fields changed
      • addedInput schema / properties / aiHook
        Added value: +{
        +  "description": "Optional AI hook: the opening shot is an AI clip and abstract beats can get AI stills; the rest stays judged stock. Quoted higher. Any AI shot that misses its 2-minute deadline falls back to the best stock clip. Not available on the free short.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / aspectRatio / description
        Previous value: -"Frame size. 9:16 vertical (default) or 16:9 landscape."New value: +"Frame size. 9:16 vertical (default), 16:9 landscape, or 1:1 square for feeds."
      • changedInput schema / properties / aspectRatio / enum
        Previous value: -[
        -  "9:16",
        -  "16:9"
        -]New value: +[
        +  "9:16",
        +  "16:9",
        +  "1:1"
        +]
      • addedInput schema / properties / characters
        Added value: +{
        +  "description": "auto (default) keeps one recurring fictional character consistent across shots on story formats (story_twist, mini_documentary) with cinematic or aiHook; off turns that off. Real people are never generated.",
        +  "enum": [
        +    "auto",
        +    "off"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / clipDurationSeconds / default
        Previous value: -5New value: +3
      • changedInput schema / properties / clipDurationSeconds / description
        Previous value: -"Length of each stock B-roll clip in seconds (2–6, default 5). Not the full short length."New value: +"Length of each stock B-roll clip in seconds (2–6, default 3). Not the full short length."
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "Alias of storyFormat. storyFormat wins when both are set.",
        +  "enum": [
        +    "mini_documentary",
        +    "myth_check",
        +    "story_twist",
        +    "how_it_works",
        +    "ranking",
        +    "quiz",
        +    "scary_story",
        +    "history_pov",
        +    "reddit_story",
        +    "what_if"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / hostLayout
        Added value: +{
        +  "default": "pip_circle",
        +  "description": "Where the host appears: pip_circle (default), pip_corner, or full frame. Only with hostNarratorId.",
        +  "enum": [
        +    "pip_circle",
        +    "pip_corner",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / hostNarratorId
        Added value: +{
        +  "description": "Optional recurring host: a Character Films narrator (list_character_film_catalog) who appears lip-synced in the hook and outro. Quoted higher. Not available on the free short.",
        +  "enum": [
        +    "pip",
        +    "mo",
        +    "lulu",
        +    "hazel",
        +    "otto",
        +    "rose",
        +    "bo",
        +    "sage",
        +    "wren",
        +    "kiko",
        +    "tally",
        +    "nib",
        +    "chalk",
        +    "rio",
        +    "juno",
        +    "yumi",
        +    "kenji",
        +    "dot",
        +    "patch",
        +    "ada",
        +    "marlo",
        +    "ollie",
        +    "zara",
        +    "barnaby",
        +    "momo",
        +    "bea",
        +    "rex",
        +    "nova",
        +    "gus",
        +    "tock",
        +    "fern",
        +    "duke",
        +    "lumi",
        +    "taro",
        +    "oya",
        +    "bolt",
        +    "reginald",
        +    "pepper",
        +    "lola",
        +    "moss",
        +    "noor",
        +    "arlo",
        +    "mei",
        +    "chip",
        +    "bruno",
        +    "stella",
        +    "kai",
        +    "plume",
        +    "grumble",
        +    "quill"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / language
        Added value: +{
        +  "default": "en",
        +  "description": "Narration and caption language: en (English), es (Spanish), pt (Portuguese), de (German), fr (French), hi (Hindi). Default en. The planner writes the script in this language; pass a script already written in it. Stock search terms stay English.",
        +  "enum": [
        +    "en",
        +    "es",
        +    "pt",
        +    "de",
        +    "fr",
        +    "hi"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / seriesEpisodeId
        Added value: +{
        +  "description": "Optional approved episode id from queue_topic_short_episodes. Uses that episode as the topic (when topic is empty) and the series style as the setup; explicit arguments still win. The short is linked to the episode. Quoted like any other short.",
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceText
        Added value: +{
        +  "description": "Pasted article text (200–20,000 characters) that grounds a sourced script.",
        +  "maxLength": 20000,
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceUrl
        Added value: +{
        +  "description": "One https article or page link that grounds a sourced script. Same as a one-item sourceUrls.",
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceUrls
        Added value: +{
        +  "description": "Up to 3 https links that ground a sourced script. PDF uploads are website-only; paste the text with sourceText instead.",
        +  "items": {
        +    "description": "An https article or page link.",
        +    "type": "string"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
      • addedInput schema / properties / sourced
        Added value: +{
        +  "description": "Sourced script: research the topic, cite real sources, and soften or drop claims it cannot verify. The finished short carries a Sources card; get_topic_short returns the citations. Implied by sourceUrl, sourceUrls or sourceText. Not available on the free short.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / storyFormat / description
        Previous value: -"Storytelling format: mini_documentary, myth_check, story_twist, or how_it_works. Defaults to mini_documentary."New value: +"Storytelling format: mini_documentary (Mini documentary), myth_check (Myth check), story_twist (Story with a twist), how_it_works (How it works), ranking (Top 5), quiz (Quiz), scary_story (Scary story), history_pov (History POV), reddit_story (Post story), what_if (What if). Defaults to mini_documentary. Each format has its own pacing, cards and music mood."
      • changedInput schema / properties / storyFormat / enum
        Previous value: -[
        -  "mini_documentary",
        -  "myth_check",
        -  "story_twist",
        -  "how_it_works"
        -]New value: +[
        +  "mini_documentary",
        +  "myth_check",
        +  "story_twist",
        +  "how_it_works",
        +  "ranking",
        +  "quiz",
        +  "scary_story",
        +  "history_pov",
        +  "reddit_story",
        +  "what_if"
        +]
      • changedInput schema / properties / storyPlan / properties / beats / items / properties / narration / description
        Previous value: -"Spoken line for this beat. Combined beats fill the selected length at about 2.3 words per second."New value: +"Spoken line for this beat. Combined beats fill the selected length at about 2.6 words per second."
      • changedInput schema / properties / storyPlan / properties / format / enum
        Previous value: -[
        -  "mini_documentary",
        -  "myth_check",
        -  "story_twist",
        -  "how_it_works"
        -]New value: +[
        +  "mini_documentary",
        +  "myth_check",
        +  "story_twist",
        +  "how_it_works",
        +  "ranking",
        +  "quiz",
        +  "scary_story",
        +  "history_pov",
        +  "reddit_story",
        +  "what_if"
        +]
      • changedInput schema / properties / topic / description
        Previous value: -"Topic to plan from. Optional when hookTemplateId seeds it. An explicit topic wins over the Opening hooks seed."New value: +"Topic to plan from. Required unless hookTemplateId seeds it or seriesEpisodeId supplies it. An explicit topic wins over either seed."
      • addedInput schema / properties / visualStyle
        Added value: +{
        +  "default": "standard",
        +  "description": "Visual style: standard (judged stock footage, default) or cinematic (every shot is an AI keyframe animated to video). Cinematic is quoted higher and takes a few minutes longer. Not available on the free short. Real people and brands are never AI-generated.",
        +  "enum": [
        +    "standard",
        +    "cinematic"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / voiceCloneId
        Added value: +{
        +  "description": "Optional id of one of your ready cloned voices (list_topic_short_voice_clones). Replaces voice. Paid plans only. Shorts narrated with a clone keep the AI-voice disclosure unless it was turned off when the voice was recorded.",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "topic"
        -]
    • Addededit_topic_short
    • Addedexport_topic_short
    • Changedgenerate_topic_short26 fields changed
      • addedInput schema / properties / aiHook
        Added value: +{
        +  "description": "Optional AI hook: the opening shot is an AI clip and abstract beats can get AI stills; the rest stays judged stock. Quoted higher. Any AI shot that misses its 2-minute deadline falls back to the best stock clip. Not available on the free short.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / aspectRatio / description
        Previous value: -"Frame size. 9:16 vertical (default) or 16:9 landscape."New value: +"Frame size. 9:16 vertical (default), 16:9 landscape, or 1:1 square for feeds."
      • changedInput schema / properties / aspectRatio / enum
        Previous value: -[
        -  "9:16",
        -  "16:9"
        -]New value: +[
        +  "9:16",
        +  "16:9",
        +  "1:1"
        +]
      • changedInput schema / properties / captionStyle / description
        Previous value: -"Topic Short caption look: off, spotlight (default — each spoken word lights up on a blue highlight), impact (bold outlined caps, two words at a time), highlighter (caps with one yellow key word), editorial (quiet lower-third phrases), boxed (phrases on a rounded dark pill), or kicker (phrase chunks with one oversized cyan word up top). Same seven looks as Story; burned by the API from the voiceover word timings. English only. Does not change the quote amount. Caption failure still returns a finished short."New value: +"Topic Short caption look: off, spotlight (default — each spoken word lights up on a blue highlight), impact (bold outlined caps, two words at a time), highlighter (caps with one yellow key word), editorial (quiet lower-third phrases), boxed (phrases on a rounded dark pill), or kicker (phrase chunks with one oversized cyan word up top). Same seven looks as Story; burned by the API from the voiceover word timings, in the narration language (Hindi uses a Devanagari font). Does not change the quote amount. Caption failure still returns a finished short."
      • addedInput schema / properties / characters
        Added value: +{
        +  "description": "auto (default) keeps one recurring fictional character consistent across shots on story formats (story_twist, mini_documentary) with cinematic or aiHook; off turns that off. Real people are never generated.",
        +  "enum": [
        +    "auto",
        +    "off"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / clipDurationSeconds / default
        Previous value: -5New value: +3
      • changedInput schema / properties / clipDurationSeconds / description
        Previous value: -"Length of each stock B-roll clip in seconds (2–6, default 5). Not the full short length."New value: +"Length of each stock B-roll clip in seconds (2–6, default 3). Not the full short length."
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "Alias of storyFormat. storyFormat wins when both are set.",
        +  "enum": [
        +    "mini_documentary",
        +    "myth_check",
        +    "story_twist",
        +    "how_it_works",
        +    "ranking",
        +    "quiz",
        +    "scary_story",
        +    "history_pov",
        +    "reddit_story",
        +    "what_if"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / hostLayout
        Added value: +{
        +  "default": "pip_circle",
        +  "description": "Where the host appears: pip_circle (default), pip_corner, or full frame. Only with hostNarratorId.",
        +  "enum": [
        +    "pip_circle",
        +    "pip_corner",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / hostNarratorId
        Added value: +{
        +  "description": "Optional recurring host: a Character Films narrator (list_character_film_catalog) who appears lip-synced in the hook and outro. Quoted higher. Not available on the free short.",
        +  "enum": [
        +    "pip",
        +    "mo",
        +    "lulu",
        +    "hazel",
        +    "otto",
        +    "rose",
        +    "bo",
        +    "sage",
        +    "wren",
        +    "kiko",
        +    "tally",
        +    "nib",
        +    "chalk",
        +    "rio",
        +    "juno",
        +    "yumi",
        +    "kenji",
        +    "dot",
        +    "patch",
        +    "ada",
        +    "marlo",
        +    "ollie",
        +    "zara",
        +    "barnaby",
        +    "momo",
        +    "bea",
        +    "rex",
        +    "nova",
        +    "gus",
        +    "tock",
        +    "fern",
        +    "duke",
        +    "lumi",
        +    "taro",
        +    "oya",
        +    "bolt",
        +    "reginald",
        +    "pepper",
        +    "lola",
        +    "moss",
        +    "noor",
        +    "arlo",
        +    "mei",
        +    "chip",
        +    "bruno",
        +    "stella",
        +    "kai",
        +    "plume",
        +    "grumble",
        +    "quill"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / language
        Added value: +{
        +  "default": "en",
        +  "description": "Narration and caption language: en (English), es (Spanish), pt (Portuguese), de (German), fr (French), hi (Hindi). Default en. The planner writes the script in this language; pass a script already written in it. Stock search terms stay English.",
        +  "enum": [
        +    "en",
        +    "es",
        +    "pt",
        +    "de",
        +    "fr",
        +    "hi"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / recipeGenerationId
        Added value: +{
        +  "description": "Optional id of one of your earlier Topic Shorts (from generate_topic_short or get_topic_short). Copies its setup: voice, caption look, transitions, format, frame size, length and shot length. Any setting you pass explicitly wins. Never copies the topic, script or plan. Does not change how the short is priced. Pass the same value when quoting and generating.",
        +  "type": "string"
        +}
      • addedInput schema / properties / recipeSource
        Added value: +{
        +  "default": "part_two",
        +  "description": "With recipeGenerationId: part_two makes Part 2 of that short; same_style reuses only its setup for a new topic. Pass the same value when quoting and generating.",
        +  "enum": [
        +    "part_two",
        +    "same_style"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / seriesEpisodeId
        Added value: +{
        +  "description": "Optional approved episode id from queue_topic_short_episodes. Uses that episode as the topic (when topic is empty) and the series style as the setup; explicit arguments still win. The short is linked to the episode. Quoted like any other short.",
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceText
        Added value: +{
        +  "description": "Pasted article text (200–20,000 characters) that grounds a sourced script.",
        +  "maxLength": 20000,
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceUrl
        Added value: +{
        +  "description": "One https article or page link that grounds a sourced script. Same as a one-item sourceUrls.",
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceUrls
        Added value: +{
        +  "description": "Up to 3 https links that ground a sourced script. PDF uploads are website-only; paste the text with sourceText instead.",
        +  "items": {
        +    "description": "An https article or page link.",
        +    "type": "string"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
      • addedInput schema / properties / sourced
        Added value: +{
        +  "description": "Sourced script: research the topic, cite real sources, and soften or drop claims it cannot verify. The finished short carries a Sources card; get_topic_short returns the citations. Implied by sourceUrl, sourceUrls or sourceText. Not available on the free short.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / storyFormat / description
        Previous value: -"Storytelling format: mini_documentary, myth_check, story_twist, or how_it_works. Defaults to mini_documentary."New value: +"Storytelling format: mini_documentary (Mini documentary), myth_check (Myth check), story_twist (Story with a twist), how_it_works (How it works), ranking (Top 5), quiz (Quiz), scary_story (Scary story), history_pov (History POV), reddit_story (Post story), what_if (What if). Defaults to mini_documentary. Each format has its own pacing, cards and music mood."
      • changedInput schema / properties / storyFormat / enum
        Previous value: -[
        -  "mini_documentary",
        -  "myth_check",
        -  "story_twist",
        -  "how_it_works"
        -]New value: +[
        +  "mini_documentary",
        +  "myth_check",
        +  "story_twist",
        +  "how_it_works",
        +  "ranking",
        +  "quiz",
        +  "scary_story",
        +  "history_pov",
        +  "reddit_story",
        +  "what_if"
        +]
      • changedInput schema / properties / storyPlan / properties / beats / items / properties / narration / description
        Previous value: -"Spoken line for this beat. Combined beats fill the selected length at about 2.3 words per second."New value: +"Spoken line for this beat. Combined beats fill the selected length at about 2.6 words per second."
      • changedInput schema / properties / storyPlan / properties / format / enum
        Previous value: -[
        -  "mini_documentary",
        -  "myth_check",
        -  "story_twist",
        -  "how_it_works"
        -]New value: +[
        +  "mini_documentary",
        +  "myth_check",
        +  "story_twist",
        +  "how_it_works",
        +  "ranking",
        +  "quiz",
        +  "scary_story",
        +  "history_pov",
        +  "reddit_story",
        +  "what_if"
        +]
      • changedInput schema / properties / topic / description
        Previous value: -"Topic to plan from. Optional when hookTemplateId seeds it. An explicit topic wins over the Opening hooks seed."New value: +"Topic to plan from. Required unless hookTemplateId seeds it or seriesEpisodeId supplies it. An explicit topic wins over either seed."
      • addedInput schema / properties / visualStyle
        Added value: +{
        +  "default": "standard",
        +  "description": "Visual style: standard (judged stock footage, default) or cinematic (every shot is an AI keyframe animated to video). Cinematic is quoted higher and takes a few minutes longer. Not available on the free short. Real people and brands are never AI-generated.",
        +  "enum": [
        +    "standard",
        +    "cinematic"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / voiceCloneId
        Added value: +{
        +  "description": "Optional id of one of your ready cloned voices (list_topic_short_voice_clones). Replaces voice. Paid plans only. Shorts narrated with a clone keep the AI-voice disclosure unless it was turned off when the voice was recorded.",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "topic"
        -]
    • Changedget_topic_short10 fields changed
      • addedOutput schema / properties / coverUrl
        Added value: +{
        +  "description": "Cover still URL (opening frame), once export_topic_short format cover has made it.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / editCapabilities
        Added value: +{
        +  "additionalProperties": true,
        +  "description": "When edits are on: whether captions and music can be edited, musicOptions (id, mood, previewUrl) for edit_topic_short, and freeEditsRemaining.",
        +  "type": "object"
        +}
      • addedOutput schema / properties / exports
        Added value: +{
        +  "description": "When the posting pack is on: each export format and whether export_topic_short can make it for this short.",
        +  "items": {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / postingPack
        Added value: +{
        +  "additionalProperties": true,
        +  "description": "When the posting pack is on: suggested title, caption and hashtags for posting this short.",
        +  "type": "object"
        +}
      • addedOutput schema / properties / publication
        Added value: +{
        +  "additionalProperties": true,
        +  "description": "When edits are on: whether a public page exists and which version it is pinned to.",
        +  "type": "object"
        +}
      • addedOutput schema / properties / setup
        Added value: +{
        +  "additionalProperties": true,
        +  "description": "The setup this short was made with: storyFormat, aspectRatio, language, visualStyle, renderTier, aiHook, characters, hostNarratorId, sourced, sourceInputs, voiceCloneId, seriesId and seriesEpisodeId (omitted fields are the defaults).",
        +  "type": "object"
        +}
      • addedOutput schema / properties / shots
        Added value: +{
        +  "description": "Completed short, when recorded: per-shot picks by beatIndex and shotIndex with judged alternates. An alternate id is the alternateId edit_topic_short kind swap_shot takes.",
        +  "items": {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / sources
        Added value: +{
        +  "description": "Sourced shorts only, once completed: the cited sources behind the narration (title, publisher, url, accessedAt), as shown on the clip page Sources card.",
        +  "items": {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / status / description
        Previous value: -"Job status such as pending, queued, in_progress, completed, or failed."New value: +"Job status: submitting, queued, in_progress, composing (the voiceover and shots are done and the final edit is being put together), completed, or failed. Keep polling while it is composing."
      • addedOutput schema / properties / versions
        Added value: +{
        +  "description": "Completed short only, when edits are on: version 0 is the original, then one per edit_topic_short call (editId, version, kind, status, outputUrl, current, published).",
        +  "items": {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Addedlist_topic_short_styles
    • Addedlist_topic_short_voice_clones
    • Addedqueue_topic_short_episodes
    • Changedquote_topic_short26 fields changed
      • addedInput schema / properties / aiHook
        Added value: +{
        +  "description": "Optional AI hook: the opening shot is an AI clip and abstract beats can get AI stills; the rest stays judged stock. Quoted higher. Any AI shot that misses its 2-minute deadline falls back to the best stock clip. Not available on the free short.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / aspectRatio / description
        Previous value: -"Frame size. 9:16 vertical (default) or 16:9 landscape."New value: +"Frame size. 9:16 vertical (default), 16:9 landscape, or 1:1 square for feeds."
      • changedInput schema / properties / aspectRatio / enum
        Previous value: -[
        -  "9:16",
        -  "16:9"
        -]New value: +[
        +  "9:16",
        +  "16:9",
        +  "1:1"
        +]
      • changedInput schema / properties / captionStyle / description
        Previous value: -"Topic Short caption look: off, spotlight (default — each spoken word lights up on a blue highlight), impact (bold outlined caps, two words at a time), highlighter (caps with one yellow key word), editorial (quiet lower-third phrases), boxed (phrases on a rounded dark pill), or kicker (phrase chunks with one oversized cyan word up top). Same seven looks as Story; burned by the API from the voiceover word timings. English only. Does not change the quote amount. Caption failure still returns a finished short."New value: +"Topic Short caption look: off, spotlight (default — each spoken word lights up on a blue highlight), impact (bold outlined caps, two words at a time), highlighter (caps with one yellow key word), editorial (quiet lower-third phrases), boxed (phrases on a rounded dark pill), or kicker (phrase chunks with one oversized cyan word up top). Same seven looks as Story; burned by the API from the voiceover word timings, in the narration language (Hindi uses a Devanagari font). Does not change the quote amount. Caption failure still returns a finished short."
      • addedInput schema / properties / characters
        Added value: +{
        +  "description": "auto (default) keeps one recurring fictional character consistent across shots on story formats (story_twist, mini_documentary) with cinematic or aiHook; off turns that off. Real people are never generated.",
        +  "enum": [
        +    "auto",
        +    "off"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / clipDurationSeconds / default
        Previous value: -5New value: +3
      • changedInput schema / properties / clipDurationSeconds / description
        Previous value: -"Length of each stock B-roll clip in seconds (2–6, default 5). Not the full short length."New value: +"Length of each stock B-roll clip in seconds (2–6, default 3). Not the full short length."
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "Alias of storyFormat. storyFormat wins when both are set.",
        +  "enum": [
        +    "mini_documentary",
        +    "myth_check",
        +    "story_twist",
        +    "how_it_works",
        +    "ranking",
        +    "quiz",
        +    "scary_story",
        +    "history_pov",
        +    "reddit_story",
        +    "what_if"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / hostLayout
        Added value: +{
        +  "default": "pip_circle",
        +  "description": "Where the host appears: pip_circle (default), pip_corner, or full frame. Only with hostNarratorId.",
        +  "enum": [
        +    "pip_circle",
        +    "pip_corner",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / hostNarratorId
        Added value: +{
        +  "description": "Optional recurring host: a Character Films narrator (list_character_film_catalog) who appears lip-synced in the hook and outro. Quoted higher. Not available on the free short.",
        +  "enum": [
        +    "pip",
        +    "mo",
        +    "lulu",
        +    "hazel",
        +    "otto",
        +    "rose",
        +    "bo",
        +    "sage",
        +    "wren",
        +    "kiko",
        +    "tally",
        +    "nib",
        +    "chalk",
        +    "rio",
        +    "juno",
        +    "yumi",
        +    "kenji",
        +    "dot",
        +    "patch",
        +    "ada",
        +    "marlo",
        +    "ollie",
        +    "zara",
        +    "barnaby",
        +    "momo",
        +    "bea",
        +    "rex",
        +    "nova",
        +    "gus",
        +    "tock",
        +    "fern",
        +    "duke",
        +    "lumi",
        +    "taro",
        +    "oya",
        +    "bolt",
        +    "reginald",
        +    "pepper",
        +    "lola",
        +    "moss",
        +    "noor",
        +    "arlo",
        +    "mei",
        +    "chip",
        +    "bruno",
        +    "stella",
        +    "kai",
        +    "plume",
        +    "grumble",
        +    "quill"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / language
        Added value: +{
        +  "default": "en",
        +  "description": "Narration and caption language: en (English), es (Spanish), pt (Portuguese), de (German), fr (French), hi (Hindi). Default en. The planner writes the script in this language; pass a script already written in it. Stock search terms stay English.",
        +  "enum": [
        +    "en",
        +    "es",
        +    "pt",
        +    "de",
        +    "fr",
        +    "hi"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / recipeGenerationId
        Added value: +{
        +  "description": "Optional id of one of your earlier Topic Shorts (from generate_topic_short or get_topic_short). Copies its setup: voice, caption look, transitions, format, frame size, length and shot length. Any setting you pass explicitly wins. Never copies the topic, script or plan. Does not change how the short is priced. Pass the same value when quoting and generating.",
        +  "type": "string"
        +}
      • addedInput schema / properties / recipeSource
        Added value: +{
        +  "default": "part_two",
        +  "description": "With recipeGenerationId: part_two makes Part 2 of that short; same_style reuses only its setup for a new topic. Pass the same value when quoting and generating.",
        +  "enum": [
        +    "part_two",
        +    "same_style"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / seriesEpisodeId
        Added value: +{
        +  "description": "Optional approved episode id from queue_topic_short_episodes. Uses that episode as the topic (when topic is empty) and the series style as the setup; explicit arguments still win. The short is linked to the episode. Quoted like any other short.",
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceText
        Added value: +{
        +  "description": "Pasted article text (200–20,000 characters) that grounds a sourced script.",
        +  "maxLength": 20000,
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceUrl
        Added value: +{
        +  "description": "One https article or page link that grounds a sourced script. Same as a one-item sourceUrls.",
        +  "type": "string"
        +}
      • addedInput schema / properties / sourceUrls
        Added value: +{
        +  "description": "Up to 3 https links that ground a sourced script. PDF uploads are website-only; paste the text with sourceText instead.",
        +  "items": {
        +    "description": "An https article or page link.",
        +    "type": "string"
        +  },
        +  "maxItems": 3,
        +  "type": "array"
        +}
      • addedInput schema / properties / sourced
        Added value: +{
        +  "description": "Sourced script: research the topic, cite real sources, and soften or drop claims it cannot verify. The finished short carries a Sources card; get_topic_short returns the citations. Implied by sourceUrl, sourceUrls or sourceText. Not available on the free short.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / storyFormat / description
        Previous value: -"Storytelling format: mini_documentary, myth_check, story_twist, or how_it_works. Defaults to mini_documentary."New value: +"Storytelling format: mini_documentary (Mini documentary), myth_check (Myth check), story_twist (Story with a twist), how_it_works (How it works), ranking (Top 5), quiz (Quiz), scary_story (Scary story), history_pov (History POV), reddit_story (Post story), what_if (What if). Defaults to mini_documentary. Each format has its own pacing, cards and music mood."
      • changedInput schema / properties / storyFormat / enum
        Previous value: -[
        -  "mini_documentary",
        -  "myth_check",
        -  "story_twist",
        -  "how_it_works"
        -]New value: +[
        +  "mini_documentary",
        +  "myth_check",
        +  "story_twist",
        +  "how_it_works",
        +  "ranking",
        +  "quiz",
        +  "scary_story",
        +  "history_pov",
        +  "reddit_story",
        +  "what_if"
        +]
      • changedInput schema / properties / storyPlan / properties / beats / items / properties / narration / description
        Previous value: -"Spoken line for this beat. Combined beats fill the selected length at about 2.3 words per second."New value: +"Spoken line for this beat. Combined beats fill the selected length at about 2.6 words per second."
      • changedInput schema / properties / storyPlan / properties / format / enum
        Previous value: -[
        -  "mini_documentary",
        -  "myth_check",
        -  "story_twist",
        -  "how_it_works"
        -]New value: +[
        +  "mini_documentary",
        +  "myth_check",
        +  "story_twist",
        +  "how_it_works",
        +  "ranking",
        +  "quiz",
        +  "scary_story",
        +  "history_pov",
        +  "reddit_story",
        +  "what_if"
        +]
      • changedInput schema / properties / topic / description
        Previous value: -"Topic to plan from. Optional when hookTemplateId seeds it. An explicit topic wins over the Opening hooks seed."New value: +"Topic to plan from. Required unless hookTemplateId seeds it or seriesEpisodeId supplies it. An explicit topic wins over either seed."
      • addedInput schema / properties / visualStyle
        Added value: +{
        +  "default": "standard",
        +  "description": "Visual style: standard (judged stock footage, default) or cinematic (every shot is an AI keyframe animated to video). Cinematic is quoted higher and takes a few minutes longer. Not available on the free short. Real people and brands are never AI-generated.",
        +  "enum": [
        +    "standard",
        +    "cinematic"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / voiceCloneId
        Added value: +{
        +  "description": "Optional id of one of your ready cloned voices (list_topic_short_voice_clones). Replaces voice. Paid plans only. Shorts narrated with a clone keep the AI-voice disclosure unless it was turned off when the voice was recorded.",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "topic"
        -]
    • Addedquote_topic_short_edit
    • Addedsave_topic_short_style
  4. 11 tool updates
    • Addeddelete_paint_lab_trained_style
    • Addedgenerate_paint_lab
    • Addedget_paint_lab_generation
    • Addedget_paint_lab_trained_style
    • Addedlist_paint_lab_generations
    • Addedlist_paint_lab_styles
    • Addedlist_paint_lab_trained_styles
    • Addedquote_paint_lab
    • Addedquote_paint_lab_style_training
    • Addedrename_paint_lab_trained_style
    • Addedtrain_paint_lab_style
  5. 1 tool update
    • Changedquote_image_lab1 field changed
      • changedInput schema / properties / modelSlug / description
        Previous value: -"Image Lab model slug from list_image_lab_models (gpt-image-2-5, nano-banana, nano-banana-2, nano-banana-pro, flux-2-pro, mai-image-2-5, mai-image-2-5-pro, seedream-5-lite, muse-image, grok-imagine-image-2, qwen-image-3, kling-image-o3)."New value: +"Image Lab model slug from list_image_lab_models (gpt-image-2-5, nano-banana, nano-banana-2, nano-banana-pro, flux-2-pro, mai-image-2-5, mai-image-2-5-pro, seedream-5-lite, muse-image, grok-imagine-image-2, qwen-image-3, kling-image-o3, flux-3-image, ideogram-v4-5, seedream-5-flash, recraft-v4-1-flash)."
  6. 2 tool updates
    • Changedgenerate_character_film1 field changed
      • changedOutput schema / properties / billingSource / description
        Previous value: -"How this render was billed: the monthly plan, or the complimentary film opening."New value: +"How this render was billed: the monthly plan (older renders may show the retired complimentary film opening)."
    • Changedquote_character_film1 field changed
      • changedOutput schema / properties / complimentary / description
        Previous value: -"True when this opening is the free first film opening for this account."New value: +"Always false for new quotes. The free film opening is retired."
  7. 7 tool updates
    • Changedgenerate_audio_lab4 fields changed
      • changedInput schema / properties / script / description
        Previous value: -"Narration script. Required unless quoteId is set. Must match the quote when quoteId is set."New value: +"Narration script. Omit when quoteId is set. 5,000 characters or fewer when quoting from generate."
      • addedInput schema / properties / script / maxLength
        Added value: +5000
      • changedInput schema / properties / voice / description
        Previous value: -"Voice id from list_audio_lab_voices. Must match the quote when quoteId is set."New value: +"Clip Studio voice name from list_audio_lab_voices (for example Russ). Not the ElevenLabs voice_id. Omit when quoteId is set."
      • removedInput schema / required
        Removed value: -[
        -  "script"
        -]
    • Changedgenerate_image_lab7 fields changed
      • changedInput schema / properties / aspectRatio / description
        Previous value: -"Still aspect from the catalog. Must match the quote when quoteId is set."New value: +"Still aspect from list_image_lab_models for that slug. Omit when quoteId is set."
      • addedInput schema / properties / inputMode
        Added value: +{
        +  "description": "Same as mode: text_to_image or image_to_image.",
        +  "type": "string"
        +}
      • changedInput schema / properties / mode / description
        Previous value: -"text_to_image or image_to_image. Must match the quote when quoteId is set."New value: +"text_to_image or image_to_image. Must match the quote when quoteId is set. Same as inputMode."
      • changedInput schema / properties / prompt / description
        Previous value: -"What to draw. Must match the quoted setup when quoteId is set."New value: +"What to draw. Omit when quoteId is set."
      • changedInput schema / properties / sourceAssetIds / description
        Previous value: -"Same source still asset ids used on the quote."New value: +"Same source still asset ids used on the quote. Omit when quoteId is set."
      • addedInput schema / properties / sourceImageAssetId
        Added value: +{
        +  "description": "Source still generation-asset id for image_to_image. Omit when quoteId is set.",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "prompt"
        -]
    • Changedgenerate_video_lab18 fields changed
      • changedInput schema / properties / aspectRatio / description
        Previous value: -"Frame size from the model catalog. Must match the quote when quoteId is set."New value: +"Frame size from the model catalog. Omit when quoteId is set."
      • changedInput schema / properties / audioEnabled / description
        Previous value: -"Native audio flag for models that list audio as optional. Must match the quote when quoteId is set."New value: +"Native audio flag for models that list audio as optional. Omit when quoteId is set."
      • changedInput schema / properties / durationSeconds / description
        Previous value: -"Clip length in seconds. Must match the quote when quoteId is set."New value: +"Clip length in seconds. Omit when quoteId is set; generate uses the quoted setup."
      • addedInput schema / properties / endImageAssetId
        Added value: +{
        +  "description": "End-frame generation-asset id. Same as sourceAssetIds[1] for first_last_frame.",
        +  "type": "string"
        +}
      • addedInput schema / properties / fps
        Added value: +{
        +  "description": "Frames per second when the catalog lists that control.",
        +  "type": "number"
        +}
      • addedInput schema / properties / inputMode
        Added value: +{
        +  "description": "Same as mode: text_to_video, image_to_video, first_last_frame, reference_to_video, or edit_video.",
        +  "type": "string"
        +}
      • addedInput schema / properties / klingElements
        Added value: +{
        +  "description": "Kling 3 Pro / Kling 3 4K subject packs. Each element needs a frontal still and supporting references. The first primary still is the start frame when startImageAssetId is omitted. Do not send leftover stills as sourceAssetIds references on those models.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "primaryImageAssetId": {
        +        "description": "Frontal still generation-asset id from complete_generation_asset.",
        +        "type": "string"
        +      },
        +      "referenceImageAssetIds": {
        +        "description": "Supporting stills for this Kling subject.",
        +        "items": {
        +          "description": "Supporting still generation-asset id.",
        +          "type": "string"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "primaryImageAssetId"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / multiShot
        Added value: +{
        +  "description": "Multi-shot / intelligent shot type when the catalog lists that control.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / negativePrompt
        Added value: +{
        +  "description": "Negative prompt when list_video_lab_models lists that control for the mode.",
        +  "type": "string"
        +}
      • changedInput schema / properties / prompt / description
        Previous value: -"What to film. Up to 8,192 UTF-8 bytes. Must match the quoted setup when quoteId is set."New value: +"What to film. Omit when quoteId is set. Up to 8,192 UTF-8 bytes when quoting from generate."
      • addedInput schema / properties / promptEnhancement
        Added value: +{
        +  "description": "Prompt expansion when the catalog lists that control. false maps to fal disabled on MiniMax H3 and H3 Max.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / referenceImageAssetIds
        Added value: +{
        +  "description": "Reference stills for reference_to_video. Do not send leftover stills here on Kling 3 Pro / Kling 3 4K when klingElements is set.",
        +  "items": {
        +    "description": "Reference still generation-asset id.",
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / resolution / description
        Previous value: -"Output resolution from the model catalog. Must match the quote when quoteId is set."New value: +"Output resolution from the model catalog. Omit when quoteId is set."
      • addedInput schema / properties / seed
        Added value: +{
        +  "description": "Seed when the catalog lists that control.",
        +  "type": "number"
        +}
      • addedInput schema / properties / sourceVideoAssetId
        Added value: +{
        +  "description": "Source MP4 generation-asset id for edit_video. Same as sourceAssetIds[0] for that mode.",
        +  "type": "string"
        +}
      • addedInput schema / properties / startImageAssetId
        Added value: +{
        +  "description": "Start-frame generation-asset id. Same as sourceAssetIds[0] for image_to_video and first_last_frame.",
        +  "type": "string"
        +}
      • addedInput schema / properties / style
        Added value: +{
        +  "description": "Style id when the catalog lists that control. Omit or none for the default look.",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "prompt"
        -]
    • Changedlist_audio_lab_voices2 fields changed
      • changedOutput schema / properties / defaultVoice / description
        Previous value: -"Default voice id."New value: +"Default Clip Studio voice name (not an ElevenLabs voice_id)."
      • changedOutput schema / properties / voices / description
        Previous value: -"Narration voices with id, name, accent, locale, and preview URL."New value: +"Narration voices. id and name are the Clip Studio voice name, plus accent, locale, and preview URL."
    • Changedquote_audio_lab5 fields changed
      • changedInput schema / properties / script / description
        Previous value: -"Narration script to quote. Character count drives the quote."New value: +"Narration script to quote. 5,000 characters or fewer. Character count drives the quote."
      • addedInput schema / properties / script / maxLength
        Added value: +5000
      • addedInput schema / properties / script / minLength
        Added value: +1
      • changedInput schema / properties / voice / description
        Previous value: -"Voice id from list_audio_lab_voices. Defaults to the product default voice."New value: +"Clip Studio voice name from list_audio_lab_voices (for example Russ). Not the ElevenLabs voice_id. Defaults to the product default voice."
      • changedOutput schema / properties / voice / description
        Previous value: -"Voice id this quote locked in."New value: +"Clip Studio voice name this quote locked in."
    • Changedquote_image_lab5 fields changed
      • changedInput schema / properties / aspectRatio / description
        Previous value: -"Still aspect from the catalog: 21:9, 16:9, 3:2, 4:3, 5:4, 1:1, 4:5, 3:4, 2:3, or 9:16."New value: +"Still aspect from list_image_lab_models for that slug (for example 16:9 or 9:16). Not every model lists every ratio."
      • addedInput schema / properties / inputMode
        Added value: +{
        +  "description": "Same as mode: text_to_image or image_to_image.",
        +  "type": "string"
        +}
      • changedInput schema / properties / mode / description
        Previous value: -"text_to_image or image_to_image. image_to_image needs sourceAssetIds."New value: +"text_to_image or image_to_image. image_to_image needs sourceAssetIds. Same as inputMode."
      • changedInput schema / properties / modelSlug / description
        Previous value: -"Image Lab model slug from list_image_lab_models (gpt-image-2-5, nano-banana, nano-banana-2, nano-banana-pro, flux-2-pro, mai-image-2-5, mai-image-2-5-pro, seedream-5-lite, muse-image, grok-imagine-image-2, qwen-image-3, kling-omni-3)."New value: +"Image Lab model slug from list_image_lab_models (gpt-image-2-5, nano-banana, nano-banana-2, nano-banana-pro, flux-2-pro, mai-image-2-5, mai-image-2-5-pro, seedream-5-lite, muse-image, grok-imagine-image-2, qwen-image-3, kling-image-o3)."
      • addedInput schema / properties / sourceImageAssetId
        Added value: +{
        +  "description": "Source still generation-asset id for image_to_image. Same as sourceAssetIds[0].",
        +  "type": "string"
        +}
    • Changedquote_video_lab15 fields changed
      • addedInput schema / properties / endImageAssetId
        Added value: +{
        +  "description": "End-frame generation-asset id. Same as sourceAssetIds[1] for first_last_frame.",
        +  "type": "string"
        +}
      • addedInput schema / properties / fps
        Added value: +{
        +  "description": "Frames per second when the catalog lists that control.",
        +  "type": "number"
        +}
      • addedInput schema / properties / inputMode
        Added value: +{
        +  "description": "Same as mode: text_to_video, image_to_video, first_last_frame, reference_to_video, or edit_video.",
        +  "type": "string"
        +}
      • addedInput schema / properties / klingElements
        Added value: +{
        +  "description": "Kling 3 Pro / Kling 3 4K subject packs. Each element needs a frontal still and supporting references. The first primary still is the start frame when startImageAssetId is omitted. Do not send leftover stills as sourceAssetIds references on those models.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "primaryImageAssetId": {
        +        "description": "Frontal still generation-asset id from complete_generation_asset.",
        +        "type": "string"
        +      },
        +      "referenceImageAssetIds": {
        +        "description": "Supporting stills for this Kling subject.",
        +        "items": {
        +          "description": "Supporting still generation-asset id.",
        +          "type": "string"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "primaryImageAssetId"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / modelSlug / description
        Previous value: -"Video Lab model slug from list_video_lab_models (for example seedance-2-0, minimax-h3, grok-imagine-1-5)."New value: +"Video Lab model slug from list_video_lab_models (for example seedance-2-5, minimax-h3, grok-imagine-video-1-5)."
      • addedInput schema / properties / multiShot
        Added value: +{
        +  "description": "Multi-shot / intelligent shot type when the catalog lists that control.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / negativePrompt
        Added value: +{
        +  "description": "Negative prompt when list_video_lab_models lists that control for the mode.",
        +  "type": "string"
        +}
      • changedInput schema / properties / prompt / description
        Previous value: -"What to film. Up to 8,192 UTF-8 bytes. For edit_video, describe the change to the source clip."New value: +"What to film. At least 3 characters, up to 8,192 UTF-8 bytes. For edit_video, describe the change to the source clip."
      • addedInput schema / properties / prompt / minLength
        Added value: +3
      • addedInput schema / properties / promptEnhancement
        Added value: +{
        +  "description": "Prompt expansion when the catalog lists that control. false maps to fal disabled on MiniMax H3 and H3 Max.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / referenceImageAssetIds
        Added value: +{
        +  "description": "Reference stills for reference_to_video. Do not send leftover stills here on Kling 3 Pro / Kling 3 4K when klingElements is set.",
        +  "items": {
        +    "description": "Reference still generation-asset id.",
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / seed
        Added value: +{
        +  "description": "Seed when the catalog lists that control.",
        +  "type": "number"
        +}
      • addedInput schema / properties / sourceVideoAssetId
        Added value: +{
        +  "description": "Source MP4 generation-asset id for edit_video. Same as sourceAssetIds[0] for that mode.",
        +  "type": "string"
        +}
      • addedInput schema / properties / startImageAssetId
        Added value: +{
        +  "description": "Start-frame generation-asset id. Same as sourceAssetIds[0] for image_to_video and first_last_frame.",
        +  "type": "string"
        +}
      • addedInput schema / properties / style
        Added value: +{
        +  "description": "Style id when the catalog lists that control. Omit or none for the default look.",
        +  "type": "string"
        +}
  8. 2 tool updates
    • Changedlist_character_film_catalog2 fields changed
      • changedOutput schema / properties / looks / description
        Previous value: -"Illustration looks (id, name, tagline). Pick lookId from this list."New value: +"Illustration looks (id, name, tagline) for reference. Each narrator has a fixed lookId; there is no separate look choice."
      • changedOutput schema / properties / narrators / description
        Previous value: -"Narrators (id, name, tagline, archetype). Pick narratorId from this list."New value: +"Narrators (id, name, tagline, archetype, voiceName, lookId). Pick narratorId from this list; the narrator brings its own look and voice."
    • Changedplan_character_film5 fields changed
      • changedInput schema / properties / lookId / description
        Previous value: -"Illustration look id from list_character_film_catalog (the style of every frame)."New value: +"Ignored. The narrator’s fixed look is used. Kept so older agents that still send lookId do not hard-fail."
      • removedInput schema / properties / lookId / enum
        Removed value: -[
        -  "claymation",
        -  "watercolor-anime",
        -  "ligne-claire",
        -  "crayon",
        -  "marker-sketch",
        -  "gouache-storybook",
        -  "paper-cutout",
        -  "pixel"
        -]
      • changedInput schema / properties / narratorId / description
        Previous value: -"Narrator id from list_character_film_catalog. The narrator’s voice is used; there is no separate voice choice."New value: +"Narrator id from list_character_film_catalog. The narrator is the whole character: its look and voice are used; there is no separate look or voice choice."
      • changedInput schema / properties / narratorId / enum
        Previous value: -[
        -  "nib",
        -  "kiko",
        -  "stella",
        -  "rex",
        -  "rio",
        -  "wren",
        -  "juno",
        -  "mina"
        -]New value: +[
        +  "pip",
        +  "mo",
        +  "lulu",
        +  "hazel",
        +  "otto",
        +  "rose",
        +  "bo",
        +  "sage",
        +  "wren",
        +  "kiko",
        +  "tally",
        +  "nib",
        +  "chalk",
        +  "rio",
        +  "juno",
        +  "yumi",
        +  "kenji",
        +  "dot",
        +  "patch",
        +  "ada",
        +  "marlo",
        +  "ollie",
        +  "zara",
        +  "barnaby",
        +  "momo",
        +  "bea",
        +  "rex",
        +  "nova",
        +  "gus",
        +  "tock",
        +  "fern",
        +  "duke",
        +  "lumi",
        +  "taro",
        +  "oya",
        +  "bolt",
        +  "reginald",
        +  "pepper",
        +  "lola",
        +  "moss",
        +  "noor",
        +  "arlo",
        +  "mei",
        +  "chip",
        +  "bruno",
        +  "stella",
        +  "kai",
        +  "plume",
        +  "grumble",
        +  "quill"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "topic",
        -  "narratorId",
        -  "lookId",
        -  "lengthSeconds"
        -]New value: +[
        +  "topic",
        +  "narratorId",
        +  "lengthSeconds"
        +]
  9. 1 tool update
    • Changedplan_character_film3 fields changed
      • changedInput schema / properties / narratorId / description
        Previous value: -"Narrator id from list_character_film_catalog (who tells the story)."New value: +"Narrator id from list_character_film_catalog. The narrator’s voice is used; there is no separate voice choice."
      • changedInput schema / properties / voiceId / description
        Previous value: -"Narration voice id from list_audio_lab_voices. Same catalog as Audio Lab / Story."New value: +"Ignored. The narrator’s fixed voice is used. Kept so older agents that still send voiceId do not hard-fail."
      • changedInput schema / required
        Previous value: -[
        -  "topic",
        -  "narratorId",
        -  "lookId",
        -  "voiceId",
        -  "lengthSeconds"
        -]New value: +[
        +  "topic",
        +  "narratorId",
        +  "lookId",
        +  "lengthSeconds"
        +]
  10. 3 tool updates
    • Changedget_character_film2 fields changed
      • addedOutput schema / properties / failureDetail
        Added value: +{
        +  "description": "Sanitized provider detail (endpoint, HTTP status, first 300 characters). Never a prompt.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / failureStage
        Added value: +{
        +  "description": "Pipeline stage that failed, when known.",
        +  "type": "string"
        +}
    • Changedlist_character_film_catalog2 fields changed
      • removedOutput schema / properties / captionStyles
        Removed value: -{
        -  "description": "Story caption looks Character Films can burn in.",
        -  "items": {
        -    "description": "Caption look id such as spotlight or off.",
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / defaultCaptionStyle
        Removed value: -{
        -  "description": "Default caption look (spotlight).",
        -  "type": "string"
        -}
    • Changedplan_character_film2 fields changed
      • removedInput schema / properties / captionStyle
        Removed value: -{
        -  "default": "spotlight",
        -  "description": "Burned-in caption look from the Story catalog: off, spotlight (default), impact, highlighter, editorial, boxed, or kicker. Shared with Story and Topic Shorts. Does not change the quote. Caption failure still ships the film.",
        -  "enum": [
        -    "off",
        -    "spotlight",
        -    "impact",
        -    "highlighter",
        -    "editorial",
        -    "boxed",
        -    "kicker"
        -  ],
        -  "type": "string"
        -}
      • removedOutput schema / properties / captionStyle
        Removed value: -{
        -  "description": "Burned-in caption look from the Story catalog.",
        -  "type": "string"
        -}
  11. 2 tool updates
    • Changedplan_character_film3 fields changed
      • changedInput schema / properties / lengthSeconds / description
        Previous value: -"Full film length in seconds (30, 60, 120, or 180). The opening (block 1, at most 15 seconds) renders first; continue_character_film films the rest."New value: +"Full film length in seconds (30, 60, 120, or 180). The opening (block 1, at most 8 seconds) renders first; continue_character_film films the rest."
      • changedOutput schema / properties / blocks / description
        Previous value: -"Ordered script blocks. Block 1 is the opening (at most 15 seconds)."New value: +"Ordered script blocks. Block 1 is the opening (at most 8 seconds)."
      • changedOutput schema / properties / openingSeconds / description
        Previous value: -"Duration of block 1, at most 15 seconds."New value: +"Duration of block 1, at most 8 seconds."
    • Changedquote_character_film1 field changed
      • changedInput schema / properties / range / description
        Previous value: -"opening is the first block (at most 15 seconds). remaining is every later block. Continue this film uses remaining after the opening is completed."New value: +"opening is the first block (at most 8 seconds). remaining is every later block. Continue this film uses remaining after the opening is completed."
  12. 7 tool updates
    • Addedcontinue_character_film
    • Addedgenerate_character_film
    • Addedget_character_film
    • Addedlist_character_film_catalog
    • Changedlist_public_generations1 field changed
      • changedInput schema / properties / kind / description
        Previous value: -"Optional product kind filter (topic_short, video_lab, story, talking_short, ad_studio, and other public kinds)."New value: +"Optional product kind filter (topic_short, video_lab, story, talking_short, ad_studio, character_film, and other public kinds)."
    • Addedplan_character_film
    • Addedquote_character_film
  13. 3 tool updates
    • Changedcreate_topic_short_story2 fields changed
      • changedInput schema / properties / storyPlan / properties / beats / items / properties / searchTerms / description
        Previous value: -"English Pexels queries for this beat. Keep the topic’s concrete nouns (people, places, sports, objects). Relatable faces, hands, and motion when they belong to that topic — not generic stock abstraction. English only. Put the strongest on-topic visual first (hook beat plays in the first 1.2s). Later terms should be broader on-topic fallbacks (soccer / football / stadium, not cooking or cafe). Generate fail-opens with topic-near sports footage before lifestyle catalog if Pexels misses, and still ships last-resort clips if Pexels is down. Distinct clips per shot and per beat; identical reuse is last resort."New value: +"English Pexels queries for this beat. Name what this narration is saying (people, places, objects, actions), then the topic. Relatable faces, hands, and motion only when they belong to that spoken line — not a reused talking-head or walking-street clip. English only. Put the strongest visual for this line first (hook beat plays in the first 1.2s). Later terms should be broader on-topic fallbacks (soccer / football / stadium, not cooking or cafe). Generate searches this beat’s narration first, then topic-near sports footage, then lifestyle catalog if Pexels misses, and still ships last-resort clips if Pexels is down. Distinct clips per shot and per beat; identical reuse is last resort."
      • changedInput schema / properties / storyPlan / properties / beats / items / properties / searchTerms / items / description
        Previous value: -"One English Pexels query for this beat (people, places, sports, or objects named in the topic)."New value: +"One English Pexels query for this beat (people, places, objects, or actions named in this spoken line)."
    • Changedgenerate_topic_short2 fields changed
      • changedInput schema / properties / storyPlan / properties / beats / items / properties / searchTerms / description
        Previous value: -"English Pexels queries for this beat. Keep the topic’s concrete nouns (people, places, sports, objects). Relatable faces, hands, and motion when they belong to that topic — not generic stock abstraction. English only. Put the strongest on-topic visual first (hook beat plays in the first 1.2s). Later terms should be broader on-topic fallbacks (soccer / football / stadium, not cooking or cafe). Generate fail-opens with topic-near sports footage before lifestyle catalog if Pexels misses, and still ships last-resort clips if Pexels is down. Distinct clips per shot and per beat; identical reuse is last resort."New value: +"English Pexels queries for this beat. Name what this narration is saying (people, places, objects, actions), then the topic. Relatable faces, hands, and motion only when they belong to that spoken line — not a reused talking-head or walking-street clip. English only. Put the strongest visual for this line first (hook beat plays in the first 1.2s). Later terms should be broader on-topic fallbacks (soccer / football / stadium, not cooking or cafe). Generate searches this beat’s narration first, then topic-near sports footage, then lifestyle catalog if Pexels misses, and still ships last-resort clips if Pexels is down. Distinct clips per shot and per beat; identical reuse is last resort."
      • changedInput schema / properties / storyPlan / properties / beats / items / properties / searchTerms / items / description
        Previous value: -"One English Pexels query for this beat (people, places, sports, or objects named in the topic)."New value: +"One English Pexels query for this beat (people, places, objects, or actions named in this spoken line)."
    • Changedquote_topic_short2 fields changed
      • changedInput schema / properties / storyPlan / properties / beats / items / properties / searchTerms / description
        Previous value: -"English Pexels queries for this beat. Keep the topic’s concrete nouns (people, places, sports, objects). Relatable faces, hands, and motion when they belong to that topic — not generic stock abstraction. English only. Put the strongest on-topic visual first (hook beat plays in the first 1.2s). Later terms should be broader on-topic fallbacks (soccer / football / stadium, not cooking or cafe). Generate fail-opens with topic-near sports footage before lifestyle catalog if Pexels misses, and still ships last-resort clips if Pexels is down. Distinct clips per shot and per beat; identical reuse is last resort."New value: +"English Pexels queries for this beat. Name what this narration is saying (people, places, objects, actions), then the topic. Relatable faces, hands, and motion only when they belong to that spoken line — not a reused talking-head or walking-street clip. English only. Put the strongest visual for this line first (hook beat plays in the first 1.2s). Later terms should be broader on-topic fallbacks (soccer / football / stadium, not cooking or cafe). Generate searches this beat’s narration first, then topic-near sports footage, then lifestyle catalog if Pexels misses, and still ships last-resort clips if Pexels is down. Distinct clips per shot and per beat; identical reuse is last resort."
      • changedInput schema / properties / storyPlan / properties / beats / items / properties / searchTerms / items / description
        Previous value: -"One English Pexels query for this beat (people, places, sports, or objects named in the topic)."New value: +"One English Pexels query for this beat (people, places, objects, or actions named in this spoken line)."
  14. 73 tool updates
    • First observedarm_last_frame_item
    • First observedchoose_last_frame
    • First observedcomplete_generation_asset
    • First observedcreate_checkout_url
    • First observedcreate_last_frame_world
    • First observedcreate_storyboard
    • First observedcreate_topic_short_story
    • First observedend_last_frame_clip
    • First observedestimate_storyboard
    • First observedgenerate_ad
    • First observedgenerate_ad_explain
    • First observedgenerate_ad_proof_pack
    • First observedgenerate_ad_studio
    • First observedgenerate_ad_tip_pack
    • First observedgenerate_audio_lab
    • First observedgenerate_image_lab
    • First observedgenerate_storyboard_part
    • First observedgenerate_talking_short
    • First observedgenerate_topic_short
    • First observedgenerate_video_lab
    • First observedget_account
    • First observedget_ad_generation
    • First observedget_ad_studio
    • First observedget_audio_lab_generation
    • First observedget_clip
    • First observedget_generation_publication
    • First observedget_image_lab_generation
    • First observedget_last_frame_run
    • First observedget_public_generation
    • First observedget_storyboard
    • First observedget_talking_short
    • First observedget_topic_short
    • First observedget_video_lab_generation
    • First observedimport_ad_website
    • First observedlist_ad_generations
    • First observedlist_audio_lab_generations
    • First observedlist_audio_lab_voices
    • First observedlist_free_tools
    • First observedlist_hook_bank
    • First observedlist_image_lab_generations
    • First observedlist_image_lab_models
    • First observedlist_last_frame_games
    • First observedlist_last_frame_worlds
    • First observedlist_library
    • First observedlist_public_generations
    • First observedlist_public_products
    • First observedlist_storyboard_themes
    • First observedlist_storyboard_voices
    • First observedlist_talking_short_actors
    • First observedlist_video_lab_generations
    • First observedlist_video_lab_models
    • First observedpresign_generation_asset
    • First observedpublish_generation
    • First observedquote_ad
    • First observedquote_ad_explain
    • First observedquote_ad_proof_pack
    • First observedquote_ad_studio
    • First observedquote_ad_tip_pack
    • First observedquote_audio_lab
    • First observedquote_image_lab
    • First observedquote_last_frame
    • First observedquote_talking_short
    • First observedquote_topic_short
    • First observedquote_video_lab
    • First observedreconcile_video_lab_generation
    • First observedrender_storyboard
    • First observedresearch_ad_studio
    • First observedresearch_talking_short
    • First observedrun_free_tool
    • First observedstart_last_frame
    • First observedtimeout_last_frame
    • First observedtype_last_frame
    • First observedunpublish_generation

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    24 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources