Generate animation
Source-generated generate_animation arguments, output schema, OAuth scope, and safety annotations for the reviewed MCP contract.
On this page
Tool
generate_animation
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.
Permissions and safety
OAuth scope: animations:write
| Signal | Value |
|---|---|
destructiveHint |
true |
idempotentHint |
true |
openWorldHint |
true |
readOnlyHint |
false |
| spendsCredits | true |
| requiresUserConfirmation | true |
| sideEffects | generation_started, credits_reserved_or_charged |
Annotations describe safety properties; they do not replace consent, OAuth authorization, or server checks.
Input arguments
| Field | Type | Required | Default | Constraints | Meaning |
|---|---|---|---|---|---|
idempotency_key |
string |
Yes | — | minLength: 8; maxLength: 200 |
Persist per logical generation; reuse with the same OAuth client and user after a timeout. |
max_credits |
integer / null |
No | null |
minimum: 0 |
User-approved per-operation credit cap. Never silently increase it; this is not a multi-task budget. |
quote_id |
string / null |
No | null |
format: uuid |
Fresh approved quote. At least quote_id or max_credits is required; both are allowed. |
request |
AnimationCreateRequest | Yes | — | — | Exact user-approved request; keep unchanged across retries. |
Argument example
{
"idempotency_key": "example-operation-001",
"max_credits": 0,
"quote_id": "00000000-0000-4000-8000-000000000006",
"request": {
"export": {
"frame_count": 24,
"output_formats": [
"frames_zip"
],
"output_height": 512,
"output_width": 512
},
"input": {
"first_frame": {
"file_id": "00000000-0000-4000-8000-000000000001",
"type": "file"
}
},
"prompt": "A character runs in place, side view, fixed camera.",
"selection": {
"mode": "full"
}
}
}
Structured result
| Field | Type | Required | Default | Constraints | Meaning |
|---|---|---|---|---|---|
created_at |
string |
Yes | — | format: date-time |
UTC acceptance timestamp. |
credits |
CreditUsage | Yes | — | — | Quoted, reserved, and charged credit states. |
error |
TaskError / null |
No | null |
— | Task failure details, independently of any usable outputs. |
finished_at |
string / null |
No | null |
format: date-time |
UTC terminal timestamp when known. |
id |
string |
Yes | — | format: uuid |
Persist this task ID immediately after create; poll it instead of creating again. |
metadata |
object |
No | {} |
— | Caller-provided metadata. |
normalized_input |
object |
No | {} |
— | Normalized public input; may contain private prompts or image references. Do not log wholesale. |
object |
string |
Yes | — | enum: "video_generation", "animation_export", "animation" |
Public task resource type. |
outputs |
array<AssetResponse> | No | [] |
— | Available assets, including partial outputs on failed/cancelled tasks. Always inspect them at a terminal state. |
progress |
number |
Yes | — | minimum: 0; maximum: 1 |
Fraction from 0 to 1, not a completion-time estimate. |
stage |
string / null |
No | null |
enum: "queued", "video_generation", "animation_export", "completed" |
Current pipeline stage when available. |
started_at |
string / null |
No | null |
format: date-time |
UTC production start when known. |
status |
string |
Yes | — | enum: "queued", "running", "cancelling", "succeeded", "failed", "cancelled" |
succeeded, failed, and cancelled are terminal; cancelling is not terminal. |
Errors and next steps
Tool errors contain an error object with code, message, retryable, request_id, and details. Do not parse message text or leak private inputs. Inspect partial outputs after a terminal failure; a signed URL is not a saved file.
Was this page helpful?
No search queries, code, or free text are collected. This switch controls documentation interactions only; general site analytics follow the privacy policy. Privacy policy