{
  "apiContractVersion": "1.3.0",
  "authentication": {
    "authorizationIsSpendApproval": false,
    "pkce": "S256",
    "scopes": [
      "animations:read",
      "animations:write",
      "assets:read",
      "files:write",
      "models:read"
    ],
    "type": "oauth2.1"
  },
  "available": true,
  "endpoint": "https://api.animgen.com/mcp",
  "errorEnvelope": {
    "error": {
      "code": "string",
      "details": "object",
      "message": "string",
      "request_id": "string",
      "retryable": "boolean"
    }
  },
  "instructions": "Generate animation assets with AnimGen. Discover current model capabilities first. The remote server cannot read local file paths: prepare_image_upload, transfer the actual bytes with the returned method and headers, then complete_image_upload for a file_id. Quote the intended request and obtain explicit user approval of the request and credit amount before generate_animation. Pass quote_id or an approved max_credits (or both) as top-level tool arguments, and persist the request and idempotency_key. Never silently raise a cap, change credentials/clients, or create a new key to retry an uncertain generation. Poll get_animation with a bounded deadline until succeeded, failed, or cancelled; cancelling is not terminal. Inspect partial outputs even after failure. download_asset returns a signed URL, not a saved file: download bytes without forwarding OAuth or API credentials, and do not expose signed URLs, tokens, private images, or prompts in logs. Cancellation is best effort and cancellation alone does not refund charged credits. Confirmed Seedance content review rejection before any output refunds the whole animation workflow. Report credits.refunded and credits.charged from the task; a refund is not approval to start another generation.",
  "name": "AnimGen",
  "schemaVersion": 1,
  "status": "beta",
  "tools": [
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "description": "List enabled animation models, supported parameters, and capabilities.",
      "examples": [
        {
          "arguments": {},
          "description": "Illustrative only. Replace resource IDs with owned resources. A zero cap never approves positive-cost work; obtain explicit approval before changing it."
        }
      ],
      "inputSchema": {
        "properties": {},
        "title": "list_modelsArguments",
        "type": "object"
      },
      "name": "list_models",
      "outputSchema": {
        "$defs": {
          "ModelCapabilities": {
            "additionalProperties": false,
            "properties": {
              "aspect_ratio_mode": {
                "description": "Provider's aspect-ratio handling mode.",
                "title": "Aspect Ratio Mode",
                "type": "string",
                "x-description-zh": "供应商对画幅比例的处理模式。"
              },
              "default_duration_seconds": {
                "description": "Default generation duration in seconds.",
                "title": "Default Duration Seconds",
                "type": "integer",
                "x-description-zh": "默认生成时长，秒。"
              },
              "default_ratio": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Default ratio, or null when not applicable.",
                "title": "Default Ratio",
                "x-description-zh": "默认比例，不适用时为 null。"
              },
              "default_resolution": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Default resolution, or null when not applicable.",
                "title": "Default Resolution",
                "x-description-zh": "默认分辨率，不适用时为 null。"
              },
              "durations": {
                "description": "Supported generation durations in seconds; also inspect resolution-specific constraints.",
                "items": {
                  "type": "integer"
                },
                "title": "Durations",
                "type": "array",
                "x-description-zh": "支持的生成秒数，同时检查分辨率专属限制。"
              },
              "durations_by_resolution": {
                "additionalProperties": {
                  "items": {
                    "type": "integer"
                  },
                  "type": "array"
                },
                "default": {},
                "description": "Resolution-specific supported durations in seconds.",
                "title": "Durations By Resolution",
                "type": "object",
                "x-description-zh": "各分辨率支持的时长秒数。"
              },
              "id": {
                "description": "Stable provider:model selector for requests; use the live catalog.",
                "title": "Id",
                "type": "string",
                "x-description-zh": "请求使用的 provider:model 标识，以实时目录为准。"
              },
              "label": {
                "description": "Human-readable model label.",
                "title": "Label",
                "type": "string",
                "x-description-zh": "人类可读模型名称。"
              },
              "max_reference_images": {
                "description": "Model reference-image capacity; the first frame occupies the first reference slot in reference mode.",
                "title": "Max Reference Images",
                "type": "integer",
                "x-description-zh": "模型参考图容量；参考图模式中首帧占第一个参考图槽位。"
              },
              "model": {
                "description": "Model identifier within the provider.",
                "title": "Model",
                "type": "string",
                "x-description-zh": "供应商内的模型标识。"
              },
              "modes": {
                "description": "Supported input modes, such as first_frame, first_last_frame, or reference_images.",
                "items": {
                  "type": "string"
                },
                "title": "Modes",
                "type": "array",
                "x-description-zh": "支持的输入模式，如 first_frame、first_last_frame、reference_images。"
              },
              "provider": {
                "description": "Public provider identifier.",
                "title": "Provider",
                "type": "string",
                "x-description-zh": "公开供应商标识。"
              },
              "ratios": {
                "description": "Supported aspect ratio values; check ratios_by_mode where present.",
                "items": {
                  "type": "string"
                },
                "title": "Ratios",
                "type": "array",
                "x-description-zh": "支持的比例；存在 ratios_by_mode 时同时检查。"
              },
              "ratios_by_mode": {
                "additionalProperties": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "default": {},
                "description": "Input-mode-specific supported ratios.",
                "title": "Ratios By Mode",
                "type": "object",
                "x-description-zh": "各输入模式支持的比例。"
              },
              "reference_image_duration_seconds": {
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Required duration for reference mode, when constrained.",
                "title": "Reference Image Duration Seconds",
                "x-description-zh": "参考图模式有固定限制时要求的秒数。"
              },
              "requires_prompt": {
                "description": "Whether prompt must be nonempty.",
                "title": "Requires Prompt",
                "type": "boolean",
                "x-description-zh": "是否要求提示词非空。"
              },
              "resolutions": {
                "description": "Supported resolution values.",
                "items": {
                  "type": "string"
                },
                "title": "Resolutions",
                "type": "array",
                "x-description-zh": "支持的分辨率选项。"
              },
              "returns_last_frame": {
                "description": "Whether the model can return a last-frame asset.",
                "title": "Returns Last Frame",
                "type": "boolean",
                "x-description-zh": "模型是否可返回末帧资产。"
              },
              "supports_first_frame": {
                "description": "Whether a first-frame input is supported.",
                "title": "Supports First Frame",
                "type": "boolean",
                "x-description-zh": "是否支持首帧输入。"
              },
              "supports_last_frame": {
                "description": "Whether a last-frame input is supported.",
                "title": "Supports Last Frame",
                "type": "boolean",
                "x-description-zh": "是否支持尾帧输入。"
              },
              "supports_negative_prompt": {
                "description": "Whether negative_prompt is supported.",
                "title": "Supports Negative Prompt",
                "type": "boolean",
                "x-description-zh": "是否支持负向提示词。"
              },
              "supports_reference_images": {
                "description": "Whether reference-image mode is supported.",
                "title": "Supports Reference Images",
                "type": "boolean",
                "x-description-zh": "是否支持参考图模式。"
              },
              "supports_seed": {
                "description": "Whether seed is supported.",
                "title": "Supports Seed",
                "type": "boolean",
                "x-description-zh": "是否支持 seed。"
              },
              "supports_watermark": {
                "description": "Whether the watermark setting is supported.",
                "title": "Supports Watermark",
                "type": "boolean",
                "x-description-zh": "是否支持水印设置。"
              }
            },
            "required": [
              "id",
              "provider",
              "model",
              "label",
              "modes",
              "durations",
              "resolutions",
              "ratios",
              "default_duration_seconds",
              "default_resolution",
              "default_ratio",
              "supports_seed",
              "supports_watermark",
              "supports_first_frame",
              "supports_last_frame",
              "supports_negative_prompt",
              "supports_reference_images",
              "max_reference_images",
              "reference_image_duration_seconds",
              "requires_prompt",
              "returns_last_frame",
              "aspect_ratio_mode"
            ],
            "title": "ModelCapabilities",
            "type": "object"
          }
        },
        "additionalProperties": false,
        "properties": {
          "data": {
            "description": "Currently enabled models; do not hard-code this list in a client.",
            "items": {
              "$ref": "#/$defs/ModelCapabilities"
            },
            "title": "Data",
            "type": "array",
            "x-description-zh": "当前启用的模型，客户端不要写死此清单。"
          },
          "object": {
            "const": "list",
            "default": "list",
            "title": "Object",
            "type": "string"
          }
        },
        "required": [
          "data"
        ],
        "title": "ModelsResponse",
        "type": "object"
      },
      "title": "List animation models",
      "x-animgen": {
        "descriptionZh": "查询当前启用模型、合法参数、默认值与输入能力，不启动生成。",
        "documentation": {
          "en": "https://animgen.com/docs/en/mcp-reference/list-models",
          "zh": "https://animgen.com/docs/zh/mcp-reference/list-models"
        },
        "requiresUserConfirmation": false,
        "scopes": [
          "models:read"
        ],
        "sideEffects": [],
        "spendsCredits": false,
        "titleZh": "发现动画模型",
        "workflowStep": 10
      }
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "description": "Create a short-lived direct upload. PUT exactly byte_size bytes using the returned URL and headers, then call complete_image_upload.",
      "examples": [
        {
          "arguments": {
            "byte_size": 1024,
            "filename": "character.png",
            "mime_type": "image/png"
          },
          "description": "Illustrative only. Replace resource IDs with owned resources. A zero cap never approves positive-cost work; obtain explicit approval before changing it."
        }
      ],
      "inputSchema": {
        "properties": {
          "byte_size": {
            "description": "Exact number of bytes the client will PUT.",
            "exclusiveMinimum": 0,
            "title": "Byte Size",
            "type": "integer",
            "x-description-zh": "客户端将通过 PUT 发送的准确字节数。"
          },
          "filename": {
            "description": "Client filename, not a local path the server can read.",
            "maxLength": 240,
            "minLength": 1,
            "title": "Filename",
            "type": "string",
            "x-description-zh": "客户端文件名，不是服务端可以读取的本地路径。"
          },
          "mime_type": {
            "description": "Actual image MIME type.",
            "pattern": "^image/(png|jpeg|webp)$",
            "title": "Mime Type",
            "type": "string",
            "x-description-zh": "图片实际 MIME 类型。"
          }
        },
        "required": [
          "filename",
          "mime_type",
          "byte_size"
        ],
        "title": "prepare_image_uploadArguments",
        "type": "object"
      },
      "name": "prepare_image_upload",
      "outputSchema": {
        "additionalProperties": false,
        "properties": {
          "expires_at": {
            "description": "Upload URL expiry.",
            "format": "date-time",
            "title": "Expires At",
            "type": "string",
            "x-description-zh": "上传 URL 过期时间。"
          },
          "headers": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Exact transfer headers; do not add MCP tokens or API Bearer credentials.",
            "title": "Headers",
            "type": "object",
            "x-description-zh": "实际传输请求头，不额外添加 MCP Token 或 API Bearer 凭据。"
          },
          "max_bytes": {
            "description": "Maximum accepted upload byte count.",
            "title": "Max Bytes",
            "type": "integer",
            "x-description-zh": "允许上传的最大字节数。"
          },
          "method": {
            "const": "PUT",
            "default": "PUT",
            "description": "HTTP method the client must use for the byte transfer.",
            "title": "Method",
            "type": "string",
            "x-description-zh": "客户端传输字节时必须使用的 HTTP 方法。"
          },
          "upload_id": {
            "description": "Upload session ID for complete_image_upload, not the final file_id.",
            "format": "uuid",
            "title": "Upload Id",
            "type": "string",
            "x-description-zh": "传给 complete_image_upload 的上传会话 ID，不是最终 file_id。"
          },
          "upload_url": {
            "description": "Sensitive short-lived upload URL. Transfer actual bytes; do not publish this URL.",
            "title": "Upload Url",
            "type": "string",
            "x-description-zh": "敏感短期上传 URL，需传输实际字节，不公开此地址。"
          }
        },
        "required": [
          "upload_id",
          "upload_url",
          "headers",
          "expires_at",
          "max_bytes"
        ],
        "title": "McpUploadPrepareOutput",
        "type": "object"
      },
      "title": "Prepare image upload",
      "x-animgen": {
        "descriptionZh": "创建短期上传会话；客户端按返回的方法和请求头上传准确字节，再完成上传。本地路径不能替代文件传输。",
        "documentation": {
          "en": "https://animgen.com/docs/en/mcp-reference/prepare-image-upload",
          "zh": "https://animgen.com/docs/zh/mcp-reference/prepare-image-upload"
        },
        "requiresUserConfirmation": false,
        "scopes": [
          "files:write"
        ],
        "sideEffects": [
          "temporary_upload_created"
        ],
        "spendsCredits": false,
        "titleZh": "准备图片上传",
        "workflowStep": 20
      }
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "readOnlyHint": false
      },
      "description": "Validate a prepared image upload and return its reusable file_id.",
      "examples": [
        {
          "arguments": {
            "upload_id": "00000000-0000-4000-8000-000000000007"
          },
          "description": "Illustrative only. Replace resource IDs with owned resources. A zero cap never approves positive-cost work; obtain explicit approval before changing it."
        }
      ],
      "inputSchema": {
        "properties": {
          "upload_id": {
            "description": "Session from prepare_image_upload, after byte transfer completed.",
            "format": "uuid",
            "title": "Upload Id",
            "type": "string",
            "x-description-zh": "实际字节传输完成后，传入 prepare_image_upload 返回的会话 ID。"
          }
        },
        "required": [
          "upload_id"
        ],
        "title": "complete_image_uploadArguments",
        "type": "object"
      },
      "name": "complete_image_upload",
      "outputSchema": {
        "additionalProperties": false,
        "properties": {
          "byte_size": {
            "description": "Validated image byte count.",
            "title": "Byte Size",
            "type": "integer",
            "x-description-zh": "校验后的图片字节数。"
          },
          "file_id": {
            "description": "Reusable owned public file ID for request.input.first_frame.",
            "format": "uuid",
            "title": "File Id",
            "type": "string",
            "x-description-zh": "用于 request.input.first_frame 的可复用所属公共文件 ID。"
          },
          "mime_type": {
            "description": "Validated image MIME type.",
            "title": "Mime Type",
            "type": "string",
            "x-description-zh": "校验后的图片 MIME 类型。"
          },
          "sha256": {
            "description": "SHA-256 of the uploaded image bytes.",
            "title": "Sha256",
            "type": "string",
            "x-description-zh": "上传图片字节的 SHA-256。"
          }
        },
        "required": [
          "file_id",
          "mime_type",
          "byte_size",
          "sha256"
        ],
        "title": "McpUploadCompleteOutput",
        "type": "object"
      },
      "title": "Complete image upload",
      "x-animgen": {
        "descriptionZh": "校验已传输的图片并返回可复用 file_id；此 ID 用于生成输入。",
        "documentation": {
          "en": "https://animgen.com/docs/en/mcp-reference/complete-image-upload",
          "zh": "https://animgen.com/docs/zh/mcp-reference/complete-image-upload"
        },
        "requiresUserConfirmation": false,
        "scopes": [
          "files:write"
        ],
        "sideEffects": [
          "uploaded_image_persisted"
        ],
        "spendsCredits": false,
        "titleZh": "完成图片上传",
        "workflowStep": 30
      }
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "description": "Calculate the current credit price and issue a short-lived quote_id. This does not start generation or spend credits.",
      "examples": [
        {
          "arguments": {
            "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"
              }
            }
          },
          "description": "Illustrative only. Replace resource IDs with owned resources. A zero cap never approves positive-cost work; obtain explicit approval before changing it."
        }
      ],
      "inputSchema": {
        "$defs": {
          "AnimationCreateRequest": {
            "additionalProperties": false,
            "properties": {
              "export": {
                "$ref": "#/$defs/ExportOptions",
                "default": {
                  "frame_count": 24,
                  "output_formats": [
                    "spritesheet"
                  ],
                  "output_height": 512,
                  "output_width": 512,
                  "transparent": {
                    "enabled": false
                  },
                  "unity": {
                    "pivot": "bottom_center",
                    "pixels_per_unit": 100
                  }
                },
                "description": "Export after video generation. Alpha-bearing formats require an alpha_key source; compatible formats automatically enable its transparent export.",
                "x-description-zh": "视频生成后执行导出；带 Alpha 的格式要求 alpha_key 来源，适配格式会自动启用其透明处理。"
              },
              "input": {
                "$ref": "#/$defs/GenerationInput",
                "description": "Images owned by the caller or supplied for this generation.",
                "x-description-zh": "调用方所属或本次提供的生成图片。"
              },
              "metadata": {
                "additionalProperties": true,
                "default": {},
                "description": "Caller metadata: simple string/number/boolean/null values, at most 4 KiB JSON. Do not store secrets.",
                "title": "Metadata",
                "type": "object",
                "x-description-zh": "调用方元数据，仅字符串、数字、布尔或 null；JSON 不超过 4 KiB，不存凭据。"
              },
              "negative_prompt": {
                "default": "",
                "description": "Optional exclusions, only when the model supports negative prompts.",
                "maxLength": 4000,
                "title": "Negative Prompt",
                "type": "string",
                "x-description-zh": "可选负向提示词，仅适用于支持的模型。"
              },
              "prompt": {
                "default": "",
                "description": "Motion instruction; nonempty when the model requires a prompt. Keep private prompts out of logs.",
                "maxLength": 8000,
                "title": "Prompt",
                "type": "string",
                "x-description-zh": "动作提示词；模型要求时不能为空，私有提示词不得写入日志。"
              },
              "selection": {
                "$ref": "#/$defs/Selection",
                "default": {
                  "duration_seconds": null,
                  "mode": "full",
                  "start_seconds": 0.0
                },
                "description": "Interval selected after generation; full by default.",
                "x-description-zh": "生成后选取的区间，默认完整视频。"
              },
              "video": {
                "$ref": "#/$defs/VideoOptions",
                "default": {
                  "duration_seconds": null,
                  "input_canvas": null,
                  "model": null,
                  "ratio": null,
                  "resolution": null,
                  "seed": null,
                  "style_preset": null,
                  "transparency": {
                    "key_color": null,
                    "key_selection": "auto",
                    "mode": "standard"
                  },
                  "watermark": null
                },
                "description": "Model-compatible generation settings.",
                "x-description-zh": "符合模型能力的生成设置。"
              }
            },
            "required": [
              "input"
            ],
            "title": "AnimationCreateRequest",
            "type": "object"
          },
          "Base64ImageInput": {
            "additionalProperties": false,
            "properties": {
              "data": {
                "description": "Pure Base64 without a data URL prefix; decoded limits: 10 MiB per image, 20 MiB total.",
                "minLength": 4,
                "title": "Data",
                "type": "string",
                "x-description-zh": "纯 Base64，不含 data URL 前缀；解码后单张 10 MiB、合计 20 MiB。"
              },
              "media_type": {
                "description": "Actual image MIME type.",
                "enum": [
                  "image/png",
                  "image/jpeg",
                  "image/webp"
                ],
                "title": "Media Type",
                "type": "string",
                "x-description-zh": "图片实际 MIME 类型。"
              },
              "type": {
                "const": "base64",
                "title": "Type",
                "type": "string"
              }
            },
            "required": [
              "type",
              "media_type",
              "data"
            ],
            "title": "Base64ImageInput",
            "type": "object"
          },
          "ExportOptions": {
            "additionalProperties": false,
            "properties": {
              "frame_count": {
                "default": 24,
                "description": "Number of frames sampled over the selected interval, not an FPS field.",
                "maximum": 240,
                "minimum": 1,
                "title": "Frame Count",
                "type": "integer",
                "x-description-zh": "在选段内采样的帧数，不是 FPS 参数。"
              },
              "output_formats": {
                "default": [
                  "spritesheet"
                ],
                "description": "Requested asset formats; defaults to spritesheet. Duplicates are removed. Metadata needs its matching texture.",
                "items": {
                  "enum": [
                    "clip_video",
                    "webm_alpha",
                    "prores_4444",
                    "frames_zip",
                    "spritesheet",
                    "spritesheet_json",
                    "unity_meta",
                    "unity_pack",
                    "godot_pack",
                    "unreal_paper2d_pack",
                    "cocos_creator_pack"
                  ],
                  "type": "string"
                },
                "minItems": 1,
                "title": "Output Formats",
                "type": "array",
                "x-description-zh": "请求的资产格式；默认 spritesheet，重复项会去重，元数据需配套纹理。"
              },
              "output_height": {
                "default": 512,
                "description": "Output frame height in pixels.",
                "maximum": 1024,
                "minimum": 64,
                "title": "Output Height",
                "type": "integer",
                "x-description-zh": "输出帧高度，单位像素。"
              },
              "output_width": {
                "default": 512,
                "description": "Output frame width in pixels.",
                "maximum": 1024,
                "minimum": 64,
                "title": "Output Width",
                "type": "integer",
                "x-description-zh": "输出帧宽度，单位像素。"
              },
              "transparent": {
                "$ref": "#/$defs/ExportTransparency",
                "default": {
                  "enabled": false
                },
                "description": "Use the enabled object form. Legacy booleans are accepted but normalized to this object.",
                "x-description-zh": "使用 enabled 对象形式；兼容布尔值输入并规范化为此对象。"
              },
              "unity": {
                "$ref": "#/$defs/UnityOptions",
                "default": {
                  "pivot": "bottom_center",
                  "pixels_per_unit": 100
                },
                "description": "Settings for Unity-specific metadata and packs.",
                "x-description-zh": "Unity 专用元数据和资源包设置。"
              }
            },
            "title": "ExportOptions",
            "type": "object"
          },
          "ExportTransparency": {
            "additionalProperties": false,
            "properties": {
              "enabled": {
                "default": false,
                "description": "Transparent processing for compatible outputs; requires an alpha_key source and does not make MP4 transparent.",
                "title": "Enabled",
                "type": "boolean",
                "x-description-zh": "为兼容输出启用透明处理；要求 alpha_key 来源，不会让 MP4 透明。"
              }
            },
            "title": "ExportTransparency",
            "type": "object"
          },
          "FileImageInput": {
            "additionalProperties": false,
            "properties": {
              "file_id": {
                "description": "Owned public file ID from POST /files or complete_image_upload; not a Studio upload ID.",
                "format": "uuid",
                "title": "File Id",
                "type": "string",
                "x-description-zh": "POST /files 或 complete_image_upload 返回的所属公共文件 ID，不是 Studio uploadId。"
              },
              "type": {
                "const": "file",
                "title": "Type",
                "type": "string"
              }
            },
            "required": [
              "type",
              "file_id"
            ],
            "title": "FileImageInput",
            "type": "object"
          },
          "GenerationInput": {
            "additionalProperties": false,
            "properties": {
              "first_frame": {
                "description": "Required starting image; use the type discriminator to select an input representation.",
                "discriminator": {
                  "mapping": {
                    "base64": "#/$defs/Base64ImageInput",
                    "file": "#/$defs/FileImageInput",
                    "url": "#/$defs/UrlImageInput"
                  },
                  "propertyName": "type"
                },
                "oneOf": [
                  {
                    "$ref": "#/$defs/FileImageInput"
                  },
                  {
                    "$ref": "#/$defs/Base64ImageInput"
                  },
                  {
                    "$ref": "#/$defs/UrlImageInput"
                  }
                ],
                "title": "First Frame",
                "x-description-zh": "必需首帧，用 type 选择图片传入方式。"
              },
              "last_frame": {
                "anyOf": [
                  {
                    "discriminator": {
                      "mapping": {
                        "base64": "#/$defs/Base64ImageInput",
                        "file": "#/$defs/FileImageInput",
                        "url": "#/$defs/UrlImageInput"
                      },
                      "propertyName": "type"
                    },
                    "oneOf": [
                      {
                        "$ref": "#/$defs/FileImageInput"
                      },
                      {
                        "$ref": "#/$defs/Base64ImageInput"
                      },
                      {
                        "$ref": "#/$defs/UrlImageInput"
                      }
                    ]
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Optional end image; the selected model must support first/last-frame mode.",
                "title": "Last Frame",
                "x-description-zh": "可选尾帧，所选模型必须支持首尾帧模式。"
              },
              "reference_images": {
                "default": [],
                "description": "Additional references, excluding the first frame. The live model can impose a smaller limit.",
                "items": {
                  "discriminator": {
                    "mapping": {
                      "base64": "#/$defs/Base64ImageInput",
                      "file": "#/$defs/FileImageInput",
                      "url": "#/$defs/UrlImageInput"
                    },
                    "propertyName": "type"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/$defs/FileImageInput"
                    },
                    {
                      "$ref": "#/$defs/Base64ImageInput"
                    },
                    {
                      "$ref": "#/$defs/UrlImageInput"
                    }
                  ]
                },
                "maxItems": 8,
                "title": "Reference Images",
                "type": "array",
                "x-description-zh": "额外参考图，不含首帧；实时模型可能有更低上限。"
              }
            },
            "required": [
              "first_frame"
            ],
            "title": "GenerationInput",
            "type": "object"
          },
          "GenerationTransparency": {
            "additionalProperties": false,
            "properties": {
              "key_color": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Temporary key color when using manual selection; normally leave automatic selection enabled.",
                "title": "Key Color",
                "x-description-zh": "手动选择时使用的临时键色；通常保留自动选择。"
              },
              "key_selection": {
                "default": "auto",
                "description": "How the temporary key color is selected.",
                "enum": [
                  "auto",
                  "manual"
                ],
                "title": "Key Selection",
                "type": "string",
                "x-description-zh": "临时键色的选择方式。"
              },
              "mode": {
                "default": "standard",
                "description": "standard keeps the scene; alpha_key requires meaningful alpha in all active input images. Raw videos remain opaque.",
                "enum": [
                  "standard",
                  "alpha_key"
                ],
                "title": "Mode",
                "type": "string",
                "x-description-zh": "standard 保留场景；alpha_key 要求所有参与图片有有效 Alpha，原始视频仍不透明。"
              }
            },
            "title": "GenerationTransparency",
            "type": "object"
          },
          "InputCanvasOptions": {
            "additionalProperties": false,
            "properties": {
              "aspect_ratio": {
                "default": "follow_output",
                "description": "Follow the output ratio or preserve the source ratio.",
                "enum": [
                  "follow_output",
                  "source"
                ],
                "title": "Aspect Ratio",
                "type": "string",
                "x-description-zh": "跟随输出比例或保持原图比例。"
              },
              "background": {
                "default": "auto",
                "description": "Canvas extension background strategy.",
                "enum": [
                  "auto",
                  "transparent",
                  "solid"
                ],
                "title": "Background",
                "type": "string",
                "x-description-zh": "画布扩展区域的背景策略。"
              },
              "background_color": {
                "anyOf": [
                  {
                    "pattern": "^#[0-9A-Fa-f]{6}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Six-digit RGB color for a solid extension.",
                "title": "Background Color",
                "x-description-zh": "纯色扩展区域的六位 RGB 颜色。"
              },
              "enabled": {
                "default": true,
                "description": "Whether to prepare an expanded input canvas.",
                "title": "Enabled",
                "type": "boolean",
                "x-description-zh": "是否准备扩展输入画布。"
              },
              "position_x": {
                "default": 0.5,
                "description": "Normalized horizontal source position.",
                "maximum": 1.0,
                "minimum": 0.0,
                "title": "Position X",
                "type": "number",
                "x-description-zh": "归一化水平位置。"
              },
              "position_y": {
                "default": 0.5,
                "description": "Normalized vertical source position.",
                "maximum": 1.0,
                "minimum": 0.0,
                "title": "Position Y",
                "type": "number",
                "x-description-zh": "归一化垂直位置。"
              },
              "source_scale": {
                "default": 0.8,
                "description": "Source subject scale within the canvas.",
                "maximum": 1.0,
                "minimum": 0.5,
                "title": "Source Scale",
                "type": "number",
                "x-description-zh": "原图主体在画布中的缩放比例。"
              }
            },
            "title": "InputCanvasOptions",
            "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.0,
                "description": "Range start in seconds from the source beginning.",
                "minimum": 0,
                "title": "Start Seconds",
                "type": "number",
                "x-description-zh": "相对源视频起点的选段开始秒数。"
              }
            },
            "title": "Selection",
            "type": "object"
          },
          "UnityOptions": {
            "additionalProperties": false,
            "properties": {
              "pivot": {
                "const": "bottom_center",
                "default": "bottom_center",
                "description": "Supported Unity sprite pivot.",
                "title": "Pivot",
                "type": "string",
                "x-description-zh": "支持的 Unity 精灵锚点。"
              },
              "pixels_per_unit": {
                "default": 100,
                "description": "Unity texture pixels per world unit.",
                "maximum": 1000,
                "minimum": 1,
                "title": "Pixels Per Unit",
                "type": "integer",
                "x-description-zh": "Unity 每世界单位对应的纹理像素数。"
              }
            },
            "title": "UnityOptions",
            "type": "object"
          },
          "UrlImageInput": {
            "additionalProperties": false,
            "properties": {
              "type": {
                "const": "url",
                "title": "Type",
                "type": "string"
              },
              "url": {
                "description": "Public HTTPS image on port 443, without credentials or fragments. Private networks and unsafe redirects are rejected. Keep bytes stable across retries.",
                "maxLength": 2048,
                "minLength": 9,
                "title": "Url",
                "type": "string",
                "x-description-zh": "公开 HTTPS 图片，443 端口，不带凭据或 fragment；禁止私网和不安全跳转，重试期间保持图片字节稳定。"
              }
            },
            "required": [
              "type",
              "url"
            ],
            "title": "UrlImageInput",
            "type": "object"
          },
          "VideoOptions": {
            "additionalProperties": false,
            "properties": {
              "duration_seconds": {
                "anyOf": [
                  {
                    "exclusiveMinimum": 0,
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Seconds; choose a supported duration for the model and resolution. Omission uses its default.",
                "title": "Duration Seconds",
                "x-description-zh": "秒数，需符合模型与分辨率支持范围；省略时使用模型默认值。"
              },
              "input_canvas": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/InputCanvasOptions"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Optional input framing; omit to keep the source framing.",
                "x-description-zh": "可选输入画布设置；省略时保持来源构图。"
              },
              "model": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "provider:model ID from GET /models; omission uses the configured default model.",
                "title": "Model",
                "x-description-zh": "GET /models 返回的 provider:model ID；省略时使用配置的默认模型。"
              },
              "ratio": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Aspect ratio supported by the current model and input mode.",
                "title": "Ratio",
                "x-description-zh": "当前模型与输入模式支持的画幅比例。"
              },
              "resolution": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Resolution value from the live model catalog.",
                "title": "Resolution",
                "x-description-zh": "实时模型目录中的分辨率值。"
              },
              "seed": {
                "anyOf": [
                  {
                    "maximum": 2147483647,
                    "minimum": 0,
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Optional seed only for models advertising seed support; not a universal determinism guarantee.",
                "title": "Seed",
                "x-description-zh": "仅适用于声明支持 seed 的模型，不保证所有输出确定性。"
              },
              "style_preset": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Optional style preset supported by the selected provider/model.",
                "title": "Style Preset",
                "x-description-zh": "所选供应商或模型支持的可选风格预设。"
              },
              "transparency": {
                "$ref": "#/$defs/GenerationTransparency",
                "default": {
                  "key_color": null,
                  "key_selection": "auto",
                  "mode": "standard"
                },
                "description": "Source transparency workflow; transparent exports require alpha_key.",
                "x-description-zh": "来源透明流程；透明导出要求 alpha_key。"
              },
              "watermark": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Optional watermark setting; check the model capability.",
                "title": "Watermark",
                "x-description-zh": "可选水印设置，需检查模型能力。"
              }
            },
            "title": "VideoOptions",
            "type": "object"
          }
        },
        "properties": {
          "request": {
            "$ref": "#/$defs/AnimationCreateRequest",
            "description": "Complete intended animation request; quoting starts no generation.",
            "x-description-zh": "计划生成的完整请求，报价不启动生成。"
          }
        },
        "required": [
          "request"
        ],
        "title": "quote_animationArguments",
        "type": "object"
      },
      "name": "quote_animation",
      "outputSchema": {
        "additionalProperties": false,
        "properties": {
          "breakdown": {
            "additionalProperties": true,
            "description": "Public cost components.",
            "title": "Breakdown",
            "type": "object",
            "x-description-zh": "公开费用组成。"
          },
          "credits": {
            "description": "Quoted credits; show the amount to the user before generation.",
            "title": "Credits",
            "type": "integer",
            "x-description-zh": "报价积分，生成前需向用户展示。"
          },
          "expires_at": {
            "description": "Quote expiry; re-quote and confirm if it expires or price changes.",
            "format": "date-time",
            "title": "Expires At",
            "type": "string",
            "x-description-zh": "报价过期时间；过期或变价时重新报价并确认。"
          },
          "quote_id": {
            "description": "Short-lived quote owned by this user and OAuth client; can bind to one logical generation key.",
            "format": "uuid",
            "title": "Quote Id",
            "type": "string",
            "x-description-zh": "属于当前用户和 OAuth 客户端的短期报价，可绑定一次逻辑生成键。"
          }
        },
        "required": [
          "quote_id",
          "credits",
          "breakdown",
          "expires_at"
        ],
        "title": "McpQuoteOutput",
        "type": "object"
      },
      "title": "Quote animation",
      "x-animgen": {
        "descriptionZh": "计算当前费用并创建属于当前用户和 OAuth 客户端的短期 quote_id，不启动生成或扣费。",
        "documentation": {
          "en": "https://animgen.com/docs/en/mcp-reference/quote-animation",
          "zh": "https://animgen.com/docs/zh/mcp-reference/quote-animation"
        },
        "requiresUserConfirmation": false,
        "scopes": [
          "animations:write"
        ],
        "sideEffects": [
          "temporary_quote_created"
        ],
        "spendsCredits": false,
        "titleZh": "查询动画报价",
        "workflowStep": 40
      }
    },
    {
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "description": "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.",
      "examples": [
        {
          "arguments": {
            "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"
              }
            }
          },
          "description": "Illustrative only. Replace resource IDs with owned resources. A zero cap never approves positive-cost work; obtain explicit approval before changing it."
        }
      ],
      "inputSchema": {
        "$defs": {
          "AnimationCreateRequest": {
            "additionalProperties": false,
            "properties": {
              "export": {
                "$ref": "#/$defs/ExportOptions",
                "default": {
                  "frame_count": 24,
                  "output_formats": [
                    "spritesheet"
                  ],
                  "output_height": 512,
                  "output_width": 512,
                  "transparent": {
                    "enabled": false
                  },
                  "unity": {
                    "pivot": "bottom_center",
                    "pixels_per_unit": 100
                  }
                },
                "description": "Export after video generation. Alpha-bearing formats require an alpha_key source; compatible formats automatically enable its transparent export.",
                "x-description-zh": "视频生成后执行导出；带 Alpha 的格式要求 alpha_key 来源，适配格式会自动启用其透明处理。"
              },
              "input": {
                "$ref": "#/$defs/GenerationInput",
                "description": "Images owned by the caller or supplied for this generation.",
                "x-description-zh": "调用方所属或本次提供的生成图片。"
              },
              "metadata": {
                "additionalProperties": true,
                "default": {},
                "description": "Caller metadata: simple string/number/boolean/null values, at most 4 KiB JSON. Do not store secrets.",
                "title": "Metadata",
                "type": "object",
                "x-description-zh": "调用方元数据，仅字符串、数字、布尔或 null；JSON 不超过 4 KiB，不存凭据。"
              },
              "negative_prompt": {
                "default": "",
                "description": "Optional exclusions, only when the model supports negative prompts.",
                "maxLength": 4000,
                "title": "Negative Prompt",
                "type": "string",
                "x-description-zh": "可选负向提示词，仅适用于支持的模型。"
              },
              "prompt": {
                "default": "",
                "description": "Motion instruction; nonempty when the model requires a prompt. Keep private prompts out of logs.",
                "maxLength": 8000,
                "title": "Prompt",
                "type": "string",
                "x-description-zh": "动作提示词；模型要求时不能为空，私有提示词不得写入日志。"
              },
              "selection": {
                "$ref": "#/$defs/Selection",
                "default": {
                  "duration_seconds": null,
                  "mode": "full",
                  "start_seconds": 0.0
                },
                "description": "Interval selected after generation; full by default.",
                "x-description-zh": "生成后选取的区间，默认完整视频。"
              },
              "video": {
                "$ref": "#/$defs/VideoOptions",
                "default": {
                  "duration_seconds": null,
                  "input_canvas": null,
                  "model": null,
                  "ratio": null,
                  "resolution": null,
                  "seed": null,
                  "style_preset": null,
                  "transparency": {
                    "key_color": null,
                    "key_selection": "auto",
                    "mode": "standard"
                  },
                  "watermark": null
                },
                "description": "Model-compatible generation settings.",
                "x-description-zh": "符合模型能力的生成设置。"
              }
            },
            "required": [
              "input"
            ],
            "title": "AnimationCreateRequest",
            "type": "object"
          },
          "Base64ImageInput": {
            "additionalProperties": false,
            "properties": {
              "data": {
                "description": "Pure Base64 without a data URL prefix; decoded limits: 10 MiB per image, 20 MiB total.",
                "minLength": 4,
                "title": "Data",
                "type": "string",
                "x-description-zh": "纯 Base64，不含 data URL 前缀；解码后单张 10 MiB、合计 20 MiB。"
              },
              "media_type": {
                "description": "Actual image MIME type.",
                "enum": [
                  "image/png",
                  "image/jpeg",
                  "image/webp"
                ],
                "title": "Media Type",
                "type": "string",
                "x-description-zh": "图片实际 MIME 类型。"
              },
              "type": {
                "const": "base64",
                "title": "Type",
                "type": "string"
              }
            },
            "required": [
              "type",
              "media_type",
              "data"
            ],
            "title": "Base64ImageInput",
            "type": "object"
          },
          "ExportOptions": {
            "additionalProperties": false,
            "properties": {
              "frame_count": {
                "default": 24,
                "description": "Number of frames sampled over the selected interval, not an FPS field.",
                "maximum": 240,
                "minimum": 1,
                "title": "Frame Count",
                "type": "integer",
                "x-description-zh": "在选段内采样的帧数，不是 FPS 参数。"
              },
              "output_formats": {
                "default": [
                  "spritesheet"
                ],
                "description": "Requested asset formats; defaults to spritesheet. Duplicates are removed. Metadata needs its matching texture.",
                "items": {
                  "enum": [
                    "clip_video",
                    "webm_alpha",
                    "prores_4444",
                    "frames_zip",
                    "spritesheet",
                    "spritesheet_json",
                    "unity_meta",
                    "unity_pack",
                    "godot_pack",
                    "unreal_paper2d_pack",
                    "cocos_creator_pack"
                  ],
                  "type": "string"
                },
                "minItems": 1,
                "title": "Output Formats",
                "type": "array",
                "x-description-zh": "请求的资产格式；默认 spritesheet，重复项会去重，元数据需配套纹理。"
              },
              "output_height": {
                "default": 512,
                "description": "Output frame height in pixels.",
                "maximum": 1024,
                "minimum": 64,
                "title": "Output Height",
                "type": "integer",
                "x-description-zh": "输出帧高度，单位像素。"
              },
              "output_width": {
                "default": 512,
                "description": "Output frame width in pixels.",
                "maximum": 1024,
                "minimum": 64,
                "title": "Output Width",
                "type": "integer",
                "x-description-zh": "输出帧宽度，单位像素。"
              },
              "transparent": {
                "$ref": "#/$defs/ExportTransparency",
                "default": {
                  "enabled": false
                },
                "description": "Use the enabled object form. Legacy booleans are accepted but normalized to this object.",
                "x-description-zh": "使用 enabled 对象形式；兼容布尔值输入并规范化为此对象。"
              },
              "unity": {
                "$ref": "#/$defs/UnityOptions",
                "default": {
                  "pivot": "bottom_center",
                  "pixels_per_unit": 100
                },
                "description": "Settings for Unity-specific metadata and packs.",
                "x-description-zh": "Unity 专用元数据和资源包设置。"
              }
            },
            "title": "ExportOptions",
            "type": "object"
          },
          "ExportTransparency": {
            "additionalProperties": false,
            "properties": {
              "enabled": {
                "default": false,
                "description": "Transparent processing for compatible outputs; requires an alpha_key source and does not make MP4 transparent.",
                "title": "Enabled",
                "type": "boolean",
                "x-description-zh": "为兼容输出启用透明处理；要求 alpha_key 来源，不会让 MP4 透明。"
              }
            },
            "title": "ExportTransparency",
            "type": "object"
          },
          "FileImageInput": {
            "additionalProperties": false,
            "properties": {
              "file_id": {
                "description": "Owned public file ID from POST /files or complete_image_upload; not a Studio upload ID.",
                "format": "uuid",
                "title": "File Id",
                "type": "string",
                "x-description-zh": "POST /files 或 complete_image_upload 返回的所属公共文件 ID，不是 Studio uploadId。"
              },
              "type": {
                "const": "file",
                "title": "Type",
                "type": "string"
              }
            },
            "required": [
              "type",
              "file_id"
            ],
            "title": "FileImageInput",
            "type": "object"
          },
          "GenerationInput": {
            "additionalProperties": false,
            "properties": {
              "first_frame": {
                "description": "Required starting image; use the type discriminator to select an input representation.",
                "discriminator": {
                  "mapping": {
                    "base64": "#/$defs/Base64ImageInput",
                    "file": "#/$defs/FileImageInput",
                    "url": "#/$defs/UrlImageInput"
                  },
                  "propertyName": "type"
                },
                "oneOf": [
                  {
                    "$ref": "#/$defs/FileImageInput"
                  },
                  {
                    "$ref": "#/$defs/Base64ImageInput"
                  },
                  {
                    "$ref": "#/$defs/UrlImageInput"
                  }
                ],
                "title": "First Frame",
                "x-description-zh": "必需首帧，用 type 选择图片传入方式。"
              },
              "last_frame": {
                "anyOf": [
                  {
                    "discriminator": {
                      "mapping": {
                        "base64": "#/$defs/Base64ImageInput",
                        "file": "#/$defs/FileImageInput",
                        "url": "#/$defs/UrlImageInput"
                      },
                      "propertyName": "type"
                    },
                    "oneOf": [
                      {
                        "$ref": "#/$defs/FileImageInput"
                      },
                      {
                        "$ref": "#/$defs/Base64ImageInput"
                      },
                      {
                        "$ref": "#/$defs/UrlImageInput"
                      }
                    ]
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Optional end image; the selected model must support first/last-frame mode.",
                "title": "Last Frame",
                "x-description-zh": "可选尾帧，所选模型必须支持首尾帧模式。"
              },
              "reference_images": {
                "default": [],
                "description": "Additional references, excluding the first frame. The live model can impose a smaller limit.",
                "items": {
                  "discriminator": {
                    "mapping": {
                      "base64": "#/$defs/Base64ImageInput",
                      "file": "#/$defs/FileImageInput",
                      "url": "#/$defs/UrlImageInput"
                    },
                    "propertyName": "type"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/$defs/FileImageInput"
                    },
                    {
                      "$ref": "#/$defs/Base64ImageInput"
                    },
                    {
                      "$ref": "#/$defs/UrlImageInput"
                    }
                  ]
                },
                "maxItems": 8,
                "title": "Reference Images",
                "type": "array",
                "x-description-zh": "额外参考图，不含首帧；实时模型可能有更低上限。"
              }
            },
            "required": [
              "first_frame"
            ],
            "title": "GenerationInput",
            "type": "object"
          },
          "GenerationTransparency": {
            "additionalProperties": false,
            "properties": {
              "key_color": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Temporary key color when using manual selection; normally leave automatic selection enabled.",
                "title": "Key Color",
                "x-description-zh": "手动选择时使用的临时键色；通常保留自动选择。"
              },
              "key_selection": {
                "default": "auto",
                "description": "How the temporary key color is selected.",
                "enum": [
                  "auto",
                  "manual"
                ],
                "title": "Key Selection",
                "type": "string",
                "x-description-zh": "临时键色的选择方式。"
              },
              "mode": {
                "default": "standard",
                "description": "standard keeps the scene; alpha_key requires meaningful alpha in all active input images. Raw videos remain opaque.",
                "enum": [
                  "standard",
                  "alpha_key"
                ],
                "title": "Mode",
                "type": "string",
                "x-description-zh": "standard 保留场景；alpha_key 要求所有参与图片有有效 Alpha，原始视频仍不透明。"
              }
            },
            "title": "GenerationTransparency",
            "type": "object"
          },
          "InputCanvasOptions": {
            "additionalProperties": false,
            "properties": {
              "aspect_ratio": {
                "default": "follow_output",
                "description": "Follow the output ratio or preserve the source ratio.",
                "enum": [
                  "follow_output",
                  "source"
                ],
                "title": "Aspect Ratio",
                "type": "string",
                "x-description-zh": "跟随输出比例或保持原图比例。"
              },
              "background": {
                "default": "auto",
                "description": "Canvas extension background strategy.",
                "enum": [
                  "auto",
                  "transparent",
                  "solid"
                ],
                "title": "Background",
                "type": "string",
                "x-description-zh": "画布扩展区域的背景策略。"
              },
              "background_color": {
                "anyOf": [
                  {
                    "pattern": "^#[0-9A-Fa-f]{6}$",
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Six-digit RGB color for a solid extension.",
                "title": "Background Color",
                "x-description-zh": "纯色扩展区域的六位 RGB 颜色。"
              },
              "enabled": {
                "default": true,
                "description": "Whether to prepare an expanded input canvas.",
                "title": "Enabled",
                "type": "boolean",
                "x-description-zh": "是否准备扩展输入画布。"
              },
              "position_x": {
                "default": 0.5,
                "description": "Normalized horizontal source position.",
                "maximum": 1.0,
                "minimum": 0.0,
                "title": "Position X",
                "type": "number",
                "x-description-zh": "归一化水平位置。"
              },
              "position_y": {
                "default": 0.5,
                "description": "Normalized vertical source position.",
                "maximum": 1.0,
                "minimum": 0.0,
                "title": "Position Y",
                "type": "number",
                "x-description-zh": "归一化垂直位置。"
              },
              "source_scale": {
                "default": 0.8,
                "description": "Source subject scale within the canvas.",
                "maximum": 1.0,
                "minimum": 0.5,
                "title": "Source Scale",
                "type": "number",
                "x-description-zh": "原图主体在画布中的缩放比例。"
              }
            },
            "title": "InputCanvasOptions",
            "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.0,
                "description": "Range start in seconds from the source beginning.",
                "minimum": 0,
                "title": "Start Seconds",
                "type": "number",
                "x-description-zh": "相对源视频起点的选段开始秒数。"
              }
            },
            "title": "Selection",
            "type": "object"
          },
          "UnityOptions": {
            "additionalProperties": false,
            "properties": {
              "pivot": {
                "const": "bottom_center",
                "default": "bottom_center",
                "description": "Supported Unity sprite pivot.",
                "title": "Pivot",
                "type": "string",
                "x-description-zh": "支持的 Unity 精灵锚点。"
              },
              "pixels_per_unit": {
                "default": 100,
                "description": "Unity texture pixels per world unit.",
                "maximum": 1000,
                "minimum": 1,
                "title": "Pixels Per Unit",
                "type": "integer",
                "x-description-zh": "Unity 每世界单位对应的纹理像素数。"
              }
            },
            "title": "UnityOptions",
            "type": "object"
          },
          "UrlImageInput": {
            "additionalProperties": false,
            "properties": {
              "type": {
                "const": "url",
                "title": "Type",
                "type": "string"
              },
              "url": {
                "description": "Public HTTPS image on port 443, without credentials or fragments. Private networks and unsafe redirects are rejected. Keep bytes stable across retries.",
                "maxLength": 2048,
                "minLength": 9,
                "title": "Url",
                "type": "string",
                "x-description-zh": "公开 HTTPS 图片，443 端口，不带凭据或 fragment；禁止私网和不安全跳转，重试期间保持图片字节稳定。"
              }
            },
            "required": [
              "type",
              "url"
            ],
            "title": "UrlImageInput",
            "type": "object"
          },
          "VideoOptions": {
            "additionalProperties": false,
            "properties": {
              "duration_seconds": {
                "anyOf": [
                  {
                    "exclusiveMinimum": 0,
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Seconds; choose a supported duration for the model and resolution. Omission uses its default.",
                "title": "Duration Seconds",
                "x-description-zh": "秒数，需符合模型与分辨率支持范围；省略时使用模型默认值。"
              },
              "input_canvas": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/InputCanvasOptions"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Optional input framing; omit to keep the source framing.",
                "x-description-zh": "可选输入画布设置；省略时保持来源构图。"
              },
              "model": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "provider:model ID from GET /models; omission uses the configured default model.",
                "title": "Model",
                "x-description-zh": "GET /models 返回的 provider:model ID；省略时使用配置的默认模型。"
              },
              "ratio": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Aspect ratio supported by the current model and input mode.",
                "title": "Ratio",
                "x-description-zh": "当前模型与输入模式支持的画幅比例。"
              },
              "resolution": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Resolution value from the live model catalog.",
                "title": "Resolution",
                "x-description-zh": "实时模型目录中的分辨率值。"
              },
              "seed": {
                "anyOf": [
                  {
                    "maximum": 2147483647,
                    "minimum": 0,
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Optional seed only for models advertising seed support; not a universal determinism guarantee.",
                "title": "Seed",
                "x-description-zh": "仅适用于声明支持 seed 的模型，不保证所有输出确定性。"
              },
              "style_preset": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Optional style preset supported by the selected provider/model.",
                "title": "Style Preset",
                "x-description-zh": "所选供应商或模型支持的可选风格预设。"
              },
              "transparency": {
                "$ref": "#/$defs/GenerationTransparency",
                "default": {
                  "key_color": null,
                  "key_selection": "auto",
                  "mode": "standard"
                },
                "description": "Source transparency workflow; transparent exports require alpha_key.",
                "x-description-zh": "来源透明流程；透明导出要求 alpha_key。"
              },
              "watermark": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Optional watermark setting; check the model capability.",
                "title": "Watermark",
                "x-description-zh": "可选水印设置，需检查模型能力。"
              }
            },
            "title": "VideoOptions",
            "type": "object"
          }
        },
        "properties": {
          "idempotency_key": {
            "description": "Persist per logical generation; reuse with the same OAuth client and user after a timeout.",
            "maxLength": 200,
            "minLength": 8,
            "title": "Idempotency Key",
            "type": "string",
            "x-description-zh": "每次逻辑生成保存一个键；超时后以同一用户及 OAuth 客户端复用。"
          },
          "max_credits": {
            "anyOf": [
              {
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "User-approved per-operation credit cap. Never silently increase it; this is not a multi-task budget.",
            "title": "Max Credits",
            "x-description-zh": "用户批准的单次积分上限，不得擅自提高，也不是多任务总预算。"
          },
          "quote_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Fresh approved quote. At least quote_id or max_credits is required; both are allowed.",
            "title": "Quote Id",
            "x-description-zh": "新鲜且已批准的报价；quote_id 与 max_credits 至少一个，可同时提供。"
          },
          "request": {
            "$ref": "#/$defs/AnimationCreateRequest",
            "description": "Exact user-approved request; keep unchanged across retries.",
            "x-description-zh": "用户批准的完整请求，重试时保持不变。"
          }
        },
        "required": [
          "request",
          "idempotency_key"
        ],
        "title": "generate_animationArguments",
        "type": "object"
      },
      "name": "generate_animation",
      "outputSchema": {
        "$defs": {
          "AssetResponse": {
            "additionalProperties": false,
            "properties": {
              "byte_size": {
                "description": "Expected file size in bytes.",
                "title": "Byte Size",
                "type": "integer",
                "x-description-zh": "文件预期字节数。"
              },
              "created_at": {
                "description": "Creation timestamp in UTC.",
                "format": "date-time",
                "title": "Created At",
                "type": "string",
                "x-description-zh": "UTC 创建时间。"
              },
              "download_expires_at": {
                "description": "Signed URL expiry in UTC; refresh via asset lookup when expired.",
                "format": "date-time",
                "title": "Download Expires At",
                "type": "string",
                "x-description-zh": "签名 URL 的 UTC 过期时间；过期后重新查询资产。"
              },
              "download_url": {
                "description": "Sensitive short-lived signed URL. Download without a Bearer header, including after redirects; never log the URL.",
                "title": "Download Url",
                "type": "string",
                "x-description-zh": "敏感短期签名 URL；下载及跳转时均不携带 Bearer 头，不记录此 URL。"
              },
              "format": {
                "description": "Artifact format; inspect actual outputs rather than assuming an array order.",
                "title": "Format",
                "type": "string",
                "x-description-zh": "实际资产格式，不要依赖 outputs 固定顺序。"
              },
              "id": {
                "description": "Stable public asset ID; use it to refresh download metadata.",
                "format": "uuid",
                "title": "Id",
                "type": "string",
                "x-description-zh": "稳定公共资产 ID，用于刷新下载信息。"
              },
              "mime_type": {
                "description": "Asset media type.",
                "title": "Mime Type",
                "type": "string",
                "x-description-zh": "资产媒体类型。"
              },
              "object": {
                "const": "asset",
                "default": "asset",
                "title": "Object",
                "type": "string"
              }
            },
            "required": [
              "id",
              "format",
              "mime_type",
              "byte_size",
              "created_at",
              "download_url",
              "download_expires_at"
            ],
            "title": "AssetResponse",
            "type": "object"
          },
          "CreditUsage": {
            "additionalProperties": false,
            "properties": {
              "charged": {
                "description": "Net charged credits. Confirmed provider moderation rejection is refunded; cancellation alone is not a refund.",
                "title": "Charged",
                "type": "integer",
                "x-description-zh": "最终净扣费积分。供应商明确审核拒绝会退分，取消本身不代表退款。"
              },
              "held": {
                "description": "Credits currently reserved, not an additional charge to sum with charged.",
                "title": "Held",
                "type": "integer",
                "x-description-zh": "当前预占积分，不应与 charged 相加当作扣费。"
              },
              "quoted": {
                "description": "Quoted total, not necessarily the final charge.",
                "title": "Quoted",
                "type": "integer",
                "x-description-zh": "报价总额，不一定等于最终扣费。"
              },
              "refunded": {
                "default": 0,
                "description": "Credits returned after a charge; already excluded from charged. Not a cash refund.",
                "title": "Refunded",
                "type": "integer",
                "x-description-zh": "扣费后退回的积分，已从 charged 中扣除，不是现金退款。"
              },
              "released": {
                "default": 0,
                "description": "Credits returned from an uncommitted hold.",
                "title": "Released",
                "type": "integer",
                "x-description-zh": "尚未确认扣费即释放的积分。"
              },
              "status": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Billing state: held, charged, released, refunded, or managed for internal child tasks.",
                "title": "Status",
                "x-description-zh": "积分状态：held、charged、released、refunded，内部子任务可为 managed。"
              }
            },
            "required": [
              "quoted",
              "held",
              "charged"
            ],
            "title": "CreditUsage",
            "type": "object"
          },
          "TaskError": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "description": "Machine-readable task error code.",
                "title": "Code",
                "type": "string",
                "x-description-zh": "供程序识别的任务错误码。"
              },
              "message": {
                "description": "Human-readable summary, not a stable branching key.",
                "title": "Message",
                "type": "string",
                "x-description-zh": "人类可读说明，不应作为稳定分支条件。"
              },
              "retryable": {
                "default": false,
                "description": "Whether retry may help; inspect partial outputs before creating a new paid task.",
                "title": "Retryable",
                "type": "boolean",
                "x-description-zh": "重试是否可能有帮助；新建付费任务前先检查部分产物。"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "title": "TaskError",
            "type": "object"
          }
        },
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "description": "UTC acceptance timestamp.",
            "format": "date-time",
            "title": "Created At",
            "type": "string",
            "x-description-zh": "任务被接受的 UTC 时间。"
          },
          "credits": {
            "$ref": "#/$defs/CreditUsage",
            "description": "Quoted, reserved, and charged credit states.",
            "x-description-zh": "报价、预占及已扣积分状态。"
          },
          "error": {
            "anyOf": [
              {
                "$ref": "#/$defs/TaskError"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Task failure details, independently of any usable outputs.",
            "x-description-zh": "任务失败信息，与是否存在可用产物分别判断。"
          },
          "finished_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "UTC terminal timestamp when known.",
            "title": "Finished At",
            "x-description-zh": "已知时返回 UTC 终态时间。"
          },
          "id": {
            "description": "Persist this task ID immediately after create; poll it instead of creating again.",
            "format": "uuid",
            "title": "Id",
            "type": "string",
            "x-description-zh": "创建后立即保存任务 ID，通过它轮询，不要再次创建。"
          },
          "metadata": {
            "additionalProperties": true,
            "default": {},
            "description": "Caller-provided metadata.",
            "title": "Metadata",
            "type": "object",
            "x-description-zh": "调用方提供的元数据。"
          },
          "normalized_input": {
            "additionalProperties": true,
            "default": {},
            "description": "Normalized public input; may contain private prompts or image references. Do not log wholesale.",
            "title": "Normalized Input",
            "type": "object",
            "x-description-zh": "规范化公共输入，可能含私有提示词或图片引用，不要整体写入日志。"
          },
          "object": {
            "description": "Public task resource type.",
            "enum": [
              "video_generation",
              "animation_export",
              "animation"
            ],
            "title": "Object",
            "type": "string",
            "x-description-zh": "公共任务资源类型。"
          },
          "outputs": {
            "default": [],
            "description": "Available assets, including partial outputs on failed/cancelled tasks. Always inspect them at a terminal state.",
            "items": {
              "$ref": "#/$defs/AssetResponse"
            },
            "title": "Outputs",
            "type": "array",
            "x-description-zh": "可用资产，失败或取消也可能有部分产物；所有终态都应检查。"
          },
          "progress": {
            "description": "Fraction from 0 to 1, not a completion-time estimate.",
            "maximum": 1,
            "minimum": 0,
            "title": "Progress",
            "type": "number",
            "x-description-zh": "0 至 1 的进度值，不代表精确完成时间。"
          },
          "stage": {
            "anyOf": [
              {
                "enum": [
                  "queued",
                  "video_generation",
                  "animation_export",
                  "completed"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Current pipeline stage when available.",
            "title": "Stage",
            "x-description-zh": "可用时显示当前流水线阶段。"
          },
          "started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "UTC production start when known.",
            "title": "Started At",
            "x-description-zh": "已知时返回 UTC 生产开始时间。"
          },
          "status": {
            "description": "succeeded, failed, and cancelled are terminal; cancelling is not terminal.",
            "enum": [
              "queued",
              "running",
              "cancelling",
              "succeeded",
              "failed",
              "cancelled"
            ],
            "title": "Status",
            "type": "string",
            "x-description-zh": "succeeded、failed、cancelled 为终态；cancelling 不是终态。"
          }
        },
        "required": [
          "id",
          "object",
          "status",
          "progress",
          "credits",
          "created_at"
        ],
        "title": "TaskResponse",
        "type": "object"
      },
      "title": "Generate animation",
      "x-animgen": {
        "descriptionZh": "启动付费异步动画，必须有用户批准的 quote_id 或 max_credits，并保存幂等键。两个支出字段与 request 同级；生成开始后可能扣费。",
        "documentation": {
          "en": "https://animgen.com/docs/en/mcp-reference/generate-animation",
          "zh": "https://animgen.com/docs/zh/mcp-reference/generate-animation"
        },
        "requiresUserConfirmation": true,
        "scopes": [
          "animations:write"
        ],
        "sideEffects": [
          "generation_started",
          "credits_reserved_or_charged"
        ],
        "spendGuard": {
          "automaticBudgetIncreaseAllowed": false,
          "idempotencyScope": [
            "account",
            "operation",
            "oauth_client"
          ],
          "perOperation": true,
          "requiresAtLeastOne": [
            "quote_id",
            "max_credits"
          ]
        },
        "spendsCredits": true,
        "titleZh": "生成动画",
        "workflowStep": 50
      }
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "description": "Get animation status, progress, credit state, errors, and generated assets.",
      "examples": [
        {
          "arguments": {
            "animation_id": "00000000-0000-4000-8000-000000000002"
          },
          "description": "Illustrative only. Replace resource IDs with owned resources. A zero cap never approves positive-cost work; obtain explicit approval before changing it."
        }
      ],
      "inputSchema": {
        "properties": {
          "animation_id": {
            "description": "Owned task ID returned by generate_animation.",
            "format": "uuid",
            "title": "Animation Id",
            "type": "string",
            "x-description-zh": "generate_animation 返回的所属任务 ID。"
          }
        },
        "required": [
          "animation_id"
        ],
        "title": "get_animationArguments",
        "type": "object"
      },
      "name": "get_animation",
      "outputSchema": {
        "$defs": {
          "AssetResponse": {
            "additionalProperties": false,
            "properties": {
              "byte_size": {
                "description": "Expected file size in bytes.",
                "title": "Byte Size",
                "type": "integer",
                "x-description-zh": "文件预期字节数。"
              },
              "created_at": {
                "description": "Creation timestamp in UTC.",
                "format": "date-time",
                "title": "Created At",
                "type": "string",
                "x-description-zh": "UTC 创建时间。"
              },
              "download_expires_at": {
                "description": "Signed URL expiry in UTC; refresh via asset lookup when expired.",
                "format": "date-time",
                "title": "Download Expires At",
                "type": "string",
                "x-description-zh": "签名 URL 的 UTC 过期时间；过期后重新查询资产。"
              },
              "download_url": {
                "description": "Sensitive short-lived signed URL. Download without a Bearer header, including after redirects; never log the URL.",
                "title": "Download Url",
                "type": "string",
                "x-description-zh": "敏感短期签名 URL；下载及跳转时均不携带 Bearer 头，不记录此 URL。"
              },
              "format": {
                "description": "Artifact format; inspect actual outputs rather than assuming an array order.",
                "title": "Format",
                "type": "string",
                "x-description-zh": "实际资产格式，不要依赖 outputs 固定顺序。"
              },
              "id": {
                "description": "Stable public asset ID; use it to refresh download metadata.",
                "format": "uuid",
                "title": "Id",
                "type": "string",
                "x-description-zh": "稳定公共资产 ID，用于刷新下载信息。"
              },
              "mime_type": {
                "description": "Asset media type.",
                "title": "Mime Type",
                "type": "string",
                "x-description-zh": "资产媒体类型。"
              },
              "object": {
                "const": "asset",
                "default": "asset",
                "title": "Object",
                "type": "string"
              }
            },
            "required": [
              "id",
              "format",
              "mime_type",
              "byte_size",
              "created_at",
              "download_url",
              "download_expires_at"
            ],
            "title": "AssetResponse",
            "type": "object"
          },
          "CreditUsage": {
            "additionalProperties": false,
            "properties": {
              "charged": {
                "description": "Net charged credits. Confirmed provider moderation rejection is refunded; cancellation alone is not a refund.",
                "title": "Charged",
                "type": "integer",
                "x-description-zh": "最终净扣费积分。供应商明确审核拒绝会退分，取消本身不代表退款。"
              },
              "held": {
                "description": "Credits currently reserved, not an additional charge to sum with charged.",
                "title": "Held",
                "type": "integer",
                "x-description-zh": "当前预占积分，不应与 charged 相加当作扣费。"
              },
              "quoted": {
                "description": "Quoted total, not necessarily the final charge.",
                "title": "Quoted",
                "type": "integer",
                "x-description-zh": "报价总额，不一定等于最终扣费。"
              },
              "refunded": {
                "default": 0,
                "description": "Credits returned after a charge; already excluded from charged. Not a cash refund.",
                "title": "Refunded",
                "type": "integer",
                "x-description-zh": "扣费后退回的积分，已从 charged 中扣除，不是现金退款。"
              },
              "released": {
                "default": 0,
                "description": "Credits returned from an uncommitted hold.",
                "title": "Released",
                "type": "integer",
                "x-description-zh": "尚未确认扣费即释放的积分。"
              },
              "status": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Billing state: held, charged, released, refunded, or managed for internal child tasks.",
                "title": "Status",
                "x-description-zh": "积分状态：held、charged、released、refunded，内部子任务可为 managed。"
              }
            },
            "required": [
              "quoted",
              "held",
              "charged"
            ],
            "title": "CreditUsage",
            "type": "object"
          },
          "TaskError": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "description": "Machine-readable task error code.",
                "title": "Code",
                "type": "string",
                "x-description-zh": "供程序识别的任务错误码。"
              },
              "message": {
                "description": "Human-readable summary, not a stable branching key.",
                "title": "Message",
                "type": "string",
                "x-description-zh": "人类可读说明，不应作为稳定分支条件。"
              },
              "retryable": {
                "default": false,
                "description": "Whether retry may help; inspect partial outputs before creating a new paid task.",
                "title": "Retryable",
                "type": "boolean",
                "x-description-zh": "重试是否可能有帮助；新建付费任务前先检查部分产物。"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "title": "TaskError",
            "type": "object"
          }
        },
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "description": "UTC acceptance timestamp.",
            "format": "date-time",
            "title": "Created At",
            "type": "string",
            "x-description-zh": "任务被接受的 UTC 时间。"
          },
          "credits": {
            "$ref": "#/$defs/CreditUsage",
            "description": "Quoted, reserved, and charged credit states.",
            "x-description-zh": "报价、预占及已扣积分状态。"
          },
          "error": {
            "anyOf": [
              {
                "$ref": "#/$defs/TaskError"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Task failure details, independently of any usable outputs.",
            "x-description-zh": "任务失败信息，与是否存在可用产物分别判断。"
          },
          "finished_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "UTC terminal timestamp when known.",
            "title": "Finished At",
            "x-description-zh": "已知时返回 UTC 终态时间。"
          },
          "id": {
            "description": "Persist this task ID immediately after create; poll it instead of creating again.",
            "format": "uuid",
            "title": "Id",
            "type": "string",
            "x-description-zh": "创建后立即保存任务 ID，通过它轮询，不要再次创建。"
          },
          "metadata": {
            "additionalProperties": true,
            "default": {},
            "description": "Caller-provided metadata.",
            "title": "Metadata",
            "type": "object",
            "x-description-zh": "调用方提供的元数据。"
          },
          "normalized_input": {
            "additionalProperties": true,
            "default": {},
            "description": "Normalized public input; may contain private prompts or image references. Do not log wholesale.",
            "title": "Normalized Input",
            "type": "object",
            "x-description-zh": "规范化公共输入，可能含私有提示词或图片引用，不要整体写入日志。"
          },
          "object": {
            "description": "Public task resource type.",
            "enum": [
              "video_generation",
              "animation_export",
              "animation"
            ],
            "title": "Object",
            "type": "string",
            "x-description-zh": "公共任务资源类型。"
          },
          "outputs": {
            "default": [],
            "description": "Available assets, including partial outputs on failed/cancelled tasks. Always inspect them at a terminal state.",
            "items": {
              "$ref": "#/$defs/AssetResponse"
            },
            "title": "Outputs",
            "type": "array",
            "x-description-zh": "可用资产，失败或取消也可能有部分产物；所有终态都应检查。"
          },
          "progress": {
            "description": "Fraction from 0 to 1, not a completion-time estimate.",
            "maximum": 1,
            "minimum": 0,
            "title": "Progress",
            "type": "number",
            "x-description-zh": "0 至 1 的进度值，不代表精确完成时间。"
          },
          "stage": {
            "anyOf": [
              {
                "enum": [
                  "queued",
                  "video_generation",
                  "animation_export",
                  "completed"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Current pipeline stage when available.",
            "title": "Stage",
            "x-description-zh": "可用时显示当前流水线阶段。"
          },
          "started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "UTC production start when known.",
            "title": "Started At",
            "x-description-zh": "已知时返回 UTC 生产开始时间。"
          },
          "status": {
            "description": "succeeded, failed, and cancelled are terminal; cancelling is not terminal.",
            "enum": [
              "queued",
              "running",
              "cancelling",
              "succeeded",
              "failed",
              "cancelled"
            ],
            "title": "Status",
            "type": "string",
            "x-description-zh": "succeeded、failed、cancelled 为终态；cancelling 不是终态。"
          }
        },
        "required": [
          "id",
          "object",
          "status",
          "progress",
          "credits",
          "created_at"
        ],
        "title": "TaskResponse",
        "type": "object"
      },
      "title": "Get animation",
      "x-animgen": {
        "descriptionZh": "查询状态、进度、积分、错误和已有资产；失败或取消也要检查 outputs。",
        "documentation": {
          "en": "https://animgen.com/docs/en/mcp-reference/get-animation",
          "zh": "https://animgen.com/docs/zh/mcp-reference/get-animation"
        },
        "requiresUserConfirmation": false,
        "scopes": [
          "animations:read"
        ],
        "sideEffects": [],
        "spendsCredits": false,
        "titleZh": "查询动画任务",
        "workflowStep": 60
      }
    },
    {
      "annotations": {
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false,
        "readOnlyHint": true
      },
      "description": "Return metadata and a short-lived signed download URL for an owned output asset.",
      "examples": [
        {
          "arguments": {
            "asset_id": "00000000-0000-4000-8000-000000000003"
          },
          "description": "Illustrative only. Replace resource IDs with owned resources. A zero cap never approves positive-cost work; obtain explicit approval before changing it."
        }
      ],
      "inputSchema": {
        "properties": {
          "asset_id": {
            "description": "Owned asset ID from task outputs, not a task ID.",
            "format": "uuid",
            "title": "Asset Id",
            "type": "string",
            "x-description-zh": "任务 outputs 中的所属资产 ID，不是任务 ID。"
          }
        },
        "required": [
          "asset_id"
        ],
        "title": "download_assetArguments",
        "type": "object"
      },
      "name": "download_asset",
      "outputSchema": {
        "additionalProperties": false,
        "properties": {
          "byte_size": {
            "description": "Expected file size in bytes.",
            "title": "Byte Size",
            "type": "integer",
            "x-description-zh": "文件预期字节数。"
          },
          "created_at": {
            "description": "Creation timestamp in UTC.",
            "format": "date-time",
            "title": "Created At",
            "type": "string",
            "x-description-zh": "UTC 创建时间。"
          },
          "download_expires_at": {
            "description": "Signed URL expiry in UTC; refresh via asset lookup when expired.",
            "format": "date-time",
            "title": "Download Expires At",
            "type": "string",
            "x-description-zh": "签名 URL 的 UTC 过期时间；过期后重新查询资产。"
          },
          "download_url": {
            "description": "Sensitive short-lived signed URL. Download without a Bearer header, including after redirects; never log the URL.",
            "title": "Download Url",
            "type": "string",
            "x-description-zh": "敏感短期签名 URL；下载及跳转时均不携带 Bearer 头，不记录此 URL。"
          },
          "format": {
            "description": "Artifact format; inspect actual outputs rather than assuming an array order.",
            "title": "Format",
            "type": "string",
            "x-description-zh": "实际资产格式，不要依赖 outputs 固定顺序。"
          },
          "id": {
            "description": "Stable public asset ID; use it to refresh download metadata.",
            "format": "uuid",
            "title": "Id",
            "type": "string",
            "x-description-zh": "稳定公共资产 ID，用于刷新下载信息。"
          },
          "mime_type": {
            "description": "Asset media type.",
            "title": "Mime Type",
            "type": "string",
            "x-description-zh": "资产媒体类型。"
          },
          "object": {
            "const": "asset",
            "default": "asset",
            "title": "Object",
            "type": "string"
          }
        },
        "required": [
          "id",
          "format",
          "mime_type",
          "byte_size",
          "created_at",
          "download_url",
          "download_expires_at"
        ],
        "title": "AssetResponse",
        "type": "object"
      },
      "title": "Download asset",
      "x-animgen": {
        "descriptionZh": "返回所属资产信息和短期签名 URL，不自动保存本地文件；下载不携带 API 或 OAuth 凭据。",
        "documentation": {
          "en": "https://animgen.com/docs/en/mcp-reference/download-asset",
          "zh": "https://animgen.com/docs/zh/mcp-reference/download-asset"
        },
        "requiresUserConfirmation": false,
        "scopes": [
          "assets:read"
        ],
        "sideEffects": [
          "signed_url_issued"
        ],
        "spendsCredits": false,
        "titleZh": "获取资产下载信息",
        "workflowStep": 70
      }
    },
    {
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false,
        "readOnlyHint": false
      },
      "description": "Best-effort cancellation of an owned animation. Work already in production may not stop and credits already charged are not refunded.",
      "examples": [
        {
          "arguments": {
            "animation_id": "00000000-0000-4000-8000-000000000002"
          },
          "description": "Illustrative only. Replace resource IDs with owned resources. A zero cap never approves positive-cost work; obtain explicit approval before changing it."
        }
      ],
      "inputSchema": {
        "properties": {
          "animation_id": {
            "description": "Owned task the user has asked to cancel.",
            "format": "uuid",
            "title": "Animation Id",
            "type": "string",
            "x-description-zh": "用户要求取消的所属任务 ID。"
          }
        },
        "required": [
          "animation_id"
        ],
        "title": "cancel_animationArguments",
        "type": "object"
      },
      "name": "cancel_animation",
      "outputSchema": {
        "$defs": {
          "AssetResponse": {
            "additionalProperties": false,
            "properties": {
              "byte_size": {
                "description": "Expected file size in bytes.",
                "title": "Byte Size",
                "type": "integer",
                "x-description-zh": "文件预期字节数。"
              },
              "created_at": {
                "description": "Creation timestamp in UTC.",
                "format": "date-time",
                "title": "Created At",
                "type": "string",
                "x-description-zh": "UTC 创建时间。"
              },
              "download_expires_at": {
                "description": "Signed URL expiry in UTC; refresh via asset lookup when expired.",
                "format": "date-time",
                "title": "Download Expires At",
                "type": "string",
                "x-description-zh": "签名 URL 的 UTC 过期时间；过期后重新查询资产。"
              },
              "download_url": {
                "description": "Sensitive short-lived signed URL. Download without a Bearer header, including after redirects; never log the URL.",
                "title": "Download Url",
                "type": "string",
                "x-description-zh": "敏感短期签名 URL；下载及跳转时均不携带 Bearer 头，不记录此 URL。"
              },
              "format": {
                "description": "Artifact format; inspect actual outputs rather than assuming an array order.",
                "title": "Format",
                "type": "string",
                "x-description-zh": "实际资产格式，不要依赖 outputs 固定顺序。"
              },
              "id": {
                "description": "Stable public asset ID; use it to refresh download metadata.",
                "format": "uuid",
                "title": "Id",
                "type": "string",
                "x-description-zh": "稳定公共资产 ID，用于刷新下载信息。"
              },
              "mime_type": {
                "description": "Asset media type.",
                "title": "Mime Type",
                "type": "string",
                "x-description-zh": "资产媒体类型。"
              },
              "object": {
                "const": "asset",
                "default": "asset",
                "title": "Object",
                "type": "string"
              }
            },
            "required": [
              "id",
              "format",
              "mime_type",
              "byte_size",
              "created_at",
              "download_url",
              "download_expires_at"
            ],
            "title": "AssetResponse",
            "type": "object"
          },
          "CreditUsage": {
            "additionalProperties": false,
            "properties": {
              "charged": {
                "description": "Net charged credits. Confirmed provider moderation rejection is refunded; cancellation alone is not a refund.",
                "title": "Charged",
                "type": "integer",
                "x-description-zh": "最终净扣费积分。供应商明确审核拒绝会退分，取消本身不代表退款。"
              },
              "held": {
                "description": "Credits currently reserved, not an additional charge to sum with charged.",
                "title": "Held",
                "type": "integer",
                "x-description-zh": "当前预占积分，不应与 charged 相加当作扣费。"
              },
              "quoted": {
                "description": "Quoted total, not necessarily the final charge.",
                "title": "Quoted",
                "type": "integer",
                "x-description-zh": "报价总额，不一定等于最终扣费。"
              },
              "refunded": {
                "default": 0,
                "description": "Credits returned after a charge; already excluded from charged. Not a cash refund.",
                "title": "Refunded",
                "type": "integer",
                "x-description-zh": "扣费后退回的积分，已从 charged 中扣除，不是现金退款。"
              },
              "released": {
                "default": 0,
                "description": "Credits returned from an uncommitted hold.",
                "title": "Released",
                "type": "integer",
                "x-description-zh": "尚未确认扣费即释放的积分。"
              },
              "status": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null,
                "description": "Billing state: held, charged, released, refunded, or managed for internal child tasks.",
                "title": "Status",
                "x-description-zh": "积分状态：held、charged、released、refunded，内部子任务可为 managed。"
              }
            },
            "required": [
              "quoted",
              "held",
              "charged"
            ],
            "title": "CreditUsage",
            "type": "object"
          },
          "TaskError": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "description": "Machine-readable task error code.",
                "title": "Code",
                "type": "string",
                "x-description-zh": "供程序识别的任务错误码。"
              },
              "message": {
                "description": "Human-readable summary, not a stable branching key.",
                "title": "Message",
                "type": "string",
                "x-description-zh": "人类可读说明，不应作为稳定分支条件。"
              },
              "retryable": {
                "default": false,
                "description": "Whether retry may help; inspect partial outputs before creating a new paid task.",
                "title": "Retryable",
                "type": "boolean",
                "x-description-zh": "重试是否可能有帮助；新建付费任务前先检查部分产物。"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "title": "TaskError",
            "type": "object"
          }
        },
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "description": "UTC acceptance timestamp.",
            "format": "date-time",
            "title": "Created At",
            "type": "string",
            "x-description-zh": "任务被接受的 UTC 时间。"
          },
          "credits": {
            "$ref": "#/$defs/CreditUsage",
            "description": "Quoted, reserved, and charged credit states.",
            "x-description-zh": "报价、预占及已扣积分状态。"
          },
          "error": {
            "anyOf": [
              {
                "$ref": "#/$defs/TaskError"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Task failure details, independently of any usable outputs.",
            "x-description-zh": "任务失败信息，与是否存在可用产物分别判断。"
          },
          "finished_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "UTC terminal timestamp when known.",
            "title": "Finished At",
            "x-description-zh": "已知时返回 UTC 终态时间。"
          },
          "id": {
            "description": "Persist this task ID immediately after create; poll it instead of creating again.",
            "format": "uuid",
            "title": "Id",
            "type": "string",
            "x-description-zh": "创建后立即保存任务 ID，通过它轮询，不要再次创建。"
          },
          "metadata": {
            "additionalProperties": true,
            "default": {},
            "description": "Caller-provided metadata.",
            "title": "Metadata",
            "type": "object",
            "x-description-zh": "调用方提供的元数据。"
          },
          "normalized_input": {
            "additionalProperties": true,
            "default": {},
            "description": "Normalized public input; may contain private prompts or image references. Do not log wholesale.",
            "title": "Normalized Input",
            "type": "object",
            "x-description-zh": "规范化公共输入，可能含私有提示词或图片引用，不要整体写入日志。"
          },
          "object": {
            "description": "Public task resource type.",
            "enum": [
              "video_generation",
              "animation_export",
              "animation"
            ],
            "title": "Object",
            "type": "string",
            "x-description-zh": "公共任务资源类型。"
          },
          "outputs": {
            "default": [],
            "description": "Available assets, including partial outputs on failed/cancelled tasks. Always inspect them at a terminal state.",
            "items": {
              "$ref": "#/$defs/AssetResponse"
            },
            "title": "Outputs",
            "type": "array",
            "x-description-zh": "可用资产，失败或取消也可能有部分产物；所有终态都应检查。"
          },
          "progress": {
            "description": "Fraction from 0 to 1, not a completion-time estimate.",
            "maximum": 1,
            "minimum": 0,
            "title": "Progress",
            "type": "number",
            "x-description-zh": "0 至 1 的进度值，不代表精确完成时间。"
          },
          "stage": {
            "anyOf": [
              {
                "enum": [
                  "queued",
                  "video_generation",
                  "animation_export",
                  "completed"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Current pipeline stage when available.",
            "title": "Stage",
            "x-description-zh": "可用时显示当前流水线阶段。"
          },
          "started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "UTC production start when known.",
            "title": "Started At",
            "x-description-zh": "已知时返回 UTC 生产开始时间。"
          },
          "status": {
            "description": "succeeded, failed, and cancelled are terminal; cancelling is not terminal.",
            "enum": [
              "queued",
              "running",
              "cancelling",
              "succeeded",
              "failed",
              "cancelled"
            ],
            "title": "Status",
            "type": "string",
            "x-description-zh": "succeeded、failed、cancelled 为终态；cancelling 不是终态。"
          }
        },
        "required": [
          "id",
          "object",
          "status",
          "progress",
          "credits",
          "created_at"
        ],
        "title": "TaskResponse",
        "type": "object"
      },
      "title": "Cancel animation",
      "x-animgen": {
        "descriptionZh": "尽力取消所属任务，可能仍需轮询；已扣积分不自动退回，先前产物可能保留。",
        "documentation": {
          "en": "https://animgen.com/docs/en/mcp-reference/cancel-animation",
          "zh": "https://animgen.com/docs/zh/mcp-reference/cancel-animation"
        },
        "requiresUserConfirmation": true,
        "scopes": [
          "animations:write"
        ],
        "sideEffects": [
          "cancellation_requested"
        ],
        "spendsCredits": false,
        "titleZh": "取消动画任务",
        "workflowStep": 80
      }
    }
  ],
  "transport": "streamable-http"
}
