AnimGen
Server Details
Create AI animations and export transparent sprite sheets, alpha video, frames, and game assets.
- Status
- Healthy
- Uptime
- 77.7% over 65 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 17 tools
The tools are organized around clear resource/action pairs for quotes, generation, polling, cancellation, and export. The main ambiguity is between the animation and source-video generation families, where generate_animation/generate_video, get_animation/get_video_generation, and cancel_animation/cancel_video_generation are semantically close, but descriptions mostly clarify the distinction.
Tool names consistently use snake_case with verb_noun structure: quote_*, generate_*, get_*, cancel_*, upload_*, download_*, preview_*, and list_*. Variants like export_animation and quote_animation_export remain predictable and readable.
The 17 tools cover a fairly rich lifecycle: quoting, generation, polling, cancellation, export, upload, preview, download, and model listing. It is slightly heavy relative to the typical 3-15 range, but most tools correspond to distinct stages or resource types rather than redundant operations.
The surface covers the core paid generation lifecycle from quote through generation, polling, cancellation, export, preview, and download, including image upload preparation and completion. Minor gaps include no general list-tasks or list-assets operation and no delete operation, but agents can work around these using returned IDs.
Available Tools
17 toolscancel_animationCancel animationADestructiveIdempotentInspect
Cancel an owned animation. Inspect cancellation_allowed and cancellation_reason. Seedance and V1 HappyHorse reject cancellation after submission starts (GENERATION_ALREADY_SUBMITTED). V1 MiniMax queued cancellation requires remote confirmation; keep polling the original task even if cancellation is uncertain. Other work already in production may not stop and credits already charged are not refunded.
| Name | Required | Description | Default |
|---|---|---|---|
| animation_id | Yes | Owned task the user has asked to cancel. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Persist this task ID immediately after create; poll it instead of creating again. |
| error | No | Task failure details, independently of any usable outputs. |
| stage | No | Current pipeline stage when available. |
| object | Yes | Public task resource type. |
| status | Yes | succeeded, failed, and cancelled are terminal; cancelling is not terminal. |
| credits | Yes | Quoted, reserved, and charged credit states. |
| outputs | No | Available assets, including partial outputs on failed/cancelled tasks. Always inspect them at a terminal state. |
| metadata | No | Caller-provided metadata. |
| progress | Yes | Fraction from 0 to 1, not a completion-time estimate. |
| created_at | Yes | UTC acceptance timestamp. |
| started_at | No | UTC production start when known. |
| finished_at | No | UTC terminal timestamp when known. |
| resolved_export | No | Persisted FPS sampling summary shared with the quote and manifest; null for legacy tasks. |
| normalized_input | No | Normalized public input; may contain private prompts or image references. Do not log wholesale. |
| cancellation_reason | No | Stable reason when cancellation is unavailable: TASK_TERMINAL, CANCELLATION_PENDING, CANCELLATION_NOT_CONFIRMED, or GENERATION_ALREADY_SUBMITTED. |
| cancellation_allowed | No | Whether a cancellation request can currently be accepted. Remote cancellation still needs confirmation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond destructive/idempotent annotations it discloses the material consequences an agent cannot guess: credits already charged are not refunded, in-production work may not stop, and specific providers reject cancellation with GENERATION_ALREADY_SUBMITTED. The V1 MiniMax remote-confirmation caveat is exactly the kind of non-obvious behavior that prevents misuse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action is front-loaded in sentence one, followed by only decision-relevant caveats about rejection, confirmation, and refunds. It is dense with provider names but no sentence is filler; slight compression would improve scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return fields need not be explained, and the description covers the remaining unknowns: preconditions, provider-specific failure modes, and the financial irreversibility of the call. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single animation_id is already documented as the owned task the user asked to cancel. The description adds no further syntax or semantics for the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource ("Cancel an owned animation"), which lets an agent separate it from cancel_video_generation and cancel_animation_export by resource scope. It never names those siblings explicitly, so differentiation relies on inference from the noun.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete preconditions ("Inspect cancellation_allowed and cancellation_reason") and a fallback rule for uncertain cases ("keep polling the original task even if cancellation is uncertain"). What's missing is explicit routing guidance versus the sibling cancel_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_animation_exportCancel animation exportADestructiveIdempotentInspect
Cancel an owned export only; retain the source video for another export. Continue polling until a terminal state.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Persist this task ID immediately after create; poll it instead of creating again. |
| error | No | Task failure details, independently of any usable outputs. |
| stage | No | Current pipeline stage when available. |
| object | Yes | Public task resource type. |
| status | Yes | succeeded, failed, and cancelled are terminal; cancelling is not terminal. |
| credits | Yes | Quoted, reserved, and charged credit states. |
| outputs | No | Available assets, including partial outputs on failed/cancelled tasks. Always inspect them at a terminal state. |
| metadata | No | Caller-provided metadata. |
| progress | Yes | Fraction from 0 to 1, not a completion-time estimate. |
| created_at | Yes | UTC acceptance timestamp. |
| started_at | No | UTC production start when known. |
| finished_at | No | UTC terminal timestamp when known. |
| resolved_export | No | Persisted FPS sampling summary shared with the quote and manifest; null for legacy tasks. |
| normalized_input | No | Normalized public input; may contain private prompts or image references. Do not log wholesale. |
| cancellation_reason | No | Stable reason when cancellation is unavailable: TASK_TERMINAL, CANCELLATION_PENDING, CANCELLATION_NOT_CONFIRMED, or GENERATION_ALREADY_SUBMITTED. |
| cancellation_allowed | No | Whether a cancellation request can currently be accepted. Remote cancellation still needs confirmation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true; the description adds genuinely useful context beyond them: cancellation preserves the source video for a later export (bounding the blast radius of the 'destructive' hint) and an ownership constraint. The 'continue polling until a terminal state' instruction also tells the caller what to do next, which is not derivable from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the scoping constraint front-loaded and no filler. The polling instruction is slightly abrupt about what to poll (presumably get_animation_export), but the sentence still earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the description covers ownership, retention of the source asset, and post-cancel polling behavior. The only real omission is identifying what task_id refers to and which tool to poll with.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single task_id parameter has 0% schema description coverage, and the description never mentions it at all. The name and uuid format make its meaning mostly inferable, but the description does not clarify whether it is the export task id or the animation id — a real ambiguity worth documenting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (cancel) and resource (an owned animation export), and the word 'export' naturally separates it from cancel_animation and cancel_video_generation. It does not explicitly name those siblings, so the differentiation is implied by vocabulary rather than spelled out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Cancel an owned export only' implies an ownership precondition and narrows applicability, but there is no explicit when-to-use/when-not framing against cancel_animation or cancel_video_generation. The agent must infer the choice from the resource name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_video_generationCancel video generationADestructiveIdempotentInspect
Request cancellation of an owned source-video task. Inspect cancellation_allowed and cancellation_reason. Seedance and V1 HappyHorse reject cancellation after submission starts (GENERATION_ALREADY_SUBMITTED). V1 MiniMax queued cancellation requires remote confirmation. Keep polling the original task even if cancellation is uncertain; cancellation does not guarantee a refund.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Persist this task ID immediately after create; poll it instead of creating again. |
| error | No | Task failure details, independently of any usable outputs. |
| stage | No | Current pipeline stage when available. |
| object | Yes | Public task resource type. |
| status | Yes | succeeded, failed, and cancelled are terminal; cancelling is not terminal. |
| credits | Yes | Quoted, reserved, and charged credit states. |
| outputs | No | Available assets, including partial outputs on failed/cancelled tasks. Always inspect them at a terminal state. |
| metadata | No | Caller-provided metadata. |
| progress | Yes | Fraction from 0 to 1, not a completion-time estimate. |
| created_at | Yes | UTC acceptance timestamp. |
| started_at | No | UTC production start when known. |
| finished_at | No | UTC terminal timestamp when known. |
| resolved_export | No | Persisted FPS sampling summary shared with the quote and manifest; null for legacy tasks. |
| normalized_input | No | Normalized public input; may contain private prompts or image references. Do not log wholesale. |
| cancellation_reason | No | Stable reason when cancellation is unavailable: TASK_TERMINAL, CANCELLATION_PENDING, CANCELLATION_NOT_CONFIRMED, or GENERATION_ALREADY_SUBMITTED. |
| cancellation_allowed | No | Whether a cancellation request can currently be accepted. Remote cancellation still needs confirmation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavior: inspect cancellation_allowed and cancellation_reason, model-specific rejection codes, remote confirmation for certain queued tasks, continued polling after uncertain cancellation, and no refund guarantee. These details materially inform how an agent should interpret and handle cancellation outcomes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, followed by inspection guidance, model-specific constraints, and post-cancellation behavior. Every sentence carries operational value with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of annotations and an output schema, the description supplies the key behavioral context needed to invoke and reason about cancellation. It covers eligibility checks, model-specific exceptions, polling behavior, and refund caveats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one required parameter, task_id, but schema description coverage is 0%. The description implies an owned source-video task but does not explain task_id semantics, where to obtain it, or how it relates to sibling tools. The type and UUID format in the schema do most of the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Request cancellation of an owned source-video task.' This clearly distinguishes the operation from generation or retrieval, though it does not explicitly contrast with sibling tools such as cancel_animation or get_video_generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context and several when-not conditions, including model-specific rejection after submission starts and remote confirmation requirements for V1 MiniMax queued cancellations. It does not name an alternative sibling tool for checking task status, but the operational conditions are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_image_uploadComplete image uploadAIdempotentInspect
Validate a prepared image upload and return its reusable file_id.
| Name | Required | Description | Default |
|---|---|---|---|
| upload_id | Yes | Session from prepare_image_upload, after byte transfer completed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| sha256 | Yes | SHA-256 of the uploaded image bytes. |
| file_id | Yes | Reusable owned public file ID for request.input.first_frame. |
| byte_size | Yes | Validated image byte count. |
| mime_type | Yes | Validated image MIME type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint: true (calling multiple times safe) and destructiveHint: false (not destructive). The description adds the context that the upload must be 'prepared' and byte transfer completed, but does not state that validation is idempotent or clarify side effects. It doesn't contradict annotations, but also doesn't add much beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that gets straight to the point. It front-loads the primary action and result, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter, 100% schema coverage, and clear annotations, the description covers the essential context for calling this tool. It could mention the expected format of the return value (file_id), but the output schema is present and likely provides that. The prerequisite of 'prepared' is also stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% coverage, including a clear description of upload_id. The tool description adds no further parameter details. Since schema coverage is high, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific action ('Validate a prepared image upload') and the key result ('return its reusable file_id'), which is clear and concise. It doesn't name sibling tools, but the verb 'complete' distinguishes it from 'prepare' in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool should be used after preparation and byte transfer, as indicated by 'a prepared image upload'. However, it doesn't explicitly state when not to use it or mention alternatives. The required parameter description reinforces the prerequisite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_assetDownload assetARead-onlyIdempotentInspect
Return metadata and a short-lived signed download URL for an owned output asset.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | Yes | Owned asset ID from task outputs, not a task ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Stable public asset ID; use it to refresh download metadata. |
| media | No | Whitelisted measured video metadata. Unknown fields are null; non-video assets return null. |
| format | Yes | Artifact format; inspect actual outputs rather than assuming an array order. |
| object | No | |
| byte_size | Yes | Expected file size in bytes. |
| mime_type | Yes | Asset media type. |
| created_at | Yes | Creation timestamp in UTC. |
| download_url | Yes | Sensitive short-lived signed URL. Download without a Bearer header, including after redirects; never log the URL. |
| download_expires_at | Yes | Signed URL expiry in UTC; refresh via asset lookup when expired. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, and non-destructive behavior. The description adds meaningful behavioral context beyond annotations by disclosing that the URL is 'short-lived' and signed, which informs the agent that the response is time-sensitive and requires no separate auth setup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no filler. It front-loads the action and resource, and every word contributes to conveying what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool with a rich parameter description and an output schema, the description is complete. An agent has sufficient information to invoke it correctly: asset_id, owned output asset scope, and the short-lived signed URL return behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents asset_id. The description adds little beyond the schema beyond reinforcing the 'owned output asset' scoping, which is also stated in the parameter description. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Return') and a clear resource ('metadata and a short-lived signed download URL for an owned output asset'). It distinguishes this tool from sibling get/quote/export tools by focusing on the download-specific behavior and the asset scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description and schema context make the usage situation clear: this is for owned output assets, using an asset_id from task outputs rather than a task ID. It does not explicitly name alternatives or exclusions, but the context is strong enough for an agent to know 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.
export_animationExport animationADestructiveIdempotentInspect
Start a paid export from an existing video asset with approved quote_id or max_credits. Changing selection or FPS creates a new export only; never regenerates source motion.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | ||
| quote_id | No | ||
| max_credits | No | Approved per-operation credit cap. | |
| idempotency_key | Yes | Reuse unchanged on retry; use a new key when changing the selection or FPS. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Persist this task ID immediately after create; poll it instead of creating again. |
| error | No | Task failure details, independently of any usable outputs. |
| stage | No | Current pipeline stage when available. |
| object | Yes | Public task resource type. |
| status | Yes | succeeded, failed, and cancelled are terminal; cancelling is not terminal. |
| credits | Yes | Quoted, reserved, and charged credit states. |
| outputs | No | Available assets, including partial outputs on failed/cancelled tasks. Always inspect them at a terminal state. |
| metadata | No | Caller-provided metadata. |
| progress | Yes | Fraction from 0 to 1, not a completion-time estimate. |
| created_at | Yes | UTC acceptance timestamp. |
| started_at | No | UTC production start when known. |
| finished_at | No | UTC terminal timestamp when known. |
| resolved_export | No | Persisted FPS sampling summary shared with the quote and manifest; null for legacy tasks. |
| normalized_input | No | Normalized public input; may contain private prompts or image references. Do not log wholesale. |
| cancellation_reason | No | Stable reason when cancellation is unavailable: TASK_TERMINAL, CANCELLATION_PENDING, CANCELLATION_NOT_CONFIRMED, or GENERATION_ALREADY_SUBMITTED. |
| cancellation_allowed | No | Whether a cancellation request can currently be accepted. Remote cancellation still needs confirmation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true; the description adds the crucial economic trait ('paid', approved credit cap) and the semantics that changing selection or FPS yields a new chargeable export rather than a re-render. It does not disclose whether the export is asynchronous or how failures/refunds behave, which matters for a destructive paid call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the cost gate is front-loaded before the immutability caveat. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Return values are covered by the output schema, so their absence is fine, but for a paid, destructive, asynchronous export fired against a nested request object, the description omits that the job is polled via get_animation_export and that it can be cancelled. Those workflow facts are not recoverable from the annotations or schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 50% top-level schema coverage, the description compensates by explaining that quote_id must be approved and that max_credits is a cap, and by tying selection/FPS changes to new-export semantics. It stops short of stating whether quote_id and max_credits are mutually exclusive or which takes precedence, leaving the two alternative cost-control parameters partially ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Start a paid export from an existing video asset') and explicitly distinguishes itself from the generation siblings by asserting it 'never regenerates source motion'. An agent can tell this apart from generate_animation and generate_video without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'with approved quote_id or max_credits' establishes the prerequisite gate for calling it, which is real usage guidance. However it never names the upstream/downstream siblings (quote_animation_export, get_animation_export, cancel_animation_export), so the agent must infer the quote-then-export-then-poll workflow rather than being routed to it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_animationGenerate animationADestructiveIdempotentInspect
Start a paid asynchronous animation. Requires a prior quote_id or an explicit max_credits limit and an idempotency key. Credits may be charged once production begins.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Exact user-approved request; keep unchanged across retries. | |
| quote_id | No | Fresh approved quote. At least quote_id or max_credits is required; both are allowed. | |
| max_credits | No | User-approved per-operation credit cap. Never silently increase it; this is not a multi-task budget. | |
| idempotency_key | Yes | Persist per logical generation; reuse with the same OAuth client and user after a timeout. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Persist this task ID immediately after create; poll it instead of creating again. |
| error | No | Task failure details, independently of any usable outputs. |
| stage | No | Current pipeline stage when available. |
| object | Yes | Public task resource type. |
| status | Yes | succeeded, failed, and cancelled are terminal; cancelling is not terminal. |
| credits | Yes | Quoted, reserved, and charged credit states. |
| outputs | No | Available assets, including partial outputs on failed/cancelled tasks. Always inspect them at a terminal state. |
| metadata | No | Caller-provided metadata. |
| progress | Yes | Fraction from 0 to 1, not a completion-time estimate. |
| created_at | Yes | UTC acceptance timestamp. |
| started_at | No | UTC production start when known. |
| finished_at | No | UTC terminal timestamp when known. |
| resolved_export | No | Persisted FPS sampling summary shared with the quote and manifest; null for legacy tasks. |
| normalized_input | No | Normalized public input; may contain private prompts or image references. Do not log wholesale. |
| cancellation_reason | No | Stable reason when cancellation is unavailable: TASK_TERMINAL, CANCELLATION_PENDING, CANCELLATION_NOT_CONFIRMED, or GENERATION_ALREADY_SUBMITTED. |
| cancellation_allowed | No | Whether a cancellation request can currently be accepted. Remote cancellation still needs confirmation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds billing consequences the annotations cannot convey: credits 'may be charged once production begins', i.e. cost is incurred after a point of no return. That is meaningful context for a costly operation, though it omits how to observe completion (polling get_animation).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no filler, with the cost/payment signal placed first so an agent sees the risk before the parameter requirements. Everything in the description earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, paid, async operation with a fully described schema and an output schema, the description covers cost timing, preconditions, and idempotency. The one gap is that it doesn't say the result is retrieved later via get_animation, leaving the async workflow implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so quote_id, max_credits, idempotency_key and request are already documented in detail. The description restates the quote/max_credits either-or requirement and idempotency key presence but adds no syntax or format detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Start a paid asynchronous animation') with the cost and async traits front-loaded, which cleanly separates it from sibling generators like generate_video and from quote_animation/export_animation. An agent knows exactly what action this performs without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The precondition 'Requires a prior quote_id or an explicit max_credits limit and an idempotency key' effectively routes an agent to quote_animation first. It never names the sibling tool or states when not to use this one (e.g., use preview_video for a cheap check), so it stops short of full explicit alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_videoGenerate source videoADestructiveIdempotentInspect
Start a paid video-only task with approved quote_id or max_credits. Save the task ID, poll get_video_generation, then retain the video asset ID for previews and exports.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | ||
| quote_id | No | ||
| max_credits | No | Approved per-operation credit cap. | |
| idempotency_key | Yes | Persist and reuse for this logical video generation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Persist this task ID immediately after create; poll it instead of creating again. |
| error | No | Task failure details, independently of any usable outputs. |
| stage | No | Current pipeline stage when available. |
| object | Yes | Public task resource type. |
| status | Yes | succeeded, failed, and cancelled are terminal; cancelling is not terminal. |
| credits | Yes | Quoted, reserved, and charged credit states. |
| outputs | No | Available assets, including partial outputs on failed/cancelled tasks. Always inspect them at a terminal state. |
| metadata | No | Caller-provided metadata. |
| progress | Yes | Fraction from 0 to 1, not a completion-time estimate. |
| created_at | Yes | UTC acceptance timestamp. |
| started_at | No | UTC production start when known. |
| finished_at | No | UTC terminal timestamp when known. |
| resolved_export | No | Persisted FPS sampling summary shared with the quote and manifest; null for legacy tasks. |
| normalized_input | No | Normalized public input; may contain private prompts or image references. Do not log wholesale. |
| cancellation_reason | No | Stable reason when cancellation is unavailable: TASK_TERMINAL, CANCELLATION_PENDING, CANCELLATION_NOT_CONFIRMED, or GENERATION_ALREADY_SUBMITTED. |
| cancellation_allowed | No | Whether a cancellation request can currently be accepted. Remote cancellation still needs confirmation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag openWorld, idempotent, destructive, non-read-only, but the description adds what they cannot: the operation is PAID/credit-consuming, requires a pre-approved quote or cap, and is asynchronous. It does not explain failure/insufficient-credit behavior or what the destructive flag actually destroys, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both load-bearing: the first covers cost/gating, the second covers the async lifecycle. The critical cost precondition is front-loaded with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description still supplies the lifecycle glue (task ID → get_video_generation → asset ID) that an agent needs to chain calls. What is missing is model-capability requirements (e.g. first_frame support) and the polling/retry contract for a long-running openWorld task.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, and the description clarifies the role of quote_id and max_credits ('approved', 'or') but leaves ambiguous whether both can be supplied and what happens if neither is. idempotency_key is left entirely to the schema, and the nested request object is not described beyond the schema's own rich field docs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Start a paid video-only task') and the billing inputs that gate it ('approved quote_id or max_credits'). The 'video-only' qualifier implicitly separates it from generate_animation, though it never names that sibling directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the prerequisite (approved quote_id or max_credits) and outlines the follow-up flow (poll get_video_generation, retain asset ID). However it does not say when to prefer this over generate_animation, nor name quote_video_generation as the source of the quote, so the agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_animationGet animationBRead-onlyIdempotentInspect
Get animation status, progress, credit state, errors, and generated assets.
| Name | Required | Description | Default |
|---|---|---|---|
| animation_id | Yes | Owned task ID returned by generate_animation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Persist this task ID immediately after create; poll it instead of creating again. |
| error | No | Task failure details, independently of any usable outputs. |
| stage | No | Current pipeline stage when available. |
| object | Yes | Public task resource type. |
| status | Yes | succeeded, failed, and cancelled are terminal; cancelling is not terminal. |
| credits | Yes | Quoted, reserved, and charged credit states. |
| outputs | No | Available assets, including partial outputs on failed/cancelled tasks. Always inspect them at a terminal state. |
| metadata | No | Caller-provided metadata. |
| progress | Yes | Fraction from 0 to 1, not a completion-time estimate. |
| created_at | Yes | UTC acceptance timestamp. |
| started_at | No | UTC production start when known. |
| finished_at | No | UTC terminal timestamp when known. |
| resolved_export | No | Persisted FPS sampling summary shared with the quote and manifest; null for legacy tasks. |
| normalized_input | No | Normalized public input; may contain private prompts or image references. Do not log wholesale. |
| cancellation_reason | No | Stable reason when cancellation is unavailable: TASK_TERMINAL, CANCELLATION_PENDING, CANCELLATION_NOT_CONFIRMED, or GENERATION_ALREADY_SUBMITTED. |
| cancellation_allowed | No | Whether a cancellation request can currently be accepted. Remote cancellation still needs confirmation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. The description's added content is a list of returned fields, which duplicates what the existing output schema already conveys; no polling cadence, terminal-state, or error-handling behavior is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, no filler. Nothing could be cut without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete about what data comes back, but since an output schema exists, those words are spent on redundant material while genuinely useful context (that this is the polling counterpart to generate_animation, and how it differs from get_animation_export) is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, and the schema already explains it is the 'Owned task ID returned by generate_animation'. The description adds nothing further about the ID's provenance or format, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('animation') plus the exact facets returned: status, progress, credit state, errors, generated assets. That is well beyond a tautology. It does not, however, distinguish itself from the similarly named sibling get_animation_export, which an agent could easily confuse with this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description contains no when-to-use or when-not-to-use guidance and never mentions alternatives such as get_animation_export or the polling relationship to generate_animation. The only hint that this is a post-generation status check lives in the schema's animation_id description, not in the tool description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_animation_exportGet animation exportARead-onlyIdempotentInspect
Poll an owned export task; inspect resolved_export and outputs even after failure or cancellation.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Persist this task ID immediately after create; poll it instead of creating again. |
| error | No | Task failure details, independently of any usable outputs. |
| stage | No | Current pipeline stage when available. |
| object | Yes | Public task resource type. |
| status | Yes | succeeded, failed, and cancelled are terminal; cancelling is not terminal. |
| credits | Yes | Quoted, reserved, and charged credit states. |
| outputs | No | Available assets, including partial outputs on failed/cancelled tasks. Always inspect them at a terminal state. |
| metadata | No | Caller-provided metadata. |
| progress | Yes | Fraction from 0 to 1, not a completion-time estimate. |
| created_at | Yes | UTC acceptance timestamp. |
| started_at | No | UTC production start when known. |
| finished_at | No | UTC terminal timestamp when known. |
| resolved_export | No | Persisted FPS sampling summary shared with the quote and manifest; null for legacy tasks. |
| normalized_input | No | Normalized public input; may contain private prompts or image references. Do not log wholesale. |
| cancellation_reason | No | Stable reason when cancellation is unavailable: TASK_TERMINAL, CANCELLATION_PENDING, CANCELLATION_NOT_CONFIRMED, or GENERATION_ALREADY_SUBMITTED. |
| cancellation_allowed | No | Whether a cancellation request can currently be accepted. Remote cancellation still needs confirmation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, idempotent, non-destructive operation, so the behavioral bar is lower. The description adds useful context beyond annotations: this polls an owned export task and can return resolved_export and outputs even after failure or cancellation, which is meaningful terminal-state behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the polling purpose and then adds the terminal-state inspection detail. Every clause earns its place with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because an output schema exists, the description need not explain return fields, and it still usefully clarifies polling and failure/cancellation behavior. For a simple one-parameter read-only tool, this is nearly complete, with only minor gaps around rate limits or pagination that may not apply.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the only parameter, task_id, is undocumented in both schema and description. The phrase 'owned export task' hints that task_id identifies an export task you own, but it does not explain the UUID format, where to obtain the ID, or what makes a task owned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (poll) and resource (owned export task), and adds that resolved_export and outputs can be inspected even after failure or cancellation. It is clearly distinct from initiating or canceling an export, though it does not explicitly name the sibling tools it differs from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies this tool is for polling an existing export task and checking results after failure/cancellation, but it never explicitly states when to use it versus export_animation, quote_animation_export, or cancel_animation_export. The usage context is inferable but not fully spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_video_generationGet video generationARead-onlyIdempotentInspect
Poll an owned source-video task, including partial outputs, measured media metadata and credit state.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Persist this task ID immediately after create; poll it instead of creating again. |
| error | No | Task failure details, independently of any usable outputs. |
| stage | No | Current pipeline stage when available. |
| object | Yes | Public task resource type. |
| status | Yes | succeeded, failed, and cancelled are terminal; cancelling is not terminal. |
| credits | Yes | Quoted, reserved, and charged credit states. |
| outputs | No | Available assets, including partial outputs on failed/cancelled tasks. Always inspect them at a terminal state. |
| metadata | No | Caller-provided metadata. |
| progress | Yes | Fraction from 0 to 1, not a completion-time estimate. |
| created_at | Yes | UTC acceptance timestamp. |
| started_at | No | UTC production start when known. |
| finished_at | No | UTC terminal timestamp when known. |
| resolved_export | No | Persisted FPS sampling summary shared with the quote and manifest; null for legacy tasks. |
| normalized_input | No | Normalized public input; may contain private prompts or image references. Do not log wholesale. |
| cancellation_reason | No | Stable reason when cancellation is unavailable: TASK_TERMINAL, CANCELLATION_PENDING, CANCELLATION_NOT_CONFIRMED, or GENERATION_ALREADY_SUBMITTED. |
| cancellation_allowed | No | Whether a cancellation request can currently be accepted. Remote cancellation still needs confirmation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful context beyond that by noting partial outputs, measured media metadata, credit state, and the ownership constraint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-formed sentence with the operation front-loaded and no wasted words. It efficiently packs the scope and key return details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema is available, so the description need not fully document return values, and annotations cover the safety profile. It is nearly complete for a simple polling tool, with the main gap being the unexplained task_id parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage for the single task_id parameter is 0%, so the description should compensate but does not. It refers only to a 'source-video task' and never explains that task_id is the identifier returned by a generation or quote operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Poll') and a specific resource ('owned source-video task'), making the core action clear. It distinguishes itself reasonably from generation/cancellation siblings, though it does not explicitly name an alternative such as preview_video or generate_video.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implicitly clear: this is a polling tool for an owned source-video task. However, it does not explicitly state when to use it instead of alternatives like preview_video, nor does it mention that the task_id typically comes from generate_video.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsList animation modelsARead-onlyIdempotentInspect
List enabled animation models, supported parameters, and capabilities.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Currently enabled models; do not hard-code this list in a client. |
| object | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that it returns enabled models and their supported parameters/capabilities, which is useful but does not go beyond what annotations already imply. Since the description does not contradict annotations, a 3 is appropriate as it adds minimal extra behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with the action and resource. It efficiently covers the key aspects (enabled models, parameters, capabilities) without any fluff, making it easy for an agent to parse quickly. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, read-only, idempotent) and the existence of an output schema, the description is complete enough. It clearly states what the tool lists and the content categories. It might benefit from noting that it returns a list, but that is implicit in 'List'. Overall, it covers what an agent needs to know.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description doesn't need to explain any. The baseline is 4 for no parameters, and the description appropriately focuses on what the tool returns, which is helpful for understanding the tool's purpose. No parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists enabled animation models with their supported parameters and capabilities. It uses a specific verb ('List') and resource ('animation models'), and the scope ('enabled') distinguishes it from potentially listing all models, though siblings don't include a similar list tool, making differentiation straightforward.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for discovering available models and their capabilities, which is clear from the context. However, it does not explicitly state when not to use it or mention alternatives, but given the sibling tools are for actions like generating or canceling animations, the distinction is implied. No explicit exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_image_uploadPrepare image uploadAInspect
Create a short-lived direct upload. PUT exactly byte_size bytes using the returned URL and headers, then call complete_image_upload.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Client filename, not a local path the server can read. | |
| byte_size | Yes | Exact number of bytes the client will PUT. | |
| mime_type | Yes | Actual image MIME type. |
Output Schema
| Name | Required | Description |
|---|---|---|
| method | No | HTTP method the client must use for the byte transfer. |
| headers | Yes | Exact transfer headers; do not add MCP tokens or API Bearer credentials. |
| max_bytes | Yes | Maximum accepted upload byte count. |
| upload_id | Yes | Upload session ID for complete_image_upload, not the final file_id. |
| expires_at | Yes | Upload URL expiry. |
| upload_url | Yes | Sensitive short-lived upload URL. Transfer actual bytes; do not publish this URL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context beyond annotations: the upload is 'short-lived', the PUT must be exactly byte_size bytes, and a follow-up call is required. Annotations cover open-world and non-idempotent behavior, so the description supplements without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that states the purpose and the required subsequent actions with zero waste. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema handles return values, and the description covers the complete workflow (prepare, PUT, complete). No essential information for calling this tool correctly is missing, including the requirement to use the returned URL and headers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter already described. The description reinforces the 'exactly byte_size' requirement, which is also in the schema, but adds little new semantic information beyond the existing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Create'), a resource ('short-lived direct upload'), and the exact follow-up actions (PUT bytes, then call complete_image_upload). This clearly distinguishes it from sibling tools like complete_image_upload and generate_animation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit usage sequence: prepare, PUT exactly byte_size bytes, then complete. It does not list alternatives or exclusions, but the two-step flow is unambiguous for the direct-upload use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_videoPreview source videoAIdempotentInspect
Get a labeled contact sheet at up to 12 timestamps, with actual source times. Uses no AI or credits; subject to storage quota and media budgets. Returns a signed image URL, not inline image bytes; fetch it without credentials to inspect. Does not preview final alpha quality.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | ||
| asset_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| cells | Yes | Thumbnails in request order, preserving duplicates. |
| image | Yes | Cached PNG contact sheet with a refreshable signed download URL. |
| width | Yes | Contact sheet width in pixels, including labels and padding. |
| height | Yes | Contact sheet height in pixels, including labels and padding. |
| object | No | |
| source_video_asset_id | Yes | Stable source video asset ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, but the description adds significant behavioral details: it mentions cost implications ('subject to storage quota and media budgets'), explains the output format ('Returns a signed image URL, not inline image bytes; fetch it without credentials'), and clarifies a limitation ('Does not preview final alpha quality'). These details go beyond what annotations provide and help the agent understand side effects and usage constraints. No contradictions with annotations are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: three sentences that front-load the core purpose, then cover cost/limitations and output format. Each sentence adds essential information without redundancy. It is neither overly verbose nor under-specified, and the most critical detail (what it does) appears first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (signal: has output schema: true) and the input schema is detailed, the description covers all necessary context for a preview tool: it states the output type (signed URL), cost/budget implications, and the limitation regarding alpha quality. It does not need to explain return values since the output schema presumably does. The description is sufficient for an agent to decide whether to use this tool and what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not elaborate on the parameters, and schema description coverage is 0% (the tool description itself mentions no parameters). However, the input schema provides thorough descriptions for both parameters (max_frame_size and timestamps_seconds), including constraints and defaults. The description does reinforce the 12-timestamp limit ('at up to 12 timestamps'), but it adds no new semantic value beyond what the schema already explains. Thus, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get a labeled contact sheet at up to 12 timestamps, with actual source times.' It specifies the resource (video), the action (preview), and key constraints. It also distinguishes itself from siblings by noting it 'Uses no AI or credits,' setting it apart from generation tools like generate_video. This makes the purpose unambiguous and easily differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides useful context for when to use this tool: it emphasizes that it uses no AI or credits and is subject to storage quota and media budgets, implying it's a lightweight preview option. It also warns that it 'Does not preview final alpha quality,' suggesting it's not for final output assessment. However, it does not explicitly name alternatives like generate_video or state conditions for choosing this over them, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_animationQuote animationARead-onlyInspect
Calculate the current credit price and issue a short-lived quote_id. This does not start generation or spend credits.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Complete intended animation request; quoting starts no generation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| credits | Yes | Quoted credits; show the amount to the user before generation. |
| quote_id | Yes | Short-lived quote owned by this user and OAuth client; can bind to one logical generation key. |
| breakdown | Yes | Public cost components. |
| expires_at | Yes | Quote expiry; re-quote and confirm if it expires or price changes. |
| resolved_export | No | Resolved sampling summary for an independent FPS export. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: the quote_id is short-lived and no credits are spent, which tells the agent this is a cheap preflight call. It omits how long the quote stays valid, which matters because annotations mark it non-idempotent (repeat calls may reprice).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no waste; the core action and the key non-effect are both front-loaded. Nothing redundant with the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the description covers the pricing purpose and the no-spend guarantee. For a quoting endpoint whose value hinges on the quote's lifetime and its handoff to generate_animation, the vague 'short-lived' is the only meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema description coverage is 100%, so the schema carries the burden of documenting the full AnimationCreateRequest tree. The description adds only the framing that the request must be the 'complete intended animation request', which is marginal beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific two-part action (calculate credit price, issue a short-lived quote_id) on the animation resource, which is clear and concrete. It differentiates itself from generate_animation by explicitly denying generation, but it never distinguishes itself from the closely named siblings quote_animation_export and quote_video_generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The negative framing ('does not start generation or spend credits') implies this is the pricing step to call before generating, but usage is left to inference. No explicit when-to-use statement, no prerequisites, and no routing to quote_animation_export or quote_video_generation for other artifact types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_animation_exportQuote animation exportBRead-onlyInspect
Quote an export from an owned source video. FPS exports return a resolved sampling summary and never regenerate the video.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| credits | Yes | Quoted credits; show the amount to the user before generation. |
| quote_id | Yes | Short-lived quote owned by this user and OAuth client; can bind to one logical generation key. |
| breakdown | Yes | Public cost components. |
| expires_at | Yes | Quote expiry; re-quote and confirm if it expires or price changes. |
| resolved_export | No | Resolved sampling summary for an independent FPS export. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read-only, non-destructive operation, so the description is not required to carry the safety profile. It still adds real behavioral value by disclosing that FPS exports return a resolved sampling summary and that no video is regenerated, which tells the agent this is a cheap preflight that reuses an existing video rather than triggering work.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences with the primary purpose front-loaded and no filler. The second sentence is dense but slightly opaque ('resolved sampling summary') without prior context on what a quote returns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value details are covered, and the quoted-versus-executed distinction is at least hinted at. Still missing for a nested-options tool: where it sits in the quote → export → poll lifecycle, whether the quote is free/consumes credits, and why idempotentHint is false for a read-only operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The reported top-level coverage is 0% (a single `request` wrapper with no description), and the prose says nothing about parameters at all. In practice the nested $defs are richly documented (mode, fps vs frame_count exclusivity, output_formats defaults), so the schema carries the semantics, but the description adds nothing and never even signals that export settings are nested under `request`.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: quoting an export from an owned source video, which is distinguishable from the sibling export_animation (executing) and get_animation_export (retrieving). However, it never names those siblings, so the quote-vs-execute distinction must be inferred from the tool name rather than the prose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus export_animation, get_animation_export, or quote_animation, and no explicit prerequisite such as 'call this before export_animation.' The phrase 'owned source video' hints at an ownership requirement but gives no actionable context or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_video_generationQuote video generationCRead-onlyInspect
Quote source-video generation only; no export or production starts.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| credits | Yes | Quoted credits; show the amount to the user before generation. |
| quote_id | Yes | Short-lived quote owned by this user and OAuth client; can bind to one logical generation key. |
| breakdown | Yes | Public cost components. |
| expires_at | Yes | Quote expiry; re-quote and confirm if it expires or price changes. |
| resolved_export | No | Resolved sampling summary for an independent FPS export. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, which the description aligns with by stating it only quotes and does not start production. The description adds minimal context beyond that, such as clarifying it does not handle export or production, but does not disclose what happens after quoting (e.g., whether the quote is persisted or requires authentication). Given the annotations cover the read-only nature, this is acceptable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant wording. It is front-loaded with the core purpose and exclusions. However, its brevity sacrifices necessary detail, making it more under-specified than efficiently concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the request object (with many optional fields like model, ratio, transparency, etc.) and the existence of an output schema, the description is severely incomplete. It does not explain what a quote entails, what the response contains, or how this tool relates to generate_video (e.g., that a quote must precede generation). The description leaves the agent without enough context to use the tool correctly, despite the rich schema and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides no information about the 'request' parameter or its nested structure. Schema description coverage is 0%, meaning the description does not mention any parameter details. While the schema itself has field descriptions, the tool description fails to guide the agent on how to construct a valid request, such as ensuring options match the later create call. This is a significant gap for a complex object parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (quote) and resource (source-video generation), and explicitly excludes export and production, distinguishing it from related tools like generate_video and export_animation. However, it does not specify what a 'quote' returns (e.g., cost estimate or feasibility), leaving some ambiguity about the tool's output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it is only for quoting video generation and explicitly states it does not start export or production, which hints at when not to use it. However, it does not name alternative tools (e.g., generate_video for actual generation, quote_animation for animation) or provide explicit conditions for choosing this over siblings.
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.
9 tool updates
- Changed
cancel_animation2 fields changed- added
Output schema / properties / cancellation_allowedAdded value: +{ + "default": false, + "description": "Whether a cancellation request can currently be accepted. Remote cancellation still needs confirmation.", + "title": "Cancellation Allowed", + "type": "boolean", + "x-description-zh": "当前是否允许受理取消请求;远端取消仍须确认。" +} - added
Output schema / properties / cancellation_reasonAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Stable reason when cancellation is unavailable: TASK_TERMINAL, CANCELLATION_PENDING, CANCELLATION_NOT_CONFIRMED, or GENERATION_ALREADY_SUBMITTED.", + "title": "Cancellation Reason", + "x-description-zh": "不可取消的稳定原因:TASK_TERMINAL、CANCELLATION_PENDING、CANCELLATION_NOT_CONFIRMED 或 GENERATION_ALREADY_SUBMITTED。" +}
- Changed
cancel_animation_export2 fields changed- added
Output schema / properties / cancellation_allowedAdded value: +{ + "default": false, + "description": "Whether a cancellation request can currently be accepted. Remote cancellation still needs confirmation.", + "title": "Cancellation Allowed", + "type": "boolean", + "x-description-zh": "当前是否允许受理取消请求;远端取消仍须确认。" +} - added
Output schema / properties / cancellation_reasonAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Stable reason when cancellation is unavailable: TASK_TERMINAL, CANCELLATION_PENDING, CANCELLATION_NOT_CONFIRMED, or GENERATION_ALREADY_SUBMITTED.", + "title": "Cancellation Reason", + "x-description-zh": "不可取消的稳定原因:TASK_TERMINAL、CANCELLATION_PENDING、CANCELLATION_NOT_CONFIRMED 或 GENERATION_ALREADY_SUBMITTED。" +}
- Changed
cancel_video_generation2 fields changed- added
Output schema / properties / cancellation_allowedAdded value: +{ + "default": false, + "description": "Whether a cancellation request can currently be accepted. Remote cancellation still needs confirmation.", + "title": "Cancellation Allowed", + "type": "boolean", + "x-description-zh": "当前是否允许受理取消请求;远端取消仍须确认。" +} - added
Output schema / properties / cancellation_reasonAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Stable reason when cancellation is unavailable: TASK_TERMINAL, CANCELLATION_PENDING, CANCELLATION_NOT_CONFIRMED, or GENERATION_ALREADY_SUBMITTED.", + "title": "Cancellation Reason", + "x-description-zh": "不可取消的稳定原因:TASK_TERMINAL、CANCELLATION_PENDING、CANCELLATION_NOT_CONFIRMED 或 GENERATION_ALREADY_SUBMITTED。" +}
- Changed
export_animation2 fields changed- added
Output schema / properties / cancellation_allowedAdded value: +{ + "default": false, + "description": "Whether a cancellation request can currently be accepted. Remote cancellation still needs confirmation.", + "title": "Cancellation Allowed", + "type": "boolean", + "x-description-zh": "当前是否允许受理取消请求;远端取消仍须确认。" +} - added
Output schema / properties / cancellation_reasonAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Stable reason when cancellation is unavailable: TASK_TERMINAL, CANCELLATION_PENDING, CANCELLATION_NOT_CONFIRMED, or GENERATION_ALREADY_SUBMITTED.", + "title": "Cancellation Reason", + "x-description-zh": "不可取消的稳定原因:TASK_TERMINAL、CANCELLATION_PENDING、CANCELLATION_NOT_CONFIRMED 或 GENERATION_ALREADY_SUBMITTED。" +}
- Changed
generate_animation2 fields changed- added
Output schema / properties / cancellation_allowedAdded value: +{ + "default": false, + "description": "Whether a cancellation request can currently be accepted. Remote cancellation still needs confirmation.", + "title": "Cancellation Allowed", + "type": "boolean", + "x-description-zh": "当前是否允许受理取消请求;远端取消仍须确认。" +} - added
Output schema / properties / cancellation_reasonAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Stable reason when cancellation is unavailable: TASK_TERMINAL, CANCELLATION_PENDING, CANCELLATION_NOT_CONFIRMED, or GENERATION_ALREADY_SUBMITTED.", + "title": "Cancellation Reason", + "x-description-zh": "不可取消的稳定原因:TASK_TERMINAL、CANCELLATION_PENDING、CANCELLATION_NOT_CONFIRMED 或 GENERATION_ALREADY_SUBMITTED。" +}
- Changed
generate_video2 fields changed- added
Output schema / properties / cancellation_allowedAdded value: +{ + "default": false, + "description": "Whether a cancellation request can currently be accepted. Remote cancellation still needs confirmation.", + "title": "Cancellation Allowed", + "type": "boolean", + "x-description-zh": "当前是否允许受理取消请求;远端取消仍须确认。" +} - added
Output schema / properties / cancellation_reasonAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Stable reason when cancellation is unavailable: TASK_TERMINAL, CANCELLATION_PENDING, CANCELLATION_NOT_CONFIRMED, or GENERATION_ALREADY_SUBMITTED.", + "title": "Cancellation Reason", + "x-description-zh": "不可取消的稳定原因:TASK_TERMINAL、CANCELLATION_PENDING、CANCELLATION_NOT_CONFIRMED 或 GENERATION_ALREADY_SUBMITTED。" +}
- Changed
get_animation2 fields changed- added
Output schema / properties / cancellation_allowedAdded value: +{ + "default": false, + "description": "Whether a cancellation request can currently be accepted. Remote cancellation still needs confirmation.", + "title": "Cancellation Allowed", + "type": "boolean", + "x-description-zh": "当前是否允许受理取消请求;远端取消仍须确认。" +} - added
Output schema / properties / cancellation_reasonAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Stable reason when cancellation is unavailable: TASK_TERMINAL, CANCELLATION_PENDING, CANCELLATION_NOT_CONFIRMED, or GENERATION_ALREADY_SUBMITTED.", + "title": "Cancellation Reason", + "x-description-zh": "不可取消的稳定原因:TASK_TERMINAL、CANCELLATION_PENDING、CANCELLATION_NOT_CONFIRMED 或 GENERATION_ALREADY_SUBMITTED。" +}
- Changed
get_animation_export2 fields changed- added
Output schema / properties / cancellation_allowedAdded value: +{ + "default": false, + "description": "Whether a cancellation request can currently be accepted. Remote cancellation still needs confirmation.", + "title": "Cancellation Allowed", + "type": "boolean", + "x-description-zh": "当前是否允许受理取消请求;远端取消仍须确认。" +} - added
Output schema / properties / cancellation_reasonAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Stable reason when cancellation is unavailable: TASK_TERMINAL, CANCELLATION_PENDING, CANCELLATION_NOT_CONFIRMED, or GENERATION_ALREADY_SUBMITTED.", + "title": "Cancellation Reason", + "x-description-zh": "不可取消的稳定原因:TASK_TERMINAL、CANCELLATION_PENDING、CANCELLATION_NOT_CONFIRMED 或 GENERATION_ALREADY_SUBMITTED。" +}
- Changed
get_video_generation2 fields changed- added
Output schema / properties / cancellation_allowedAdded value: +{ + "default": false, + "description": "Whether a cancellation request can currently be accepted. Remote cancellation still needs confirmation.", + "title": "Cancellation Allowed", + "type": "boolean", + "x-description-zh": "当前是否允许受理取消请求;远端取消仍须确认。" +} - added
Output schema / properties / cancellation_reasonAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Stable reason when cancellation is unavailable: TASK_TERMINAL, CANCELLATION_PENDING, CANCELLATION_NOT_CONFIRMED, or GENERATION_ALREADY_SUBMITTED.", + "title": "Cancellation Reason", + "x-description-zh": "不可取消的稳定原因:TASK_TERMINAL、CANCELLATION_PENDING、CANCELLATION_NOT_CONFIRMED 或 GENERATION_ALREADY_SUBMITTED。" +}
4 tool updates
- Changed
export_animation1 field changed- changed
Input schema / $defs / ExportOptions / properties / output_formats / items / enumPrevious value: -[ - "clip_video", - "webm_alpha", - "prores_4444", - "frames_zip", - "spritesheet", - "spritesheet_json", - "unity_meta", - "unity_pack", - "godot_pack", - "unreal_paper2d_pack", - "cocos_creator_pack", - "construct3_pack" -]New value: +[ + "clip_video", + "webm_alpha", + "prores_4444", + "gif", + "frames_zip", + "spritesheet", + "spritesheet_json", + "unity_meta", + "unity_pack", + "godot_pack", + "unreal_paper2d_pack", + "cocos_creator_pack", + "construct3_pack" +]
- Changed
generate_animation1 field changed- changed
Input schema / $defs / ExportOptions / properties / output_formats / items / enumPrevious value: -[ - "clip_video", - "webm_alpha", - "prores_4444", - "frames_zip", - "spritesheet", - "spritesheet_json", - "unity_meta", - "unity_pack", - "godot_pack", - "unreal_paper2d_pack", - "cocos_creator_pack", - "construct3_pack" -]New value: +[ + "clip_video", + "webm_alpha", + "prores_4444", + "gif", + "frames_zip", + "spritesheet", + "spritesheet_json", + "unity_meta", + "unity_pack", + "godot_pack", + "unreal_paper2d_pack", + "cocos_creator_pack", + "construct3_pack" +]
- Changed
quote_animation1 field changed- changed
Input schema / $defs / ExportOptions / properties / output_formats / items / enumPrevious value: -[ - "clip_video", - "webm_alpha", - "prores_4444", - "frames_zip", - "spritesheet", - "spritesheet_json", - "unity_meta", - "unity_pack", - "godot_pack", - "unreal_paper2d_pack", - "cocos_creator_pack", - "construct3_pack" -]New value: +[ + "clip_video", + "webm_alpha", + "prores_4444", + "gif", + "frames_zip", + "spritesheet", + "spritesheet_json", + "unity_meta", + "unity_pack", + "godot_pack", + "unreal_paper2d_pack", + "cocos_creator_pack", + "construct3_pack" +]
- Changed
quote_animation_export1 field changed- changed
Input schema / $defs / ExportOptions / properties / output_formats / items / enumPrevious value: -[ - "clip_video", - "webm_alpha", - "prores_4444", - "frames_zip", - "spritesheet", - "spritesheet_json", - "unity_meta", - "unity_pack", - "godot_pack", - "unreal_paper2d_pack", - "cocos_creator_pack", - "construct3_pack" -]New value: +[ + "clip_video", + "webm_alpha", + "prores_4444", + "gif", + "frames_zip", + "spritesheet", + "spritesheet_json", + "unity_meta", + "unity_pack", + "godot_pack", + "unreal_paper2d_pack", + "cocos_creator_pack", + "construct3_pack" +]
4 tool updates
- Changed
export_animation1 field changed- changed
Input schema / $defs / ExportOptions / properties / output_formats / items / enumPrevious value: -[ - "clip_video", - "webm_alpha", - "prores_4444", - "frames_zip", - "spritesheet", - "spritesheet_json", - "unity_meta", - "unity_pack", - "godot_pack", - "unreal_paper2d_pack", - "cocos_creator_pack" -]New value: +[ + "clip_video", + "webm_alpha", + "prores_4444", + "frames_zip", + "spritesheet", + "spritesheet_json", + "unity_meta", + "unity_pack", + "godot_pack", + "unreal_paper2d_pack", + "cocos_creator_pack", + "construct3_pack" +]
- Changed
generate_animation1 field changed- changed
Input schema / $defs / ExportOptions / properties / output_formats / items / enumPrevious value: -[ - "clip_video", - "webm_alpha", - "prores_4444", - "frames_zip", - "spritesheet", - "spritesheet_json", - "unity_meta", - "unity_pack", - "godot_pack", - "unreal_paper2d_pack", - "cocos_creator_pack" -]New value: +[ + "clip_video", + "webm_alpha", + "prores_4444", + "frames_zip", + "spritesheet", + "spritesheet_json", + "unity_meta", + "unity_pack", + "godot_pack", + "unreal_paper2d_pack", + "cocos_creator_pack", + "construct3_pack" +]
- Changed
quote_animation1 field changed- changed
Input schema / $defs / ExportOptions / properties / output_formats / items / enumPrevious value: -[ - "clip_video", - "webm_alpha", - "prores_4444", - "frames_zip", - "spritesheet", - "spritesheet_json", - "unity_meta", - "unity_pack", - "godot_pack", - "unreal_paper2d_pack", - "cocos_creator_pack" -]New value: +[ + "clip_video", + "webm_alpha", + "prores_4444", + "frames_zip", + "spritesheet", + "spritesheet_json", + "unity_meta", + "unity_pack", + "godot_pack", + "unreal_paper2d_pack", + "cocos_creator_pack", + "construct3_pack" +]
- Changed
quote_animation_export1 field changed- changed
Input schema / $defs / ExportOptions / properties / output_formats / items / enumPrevious value: -[ - "clip_video", - "webm_alpha", - "prores_4444", - "frames_zip", - "spritesheet", - "spritesheet_json", - "unity_meta", - "unity_pack", - "godot_pack", - "unreal_paper2d_pack", - "cocos_creator_pack" -]New value: +[ + "clip_video", + "webm_alpha", + "prores_4444", + "frames_zip", + "spritesheet", + "spritesheet_json", + "unity_meta", + "unity_pack", + "godot_pack", + "unreal_paper2d_pack", + "cocos_creator_pack", + "construct3_pack" +]
14 tool updates
- Changed
cancel_animation8 fields changed- added
Output schema / $defs / AssetResponse / properties / mediaAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/MediaResponse" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whitelisted measured video metadata. Unknown fields are null; non-video assets return null.", + "x-description-zh": "白名单内的实测视频信息,未知字段为 null;非视频资产为 null。" +} - added
Output schema / $defs / ExportWarningAdded value: +{ + "additionalProperties": false, + "properties": { + "code": { + "title": "Code", + "type": "string" + }, + "details": { + "additionalProperties": true, + "default": {}, + "title": "Details", + "type": "object" + }, + "message": { + "title": "Message", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "title": "ExportWarning", + "type": "object" +} - added
Output schema / $defs / MediaResponseAdded value: +{ + "additionalProperties": false, + "properties": { + "duration_seconds": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Playable video duration measured from presentation timestamps; never provider-requested duration.", + "title": "Duration Seconds", + "x-description-zh": "根据呈现时间戳测得的可播放视频时长,不使用供应商请求时长。" + }, + "fps": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Measured average source frame rate; use presentation timestamps for VFR selection.", + "title": "Fps", + "x-description-zh": "实测源平均帧率;可变帧率选帧仍依据呈现时间戳。" + }, + "frame_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Decoded source frame count, or null when unknown.", + "title": "Frame Count", + "x-description-zh": "解码源帧数,未知为 null。" + }, + "height": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Displayed video height in pixels, accounting for rotation.", + "title": "Height", + "x-description-zh": "考虑旋转后的显示高度,单位像素。" + }, + "width": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Displayed video width in pixels, accounting for rotation.", + "title": "Width", + "x-description-zh": "考虑旋转后的显示宽度,单位像素。" + } + }, + "title": "MediaResponse", + "type": "object" +} - added
Output schema / $defs / ResolvedExportAdded value: +{ + "additionalProperties": false, + "properties": { + "duration_ms": { + "description": "Sum of manifest frame durations in milliseconds.", + "title": "Duration Ms", + "type": "integer", + "x-description-zh": "Manifest 逐帧时长的毫秒总和。" + }, + "fps": { + "description": "Target sampling frequency; never recalculated as frame_count / duration.", + "title": "Fps", + "type": "number", + "x-description-zh": "目标采样频率,不按帧数除以时长重新计算。" + }, + "frame_count": { + "description": "Number of samples strictly before the selected end.", + "title": "Frame Count", + "type": "integer", + "x-description-zh": "严格位于选区终点前的采样帧数。" + }, + "selection": { + "$ref": "#/$defs/Selection", + "description": "Resolved source interval; full uses measured playable duration.", + "x-description-zh": "实际源区间,full 使用实测可播放时长。" + }, + "warnings": { + "default": [], + "description": "Sampling warnings, including repeated source frames without interpolation.", + "items": { + "$ref": "#/$defs/ExportWarning" + }, + "title": "Warnings", + "type": "array", + "x-description-zh": "采样警告,包含未补帧而重复采到源帧的情况。" + } + }, + "required": [ + "selection", + "fps", + "frame_count", + "duration_ms" + ], + "title": "ResolvedExport", + "type": "object" +} - added
Output schema / $defs / SelectionAdded value: +{ + "additionalProperties": false, + "properties": { + "duration_seconds": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Required when mode=range; positive interval length in seconds.", + "title": "Duration Seconds", + "x-description-zh": "mode=range 时必填,选段时长秒数必须为正。" + }, + "mode": { + "default": "full", + "description": "full uses the complete source; range requires duration_seconds.", + "enum": [ + "full", + "range" + ], + "title": "Mode", + "type": "string", + "x-description-zh": "full 使用完整来源;range 必须提供 duration_seconds。" + }, + "start_seconds": { + "default": 0, + "description": "Range start in seconds from the source beginning.", + "minimum": 0, + "title": "Start Seconds", + "type": "number", + "x-description-zh": "相对源视频起点的选段开始秒数。" + } + }, + "title": "Selection", + "type": "object" +} - added
Output schema / $defs / TaskError / properties / detailsAdded value: +{ + "additionalProperties": true, + "default": {}, + "description": "Public error details, without private storage or provider values.", + "title": "Details", + "type": "object", + "x-description-zh": "公开错误详情,不含私有存储或供应商值。" +} - added
Output schema / $defs / TaskError / properties / paramAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Related public parameter when available.", + "title": "Param", + "x-description-zh": "可用时提供相关公开参数。" +} - added
Output schema / properties / resolved_exportAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/ResolvedExport" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Persisted FPS sampling summary shared with the quote and manifest; null for legacy tasks.", + "x-description-zh": "持久化的 FPS 采样摘要,与报价、Manifest 一致;历史任务为 null。" +}
- Added
cancel_animation_export - Added
cancel_video_generation - Changed
download_asset2 fields changed- added
Output schema / $defsAdded value: +{ + "MediaResponse": { + "additionalProperties": false, + "properties": { + "duration_seconds": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Playable video duration measured from presentation timestamps; never provider-requested duration.", + "title": "Duration Seconds", + "x-description-zh": "根据呈现时间戳测得的可播放视频时长,不使用供应商请求时长。" + }, + "fps": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Measured average source frame rate; use presentation timestamps for VFR selection.", + "title": "Fps", + "x-description-zh": "实测源平均帧率;可变帧率选帧仍依据呈现时间戳。" + }, + "frame_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Decoded source frame count, or null when unknown.", + "title": "Frame Count", + "x-description-zh": "解码源帧数,未知为 null。" + }, + "height": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Displayed video height in pixels, accounting for rotation.", + "title": "Height", + "x-description-zh": "考虑旋转后的显示高度,单位像素。" + }, + "width": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Displayed video width in pixels, accounting for rotation.", + "title": "Width", + "x-description-zh": "考虑旋转后的显示宽度,单位像素。" + } + }, + "title": "MediaResponse", + "type": "object" + } +} - added
Output schema / properties / mediaAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/MediaResponse" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whitelisted measured video metadata. Unknown fields are null; non-video assets return null.", + "x-description-zh": "白名单内的实测视频信息,未知字段为 null;非视频资产为 null。" +}
- Added
export_animation - Changed
generate_animation19 fields changed- added
Input schema / $defs / AnimationCreateRequest / properties / export / default / fpsAdded value: +null - added
Input schema / $defs / ExportOptions / properties / fpsAdded value: +{ + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 60, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Source-speed sampling frequency, without interpolation. Independent exports only; requires spritesheet and spritesheet_json. A short final frame preserves the selection duration.", + "title": "Fps", + "x-description-zh": "按源视频原速采样,不补帧;仅用于独立导出,需 spritesheet 和 spritesheet_json;短尾帧保留选区总时长。" +} - added
Input schema / $defs / ExportOptions / properties / frame_count / anyOfAdded value: +[ + { + "maximum": 240, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / $defs / ExportOptions / properties / frame_count / defaultPrevious value: -24New value: +null - changed
Input schema / $defs / ExportOptions / properties / frame_count / descriptionPrevious value: -"Number of frames sampled over the selected interval, not an FPS field."New value: +"Legacy uniform frame count, mutually exclusive with fps. When both are omitted, uses 24 frames." - removed
Input schema / $defs / ExportOptions / properties / frame_count / maximumRemoved value: -240 - removed
Input schema / $defs / ExportOptions / properties / frame_count / minimumRemoved value: -1 - removed
Input schema / $defs / ExportOptions / properties / frame_count / typeRemoved value: -"integer" - changed
Input schema / $defs / ExportOptions / properties / frame_count / x-description-zhPrevious value: -"在选段内采样的帧数,不是 FPS 参数。"New value: +"旧版等间隔帧数,与 fps 互斥;两者均省略时使用 24 帧。" - changed
Input schema / $defs / ExportOptions / properties / output_formats / descriptionPrevious value: -"Requested asset formats; defaults to spritesheet. Duplicates are removed. Metadata needs its matching texture."New value: +"Requested asset formats; defaults to spritesheet in frame_count mode, or spritesheet plus spritesheet_json in FPS mode. Duplicates are removed. Metadata needs its matching texture." - changed
Input schema / $defs / ExportOptions / properties / output_formats / x-description-zhPrevious value: -"请求的资产格式;默认 spritesheet,重复项会去重,元数据需配套纹理。"New value: +"请求的资产格式;帧数模式默认 spritesheet,FPS 模式默认 spritesheet 加 spritesheet_json。重复项会去重,元数据需配套纹理。" - added
Output schema / $defs / AssetResponse / properties / mediaAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/MediaResponse" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whitelisted measured video metadata. Unknown fields are null; non-video assets return null.", + "x-description-zh": "白名单内的实测视频信息,未知字段为 null;非视频资产为 null。" +} - added
Output schema / $defs / ExportWarningAdded value: +{ + "additionalProperties": false, + "properties": { + "code": { + "title": "Code", + "type": "string" + }, + "details": { + "additionalProperties": true, + "default": {}, + "title": "Details", + "type": "object" + }, + "message": { + "title": "Message", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "title": "ExportWarning", + "type": "object" +} - added
Output schema / $defs / MediaResponseAdded value: +{ + "additionalProperties": false, + "properties": { + "duration_seconds": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Playable video duration measured from presentation timestamps; never provider-requested duration.", + "title": "Duration Seconds", + "x-description-zh": "根据呈现时间戳测得的可播放视频时长,不使用供应商请求时长。" + }, + "fps": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Measured average source frame rate; use presentation timestamps for VFR selection.", + "title": "Fps", + "x-description-zh": "实测源平均帧率;可变帧率选帧仍依据呈现时间戳。" + }, + "frame_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Decoded source frame count, or null when unknown.", + "title": "Frame Count", + "x-description-zh": "解码源帧数,未知为 null。" + }, + "height": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Displayed video height in pixels, accounting for rotation.", + "title": "Height", + "x-description-zh": "考虑旋转后的显示高度,单位像素。" + }, + "width": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Displayed video width in pixels, accounting for rotation.", + "title": "Width", + "x-description-zh": "考虑旋转后的显示宽度,单位像素。" + } + }, + "title": "MediaResponse", + "type": "object" +} - added
Output schema / $defs / ResolvedExportAdded value: +{ + "additionalProperties": false, + "properties": { + "duration_ms": { + "description": "Sum of manifest frame durations in milliseconds.", + "title": "Duration Ms", + "type": "integer", + "x-description-zh": "Manifest 逐帧时长的毫秒总和。" + }, + "fps": { + "description": "Target sampling frequency; never recalculated as frame_count / duration.", + "title": "Fps", + "type": "number", + "x-description-zh": "目标采样频率,不按帧数除以时长重新计算。" + }, + "frame_count": { + "description": "Number of samples strictly before the selected end.", + "title": "Frame Count", + "type": "integer", + "x-description-zh": "严格位于选区终点前的采样帧数。" + }, + "selection": { + "$ref": "#/$defs/Selection", + "description": "Resolved source interval; full uses measured playable duration.", + "x-description-zh": "实际源区间,full 使用实测可播放时长。" + }, + "warnings": { + "default": [], + "description": "Sampling warnings, including repeated source frames without interpolation.", + "items": { + "$ref": "#/$defs/ExportWarning" + }, + "title": "Warnings", + "type": "array", + "x-description-zh": "采样警告,包含未补帧而重复采到源帧的情况。" + } + }, + "required": [ + "selection", + "fps", + "frame_count", + "duration_ms" + ], + "title": "ResolvedExport", + "type": "object" +} - added
Output schema / $defs / SelectionAdded value: +{ + "additionalProperties": false, + "properties": { + "duration_seconds": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Required when mode=range; positive interval length in seconds.", + "title": "Duration Seconds", + "x-description-zh": "mode=range 时必填,选段时长秒数必须为正。" + }, + "mode": { + "default": "full", + "description": "full uses the complete source; range requires duration_seconds.", + "enum": [ + "full", + "range" + ], + "title": "Mode", + "type": "string", + "x-description-zh": "full 使用完整来源;range 必须提供 duration_seconds。" + }, + "start_seconds": { + "default": 0, + "description": "Range start in seconds from the source beginning.", + "minimum": 0, + "title": "Start Seconds", + "type": "number", + "x-description-zh": "相对源视频起点的选段开始秒数。" + } + }, + "title": "Selection", + "type": "object" +} - added
Output schema / $defs / TaskError / properties / detailsAdded value: +{ + "additionalProperties": true, + "default": {}, + "description": "Public error details, without private storage or provider values.", + "title": "Details", + "type": "object", + "x-description-zh": "公开错误详情,不含私有存储或供应商值。" +} - added
Output schema / $defs / TaskError / properties / paramAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Related public parameter when available.", + "title": "Param", + "x-description-zh": "可用时提供相关公开参数。" +} - added
Output schema / properties / resolved_exportAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/ResolvedExport" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Persisted FPS sampling summary shared with the quote and manifest; null for legacy tasks.", + "x-description-zh": "持久化的 FPS 采样摘要,与报价、Manifest 一致;历史任务为 null。" +}
- Added
generate_video - Changed
get_animation8 fields changed- added
Output schema / $defs / AssetResponse / properties / mediaAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/MediaResponse" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Whitelisted measured video metadata. Unknown fields are null; non-video assets return null.", + "x-description-zh": "白名单内的实测视频信息,未知字段为 null;非视频资产为 null。" +} - added
Output schema / $defs / ExportWarningAdded value: +{ + "additionalProperties": false, + "properties": { + "code": { + "title": "Code", + "type": "string" + }, + "details": { + "additionalProperties": true, + "default": {}, + "title": "Details", + "type": "object" + }, + "message": { + "title": "Message", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "title": "ExportWarning", + "type": "object" +} - added
Output schema / $defs / MediaResponseAdded value: +{ + "additionalProperties": false, + "properties": { + "duration_seconds": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Playable video duration measured from presentation timestamps; never provider-requested duration.", + "title": "Duration Seconds", + "x-description-zh": "根据呈现时间戳测得的可播放视频时长,不使用供应商请求时长。" + }, + "fps": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Measured average source frame rate; use presentation timestamps for VFR selection.", + "title": "Fps", + "x-description-zh": "实测源平均帧率;可变帧率选帧仍依据呈现时间戳。" + }, + "frame_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Decoded source frame count, or null when unknown.", + "title": "Frame Count", + "x-description-zh": "解码源帧数,未知为 null。" + }, + "height": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Displayed video height in pixels, accounting for rotation.", + "title": "Height", + "x-description-zh": "考虑旋转后的显示高度,单位像素。" + }, + "width": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Displayed video width in pixels, accounting for rotation.", + "title": "Width", + "x-description-zh": "考虑旋转后的显示宽度,单位像素。" + } + }, + "title": "MediaResponse", + "type": "object" +} - added
Output schema / $defs / ResolvedExportAdded value: +{ + "additionalProperties": false, + "properties": { + "duration_ms": { + "description": "Sum of manifest frame durations in milliseconds.", + "title": "Duration Ms", + "type": "integer", + "x-description-zh": "Manifest 逐帧时长的毫秒总和。" + }, + "fps": { + "description": "Target sampling frequency; never recalculated as frame_count / duration.", + "title": "Fps", + "type": "number", + "x-description-zh": "目标采样频率,不按帧数除以时长重新计算。" + }, + "frame_count": { + "description": "Number of samples strictly before the selected end.", + "title": "Frame Count", + "type": "integer", + "x-description-zh": "严格位于选区终点前的采样帧数。" + }, + "selection": { + "$ref": "#/$defs/Selection", + "description": "Resolved source interval; full uses measured playable duration.", + "x-description-zh": "实际源区间,full 使用实测可播放时长。" + }, + "warnings": { + "default": [], + "description": "Sampling warnings, including repeated source frames without interpolation.", + "items": { + "$ref": "#/$defs/ExportWarning" + }, + "title": "Warnings", + "type": "array", + "x-description-zh": "采样警告,包含未补帧而重复采到源帧的情况。" + } + }, + "required": [ + "selection", + "fps", + "frame_count", + "duration_ms" + ], + "title": "ResolvedExport", + "type": "object" +} - added
Output schema / $defs / SelectionAdded value: +{ + "additionalProperties": false, + "properties": { + "duration_seconds": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Required when mode=range; positive interval length in seconds.", + "title": "Duration Seconds", + "x-description-zh": "mode=range 时必填,选段时长秒数必须为正。" + }, + "mode": { + "default": "full", + "description": "full uses the complete source; range requires duration_seconds.", + "enum": [ + "full", + "range" + ], + "title": "Mode", + "type": "string", + "x-description-zh": "full 使用完整来源;range 必须提供 duration_seconds。" + }, + "start_seconds": { + "default": 0, + "description": "Range start in seconds from the source beginning.", + "minimum": 0, + "title": "Start Seconds", + "type": "number", + "x-description-zh": "相对源视频起点的选段开始秒数。" + } + }, + "title": "Selection", + "type": "object" +} - added
Output schema / $defs / TaskError / properties / detailsAdded value: +{ + "additionalProperties": true, + "default": {}, + "description": "Public error details, without private storage or provider values.", + "title": "Details", + "type": "object", + "x-description-zh": "公开错误详情,不含私有存储或供应商值。" +} - added
Output schema / $defs / TaskError / properties / paramAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Related public parameter when available.", + "title": "Param", + "x-description-zh": "可用时提供相关公开参数。" +} - added
Output schema / properties / resolved_exportAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/ResolvedExport" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Persisted FPS sampling summary shared with the quote and manifest; null for legacy tasks.", + "x-description-zh": "持久化的 FPS 采样摘要,与报价、Manifest 一致;历史任务为 null。" +}
- Added
get_animation_export - Added
get_video_generation - Added
preview_video - Changed
quote_animation13 fields changed- added
Input schema / $defs / AnimationCreateRequest / properties / export / default / fpsAdded value: +null - added
Input schema / $defs / ExportOptions / properties / fpsAdded value: +{ + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 60, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Source-speed sampling frequency, without interpolation. Independent exports only; requires spritesheet and spritesheet_json. A short final frame preserves the selection duration.", + "title": "Fps", + "x-description-zh": "按源视频原速采样,不补帧;仅用于独立导出,需 spritesheet 和 spritesheet_json;短尾帧保留选区总时长。" +} - added
Input schema / $defs / ExportOptions / properties / frame_count / anyOfAdded value: +[ + { + "maximum": 240, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / $defs / ExportOptions / properties / frame_count / defaultPrevious value: -24New value: +null - changed
Input schema / $defs / ExportOptions / properties / frame_count / descriptionPrevious value: -"Number of frames sampled over the selected interval, not an FPS field."New value: +"Legacy uniform frame count, mutually exclusive with fps. When both are omitted, uses 24 frames." - removed
Input schema / $defs / ExportOptions / properties / frame_count / maximumRemoved value: -240 - removed
Input schema / $defs / ExportOptions / properties / frame_count / minimumRemoved value: -1 - removed
Input schema / $defs / ExportOptions / properties / frame_count / typeRemoved value: -"integer" - changed
Input schema / $defs / ExportOptions / properties / frame_count / x-description-zhPrevious value: -"在选段内采样的帧数,不是 FPS 参数。"New value: +"旧版等间隔帧数,与 fps 互斥;两者均省略时使用 24 帧。" - changed
Input schema / $defs / ExportOptions / properties / output_formats / descriptionPrevious value: -"Requested asset formats; defaults to spritesheet. Duplicates are removed. Metadata needs its matching texture."New value: +"Requested asset formats; defaults to spritesheet in frame_count mode, or spritesheet plus spritesheet_json in FPS mode. Duplicates are removed. Metadata needs its matching texture." - changed
Input schema / $defs / ExportOptions / properties / output_formats / x-description-zhPrevious value: -"请求的资产格式;默认 spritesheet,重复项会去重,元数据需配套纹理。"New value: +"请求的资产格式;帧数模式默认 spritesheet,FPS 模式默认 spritesheet 加 spritesheet_json。重复项会去重,元数据需配套纹理。" - added
Output schema / $defsAdded value: +{ + "ExportWarning": { + "additionalProperties": false, + "properties": { + "code": { + "title": "Code", + "type": "string" + }, + "details": { + "additionalProperties": true, + "default": {}, + "title": "Details", + "type": "object" + }, + "message": { + "title": "Message", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "title": "ExportWarning", + "type": "object" + }, + "ResolvedExport": { + "additionalProperties": false, + "properties": { + "duration_ms": { + "description": "Sum of manifest frame durations in milliseconds.", + "title": "Duration Ms", + "type": "integer", + "x-description-zh": "Manifest 逐帧时长的毫秒总和。" + }, + "fps": { + "description": "Target sampling frequency; never recalculated as frame_count / duration.", + "title": "Fps", + "type": "number", + "x-description-zh": "目标采样频率,不按帧数除以时长重新计算。" + }, + "frame_count": { + "description": "Number of samples strictly before the selected end.", + "title": "Frame Count", + "type": "integer", + "x-description-zh": "严格位于选区终点前的采样帧数。" + }, + "selection": { + "$ref": "#/$defs/Selection", + "description": "Resolved source interval; full uses measured playable duration.", + "x-description-zh": "实际源区间,full 使用实测可播放时长。" + }, + "warnings": { + "default": [], + "description": "Sampling warnings, including repeated source frames without interpolation.", + "items": { + "$ref": "#/$defs/ExportWarning" + }, + "title": "Warnings", + "type": "array", + "x-description-zh": "采样警告,包含未补帧而重复采到源帧的情况。" + } + }, + "required": [ + "selection", + "fps", + "frame_count", + "duration_ms" + ], + "title": "ResolvedExport", + "type": "object" + }, + "Selection": { + "additionalProperties": false, + "properties": { + "duration_seconds": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Required when mode=range; positive interval length in seconds.", + "title": "Duration Seconds", + "x-description-zh": "mode=range 时必填,选段时长秒数必须为正。" + }, + "mode": { + "default": "full", + "description": "full uses the complete source; range requires duration_seconds.", + "enum": [ + "full", + "range" + ], + "title": "Mode", + "type": "string", + "x-description-zh": "full 使用完整来源;range 必须提供 duration_seconds。" + }, + "start_seconds": { + "default": 0, + "description": "Range start in seconds from the source beginning.", + "minimum": 0, + "title": "Start Seconds", + "type": "number", + "x-description-zh": "相对源视频起点的选段开始秒数。" + } + }, + "title": "Selection", + "type": "object" + } +} - added
Output schema / properties / resolved_exportAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/ResolvedExport" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Resolved sampling summary for an independent FPS export.", + "x-description-zh": "独立 FPS 导出的确定采样摘要。" +}
- Added
quote_animation_export - Added
quote_video_generation
8 tool updates
- First observed
cancel_animation - First observed
complete_image_upload - First observed
download_asset - First observed
generate_animation - First observed
get_animation - First observed
list_models - First observed
prepare_image_upload - First observed
quote_animation
Publisher details
- Operator
- AnimGen
- Operator website
- https://animgen.com
- Vendor relationship
- First-party
- Documentation
- https://animgen.com/docs/en/mcp/connect-clients
- Trust center
- Unknown
- Restrictions
- Public beta. Requires a verified AnimGen account and OAuth authorization. No paid subscription, admin approval, or custom OAuth app is required to connect. Credit-consuming operations require sufficient AnimGen credits and are subject to account limits and model availability.
Related MCP Connectors
Generate game assets with AI: sprites, animations, 3D models with rigging, video, music, SFX, voices
Generate game assets with AI for 2D games, including sprites, tilesets, and animations.
Generate game sprite sheets and animations from an image, and clean up sprite backgrounds.
Create mascots, animate artwork, and integrate transparent animations into apps and websites.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceConverts a single character image into game-ready 2D sprite animations (walk, run, idle, attack, etc.) with transparent frames, sprite sheets, and metadata, usable from AI coding agents.MIT
- AlicenseAqualityAmaintenanceEnables users to create character spritesheets from natural-language requests, preview animations, search clothing and tool items, and export engine-ready assets for Godot, Unity, and web.41131 PyPI1MIT
- AlicenseBqualityBmaintenanceEnables AI assistants to draw, animate, and export game-ready pixel art and sprite sheets through a local Aseprite installation, including palette work, layer rigging, and cleanup of AI-generated frames. It also offers a CLI for running the same animation recipes in a game asset pipeline.17115 npmMIT
- FlicenseAqualityDmaintenanceGenerates 2D game assets (sprites, icons, tilesets, characters, animations) using AI workflows powered by ComfyUI with support for viewpoint control, style presets, and Unity export.133-
Glama MCP Gateway
Add one secure layer between your agents and this server.