Skip to main content
Glama

Server Details

Create and edit images, videos, and audio through Magic Hour's hosted Streamable HTTP MCP server.

Ownership verified
Status
Healthy
Uptime
100.0% over 60 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
magichourhq/magic-hour-mcp
GitHub Stars
10
Server Listing
Magic Hour MCP Server

TDQS

A3.9/5.0

Scored across 48 tools

Disambiguation4/5

Most tools target clearly distinct media types and operations, and descriptions actively clarify boundaries such as text-to-video versus image-to-video versus animation. However, the large clusters of video-creation and face/character tools still create some selection ambiguity, especially around animation/short-video variants and face/head/character replacement.

Naming Consistency5/5

Tool names consistently use snake_case and generally begin with an action verb, often followed by the target resource and optional qualifier. Patterns like get/wait/fetch/delete with audio/image/video project are predictable and readable despite some semantic variation between verbs.

Tool Count2/5

Forty-eight tools is excessive for an agent-facing surface and well above the typical 3-15 well-scoped range. While the platform is broad, the count forces agents to choose among many similar media-generation endpoints and increases selection burden.

Completeness4/5

The surface covers a wide range of media generation and editing workflows with project get/wait/delete/fetch lifecycle operations for audio, image, and video. Minor gaps remain, such as no general project listing/history tool and limited audio-only operations beyond music generation.

Available Tools

48 tools
add_subtitles_to_videoAdd subtitles to videoAInspect

Adds automatically generated subtitles to a supplied video segment using a subtitle preset or custom text styling. Starts a background job that costs credits; returns a project id for wait_for_video_project.

NameRequiredDescriptionDefault
nameNoGive your video a custom name for easy identification.Auto Subtitle - dateTime
styleYesStyle of the subtitle. At least one of `.style.template` or `.style.custom_config` must be provided. * If only `.style.template` is provided, default values for the template will be used. * If both are provided, the fields in `.style.custom_config` will be used to overwrite the fields in `.style.template`. * If only `.style.custom_config` is provided, then all fields in `.style.custom_config` will be used. To use custom config only, the following `custom_config` params are required: * `.style.custom_config.font` * `.style.custom_config.text_color` * `.style.custom_config.vertical_position` * `.style.custom_config.horizontal_position`
assetsYesProvide the assets for auto subtitle generator
end_secondsYesEnd time of your clip (seconds). Must be greater than start_seconds.
start_secondsYesStart time of your clip (seconds). Must be ≥ 0.

Output Schema

NameRequiredDescription
idYesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the output video. If video generation fails, credits will be refunded, and this field will be updated to include the refund.

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover safety (readOnlyHint=false, destructiveHint=false, openWorldHint=true), and the description adds genuinely new behavior: it runs as a background job, it consumes credits, and it returns a project id. It stops short of saying anything about job duration or failure handling, so not a 5.

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

Conciseness5/5

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

Two sentences, zero filler, with the core action front-loaded and the cost/async consequence trailing. Nothing could be cut without losing information.

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

Completeness4/5

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

Output schema exists, so return-value explanation is not required, and the description still links the job to wait_for_video_project. The one gap is not flagging the overlap with translate_video for a tool that sits among many similar video generators.

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

Parameters3/5

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

Schema coverage is 100% and the style enum, custom_config requirements, and asset path rules are all documented in the schema itself. The description only echoes the preset-vs-custom choice, adding no new format or constraint detail, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Adds automatically generated subtitles to a supplied video segment') plus the two styling modes, which is enough to separate it from generic siblings like edit_video or restyle_video.

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

Usage Guidelines3/5

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

It names the follow-up tool (wait_for_video_project) and flags that the job costs credits, but never says when to pick this over a close alternative such as translate_video, which also produces subtitles. Usage is therefore implied rather than guided.

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

change_clothes_in_photoChange clothes in photoAInspect

Use only with the user's own likeness or content they are authorized to use. Do not use for impersonation, deception, sexual content, or content involving minors.

Changes clothing in a person photo using a supplied garment reference image. Costs 25 credits. Starts a background job; returns a project id for wait_for_image_project.

NameRequiredDescriptionDefault
nameNoGive your image a custom name for easy identification.Clothes Changer - dateTime
assetsYesProvide the assets for clothes changer

Output Schema

NameRequiredDescription
idYesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunded and this field will be updated to include the refund.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover safety (readOnlyHint=false, destructiveHint=false, openWorldHint=true), so the description's extra value is the credit cost (25), the asynchronous job model, and the project-id handoff. These are exactly the behavioral traits an agent needs before invoking. It doesn't state failure modes or turnaround expectations, which keeps it below a 5.

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

Conciseness4/5

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

Two tight paragraphs with zero filler; the behavioral line (what it does, cost, async handoff) is front-loaded in the second sentence. The safety policy leads the description rather than trailing it, which is defensible but slightly delays the core purpose statement.

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

Completeness5/5

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

Given a rich nested schema, full coverage, an output schema that already describes return values, and annotations covering the safety profile, the description supplies everything remaining: the credit cost, async workflow, follow-up tool, and usage restrictions.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents person_file_path, garment_file_path, garment_type, and name in detail. The description only implicitly references the person and garment inputs and adds no syntax or format guidance beyond what the schema provides, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource: changes clothing in a person photo using a supplied garment reference image. This clearly distinguishes it from siblings like edit_face_in_photo, swap_face_in_photo, and generate_headshot, which manipulate other aspects of a person photo.

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

Usage Guidelines5/5

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

The description gives explicit policy constraints (only the user's own likeness or authorized content; never impersonation, deception, sexual content, or minors) and the correct downstream flow: it starts a background job and the returned project id should be passed to wait_for_image_project. This names the follow-up tool directly.

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

colorize_photoColorize photoAInspect

Colorizes a black-and-white or faded photo. Costs 10 credits; returns a project id for wait_for_image_project.

NameRequiredDescriptionDefault
nameNoGive your image a custom name for easy identification.Photo Colorizer - dateTime
assetsYesProvide the assets for photo colorization

Output Schema

NameRequiredDescription
idYesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunded and this field will be updated to include the refund.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only give generic hints (readOnlyHint=false, destructiveHint=false, openWorldHint=true); the description adds two non-obvious behaviors: credit cost and asynchronous project-id return. Doesn't mention failure modes or file format constraints, but that's in the schema.

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

Conciseness5/5

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

Two short, front-loaded sentences; cost and next-step routing are packed in without waste.

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

Completeness4/5

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

Output schema exists so return values needn't be explained, and the async workflow handoff is stated. Missing only a note on input image requirements or failure cases, which is minor.

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

Parameters3/5

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

Schema coverage is 100% with detailed descriptions for name and image_file_path, so baseline 3 applies; the description adds no param-level detail beyond what the schema already provides.

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

Purpose5/5

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

Specific verb + resource: colorizes a black-and-white or faded photo. It also states the input constraint (grayscale/faded), distinguishing it from edit_image or generate_image.

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

Usage Guidelines4/5

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

States the cost (10 credits) and explicitly says it returns a project id for wait_for_image_project, which directs the agent's next step. No explicit when-not-to-use or sibling exclusions, but the input condition narrows applicability well.

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

create_animationCreate animationAInspect

Creates a stylized animated video with art and camera settings, using a custom prompt or an audio-derived prompt mode. Can use an initial image and audio. Credits depend on frame rate and duration; returns a project id for wait_for_video_project.

NameRequiredDescriptionDefault
fpsYesThe desire output video frame rate
nameNoGive your video a custom name for easy identification.Animation - dateTime
styleYesDefines the style of the output video
widthYesThe width of the final output video. The maximum width depends on your subscription. Please refer to our [pricing page](https://magichour.ai/pricing) for more details
assetsYesProvide the assets for animation.
heightYesThe height of the final output video. The maximum height depends on your subscription. Please refer to our [pricing page](https://magichour.ai/pricing) for more details
end_secondsYesThis value determines the duration of the output video.

Output Schema

NameRequiredDescription
idYesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the output video. If video generation fails, credits will be refunded, and this field will be updated to include the refund.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly=false, destructive=false, openWorld=true), so the bar is lower, and the description adds genuinely useful context: credit cost scales with frame rate and duration, and it returns a project id to poll via wait_for_video_project. It doesn't mention auth or approval requirements, but the async chain and cost warning are real added value.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the verb and resource, followed by capability and cost/return facts. No filler or redundancy.

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

Completeness4/5

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

Given an output schema exists, return values needn't be described, yet the description helpfully flags the project id and the wait_for_video_project hand-off. With 7 parameters, nested objects, and conditional enums, the description could say slightly more about required inputs (e.g., that audio/assets drive prompt_type), but overall it is sufficient for correct invocation.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents every parameter including the enums, nested style object, and conditional requirements. The description only loosely maps 'art and camera settings' and 'initial image and audio' to those fields, adding little beyond the schema — baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ('Creates a stylized animated video') and enumerates the two prompt modes plus optional image/audio inputs. It doesn't explicitly contrast itself with near-neighbors like create_video_from_image or create_video_from_audio, so sibling differentiation is only implied by the 'animated video with art styles' framing.

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

Usage Guidelines3/5

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

Mentions the audio-derived prompt mode constraint only indirectly ('custom prompt or an audio-derived prompt mode'), and names wait_for_video_project as the follow-up, which implies an async workflow. However, it never says when to pick this tool over the many other video-creation siblings, leaving selection to inference.

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

create_gif_or_short_videoCreate GIF or short videoAInspect

Generates a short animation from a text prompt, with GIF, MP4 or WebM output. Costs 50 credits. Starts a background job; returns a project id for wait_for_image_project.

NameRequiredDescriptionDefault
nameNoGive your gif a custom name for easy identification.Ai Gif - dateTime
styleYes
output_formatNoThe output file format for the generated animation.gif

Output Schema

NameRequiredDescription
idYesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunded and this field will be updated to include the refund.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly=false and destructive=false, so the bar is lower, and the description still adds real behavioral context: a fixed 50-credit cost and asynchronous background-job semantics. The non-obvious detail that the job is awaited via wait_for_image_project rather than wait_for_video_project is exactly the kind of trap this field should catch; only refund/failure behavior is missing.

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

Conciseness5/5

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

Three short clauses with zero filler: capability first, cost second, async/return contract last. Everything an agent needs to act is front-loaded.

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

Completeness4/5

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

With an output schema present, return-value explanation is optional, yet the description still supplies the key chaining fact (project id → wait tool) plus cost. The nested style.prompt object and the sibling-overlap question are the only remaining gaps for a paid async tool.

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

Parameters3/5

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

Schema coverage is 67%, and the schema already documents prompt (max 500), output_format enum, and the name default. The description restates the three formats and the text-prompt nature without adding format-level meaning such as aspect ratio, duration, or motion guidance, so it is baseline rather than compensatory.

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

Purpose4/5

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

The description states a specific verb and resource — generating a short animation from a text prompt — plus the concrete outputs (GIF, MP4, WebM). It is clear on its own, but it never distinguishes itself from close siblings like create_animation or create_video_from_text, so an agent cannot route between them from this text alone.

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

Usage Guidelines3/5

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

Usage is implied by the output-format scope, and the description does supply a workflow pointer ('returns a project id for wait_for_image_project'), which is genuinely helpful. However, it gives no when-to-use vs when-not guidance against the many other animation/video-from-text siblings.

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

create_lip_sync_videoCreate lip sync videoAInspect

Use only with the user's own likeness or content they are authorized to use. Do not use for impersonation, deception, sexual content, or content involving minors.

Adjusts an existing video's lip movements to match supplied replacement audio. For a still portrait plus audio, use create_talking_photo. Starts a background job that costs credits; returns a project id for wait_for_video_project.

NameRequiredDescriptionDefault
nameNoGive your video a custom name for easy identification.Lip Sync - dateTime
styleNoAttributes used to dictate the style of the output
assetsYesProvide the assets for lip-sync. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used
end_secondsYesEnd time of your clip (seconds). Must be greater than start_seconds.
max_fps_limitNoDefines the maximum FPS (frames per second) for the output video. If the input video's FPS is lower than this limit, the output video will retain the input FPS. This is useful for reducing unnecessary frame usage in scenarios where high FPS is not required.
start_secondsYesStart time of your clip (seconds). Must be ≥ 0.

Output Schema

NameRequiredDescription
idYesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the output video. If video generation fails, credits will be refunded, and this field will be updated to include the refund.

TDQS

A4.7/5.0
Behavior5/5

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

The annotations already declare this is a non-read-only, open-world operation, but the description adds substantive behavioral context: it starts a background job, costs credits, and returns a project id for polling. The authorization and content-policy constraints are also disclosed, which annotations cannot express.

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

Conciseness5/5

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

The description is compact and front-loaded with the safety restriction, then the core operation, the sibling alternative, and the async lifecycle. Every sentence provides actionable information.

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

Completeness5/5

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

Although an output schema exists, the description still adds necessary operational context about the background job and the project id. Combined with the rich input schema and annotations, an agent has everything needed to select and invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter and nested field is already documented in the schema, including video_source, start_seconds, end_seconds, style.generation_mode, and max_fps_limit. The description adds no parameter-level detail beyond that, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: adjusting an existing video's lip movements to match replacement audio. It explicitly distinguishes this from create_talking_photo, which handles still portraits rather than existing video.

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

Usage Guidelines5/5

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

It gives explicit when-to-use and when-not-to-use guidance, including authorized likeness restrictions and prohibited uses such as impersonation and minors. It also routes still-image cases to create_talking_photo and tells the agent to follow up with wait_for_video_project using the returned project id.

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

create_memeCreate memeAInspect

Creates a meme from a topic and template selection. Costs 10 credits. Starts a background job; returns a project id for wait_for_image_project.

NameRequiredDescriptionDefault
nameNoThe name of the meme.
styleYes

Output Schema

NameRequiredDescription
idYesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunded and this field will be updated to include the refund.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare a non-read-only, open-world, non-destructive operation, so the bar is lower. The description adds genuinely non-structured context: a 10-credit cost and the fact that execution is asynchronous returning a project id, both of which materially affect how an agent invokes it.

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

Conciseness5/5

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

Three short sentences, each carrying a distinct fact (what it does, cost, async return/next step). Front-loaded with the purpose and no filler.

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

Completeness4/5

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

An output schema exists so return-value detail is unnecessary, and the description covers cost plus the async handoff. It is somewhat thin on the nested style options and the optional `name`, but an agent has enough to call it correctly.

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

Parameters3/5

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

Schema description coverage is 50% on a nested object; the description only restates that topic and template drive the result and never mentions the optional `name` or `searchWeb` fields. Enum (template = "Random") is already in the schema, so no credit there. Adequate but not compensating for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource ("Creates a meme") plus the two inputs that shape the output (topic, template). It is clearly distinct from generic siblings like generate_image or create_gif_or_short_video by virtue of the meme/template framing, though it never explicitly names an alternative.

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

Usage Guidelines4/5

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

Gives concrete routing information for the follow-up step: the tool starts a background job and returns a project id to hand to wait_for_image_project. It doesn't state when *not* to use this versus generate_image or other image tools, but the async workflow guidance is clear.

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

create_qr_codeCreate QR codeAInspect

Creates a stylized QR code from supplied text or a URL and an art-style description. Currently costs 0 credits. Starts a background job; returns a project id for wait_for_image_project.

NameRequiredDescriptionDefault
nameNoGive your image a custom name for easy identification.Qr Code - dateTime
styleYes
contentYesThe content of the QR code.

Output Schema

NameRequiredDescription
idYesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunded and this field will be updated to include the refund.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, and the description adds genuinely new behavior: the operation is currently 0 credits and is asynchronous, returning a project id rather than a finished asset. That async/credit context is the key thing an agent can't infer from annotations.

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

Conciseness5/5

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

Two sentences, zero waste, with the core action stated first and the cost/async behavior front-loaded before the follow-up hint.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and the description links to the correct polling sibling. Minor gap: nothing about the style template list or failure behavior, but the essentials for a correct invocation are present.

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

Parameters3/5

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

Schema coverage is 67%, and the description only restates that content is 'text or a URL' and style is an 'art-style description' — the schema already says this. It adds no constraints on the nested art_style object or the name parameter, so baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource (creates a stylized QR code) plus the two inputs that drive it (text/URL and an art-style description). This is clearly distinguishable from sibling image generators like generate_image or create_meme.

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

Usage Guidelines4/5

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

Gives explicit operational context: it starts a background job and returns a project id to pass to wait_for_image_project, which tells the agent exactly what to do next. It does not name when to prefer this over e.g. generate_image, so no exclusions/alternatives are covered.

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

create_spoken_ad_videoCreate spoken ad videoAInspect

Creates a creator-style spoken ad video from a prepared image and a text script. Use when the image is ready and the dialogue should be generated from text. Starts a background job that costs credits; returns a project id for wait_for_video_project.

NameRequiredDescriptionDefault
modelNoDefaults to kling-3.0 on paid plans and ltx-2.5 on free plans.
assetsYes
scriptYesThe words the actor should speak. Character limits apply after trimming: * kling-3.0: 2304 characters. * ltx-2.5: 1804 characters. * veo3.1: 2500 characters. LTX and Kling dialogue wrappers count toward their model prompt limit.
resolutionNoDefaults to 720p on paid plans and 480p on free plans. Unsupported model/resolution combinations and resolutions unavailable for your plan are rejected.
end_secondsYesVideo duration in seconds. Supported values by model: * kling-3.0: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 seconds. * ltx-2.5: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60 seconds. * veo3.1: 4, 6, 8, 15, 22, 29, 36, 43, 50, 57, 64, 71, 78, 85, 92, 99, 106, 113, 120, 127, 134, 141 seconds. Free plans are limited to 5 seconds unless a credit pack has been purchased.

Output Schema

NameRequiredDescription
idYesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the output video. If video generation fails, credits will be refunded, and this field will be updated to include the refund.

TDQS

A4.3/5.0
Behavior4/5

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

Adds real behavioral context beyond the annotations: it discloses that this starts a background job, that it costs credits, and that it returns a project id meant for wait_for_video_project. It does not cover plan/auth constraints or failure behavior, but the cost and async nature are the highest-value disclosures here.

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

Conciseness5/5

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

Three tight sentences with zero filler; the core action, the usage trigger, and the cost/async warning are all front-loaded in that order.

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

Completeness5/5

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

With an output schema present, return values needn't be described, yet the description still flags the project id and the wait_for_video_project handoff. Combined with annotations covering the safety profile and a rich schema, nothing an agent needs to call this correctly is missing.

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

Parameters3/5

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

Schema description coverage is 80%, so per-parameter meaning (model defaults, script character limits, end_seconds ranges, file path format) is already fully documented in the schema. The description only echoes that an image and script are needed, adding no syntax or constraint detail beyond it. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Creates a creator-style spoken ad video') and names both required inputs (prepared image, text script), which distinguishes it from siblings like create_video_from_image and create_talking_photo that lack the script-driven dialogue element.

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

Usage Guidelines4/5

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

Gives a clear activation condition ('Use when the image is ready and the dialogue should be generated from text') and routes the follow-up to wait_for_video_project. It stops short of naming an explicit alternative or a when-not-to-use case, so it lands just below the top band.

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

create_talking_photoCreate talking photoAInspect

Use only with the user's own likeness or content they are authorized to use. Do not use for impersonation, deception, sexual content, or content involving minors.

Animates a still portrait so it speaks an existing audio recording. Use with a portrait photo and an audio file; text alone is not accepted and this tool does not synthesize speech. Starts a background job that costs credits; returns a project id for wait_for_video_project.

NameRequiredDescriptionDefault
nameNoGive your video a custom name for easy identification.Talking Photo - dateTime
styleNoAttributes used to dictate the style of the output
assetsYesProvide the assets for creating a talking photo
resolutionNoOutput preset. Overrides `max_resolution`. Defaults to 480p in prompted mode; realistic mode uses the mapped plan maximum.
end_secondsYesThe end time of the input audio in seconds. Maximum clip length depends on style.generation_mode: realistic 300s, prompted 60s.
start_secondsYesThe start time of the input audio in seconds. Maximum clip length depends on style.generation_mode: realistic 300s, prompted 60s.

Output Schema

NameRequiredDescription
idYesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the output video. If video generation fails, credits will be refunded, and this field will be updated to include the refund.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark it as non-read-only, open-world, and non-destructive, and the description adds important behavior beyond them: it starts a background job, costs credits, and returns a project id intended for wait_for_video_project. It also discloses authorization and content-safety constraints. There is no contradiction with the annotations.

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

Conciseness5/5

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

The description is compact and front-loads the most important constraint, then states the purpose, input requirements, and async cost/return behavior. Every sentence carries useful information with no filler.

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

Completeness5/5

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

Given the rich input schema, full parameter description coverage, and an output schema, the description is complete enough for an agent to select and invoke the tool correctly. It covers the key functional scope, safety constraints, required asset types, cost/background-job behavior, and next step for retrieving results.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains parameters such as assets, resolution, start_seconds, end_seconds, style, and generation_mode. The description reinforces that a portrait photo and audio file are required and that text alone is not accepted, but it does not add much detail about the nested style, resolution, or timing parameters beyond what the schema provides.

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

Purpose5/5

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

States a specific action and resource: it animates a still portrait so it speaks an existing audio recording. It also distinguishes the tool from text-only generation and speech synthesis by explicitly saying text alone is not accepted and it does not synthesize speech.

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

Usage Guidelines4/5

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

Provides clear usage context and exclusions: use only with the user's own likeness or authorized content, and do not use for impersonation, deception, sexual content, or minors. It also clarifies that a portrait photo and audio file are required, though it does not explicitly route the agent to a named sibling alternative for lip-sync or audio-to-video cases.

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

create_video_from_audioCreate video from audioAInspect

Generates an audio-guided video from a supplied audio track, with an optional starting image and visual prompt. Starts a background job that costs credits; returns a project id for wait_for_video_project.

NameRequiredDescriptionDefault
nameNoGive your video a custom name for easy identification.Audio To Video - dateTime
styleNoAttributes used to dictate the style of the output
assetsYesProvide the audio file and an optional reference image.
resolutionNoOutput video resolution. Defaults to `720p` on paid tiers and `480p` on free tiers.
end_secondsYesEnd time of your clip (seconds). Must be greater than start_seconds.
start_secondsNoStart time of your clip (seconds). Must be ≥ 0.

Output Schema

NameRequiredDescription
idYesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the output video. If video generation fails, credits will be refunded, and this field will be updated to include the refund.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that the call only enqueues a background job, that it consumes credits, and that completion requires polling wait_for_video_project. Those are exactly the behavioral facts an agent needs and are not derivable from readOnlyHint/destructiveHint/openWorldHint.

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

Conciseness5/5

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

Two compact sentences, zero filler. The core purpose is front-loaded and the operational note (cost, background job, polling tool) is appended, which is the right ordering for an agent scanning for what to call next.

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

Completeness4/5

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

An output schema exists so return values need not be explained, and the async lifecycle is covered. Minor omissions remain: no indication of typical job duration or that the 1080p/720p resolution may depend on account tier (only implied via the schema's resolution note).

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (including the nested style.prompt and assets.image_file_path) is already documented in the schema. The description only restates that the audio track is required and the image is optional, adding no format or constraint detail beyond the schema — baseline 3.

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

Purpose5/5

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

States a specific verb and resource ('Generates an audio-guided video from a supplied audio track') plus the two modifiers that distinguish it from the other create_video_* siblings: audio track input, optional starting image and visual prompt. An agent can tell it apart from create_video_from_image/create_video_from_text without opening schemas.

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

Usage Guidelines4/5

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

It names the follow-up tool ('returns a project id for wait_for_video_project'), which is the key routing instruction for an async operation. It does not explicitly say when to prefer this over create_video_from_text or create_video_from_image, so it stops short of full when/when-not guidance.

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

create_video_from_imageCreate video from imageAInspect

Animates a supplied image into a video using motion instructions and available model options. Starts a background job that costs credits; returns a project id for wait_for_video_project.

NameRequiredDescriptionDefault
nameNoGive your video a custom name for easy identification.Image To Video - dateTime
audioNoWhether to include audio in the video. Defaults to `false` if not specified. Audio support varies by model: * **`gemini-omni-1.1`**: Not supported * **`kling-2.6`**: Not supported * **`kling-3.0`**: Toggle-able: audio adds extra credits when enabled * **`ltx-2.5`**: Toggle-able: no additional credits for audio * **`minimax-h3`**: Toggle-able: no additional credits for audio * **`seedance-1.5`**: Toggle-able: audio adds extra credits when enabled * **`seedance-2.0`**: Toggle-able: no additional credits for audio * **`seedance-2.0-fast`**: Toggle-able: no additional credits for audio * **`seedance-2.0-mini`**: Toggle-able: no additional credits for audio * **`seedance-2.5`**: Toggle-able: no additional credits for audio * **`veo3.1`**: Toggle-able: audio adds extra credits when enabled * **`veo3.1-lite`**: Toggle-able: audio adds extra credits when enabled * **`wan-2.2`**: Not supported * **`wan-3.0`**: Toggle-able: no additional credits for audio
modelNoThe video generation model. With `default`, paid tiers use `kling-3.0` and Free uses `ltx-2.5`. Duration, resolution, audio and reference support depend on the selected model. Deprecated model values ending in `-audio` enable `audio`.default
styleNoAttributed used to dictate the style of the output
assetsYesProvide the assets for image-to-video.
resolutionNoControls the output video resolution. Defaults to `720p` on paid tiers and `480p` on free tiers. * **`gemini-omni-1.1`**: Supports 360p, 720p, 1080p, 4k. * **`kling-2.6`**: Supports 720p, 1080p. * **`kling-3.0`**: Supports 720p, 1080p, 4k. * **`ltx-2.5`**: Supports 480p, 720p, 1080p. * **`minimax-h3`**: Supports 480p, 720p, 1080p. * **`seedance-1.5`**: Supports 480p, 720p, 1080p. * **`seedance-2.0`**: Supports 480p, 720p, 1080p, 4k. * **`seedance-2.0-fast`**: Supports 480p, 720p. * **`seedance-2.0-mini`**: Supports 480p, 720p. * **`seedance-2.5`**: Supports 480p, 720p, 1080p. * **`veo3.1`**: Supports 720p, 1080p. * **`veo3.1-lite`**: Supports 720p, 1080p. * **`wan-2.2`**: Supports 480p, 720p, 1080p. * **`wan-3.0`**: Supports 480p, 720p, 1080p.
end_secondsYesThe total duration of the output video in seconds. Supported durations depend on the chosen model: * **`gemini-omni-1.1`**: any integer from 3 to 10 * **`kling-2.6`**: 5, 10 * **`kling-3.0`**: any integer from 3 to 15 * **`ltx-2.5`**: any integer from 1 to 60 * **`minimax-h3`**: any integer from 1 to 30 * **`seedance-1.5`**: any integer from 4 to 12 * **`seedance-2.0`**: any integer from 4 to 15 * **`seedance-2.0-fast`**: any integer from 4 to 15 * **`seedance-2.0-mini`**: any integer from 4 to 15 * **`seedance-2.5`**: any integer from 4 to 30 * **`veo3.1`**: 4, 6, 8, 16, 24, 32, 40, 48, 56 * **`veo3.1-lite`**: 4, 6, 8, 16, 24, 32, 40, 48, 56 * **`wan-2.2`**: 3, 4, 5, 6, 7, 8, 9, 10, 15 * **`wan-3.0`**: 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30

Output Schema

NameRequiredDescription
idYesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the output video. If video generation fails, credits will be refunded, and this field will be updated to include the refund.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare a non-read-only, non-destructive, open-world operation, so the description's added note that it starts a background job and costs credits is real value beyond structured fields. It does not cover failure modes or credit-amount variability across models, which is the remaining gap.

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

Conciseness5/5

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

Two tight sentences with the core action first and the async/cost caveat second. Nothing is redundant with the title or schema, and every clause carries information.

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

Completeness4/5

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

For a 7-parameter, nested, async generation tool with an output schema and rich schema descriptions, the description covers the essential calling contract: image input, async job, credit cost, and the project-id handoff. Only the sibling differentiation for create_animation is missing.

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

Parameters3/5

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

With 100% schema description coverage, the schema already documents every parameter, including the extensive per-model duration/resolution/audio tables. The description adds only the general notion of 'motion instructions and available model options' and does not clarify parameter syntax beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource: animates a supplied image into a video, with motion instructions and model options. This cleanly separates it from create_video_from_text and create_gif_or_short_video, though it doesn't explicitly name the nearby sibling create_animation, which could also involve still-image input.

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

Usage Guidelines3/5

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

The sentence 'returns a project id for wait_for_video_project' gives a useful follow-up cue, but there is no guidance on when to choose this over create_animation or create_video_from_text, nor any prerequisites or exclusions. Usage is implied by the resource rather than stated.

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

create_video_from_textCreate video from textAInspect

Generates a video from a text prompt, with optional supported reference inputs and model settings. To animate an existing starting image, use create_video_from_image. Starts a background job that costs credits; returns a project id for wait_for_video_project.

NameRequiredDescriptionDefault
nameNoGive your video a custom name for easy identification.Text To Video - dateTime
audioNoWhether to include audio in the video. Defaults to `false` if not specified. Audio support varies by model: * **`gemini-omni-1.1`**: Not supported * **`kling-2.6`**: Not supported * **`kling-3.0`**: Toggle-able: audio adds extra credits when enabled * **`ltx-2.5`**: Toggle-able: no additional credits for audio * **`minimax-h3`**: Toggle-able: no additional credits for audio * **`seedance-1.5`**: Toggle-able: audio adds extra credits when enabled * **`seedance-2.0`**: Toggle-able: no additional credits for audio * **`seedance-2.0-fast`**: Toggle-able: no additional credits for audio * **`seedance-2.0-mini`**: Toggle-able: no additional credits for audio * **`seedance-2.5`**: Toggle-able: no additional credits for audio * **`veo3.1`**: Toggle-able: audio adds extra credits when enabled * **`veo3.1-lite`**: Toggle-able: audio adds extra credits when enabled * **`wan-2.2`**: Not supported * **`wan-3.0`**: Toggle-able: no additional credits for audio
modelNoThe video generation model. With `default`, paid tiers use `kling-3.0` and Free uses `ltx-2.5`. Duration, resolution, audio and reference support depend on the selected model. Deprecated model values ending in `-audio` enable `audio`.default
styleYes
referencesNoReference media for video generation. Name references without @ and refer to them as @name in style.prompt. Maximum 10 references total. Supported models and reference media: * **`gemini-omni-1.1`**: Supports images, videos. Up to 10 references. * **`kling-3.0`**: Supports images, videos. * **`minimax-h3`**: Supports images, videos, audio. * **`seedance-2.0`**: Supports images, videos, audio. * **`seedance-2.0-fast`**: Supports images, videos, audio. * **`seedance-2.0-mini`**: Supports images, videos, audio. * **`seedance-2.5`**: Supports images, videos, audio. * **`veo3.1`**: Supports images. Up to 3 references. Requires `end_seconds` of 8. * **`wan-3.0`**: Supports images, videos, audio.
resolutionNoControls the output video resolution. Defaults to `720p` on paid tiers and `480p` on free tiers. * **`gemini-omni-1.1`**: Supports 360p, 720p, 1080p, 4k. * **`kling-2.6`**: Supports 720p, 1080p. * **`kling-3.0`**: Supports 720p, 1080p, 4k. * **`ltx-2.5`**: Supports 480p, 720p, 1080p. * **`minimax-h3`**: Supports 480p, 720p, 1080p. * **`seedance-1.5`**: Supports 480p, 720p, 1080p. * **`seedance-2.0`**: Supports 480p, 720p, 1080p, 4k. * **`seedance-2.0-fast`**: Supports 480p, 720p. * **`seedance-2.0-mini`**: Supports 480p, 720p. * **`seedance-2.5`**: Supports 480p, 720p, 1080p. * **`veo3.1`**: Supports 720p, 1080p. * **`veo3.1-lite`**: Supports 720p, 1080p. * **`wan-2.2`**: Supports 480p, 720p, 1080p. * **`wan-3.0`**: Supports 480p, 720p, 1080p.
end_secondsYesThe total duration of the output video in seconds. Supported durations depend on the chosen model: * **`gemini-omni-1.1`**: any integer from 3 to 10 * **`kling-2.6`**: 5, 10 * **`kling-3.0`**: any integer from 3 to 15 * **`ltx-2.5`**: any integer from 1 to 60 * **`minimax-h3`**: any integer from 1 to 30 * **`seedance-1.5`**: any integer from 4 to 12 * **`seedance-2.0`**: any integer from 4 to 15 * **`seedance-2.0-fast`**: any integer from 4 to 15 * **`seedance-2.0-mini`**: any integer from 4 to 15 * **`seedance-2.5`**: any integer from 4 to 30 * **`veo3.1`**: 4, 6, 8, 16, 24, 32, 40, 48, 56 * **`veo3.1-lite`**: 4, 6, 8, 16, 24, 32, 40, 48, 56 * **`wan-2.2`**: 3, 4, 5, 6, 7, 8, 9, 10, 15 * **`wan-3.0`**: 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30
aspect_ratioNoProvide `aspect_ratio` to set the video’s aspect ratio. Determines the aspect ratio of the output video. * **`gemini-omni-1.1`**: Supports 16:9, 9:16. * **`kling-2.6`**: Supports 9:16, 16:9, 1:1. * **`kling-3.0`**: Supports 9:16, 16:9, 1:1. * **`ltx-2.5`**: Supports 9:16, 16:9, 1:1. * **`minimax-h3`**: Supports 16:9, 9:16, 1:1. * **`seedance-1.5`**: Supports 9:16, 16:9, 1:1. * **`seedance-2.0`**: Supports 9:16, 16:9, 1:1. * **`seedance-2.0-fast`**: Supports 9:16, 16:9, 1:1. * **`seedance-2.0-mini`**: Supports 9:16, 16:9, 1:1. * **`seedance-2.5`**: Supports 9:16, 16:9, 1:1. * **`veo3.1`**: Supports 9:16, 16:9. * **`veo3.1-lite`**: Supports 9:16, 16:9. * **`wan-2.2`**: Supports 9:16, 16:9, 1:1. * **`wan-3.0`**: Supports 16:9, 9:16, 1:1.

Output Schema

NameRequiredDescription
idYesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the output video. If video generation fails, credits will be refunded, and this field will be updated to include the refund.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only declare mutability and open-world traits; the description adds genuinely new behavior: it is asynchronous ('Starts a background job'), it consumes credits, and it returns a project id that must be polled. That is the crucial operational context for a write tool. It stops short of covering failure/refund behavior or cancellation.

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

Conciseness5/5

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

Three short sentences: what it does, when to pick the sibling instead, then the async/cost consequence and next step. Front-loaded and free of repetition of schema content.

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

Completeness5/5

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

For an 8-parameter, nested-schema, enum-heavy tool with an output schema present, the description supplies exactly the non-schema essentials: purpose, sibling routing, asynchronous job semantics, credit cost, and the follow-up tool. Nothing needed to invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 88%, with detailed per-model constraints on audio, model, resolution, end_seconds, aspect_ratio and references. The description only alludes vaguely to 'optional supported reference inputs and model settings' and adds no meaning the schema doesn't already carry, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Generates a video from a text prompt') plus the scope of optional inputs and model settings. It explicitly distinguishes itself from create_video_from_image, so an agent can route between the two without opening either schema.

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

Usage Guidelines4/5

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

Gives a clear selection rule ('To animate an existing starting image, use create_video_from_image') and names the required follow-up (wait_for_video_project). It does not address the many other video-producing siblings (create_video_from_audio, create_animation, edit_video), but the primary branching decision is covered.

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

delete_audio_projectDelete audio projectA
Destructive
Inspect

Deletes the audio project and attempts to delete its completed output. Cannot be undone; confirm with the user first.

NameRequiredDescriptionDefault
idYesUnique ID of the audio project. This value is returned by all of the POST APIs that create an audio.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, so the description must add beyond that — and it does: output artifacts are also removed, the deletion is best-effort ('attempts to'), and the action is irreversible with a confirmation requirement. Minor gap: no mention of behavior when the ID doesn't exist or when output deletion fails.

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

Conciseness5/5

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

Two short sentences, the scope of deletion first, then the irreversibility and confirmation warning. No filler; every clause carries operational weight.

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

Completeness4/5

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

For a single-parameter delete with no output schema, this covers what an agent needs: what gets destroyed (including derived output), that it's permanent, and that user confirmation is required. Only the error/not-found case is unaddressed.

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

Parameters3/5

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

Schema coverage is 100% and the id property already documents its meaning and origin (returned by POST create APIs). The description mentions no parameter details, so it adds nothing beyond the schema — baseline 3 applies.

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

Purpose4/5

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

States a specific verb (deletes) and resource (audio project), and adds that it also removes the completed output, which distinguishes it from a mere record cleanup. The 'audio' qualifier separates it from delete_image_project and delete_video_project, though it doesn't name them.

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

Usage Guidelines4/5

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

Gives an explicit precondition: 'confirm with the user first', which is the key gating instruction for an irreversible action. It does not name alternatives or say when-not to use it, but no real substitute exists among the siblings for removing an audio project.

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

delete_image_projectDelete image projectA
Destructive
Inspect

Deletes the image project and attempts to delete its completed output. Cannot be undone; confirm with the user first.

NameRequiredDescriptionDefault
idYesUnique ID of the image project. This value is returned by all of the POST APIs that create an image.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, but the description adds genuinely new context: the output deletion is only "attempted" (best-effort, may not fully succeed) and the action "cannot be undone." That nuance about partial deletion is not derivable from any structured field.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and its consequence before the safety instruction. No filler.

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

Completeness4/5

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

For a single-parameter destructive tool with no output schema, the essentials are covered: irreversibility, best-effort output cleanup, and user confirmation. Minor gap: nothing about what happens if the project is still processing or whether an error is returned when the output can't be deleted.

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

Parameters3/5

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

Only one parameter, and the schema describes it at 100% coverage including provenance ("returned by all of the POST APIs that create an image"). The description adds nothing about the id, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("Deletes the image project") plus a secondary effect (deleting completed output). The name and description make the media type unambiguous relative to delete_audio_project and delete_video_project, though it never explicitly names them.

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

Usage Guidelines3/5

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

Provides one useful precondition, "confirm with the user first," which is real when-to-use guidance. It gives no alternatives or exclusions, e.g. no routing to get_image_project to verify the target, and no mention of how to find the id beyond the schema.

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

delete_video_projectDelete video projectA
Destructive
Inspect

Deletes the video project and attempts to delete its completed output. Cannot be undone; confirm with the user first.

NameRequiredDescriptionDefault
idYesUnique ID of the video project. This value is returned by all of the POST APIs that create a video.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds genuinely new behavioral context: the deletion is irreversible and the attempt to remove the completed output may be partial ('attempts to'), which warns the agent that leftover artifacts are possible.

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

Conciseness5/5

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

Two short sentences, zero waste. The irreversible consequence is front-loaded ahead of the confirmation instruction, so the most important warning lands first.

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

Completeness4/5

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

There is no output schema, so the description could say what a delete call returns or whether it is idempotent if the project is already gone. Still, for a one-parameter destructive tool it covers the essentials: effect, irreversibility, and user confirmation.

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

Parameters3/5

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

With 100% schema description coverage, the single 'id' parameter is already documented, including its origin from POST creation APIs. The description adds no further parameter semantics, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb ('Deletes') and resource ('the video project'), plus an additional effect on its completed output. This clearly distinguishes it from the sibling delete_audio_project and delete_image_project, which share the same verb but operate on different resources.

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

Usage Guidelines4/5

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

Gives a clear precondition — 'confirm with the user first' — which is exactly the right guidance for a destructive operation. It does not, however, point to alternatives or prerequisites such as verifying the project with get_video_project before deleting, so no exclusions are stated.

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

detect_facesDetect facesAInspect

Starts an asynchronous face-detection task for a supplied image or video and returns its id and charge information. Use before a selected-face swap, then retrieve its status and detected faces with get_face_detection_results. Current API documentation describes detection as free; pricing may change.

NameRequiredDescriptionDefault
assetsYesProvide the assets for face detection
confidence_scoreNoConfidence threshold for filtering detected faces. * Higher values (e.g., 0.9) include only faces detected with high certainty, reducing false positives. * Lower values (e.g., 0.3) include more faces, but may increase the chance of incorrect detections.

Output Schema

NameRequiredDescription
idYesThe id of the task. Use this value in the [get face detection details API](https://docs.magichour.ai/api-reference/files/get-face-detection-details) to get the details of the face detection task.
credits_chargedYesThe credits charged for the task.

TDQS

A4.3/5.0
Behavior4/5

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

The description adds meaningful behavior beyond the annotations: the task is asynchronous, returns an id and charge information, and currently has a free pricing caveat that may change. It does not cover auth or rate limits, but with annotations declaring non-destructive and open-world behavior, this is sufficiently transparent.

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

Conciseness5/5

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

The description is three short sentences, front-loads the core operation, and includes only relevant context about async behavior, next-step retrieval, and pricing. There is no wasted wording.

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

Completeness5/5

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

Given the output schema, full input-schema coverage, and annotations, the description provides the key flow an agent needs: this is an async task, results are retrieved with get_face_detection_results, and charge information is returned. Nothing essential for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents the nested asset path and confidence_score parameters. The description only implies image or video input and does not add parameter-level detail beyond the schema, making the baseline score of 3 appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: it starts an asynchronous face-detection task for an image or video and returns an id plus charge information. It also differentiates the tool from its retrieval sibling, get_face_detection_results, so an agent can identify its role without opening the schema.

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

Usage Guidelines4/5

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

The description gives explicit usage context: use before a selected-face swap, then retrieve results with get_face_detection_results. It does not list cases where detection should be skipped, but it clearly names the relevant workflow and the follow-up tool.

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

edit_face_in_photoEdit face in photoAInspect

Adjusts facial expression, pose and gaze in a supplied photo using numeric controls. Costs 1 credit per edit; output size depends on the subscription tier. Starts a background job; returns a project id for wait_for_image_project.

NameRequiredDescriptionDefault
nameNoGive your image a custom name for easy identification.Face Editor - dateTime
styleYesFace editing parameters
assetsYesProvide the assets for face editor

Output Schema

NameRequiredDescription
idYesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunded and this field will be updated to include the refund.

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true). The description adds genuinely new behavior: 1 credit per edit, output size tied to subscription tier, and asynchronous execution returning a project id. It stops short of failure modes or what happens if no face is detected, which keeps it off a 5.

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

Conciseness5/5

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

Three short sentences, front-loaded with what the tool does, then cost, then the async return contract. Every sentence carries information an agent needs and none repeats structured fields.

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

Completeness4/5

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

Given an output schema exists, the description needn't explain return values, and it correctly limits itself to cost, tier-dependent sizing and the follow-up call. For a nested 3-parameter generation tool this is nearly complete; only the input asset expectations and failure handling are left implicit.

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

Parameters3/5

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

Schema description coverage is 100%, and every style field carries its range, increment and meaning in the schema itself. The description's 'numeric controls' framing adds a little orientation but no semantics beyond what the schema documents, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb ('adjusts'), resource ('facial expression, pose and gaze in a supplied photo') and mechanism ('numeric controls'). This clearly separates it from identity-swapping siblings like swap_face_in_photo or change_clothes_in_photo without needing to open a schema.

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

Usage Guidelines3/5

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

The description gives workflow context ('Starts a background job; returns a project id for wait_for_image_project'), which is useful, but never states when to choose this over edit_image, swap_face_in_photo, or swap_head_in_photo. Usage is implied by the verb rather than guided.

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

edit_imageEdit imageAInspect

Edits one or more supplied images using a text prompt. For prompt-only creation use generate_image. Costs credits; returns a project id for wait_for_image_project. Model eligibility depends on the account plan; the default model is not available on every plan.

NameRequiredDescriptionDefault
nameNoGive your image a custom name for easy identification.Ai Image Editor - dateTime
modelNoThe AI model to use for image editing. Each model has different capabilities and costs. **Models:** - `default` - Uses the server-selected default model, which may change over time. - `flux-2-klein` - from 5 credits/image - Supported resolutions: 640px, 1k, 2k - Available for tiers: free, creator, pro, business - Max additional input images: 5 - `gpt-image-2` - from 50 credits/image - Supported resolutions: 640px, 1k, 2k, 4k - Available for tiers: creator, pro, business - Max additional input images: 9 - `gpt-image-2.5-flare` - from 100 credits/image - Supported resolutions: 640px, 1k, 2k, 4k - Available for tiers: creator, pro, business - Max additional input images: 9 - `krea-2` - from 10 credits/image - Supported resolutions: 640px, 1k - Available for tiers: free, creator, pro, business - Max additional input images: 1 - `nano-banana` - from 50 credits/image - Supported resolutions: 640px, 1k - Available for tiers: creator, pro, business - Max additional input images: 9 - `nano-banana-2` - from 100 credits/image - Supported resolutions: 640px, 1k, 2k, 4k - Available for tiers: creator, pro, business - Max additional input images: 9 - `nano-banana-2-lite` - from 50 credits/image - Supported resolutions: 640px, 1k - Available for tiers: creator, pro, business - Max additional input images: 9 - `nano-banana-2.1` - from 50 credits/image - Supported resolutions: 640px, 1k, 2k, 4k - Available for tiers: creator, pro, business - Max additional input images: 9 - `nano-banana-pro` - from 150 credits/image - Supported resolutions: 1k, 2k, 4k - Available for tiers: creator, pro, business - Max additional input images: 9 - `qwen-edit` - from 10 credits/image - Supported resolutions: 640px, 1k, 2k - Available for tiers: free, creator, pro, business - Max additional input images: 2 - `qwen-image-2.1` - from 10 credits/image - Supported resolutions: 640px, 1k, 2k - Available for tiers: free, creator, pro, business - Max additional input images: 2 - `seedream-v4` - from 40 credits/image - Supported resolutions: 640px, 1k, 2k, 4k - Available for tiers: creator, pro, business - Max additional input images: 9 - `seedream-v4.5` - from 50 credits/image - Supported resolutions: 640px, 1k, 2k, 4k - Available for tiers: creator, pro, business - Max additional input images: 9 - `seedream-v5-pro` - from 75 credits/image - Supported resolutions: 640px, 1k, 2k - Available for tiers: creator, pro, business - Max additional input images: 9
styleYes
assetsYesProvide the assets for image edit
resolutionNoMaximum resolution (longest edge) for the output image. **Options:** - `640px` — up to 640px - `1k` — up to 1024px - `2k` — up to 2048px - `4k` — up to 4096px - `auto` — **Deprecated.** Mapped server-side from your subscription tier to the best matching resolution the model supports **Per-model support:** - `flux-2-klein` - 640px, 1k, 2k - `gpt-image-2` - 640px, 1k, 2k, 4k - `gpt-image-2.5-flare` - 640px, 1k, 2k, 4k - `krea-2` - 640px, 1k - `nano-banana` - 640px, 1k - `nano-banana-2` - 640px, 1k, 2k, 4k - `nano-banana-2-lite` - 640px, 1k - `nano-banana-2.1` - 640px, 1k, 2k, 4k - `nano-banana-pro` - 1k, 2k, 4k - `qwen-edit` - 640px, 1k, 2k - `qwen-image-2.1` - 640px, 1k, 2k - `seedream-v4` - 640px, 1k, 2k, 4k - `seedream-v4.5` - 640px, 1k, 2k, 4k - `seedream-v5-pro` - 640px, 1k, 2k Note: Resolution availability depends on the model and your subscription tier.
image_countNoNumber of images to generate. Maximum varies by model. Defaults to 1 if not specified.
aspect_ratioNoThe aspect ratio of the output image(s). If not specified, defaults to `auto`.

Output Schema

NameRequiredDescription
idYesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunded and this field will be updated to include the refund.

TDQS

A4.2/5.0
Behavior4/5

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

Adds real context beyond annotations: credit consumption, an async-style project id consumed by wait_for_image_project, and plan-gated model availability including the default model. It stops short of stating what happens on failure, whether credits are refunded, or how long the project takes.

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

Conciseness5/5

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

Four short sentences, front-loaded with the core action and the sibling contrast, then cost, then follow-up tool, then plan caveat. No sentence is wasted.

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

Completeness4/5

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

With an output schema, full annotations, and 86% parameter coverage, the description covers the agent-critical gaps: cost, the async handoff tool, and plan-dependent model choice. The missing piece is guidance on how this general editor relates to the specialized edit_* siblings.

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

Parameters3/5

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

Schema coverage is 86% and the model/resolution enums already document tier availability and per-model resolution limits, so the schema carries the parameter burden. The description's note that the default model is not on every plan adds a little meaning but largely restates the schema's tier lists.

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

Purpose5/5

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

States a specific verb and resource ('Edits one or more supplied images using a text prompt') and immediately contrasts with the closest sibling, generate_image, for prompt-only creation. An agent can tell this apart from generate_image without reading either schema.

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

Usage Guidelines4/5

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

Explicitly routes prompt-only work to generate_image and points to wait_for_image_project as the follow-up. It does not say when to prefer this general editor over the many specialized siblings (edit_face_in_photo, change_clothes_in_photo, remove_image_background, upscale_image), leaving that boundary to inference.

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

edit_videoEdit videoAInspect

Edits the appearance or content of a supplied video segment using a text prompt. Use with a source video, the requested changes and the clip end time. Starts a background job that costs credits; returns a project id for wait_for_video_project.

NameRequiredDescriptionDefault
nameNoGive your video a custom name for easy identification.Video Editor - dateTime
modelNoEditing model. Defaults to LTX 2.5 for free tier and `gemini-omni-1.1` for paid. `gemini-omni` is deprecated; use `gemini-omni-1.1` instead.
styleYes
assetsYesProvide the assets for video editing.
resolutionNoOutput resolution. Defaults to `480p` for free tier and `720p` for paid. `gemini-omni-1.1` and deprecated `gemini-omni` support 720p and 1080p; LTX 2.5 supports 480p, 720p, and 1080p.
end_secondsYesEnd time of your clip in seconds. Must be greater than `start_seconds`. Minimum duration depends on model: `gemini-omni-1.1`: 3s, LTX 2.5: 0.5s. Maximum duration depends on model: `gemini-omni-1.1`: 10s, LTX 2.5: 60s (30s at 1080p).
start_secondsNoStart time of your clip (seconds). Must be ≥ 0.

Output Schema

NameRequiredDescription
idYesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the output video. If video generation fails, credits will be refunded, and this field will be updated to include the refund.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds material context beyond that: it is a background job, it costs credits, and it emits a project id consumed by wait_for_video_project. Only failure/retry and rate-limit behavior are left unstated.

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

Conciseness5/5

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

Two sentences, no filler, with the core action stated first and the operational consequences (credits, async job, follow-up tool) second. Every clause carries information an agent needs.

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

Completeness4/5

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

With 7 params including nested objects, an output schema, and full annotations, the description covers the main operational concerns: cost, async lifecycle, and the companion wait tool. The remaining gap is sibling disambiguation against restyle_video and replace_character_in_video, which matters given how many near-identical video tools exist.

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

Parameters3/5

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

Schema description coverage is high (86%), so the schema already documents model tier defaults, resolution constraints, and end_seconds duration limits per model. The description only echoes the required inputs at a high level and adds no meaning about start_seconds, model selection tradeoffs, or the assets path format.

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

Purpose4/5

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

The description names a specific verb and resource ('Edits the appearance or content of a supplied video segment using a text prompt'), which is far more informative than the title 'Edit video'. However, it never distinguishes this tool from close siblings like restyle_video, replace_character_in_video, or translate_video, whose scopes overlap with 'appearance or content'.

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

Usage Guidelines2/5

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

The second sentence ('Use with a source video, the requested changes and the clip end time') restates the required inputs rather than saying when to reach for this tool instead of a sibling. The one genuine routing hint is that it 'returns a project id for wait_for_video_project', which is a useful workflow step but not a use-case exclusion.

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

fetch_audio_downloadFetch Audio DownloadA
Read-only
Inspect

Fetch a completed project's audio as inline MCP audio content for compatible clients. Use the exact signed download URL, including query parameters. Requires HTTPS at the configured Magic Hour media host. Read-only; limited to 8 MiB, or a smaller requested max_bytes. Use the signed URL directly for larger files.

NameRequiredDescriptionDefault
max_bytesNo
download_urlYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare read-only/non-destructive; the description adds real context: the 8 MiB ceiling, the smaller max_bytes option, and the HTTPS-at-media-host prerequisite. It does not describe failure behavior when the host or URL is wrong, so it is not a 5.

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

Conciseness5/5

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

Four short sentences, front-loaded with the capability, then the URL requirement, then the size limit and fallback. Nothing is repeated from the title.

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

Completeness4/5

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

With no output schema, the description does say the return is inline MCP audio content, and it covers the size limit, URL form, and transport requirement. A mention of what happens when the project isn't finished would make it complete.

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

Parameters4/5

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

Schema coverage is 0%, so the description must carry both parameters, and it does: download_url must be the exact signed URL including query parameters, and max_bytes is framed as a size cap against the 8 MiB default. Neither param is left to guesswork.

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

Purpose4/5

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

States a specific verb+resource: fetch a completed project's audio as inline MCP audio content. That distinguishes it cleanly from the image/video download siblings by the resource type, though it never names those siblings explicitly.

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

Usage Guidelines4/5

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

Gives usable conditions: works for compatible clients, needs HTTPS on the configured media host, and explicitly says to use the signed URL directly for files larger than the cap. It stops short of stating when not to use it versus fetch_image_download/fetch_video_download, but those are obvious.

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

fetch_image_downloadFetch Image DownloadA
Read-only
Inspect

Fetch a completed project's image as inline MCP image content for compatible clients. Use the exact signed download URL, including query parameters. Requires HTTPS at the configured Magic Hour media host. Read-only; limited to 8 MiB, or a smaller requested max_bytes. Use the signed URL directly for larger files.

NameRequiredDescriptionDefault
max_bytesNo
download_urlYes

TDQS

A4.8/5.0
Behavior5/5

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

Adds meaningful behavior beyond the annotations: HTTPS media-host requirement, inline-content delivery, an 8 MiB cap or smaller max_bytes, and a fallback for larger files. These constraints materially affect whether the tool can be used successfully.

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

Conciseness5/5

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

Four short sentences, front-loaded with the primary action, then constraints and fallback. No sentence is wasted.

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

Completeness5/5

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

There is no output schema, so the description appropriately explains the return as inline MCP image content. Combined with annotations covering safety and the description covering usage limits and parameters, an agent has everything needed to call it correctly.

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

Parameters5/5

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

With 0% schema description coverage, the description carries the full burden and does so effectively: download_url must be the exact signed URL including query parameters, and max_bytes controls a cap no larger than 8 MiB. Both parameters gain actionable meaning beyond their bare schema types.

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

Purpose5/5

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

States a specific verb and resource ('Fetch a completed project's image') and specifies the mechanism ('inline MCP image content'). This clearly distinguishes it from fetch_video_download and fetch_audio_download without naming them.

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

Usage Guidelines4/5

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

Gives clear operational guidance: use the exact signed URL including query parameters, and use the URL directly for files larger than the inline limit. It does not explicitly name sibling alternatives, but the when-to-use conditions are sufficiently clear.

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

fetch_video_downloadFetch Video DownloadA
Read-only
Inspect

Fetch a completed project's video as an embedded MCP binary resource for compatible clients. Use the exact signed download URL, including query parameters. Requires HTTPS at the configured Magic Hour media host. Read-only; limited to 8 MiB, or a smaller requested max_bytes. Use the signed URL directly for larger files.

NameRequiredDescriptionDefault
max_bytesNo
download_urlYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint=false, so the description's added context is what earns credit: the HTTPS/Magic Hour media host requirement and the 8 MiB ceiling with fallback. It does not mention auth requirements beyond the signed URL or failure modes for expired signatures.

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

Conciseness5/5

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

Four short sentences, front-loaded with what the tool returns, then how to call it, then constraints, then the escape hatch. No sentence is redundant with another.

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

Completeness4/5

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

For a two-parameter fetch tool with no output schema, the description covers return shape (embedded binary resource), host/transport requirement, and size limit. Only the error/expiry behavior is left implicit, which is a small gap.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the burden and does so for both parameters: download_url must be the exact signed URL including query parameters, and max_bytes caps the payload below the 8 MiB default. Minor gap: no guidance on what happens if max_bytes exceeds the actual file size or on URL expiry.

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

Purpose5/5

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

States a specific verb and resource ('Fetch a completed project's video') plus the delivery mechanism ('embedded MCP binary resource for compatible clients'), which distinguishes it from sibling fetchers like fetch_image_download and fetch_audio_download. An agent can tell what it gets back without opening the schema.

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

Usage Guidelines4/5

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

Gives concrete invocation guidance ('Use the exact signed download URL, including query parameters') and an explicit alternative for the oversized case ('Use the signed URL directly for larger files'), plus a client-compatibility caveat. It stops short of naming sibling tools or stating preconditions such as project completion state.

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

generate_headshotGenerate headshotAInspect

Creates a headshot from a supplied photo containing one detectable face, with optional appearance instructions. Costs 50 credits. Starts a background job; returns a project id for wait_for_image_project.

NameRequiredDescriptionDefault
nameNoGive your image a custom name for easy identification.Ai Headshot - dateTime
styleNo
assetsYesProvide the assets for headshot photo

Output Schema

NameRequiredDescription
idYesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunded and this field will be updated to include the refund.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare it is a non-read-only but non-destructive, open-world operation; the description adds material context beyond that: a 50-credit cost, asynchronous execution, and the single-face precondition that causes failures. It does not cover failure modes beyond the face constraint or credit-refund behavior, keeping it below 5.

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

Conciseness5/5

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

Two short sentences, zero filler, with the core action and input constraint front-loaded and cost plus async follow-up in the second sentence.

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

Completeness4/5

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

An output schema exists, so return values needn't be detailed, yet the description still flags the project id and the wait_for_image_project follow-up, plus cost and the async model. Complete enough to invoke correctly; only failure/error handling is unaddressed.

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

Parameters3/5

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

Schema coverage is 67%, so most parameter meaning already comes from structured fields. The description reinforces the one-face requirement on assets and gestures at 'optional appearance instructions' (the style.prompt object) but doesn't name parameters or clarify the default naming behavior, adding only marginal value over the schema.

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

Purpose4/5

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

States a specific verb and resource ('Creates a headshot') plus the key input constraint ('from a supplied photo containing one detectable face') and the optional style customization. That distinguishes it from generic siblings like generate_image or edit_image without naming them, so it stops just short of a 5.

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

Usage Guidelines4/5

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

Gives clear context for use plus a concrete routing instruction: it starts a background job and returns a project id 'for wait_for_image_project', which tells the agent exactly which sibling to chain. It does not say when to prefer a sibling such as swap_head_in_photo or edit_face_in_photo instead, so no explicit exclusions.

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

generate_imageGenerate imageAInspect

Generates one or more images from a text prompt, with model, output size and image count options. Costs credits; returns a project id for wait_for_image_project.

NameRequiredDescriptionDefault
nameNoGive your image a custom name for easy identification.Ai Image - dateTime
modelNoThe AI model to use for image generation. Each model has different capabilities and costs. **Models:** - `default` - Uses the server-selected default model, which may change over time. - `flux-2-klein` - from 5 credits/image - Supported resolutions: 640px, 1k, 2k - Available for tiers: free, creator, pro, business - Image count allowed: 1 - `flux-schnell` - from 5 credits/image - Supported resolutions: 640px, 1k, 2k - Available for tiers: free, creator, pro, business - Image count allowed: 1, 2, 3, 4 - `gpt-image-2` - from 50 credits/image - Supported resolutions: 640px, 1k, 2k, 4k - Available for tiers: creator, pro, business - Image count allowed: 1, 2, 3, 4 - `gpt-image-2.5-flare` - from 100 credits/image - Supported resolutions: 640px, 1k, 2k, 4k - Available for tiers: creator, pro, business - Image count allowed: 1, 2, 3, 4 - `krea-2` - from 10 credits/image - Supported resolutions: 640px, 1k - Available for tiers: free, creator, pro, business - Image count allowed: 1 - `nano-banana` - from 50 credits/image - Supported resolutions: 640px, 1k - Available for tiers: creator, pro, business - Image count allowed: 1, 2, 3, 4 - `nano-banana-2` - from 100 credits/image - Supported resolutions: 640px, 1k, 2k, 4k - Available for tiers: creator, pro, business - Image count allowed: 1, 4, 9, 16 - `nano-banana-2-lite` - from 50 credits/image - Supported resolutions: 640px, 1k - Available for tiers: creator, pro, business - Image count allowed: 1, 2, 3, 4 - `nano-banana-2.1` - from 50 credits/image - Supported resolutions: 640px, 1k, 2k, 4k - Available for tiers: creator, pro, business - Image count allowed: 1, 4, 9, 16 - `nano-banana-pro` - from 150 credits/image - Supported resolutions: 1k, 2k, 4k - Available for tiers: creator, pro, business - Image count allowed: 1, 4, 9, 16 - `qwen-image-2.1` - from 10 credits/image - Supported resolutions: 640px, 1k, 2k - Available for tiers: free, creator, pro, business - Image count allowed: 1, 2, 3, 4 - `seedream-v4` - from 40 credits/image - Supported resolutions: 640px, 1k, 2k, 4k - Available for tiers: creator, pro, business - Image count allowed: 1, 2, 3, 4 - `seedream-v5-pro` - from 75 credits/image - Supported resolutions: 640px, 1k, 2k - Available for tiers: creator, pro, business - Image count allowed: 1, 2, 3, 4 - `z-image-turbo` - from 5 credits/image - Supported resolutions: 640px, 1k, 2k - Available for tiers: free, creator, pro, business - Image count allowed: 1, 2, 3, 4 **Deprecated Enum Values:** - `seedream` - Use `seedream-v4` instead.
styleYesThe art style to use for image generation.
resolutionNoMaximum resolution (longest edge) for the output image. **Options:** - `640px` — up to 640px - `1k` — up to 1024px - `2k` — up to 2048px - `4k` — up to 4096px - `auto` — **Deprecated.** Mapped server-side from your subscription tier to the best matching resolution the model supports **Per-model support:** - `flux-2-klein` - 640px, 1k, 2k - `flux-schnell` - 640px, 1k, 2k - `gpt-image-2` - 640px, 1k, 2k, 4k - `gpt-image-2.5-flare` - 640px, 1k, 2k, 4k - `krea-2` - 640px, 1k - `nano-banana` - 640px, 1k - `nano-banana-2` - 640px, 1k, 2k, 4k - `nano-banana-2-lite` - 640px, 1k - `nano-banana-2.1` - 640px, 1k, 2k, 4k - `nano-banana-pro` - 1k, 2k, 4k - `qwen-image-2.1` - 640px, 1k, 2k - `seedream-v4` - 640px, 1k, 2k, 4k - `seedream-v5-pro` - 640px, 1k, 2k - `z-image-turbo` - 640px, 1k, 2k Note: Resolution availability depends on the model and your subscription tier.auto
image_countYesNumber of images to generate. Maximum varies by model.
aspect_ratioNoThe aspect ratio of the output image(s). If not specified, defaults to `1:1` (square).

Output Schema

NameRequiredDescription
idYesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunded and this field will be updated to include the refund.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is covered, and the description adds two genuinely new facts: the operation consumes credits and it is asynchronous, returning a project id to poll. It stops short of covering tier requirements or failure behavior, but that is a modest gap.

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

Conciseness5/5

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

Two sentences, both front-loaded with the highest-value facts (what it makes, what it costs, what it returns) and no redundant restatement of the schema.

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

Completeness5/5

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

With an output schema present and a fully documented parameter schema, the description only needs to cover cost and the async handoff, both of which it does. Nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

Schema coverage is 100%, with the model, resolution, and style enums exhaustively documented in the schema itself. The description only summarizes ("model, output size and image count options") without adding syntax or trade-off detail beyond the schema, which is the expected baseline.

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

Purpose5/5

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

The description opens with a specific verb+resource ("Generates one or more images from a text prompt") and the phrase "from a text prompt" implicitly separates it from sibling editing tools like edit_image and upscale_image. It also names the downstream sibling wait_for_image_project, so an agent understands the tool's position in the pipeline.

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

Usage Guidelines3/5

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

It supplies useful context ("Costs credits", follow-up via wait_for_image_project) but gives no explicit when-not-to-use guidance or mentions of overlapping siblings such as generate_headshot or create_meme. Usage is implied rather than stated.

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

generate_musicGenerate musicAInspect

Generates music from a description, with optional custom lyrics or instrumental-only output. Costs 1 credit per requested second; returns a project id for wait_for_audio_project.

NameRequiredDescriptionDefault
nameNoGive your audio a custom name for easy identification.AI Music Generator
styleYes
durationYesRequested track duration in seconds, from 15 to 300. Determines credits charged.

Output Schema

NameRequiredDescription
idYesUnique ID of the audio. Use it with the [Get audio Project API](https://docs.magichour.ai/api-reference/audio-projects/get-audio-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the audio. We charge credits right when the request is made. If an error occurred while generating the audio, credits will be refunded and this field will be updated to include the refund.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare the mutation/safety profile (readOnlyHint=false, destructiveHint=false), and the description adds genuinely new context: a credit cost of 1 per requested second and that the call is asynchronous, returning a project id. It does not say whether a failed generation still burns credits or how long generation typically takes, which keeps it from a 5.

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

Conciseness5/5

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

Two compact sentences that front-load the purpose, then cost and the next-step tool. Every clause carries information an agent would otherwise have to guess.

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

Completeness5/5

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

An output schema exists, so return shape need not be spelled out; the description covers capability, cost, output mode, and the natural next call. For a 3-parameter nested tool with annotations, nothing essential to correct invocation is missing.

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

Parameters4/5

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

Schema coverage is 67% and the description adds real meaning beyond the fields: it clarifies the credit-per-second relationship to duration and reinforces the lyrics/instrumental interaction. It leaves the nested `style` object's structure and duration bounds to the schema, so it complements rather than substitutes.

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

Purpose5/5

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

States a specific verb and resource ('Generates music') plus the input modality ('from a description') and the two output modes (custom lyrics vs instrumental-only). This clearly separates it from the many image/video siblings and aligns with the audio-project siblings like wait_for_audio_project and get_audio_project.

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

Usage Guidelines4/5

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

The description explicitly routes the agent to the follow-up tool ('returns a project id for wait_for_audio_project'), which is genuine when-to-use-next guidance. It stops short of naming when to prefer a sibling (e.g., create_video_from_audio for reuse of existing audio), so it falls shy of full alternatives coverage.

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

get_account_infoGet account infoA
Read-only
Inspect

Returns credit balance and subscription details for the connected account. Use to inspect account information before generation. Read-only; this is not a request-specific cost quote or model-eligibility check.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
idYesUnique ID of the account that owns the API key.
tierYesSubscription tier in effect for the account. `free` if there is no active subscription, including while a subscription is `past_due`.
emailYesEmail address of the account.
creditsYesCredits currently available to spend. Includes subscription credits and any purchased credit packs.
subscriptionYesDetails of the account's subscription plan. `null` if the account has no subscription, e.g. a free account, an account that only purchased credit packs, or an account on usage-based API pricing. Reflects the plan currently configured on the subscription. If a plan change is scheduled, `tier` stays on the current plan until the next payment succeeds, so `tier` and `name` can briefly disagree.

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the description's "Read-only" restates rather than adds. It contributes the useful negative scoping but says nothing about auth requirements, failure modes, or whether the balance is live versus cached.

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

Conciseness5/5

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

Two tight sentences: the first front-loads what is returned, the second carries usage and exclusions. No filler, no repetition of the title.

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

Completeness4/5

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

With an output schema present, the description needn't enumerate return fields, and with zero parameters the call surface is trivially complete. A brief note on authentication state or staleness of the balance would make it fully self-contained.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The text correctly implies a no-argument call scoped implicitly to the connected account.

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

Purpose5/5

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

States a specific verb (returns) with the exact resources: credit balance and subscription details for the connected account. It also explicitly delimits scope by ruling out a cost quote or model-eligibility check, which separates it from any lookalike accounting tool.

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

Usage Guidelines4/5

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

Gives a concrete when-to-use ("inspect account information before generation") and explicit when-not ("not a request-specific cost quote or model-eligibility check"). It stops short of naming the sibling tool an agent should call instead for a cost quote, leaving that inference to the caller.

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

get_audio_projectGet audio projectA
Read-only
Inspect

Returns an audio project's status and, once complete, its download URLs. Use to check progress with the id from an audio create tool. Read-only.

NameRequiredDescriptionDefault
idYesUnique ID of the audio project. This value is returned by all of the POST APIs that create an audio.

Output Schema

NameRequiredDescription
idYesUnique ID of the audio. Use it with the [Get audio Project API](https://docs.magichour.ai/api-reference/audio-projects/get-audio-details) to fetch status and downloads.
nameYesThe name of the audio.
typeYesThe type of the audio project. Possible values are AUDIO_TRANSLATOR, VOICE_GENERATOR, VOICE_CHANGER, VOICE_CLONER, VIDEO_TO_AUDIO, MUSIC_GENERATOR, SOUND_EFFECT_GENERATOR
errorYesIn the case of an error, this object will contain the error encountered during video render
statusYesThe status of the audio. - `draft` - the project was created but has not been submitted for rendering - `queued` - the job is waiting for an available server - `rendering` - the job is being processed; the `audio.started` webhook event fires when rendering begins - `complete` - the job finished successfully; fires `audio.completed` - `error` - the job failed during processing; fires `audio.errored` - `canceled` - the job was manually canceled (for example from the Magic Hour web app) **Note:** `rendering`, `complete`, and `error` have matching webhook events; `canceled` does not - a canceled job emits no webhook event, so poll this endpoint to detect cancellation.
enabledYesWhether this resource is active. If false, it is deleted.
downloadsYes
created_atYes
credits_chargedYesThe amount of credits deducted from your account to generate the audio. We charge credits right when the request is made. If an error occurred while generating the audio, credits will be refunded and this field will be updated to include the refund.

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish that the tool is read-only, non-destructive, and closed-world. The description adds useful behavioral detail by explaining that the response includes status and, only once complete, download URLs, though it repeats the read-only fact and omits error or polling behavior.

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

Conciseness5/5

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

Two short sentences with no wasted words. The return behavior is front-loaded, followed by the usage context and safety reminder.

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

Completeness4/5

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

With one fully described parameter, rich annotations, and an output schema, the description is largely complete for an agent to invoke the tool correctly. The main missing context is how this tool relates to the closely named wait_for_audio_project and fetch_audio_download siblings.

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

Parameters3/5

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

Schema coverage is 100%, and the schema already explains that id is the unique audio project ID returned by audio-creating POST APIs. The description's mention of the id from an audio create tool adds only slight emphasis beyond the schema, so the baseline 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb and resource: it returns an audio project's status and, once complete, download URLs. It is clear what the tool does, but it does not explicitly distinguish itself from the sibling wait_for_audio_project or fetch_audio_download tools.

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

Usage Guidelines4/5

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

It says to use the tool to check progress with the id from an audio create tool, giving clear usage context. However, it does not state when to prefer wait_for_audio_project or fetch_audio_download instead, so alternatives remain implicit.

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

get_face_detection_resultsGet face detection resultsA
Read-only
Inspect

Returns a face-detection job's status and detected faces. Use with the id from detect_faces to inspect progress and choose face mappings before a selected-face swap. Read-only; faces may populate while processing.

NameRequiredDescriptionDefault
idYesThe id of the task. This value is returned by the [face detection API](https://docs.magichour.ai/api-reference/files/face-detection#response-id).

Output Schema

NameRequiredDescription
idYesThe id of the task. This value is returned by the [face detection API](https://docs.magichour.ai/api-reference/files/face-detection#response-id).
facesYesThe faces detected in the image or video. The list is populated as faces are detected.
statusYesThe status of the detection.
credits_chargedYesThe credits charged for the task.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered upstream. The description still adds genuine behavioral context beyond them: results are eventually consistent ("faces may populate while processing"), which implies an agent may need to re-poll rather than trust an empty first response.

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

Conciseness5/5

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

Two sentences, zero filler. The resource and return shape come first, the workflow and consistency caveat second, which is the right ordering for an agent scanning for relevance.

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

Completeness5/5

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

Single-parameter read tool with an output schema, so return-value detail is correctly omitted, and annotations cover safety. The description covers the remaining essentials: where the id comes from, what the call is for, and that results may still be populating.

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

Parameters4/5

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

Schema coverage is 100% with an example and a linked doc, so the schema already does the heavy lifting and the baseline is 3. The description earns one above baseline by tying the id's provenance to the sibling tool detect_faces, making the origin of the value actionable rather than just documented.

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

Purpose5/5

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

"Returns a face-detection job's status and detected faces" gives a specific verb (returns) plus two concrete resources (job status, detected faces). It is clearly distinguishable from the sibling detect_faces (which starts the job) and from the swap tools that consume its output.

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

Usage Guidelines4/5

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

It states the prerequisite chain explicitly: use the id from detect_faces, and use it to inspect progress before a selected-face swap. That is strong when-to-use guidance tied to a real workflow. It stops short of naming any when-not-to-use case or an alternative tool for the same result, so not a 5.

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

get_image_projectGet image projectA
Read-only
Inspect

Returns an image project's status and, once complete, its download URLs. Use to check progress with the id from an image create tool. Read-only.

NameRequiredDescriptionDefault
idYesUnique ID of the image project. This value is returned by all of the POST APIs that create an image.

Output Schema

NameRequiredDescription
idYesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.
nameYesThe name of the image.
typeYesThe type of the image project. Possible values are FACE_EDITOR, AI_IMAGE_EDITOR, GENERATIVE_FILL, AI_SELFIE, AI_HEADSHOT, AI_INFLUENCER, AI_IMAGE, AI_MEME, CLOTHES_CHANGER, BACKGROUND_REMOVER, FACE_SWAP, IMAGE_UPSCALER, IMAGE_ENHANCER, AI_GIF, QR_CODE, PHOTO_EDITOR, PHOTO_COLORIZER, IMAGE_COLOR_GRADER, HEAD_SWAP, BODY_SWAP, STORYBOARD, IMAGE_EXPANDER
errorYesIn the case of an error, this object will contain the error encountered during video render
statusYesThe status of the image. - `draft` - the project was created but has not been submitted for rendering - `queued` - the job is waiting for an available server - `rendering` - the job is being processed; the `image.started` webhook event fires when rendering begins - `complete` - the job finished successfully; fires `image.completed` - `error` - the job failed during processing; fires `image.errored` - `canceled` - the job was manually canceled (for example from the Magic Hour web app) **Note:** `rendering`, `complete`, and `error` have matching webhook events; `canceled` does not - a canceled job emits no webhook event, so poll this endpoint to detect cancellation.
enabledYesWhether this resource is active. If false, it is deleted.
downloadsYes
created_atYes
image_countYesNumber of images generated
credits_chargedYesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunded and this field will be updated to include the refund.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile, yet the description still adds useful behavior: the response carries status, and download URLs only appear once the project completes. That conditional-result detail is not obvious from the schema. The closing 'Read-only' merely repeats readOnlyHint.

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

Conciseness4/5

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

Three short sentences, front-loaded with the return behavior and followed by the usage cue. The trailing 'Read-only.' is wasted space given the annotations.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and the description still flags the conditional availability of download URLs. What's missing is only the polling-versus-blocking guidance relative to its wait_ sibling.

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

Parameters3/5

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

Schema coverage is 100% and there is a single required id, so the schema already documents it fully. The phrase 'id from an image create tool' restates what the schema property description already says about POST APIs returning the value.

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

Purpose4/5

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

States a specific verb and resource ('Returns an image project's status') and the payload once complete. It implicitly distinguishes the polling tool from the blocking sibling, but never names wait_for_image_project or fetch_image_download, so an agent must infer the split.

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

Usage Guidelines4/5

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

'Use to check progress with the id from an image create tool' gives a clear context of use and identifies where the id comes from. It stops short of the key routing decision — when to poll this versus blocking on wait_for_image_project.

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

get_upload_urlsGet upload URLsAInspect

Creates presigned upload URL and file-path pairs for local media. Use when a generation needs a file the user has locally: upload raw bytes to the returned upload_url, then pass its file_path to the create tool. Does not upload file bytes or start a generation.

NameRequiredDescriptionDefault
itemsYesThe list of assets to upload. The response array will match the order of items in the request body.

Output Schema

NameRequiredDescription
itemsYesThe list of upload URLs and file paths for the assets. The response array will match the order of items in the request body. Refer to the [Input Files Guide](https://docs.magichour.ai/integration/inputs-and-outputs) for more details.

TDQS

A4.5/5.0
Behavior4/5

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

With readOnlyHint=false and destructiveHint=false the annotations only say 'write, but safe'; the description adds the crucial nuance that no bytes are uploaded and no generation starts here, so the agent understands the actual side effect is only URL generation. It doesn't mention presigned-URL expiry or upload constraints (size, content-type enforcement), which would be the remaining behavioral gaps.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action, followed by the when-to-use and the exclusion. Every sentence carries distinct information; no repetition of the title or schema.

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

Completeness5/5

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

An output schema exists, so return values need not be spelled out, and the description still names the two key outputs (upload_url, file_path). Combined with the workflow guidance and the non-mutation clarification, an agent has everything needed to call this correctly.

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

Parameters3/5

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

Schema coverage is 100%, with per-field descriptions, enum values, extension pattern and the ordering guarantee all documented in the schema. The description adds only the general notion of 'file-path pairs' and does not extend parameter meaning, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Creates presigned upload URL and file-path pairs for local media') and immediately distinguishes the tool from the many create_* siblings by naming what it does not do ('Does not upload file bytes or start a generation'). An agent can place it correctly without opening the schema.

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

Usage Guidelines5/5

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

Gives an explicit trigger ('Use when a generation needs a file the user has locally'), concrete next steps (upload raw bytes to upload_url, then pass file_path to the create tool), and a negative condition ruling out the most likely misuse. Nothing is left to inference about when to pick this over create_video_from_image or similar.

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

get_video_projectGet video projectA
Read-only
Inspect

Returns a video project's status and, once complete, its download URLs. Use to check progress with the id from a video create tool. Read-only.

NameRequiredDescriptionDefault
idYesUnique ID of the video project. This value is returned by all of the POST APIs that create a video.

Output Schema

NameRequiredDescription
idYesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.
fpsYesFrame rate of the video. If the status is not 'complete', the frame rate is an estimate and will be adjusted when the video completes.
nameYesThe name of the video.
typeYesThe type of the video project. Possible values are ANIMATION, AUTO_SUBTITLE, VIDEO_TO_VIDEO, FACE_SWAP, TEXT_TO_VIDEO, IMAGE_TO_VIDEO, LIP_SYNC, TALKING_PHOTO, AVATAR, VIDEO_UPSCALER, VIDEO_EDITOR, CHARACTER_REPLACE, VIDEO_COLORIZER, VIDEO_WATERMARK_REMOVER, VIDEO_COLOR_GRADER, VIDEO_TRANSLATOR, MUSIC_VIDEO, EXTEND, AUDIO_TO_VIDEO, VIDEO_EXPANDER, UGC_AD
errorYesIn the case of an error, this object will contain the error encountered during video render
widthYesThe width of the final output video. A value of -1 indicates the width can be ignored.
heightYesThe height of the final output video. A value of -1 indicates the height can be ignored.
statusYesThe status of the video. - `draft` - the project was created but has not been submitted for rendering - `queued` - the job is waiting for an available server - `rendering` - the job is being processed; the `video.started` webhook event fires when rendering begins - `complete` - the job finished successfully; fires `video.completed` - `error` - the job failed during processing; fires `video.errored` - `canceled` - the job was manually canceled (for example from the Magic Hour web app) **Note:** `rendering`, `complete`, and `error` have matching webhook events; `canceled` does not - a canceled job emits no webhook event, so poll this endpoint to detect cancellation.
enabledYesWhether this resource is active. If false, it is deleted.
downloadsYes
created_atYes
end_secondsYesEnd time of your clip (seconds). Must be greater than start_seconds.
start_secondsYesStart time of your clip (seconds). Must be ≥ 0.
credits_chargedYesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the output video. If video generation fails, credits will be refunded, and this field will be updated to include the refund.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the trailing "Read-only." sentence is pure restatement of structured data and earns no credit. What the description does add — that the response carries status first and download URLs only once the job completes — is genuinely useful behavioral context not expressed by annotations, but it's thin for a status/polling tool.

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

Conciseness5/5

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

Three short sentences, front-loaded with what is returned, then how to use it, then a safety tag. Nothing is padded and no sentence is wasted, aside from the redundant read-only line.

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

Completeness4/5

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

This is a simple one-parameter read with full schema coverage and an output schema, so return values need not be explained. The description covers the essentials, though for a status-checking tool it could note whether the call blocks or returns immediately, which is what would separate it from wait_for_video_project.

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

Parameters3/5

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

Schema description coverage is 100% and the single `id` property is already well documented, including its provenance from the create APIs. The description repeats that provenance ("the id from a video create tool") but adds no format, validation, or failure-mode detail beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource ("Returns a video project's status ... download URLs") and clarifies the staged nature of the response. It implicitly positions itself against fetch_video_download (URLs vs. the actual download) and wait_for_video_project, but never names those siblings, so a caller still has to infer the split.

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

Usage Guidelines4/5

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

"Use to check progress with the id from a video create tool" gives clear context and even names the source of the required id. It stops short of the 5 bar because it offers no exclusions — notably it never says when to use wait_for_video_project instead of repeatedly polling this tool.

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

get_workflow_guideChoose a media workflowA
Read-only
Inspect

Returns required inputs, ordered steps, example requests and review criteria for eight supported Magic Hour workflows. Use when planning a generation, not to run one. Requires authentication but does not check account eligibility or spend credits.

NameRequiredDescriptionDefault
workflowYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/closed-world/non-destructive, and the description adds genuinely new context the agent could not infer: authentication is required, and no eligibility check or credit spend occurs. It does not cover caching or whether the guide content varies over time, but the safety and side-effect profile is fully clear.

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

Conciseness5/5

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

Two sentences, zero filler. The return payload is front-loaded and the usage rule follows immediately, so an agent gets the gist in the first clause.

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

Completeness4/5

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

An output schema exists, so return structure need not be re-explained; the description only summarizes it. Authentication and non-billing behavior are covered. The one remaining gap is how the returned guide connects back to the sibling execution tools, which the reader must infer.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the load for the single `workflow` param. It says 'eight supported Magic Hour workflows', which matches the 8-value enum, but never explains what each choice selects or how to choose between, e.g., 'image-to-video' and 'video-generator' — the enum values themselves are the only guidance.

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

Purpose5/5

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

Names a specific verb and resource (returns inputs/steps/examples/criteria for eight Magic Hour workflows) and states the scope explicitly as a planning artifact. The clause 'Use when planning a generation, not to run one' cleanly separates it from every create_*/generate_* sibling in the list.

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

Usage Guidelines4/5

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

'Use when planning a generation, not to run one' gives an explicit when and when-not with the exclusion stated directly. It stops short of naming the concrete siblings to call afterwards (e.g. create_video_from_text), so the routing is implied rather than spelled out.

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

list_saved_itemsList saved itemsA
Read-only
Inspect

Lists the account's active saved characters, references, voice recordings, moodboards and brand kits, newest first. Reusable paths are in each item's assets[].file_path; temporary signed URLs support preview/download. Read-only; pass next_cursor as cursor for the next page.

NameRequiredDescriptionDefault
typeNoOnly return saved items of this type.
limitNoMaximum number of saved items to return. Defaults to 20.
cursorNoOpaque pagination cursor from the previous response's next_cursor.

Output Schema

NameRequiredDescription
itemsYes
next_cursorYesCursor for the next page, or null when there are no more saved items.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint=false, so the description does not need to restate safety; instead it adds real behavioral value the annotations lack — the newest-first ordering and the distinction between durable 'assets[].file_path' and 'temporary signed URLs' for preview/download, which signals URL expiry. It stops short of saying how long URLs live.

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

Conciseness5/5

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

Three sentences, all load-bearing: scope and ordering first, output-shape guidance second, pagination/safety last. No filler or restatement of the title.

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

Completeness5/5

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

An output schema exists, so return values needn't be spelled out, yet the description still notes where reusable file paths live and that signed URLs are temporary — exactly the practical details an agent would otherwise get wrong. Nothing needed to call this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns a bump by documenting the cross-field relationship between the response's next_cursor and the cursor parameter, which the schema alone does not convey.

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

Purpose5/5

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

States a specific verb (lists) and resource (saved items), enumerates the five item types returned, and specifies ordering ('newest first'). No sibling tool lists saved items, so this is unambiguous against the surrounding generate/edit/fetch tools.

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

Usage Guidelines4/5

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

Gives clear operating context: read-only, newest-first, and explicitly how to paginate ('pass next_cursor as cursor for the next page'). It does not name an alternative tool or state when-not to use this one, which keeps it below a 5.

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

pingPingA
Read-only
Inspect

Checks that the Magic Hour server is reachable. Use for connectivity troubleshooting; it does not validate API credentials or account access. Makes no media or project changes.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and "makes no media or project changes" reinforces that without contradicting it. The genuinely additive content is the negative scoping: it does not verify credentials or account access, which no annotation conveys.

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

Conciseness5/5

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

Two sentences, both front-loaded with the core purpose first and the caveat second. Nothing padded and nothing repeated beyond the single reinforcing clause about no changes.

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

Completeness5/5

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

For a zero-parameter health check with full annotation coverage and an output schema, the description covers purpose, the when-to-use case, and the key limitation (no auth validation). Nothing an agent needs in order to call it correctly is missing.

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

Parameters4/5

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

Zero parameters, so the schema has nothing to document and the baseline of 4 applies. The description correctly says nothing about parameters, which is appropriate.

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

Purpose5/5

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

States a specific verb and resource: checks server reachability. Against a sibling list that is entirely media-generation/management tools, this is unmistakably a health-check utility, so no sibling confusion is possible even without naming alternatives.

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

Usage Guidelines4/5

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

"Use for connectivity troubleshooting" gives a clear when-to-use condition, and "does not validate API credentials or account access" rules out a plausible misuse. It stops short of naming the correct alternative (e.g., get_account_info) for credential checks, leaving the agent to infer it.

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

place_person_in_scenePlace person in sceneAInspect

Use only with the user's own likeness or content they are authorized to use. Do not use for impersonation, deception, sexual content, or content involving minors.

Places a person from one supplied photo into a supplied scene image. Cost depends on resolution (from 50 credits at 640px); returns a project id for wait_for_image_project.

NameRequiredDescriptionDefault
nameNoGive your image a custom name for easy identification.Body Swap - dateTime
assetsYesPerson image and scene image for body swap
resolutionYesOutput resolution. Determines credits charged for the run.

Output Schema

NameRequiredDescription
idYesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunded and this field will be updated to include the refund.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds real context beyond that: credit cost scales with resolution (from 50 credits at 640px) and the call returns a project id rather than a finished image, implying asynchronous work. It does not mention rate limits or failure modes, which keeps it from a 5.

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

Conciseness4/5

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

Two tight paragraphs with no waste. The compliance restrictions are front-loaded before the operational description, which is defensible for a tool with likeness/consent risk, though an agent scanning for 'what does this do' has to read past them first.

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

Completeness4/5

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

For a nested-parameter, enum-bearing tool with an output schema, the description covers what it does, the cost implication of one required parameter, the async handoff to wait_for_image_project, and the policy constraints. The only soft spot is the absence of any hint about what the resulting image contains or how assets are uploaded, though the schema's file-path docs handle the latter.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description earns an extra point by explaining that resolution drives credit cost, which is decision-relevant meaning the schema does not convey. It says nothing extra about the assets or name parameters, but the schema already documents them thoroughly.

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

Purpose4/5

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

The description gives a specific verb and resource: it places a person from one supplied photo into a supplied scene image, and notes the project id it returns. That is concrete enough to separate it from edit_face_in_photo or change_clothes_in_photo by implication, though it never names those siblings directly.

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

Usage Guidelines4/5

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

It gives clear context for use (own likeness or authorized content) plus explicit exclusions for impersonation, deception, sexual content, and minors. It also names the follow-up step, wait_for_image_project, which tells the agent how to continue. It stops short of pointing at alternative tools for other editing needs, so it is not a full when-to-use/when-not guide.

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

remove_image_backgroundRemove image backgroundAInspect

Removes an image's background, optionally replacing it with another supplied image. Costs 5 credits. Starts a background job; returns a project id for wait_for_image_project.

NameRequiredDescriptionDefault
nameNoGive your image a custom name for easy identification.Background Remover - dateTime
assetsYesProvide the assets for background removal

Output Schema

NameRequiredDescription
idYesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunded and this field will be updated to include the refund.

TDQS

A4/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), and the description adds genuinely new behavioral facts: a 5-credit cost and asynchronous job semantics with a follow-up wait tool. It omits what happens on failure or whether credits are refunded, but the value-add over annotations is substantial.

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

Conciseness5/5

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

Three short sentences in a tight purpose → cost → next-step order. Every sentence carries an independent, actionable fact with no filler.

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

Completeness4/5

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

With an output schema present, the description needn't explain return values, and cost plus the async handoff to wait_for_image_project are the facts an agent most needs. The description is nearly sufficient, though it could note the required image_file_path vs optional background image relationship more explicitly.

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

Parameters3/5

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

Schema description coverage is 100%, so both nested parameters are already fully documented including accepted URL/file_path formats. The phrase "optionally replacing it with another supplied image" usefully signals that background_image_file_path is not required, but adds nothing about format or sizing beyond what the schema states.

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

Purpose4/5

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

The description names a specific verb and resource ("Removes an image's background") and adds the optional replacement behavior, which is more than a restatement of the title. It does not explicitly distinguish itself from adjacent siblings such as edit_image or generate_image, so an agent must infer the boundary.

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

Usage Guidelines4/5

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

It gives clear operational context — this kicks off an asynchronous job and hands back a project id for wait_for_image_project — which effectively tells the agent the correct follow-up call. It stops short of stating when to prefer this over generic image-editing siblings or any preconditions on input assets.

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

replace_character_in_videoReplace character in videoAInspect

Use only with the user's own likeness or content they are authorized to use. Do not use for impersonation, deception, sexual content, or content involving minors.

Replaces a subject in a video with a character from a reference image, or transfers the video's motion onto that character. Starts a background job that costs credits; returns a project id for wait_for_video_project.

NameRequiredDescriptionDefault
nameNoGive your video a custom name for easy identification.Character Replace - dateTime
modelNoModel to use. Defaults to `wan-animate`. * **`wan-animate`**: 480p, 720p. Supports `points` subject selection. * **`kling-3.0`**: 720p, 1080p. Clips of 3–10 seconds in `replace` mode or 3–30 seconds in `animate` mode. Picks the main person automatically, so `points` are rejected. * **`minimax-h3`**: 480p, 720p, 1080p. Clips of 1–60 seconds in `replace` mode or 1–60 seconds in `animate` mode. Subject `points` are `replace`-only; `animate` with `selection_mode` `point` returns 422, and with `auto` or no `selection_mode` the points are ignored.wan-animate
styleNoOptional style controls for replace vs animate mode and subject selection.
assetsYesSource video and reference character image for the job.
resolutionNoOutput video resolution. Must be supported by `model`. Defaults to the lowest resolution available on your plan for that model.
end_secondsYesEnd time of your clip (seconds). Must be greater than start_seconds.
start_secondsNoStart time of your clip (seconds). Must be ≥ 0.

Output Schema

NameRequiredDescription
idYesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the output video. If video generation fails, credits will be refunded, and this field will be updated to include the refund.

TDQS

A3.9/5.0
Behavior4/5

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

Beyond the annotations (readOnly=false, destructive=false, openWorld=true), the description discloses that this is an asynchronous background job, that it consumes credits, and that it returns a project id to poll with wait_for_video_project. That is meaningful context the annotations do not carry; it only lacks detail on failure/validation behavior.

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

Conciseness4/5

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

Three sentences, no filler, and the mechanical workflow statement is tight. The safety policy leads the description, which slightly defers the core 'what it does' statement rather than front-loading it, but nothing is wasted.

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

Completeness4/5

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

For a 7-param, nested-schema, credit-consuming async tool with an output schema available, the description covers purpose, safety constraints, and the follow-up polling step. Model/point compatibility rules live in the schema and need not be repeated; only alternative-tool routing is absent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 7 parameters, including the model-specific replace/animate constraints. The description adds no parameter-level detail beyond what the schema provides, so the baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb+resource ('Replaces a subject in a video with a character from a reference image') and describes the alternative 'animate' mode (motion transfer). It does not name the closest siblings (swap_face_in_video, place_person_in_scene, restyle_video), so the agent must infer differentiation from the mode wording alone.

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

Usage Guidelines4/5

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

Gives explicit when-not guidance via the policy sentence (only own likeness/authorized content; no impersonation, deception, sexual content, minors) and tells the caller what happens next (background job, credits, project id for wait_for_video_project). It stops short of routing to competing tools when the user wants just a face swap or a static scene placement.

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

restyle_videoRestyle videoAInspect

Restyles an existing video clip with an art-style preset or a custom prompt. Supports v1/v2 presets, not v3. Starts a background job that costs credits; returns a project id for wait_for_video_project.

NameRequiredDescriptionDefault
nameNoGive your video a custom name for easy identification.Video To Video - dateTime
styleYes
assetsYesProvide the assets for video-to-video. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used
end_secondsYesEnd time of your clip (seconds). Must be greater than start_seconds.
start_secondsYesStart time of your clip (seconds). Must be ≥ 0.
fps_resolutionNoDetermines whether the resulting video will have the same frame per second as the original video, or half. * `FULL` - the result video will have the same FPS as the input video * `HALF` - the result video will have half the FPS as the input videoHALF

Output Schema

NameRequiredDescription
idYesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the output video. If video generation fails, credits will be refunded, and this field will be updated to include the refund.

TDQS

A4.2/5.0
Behavior4/5

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

The description adds important behavioral context beyond annotations: it discloses that the operation is a background job, costs credits, and returns a project id to be used with wait_for_video_project. It also notes the v1/v2-only preset limitation. With annotations already covering safety (readOnlyHint=false, destructiveHint=false), this extra context is valuable, though it doesn't detail credit amounts or consequences for the original video.

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

Conciseness5/5

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

The description is two sentences and front-loads the core action, followed by key constraints (version support, background job, cost, follow-up tool). Every sentence contributes useful information without redundancy.

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

Completeness4/5

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

Given the tool's complexity (nested objects, six parameters) and the presence of an output schema, the description covers the essential context: async behavior, cost, and the follow-up wait tool. It doesn't explain the fps_resolution trade-off or asset sourcing, but those are well documented in the schema, so the description is nearly complete for an agent to call it correctly.

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

Parameters3/5

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

Schema description coverage is high (83%), so the schema already documents most parameters in detail. The description mentions art-style presets and custom prompts, which loosely maps to the style object, but adds no further syntax or constraints beyond what the schema provides. A baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: 'Restyles an existing video clip with an art-style preset or a custom prompt.' It names the supported preset versions and explicitly excludes v3, which helps an agent distinguish this from sibling tools like edit_video or translate_video.

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

Usage Guidelines4/5

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

It clearly states that the tool starts a background job, costs credits, and returns a project id for wait_for_video_project, giving the agent essential follow-up guidance. However, it doesn't explicitly compare against alternative sibling tools (e.g., edit_video or upscale_video) or state when-not to use this tool beyond the v3 limitation.

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

swap_face_in_photoSwap face in photoAInspect

Use only with the user's own likeness or content they are authorized to use. Do not use for impersonation, deception, sexual content, or content involving minors.

Swaps faces in a supplied photo using a source face image or selected face mappings. Costs 10 credits; output size depends on subscription. Returns a project id for wait_for_image_project.

NameRequiredDescriptionDefault
nameNoGive your image a custom name for easy identification.Face Swap - dateTime
assetsYesProvide the assets for face swap photo

Output Schema

NameRequiredDescription
idYesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunded and this field will be updated to include the refund.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only declare readOnly=false, destructive=false, openWorld=true; the description adds materially useful behavior: a fixed 10-credit cost, subscription-dependent output size, and a returned project id intended for wait_for_image_project (async job pattern). Not covered: whether credits are refunded on failure, expected job duration, or the output artifact format — though the output schema covers the return shape.

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

Conciseness4/5

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

Two short paragraphs with zero filler: policy guardrails, then mechanics (cost, output, next step). The core action is stated only after the policy preamble, which slightly buries the purpose, but the total length is well matched to a tool of this complexity.

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

Completeness5/5

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

Given an output schema and 100% schema coverage, the description supplies what the structured fields cannot: cost, subscription-dependent sizing, the async follow-up call, and legal/ethical restrictions. An agent can select, invoke, and continue the workflow from this description plus the schema.

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

Parameters3/5

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

Schema description coverage is 100% and the nested assets object (face_swap_mode enum, face_mappings, source_file_path, target_file_path) is fully documented inline, so the baseline is 3. The description's phrase 'source face image or selected face mappings' echoes the schema's two modes without adding format or constraint detail.

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

Purpose4/5

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

States a specific verb and resource ('Swaps faces in a supplied photo') plus the two input modes (source face image or face mappings), which is far more than the title alone. It does not distinguish itself from close siblings such as edit_face_in_photo, swap_head_in_photo, or swap_face_in_video, so an agent must infer the photo-vs-video split from the name.

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

Usage Guidelines3/5

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

The first paragraph sets hard usage constraints (own likeness only; no impersonation, deception, sexual content, or minors), and the second names the follow-up tool (wait_for_image_project), effectively documenting the workflow. However, it gives no guidance on when to pick this over alternatives like edit_face_in_photo or swap_head_in_photo, and the exclusions are content policy rather than tool-selection guidance.

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

swap_face_in_videoSwap face in videoAInspect

Use only with the user's own likeness or content they are authorized to use. Do not use for impersonation, deception, sexual content, or content involving minors.

Swaps faces in an existing video: all faces with a reference image, or selected faces using detect_faces results. Starts a background job that costs credits; returns a project id for wait_for_video_project.

NameRequiredDescriptionDefault
nameNoGive your video a custom name for easy identification.Face Swap - dateTime
styleNoStyle of the face swap video.
assetsYesProvide the assets for face swap. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used
end_secondsYesEnd time of your clip (seconds). Must be greater than start_seconds.
start_secondsYesStart time of your clip (seconds). Must be ≥ 0.

Output Schema

NameRequiredDescription
idYesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the output video. If video generation fails, credits will be refunded, and this field will be updated to include the refund.

TDQS

A4.1/5.0
Behavior4/5

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

Adds substantial context beyond the annotations: it is asynchronous (starts a background job), it consumes credits, and it returns a project id that must be fed to wait_for_video_project. It does not disclose limits such as max clip length or failure/refund behavior, which matters for a paid async job.

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

Conciseness4/5

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

Two compact paragraphs with no filler: policy first, then mechanics. The policy block is slightly long relative to the operation description, but every sentence carries information the agent must respect.

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

Completeness4/5

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

Output schema exists so return values need no explanation, and the description still correctly flags chaining to wait_for_video_project. The only gap is operational detail (job duration, credit amount, clip-length limits) for a paid, open-world operation.

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

Parameters3/5

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

Schema description coverage is 100%, so the description only needs to add value. It does reinforce the mutual exclusivity of the two face_swap_mode branches, but that is already stated in the schema, so this lands at the baseline.

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

Purpose5/5

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

States a specific verb+resource (swaps faces in an existing video) and enumerates the two operating modes (all faces via reference image, or selected faces via detect_faces results). The 'video' scope cleanly separates it from swap_face_in_photo and swap_head_in_photo in the sibling list.

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

Usage Guidelines4/5

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

Explicitly states when NOT to use it (impersonation, deception, sexual content, minors) and the authorization requirement, and points to detect_faces results as the prerequisite for the individual-faces path. It does not say when to prefer swap_face_in_photo or replace_character_in_video, so routing between siblings is only partially covered.

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

swap_head_in_photoSwap head in photoAInspect

Use only with the user's own likeness or content they are authorized to use. Do not use for impersonation, deception, sexual content, or content involving minors.

Swaps a head from a supplied image onto a supplied body image. Costs 10 credits; returns a project id for wait_for_image_project.

NameRequiredDescriptionDefault
nameNoGive your image a custom name for easy identification.Head Swap - dateTime
assetsYesProvide the body and head images for head swap
max_resolutionNoConstrains the larger dimension (height or width) of the output. Omit to use the maximum allowed for your plan (capped at 2048px). Values above your plan maximum are clamped down to your plan's maximum.

Output Schema

NameRequiredDescription
idYesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunded and this field will be updated to include the refund.

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations (which only confirm it is a non-destructive write with open-world scope), the description discloses two critical traits: the operation costs 10 credits and it is asynchronous, returning a project id that must be polled via wait_for_image_project. The content-policy constraints add further behavioral context the annotations do not carry.

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

Conciseness5/5

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

Two tight paragraphs: the safety/authorization constraint is front-loaded, then the mechanics (swap, cost, return value). Every sentence carries information; no filler.

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

Completeness5/5

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

For an async, credit-consuming image mutation tool, the description covers purpose, cost, required follow-up workflow, and usage restrictions, while the input schema fully documents parameters and an output schema exists to describe return values. Nothing an agent needs in order to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, and each of the three parameters (name, nested assets paths, max_resolution) is fully documented in the schema with examples and format rules. The description adds no parameter-level meaning, which is acceptable given the schema does the heavy lifting, so baseline 3 applies.

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

Purpose4/5

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

The description gives a concrete verb and resource: it 'swaps a head from a supplied image onto a supplied body image', which is clearly more specific than the title. It does not explicitly distinguish itself from close siblings such as swap_face_in_photo, edit_face_in_photo, or place_person_in_scene, so an agent must infer the head-vs-face distinction.

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

Usage Guidelines4/5

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

It states clear when-not conditions ('Do not use for impersonation, deception, sexual content, or content involving minors') and a required authorization precondition regarding likeness rights. It also directs the agent to the follow-up call ('returns a project id for wait_for_image_project'), though it never names a sibling alternative for face-level edits.

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

translate_videoTranslate videoAInspect

Translates speech in a supplied video segment into a supported target language. Starts a background job that costs credits; returns a project id for wait_for_video_project.

NameRequiredDescriptionDefault
nameNoGive your video a custom name for easy identification.Video Translator - dateTime
assetsYesSource video for the translation job.
resolutionNoOutput video resolution. Defaults to 480p. 720p and 1080p require a paid plan.
end_secondsYesEnd time of your clip (seconds). Must be greater than start_seconds. The clip must be 1-30 seconds long.
start_secondsNoStart time of your clip (seconds). Must be ≥ 0.
target_languageYesLanguage to translate the video's speech into.

Output Schema

NameRequiredDescription
idYesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the output video. If video generation fails, credits will be refunded, and this field will be updated to include the refund.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only declare it is non-read-only, non-destructive and open-world. The description adds genuinely new behavioral facts: it launches a background job, consumes credits, and hands back a project id consumed by wait_for_video_project. That is real transparency beyond structured fields, though cost amount and failure behavior are unstated.

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

Conciseness5/5

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

Two short sentences, front-loaded with what the tool does, followed by the workflow and cost implication. Nothing is redundant with the title or name.

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

Completeness4/5

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

For an async job-creating tool with an output schema and rich parameter docs, the description covers the essentials an agent needs: it is a background job, it costs credits, and it requires a wait step. It omits any note on failure modes or what happens if the segment is outside limits, but the core is complete.

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

Parameters3/5

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

Schema description coverage is 100%, so file paths, resolution tiers, clip length limits and the language enum are already fully documented in the schema. The description adds no parameter-level detail beyond what is there, which is the baseline 3 case.

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

Purpose4/5

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

States a specific verb and resource ('Translates speech in a supplied video segment') and scopes it to a segment rather than a whole file. It does not explicitly differentiate itself from the similar sibling add_subtitles_to_video, which keeps it from a 5.

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

Usage Guidelines3/5

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

The description names the follow-up step ('returns a project id for wait_for_video_project') and flags that it costs credits, which implies an async workflow. It never says when to choose this over alternatives such as add_subtitles_to_video or edit_video, so usage is only implied.

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

upscale_imageUpscale imageAInspect

Upscales a supplied image 2x or 4x. Cost depends on scale and mode (25-200 credits); returns a project id for wait_for_image_project.

NameRequiredDescriptionDefault
nameNoGive your image a custom name for easy identification.Image Upscaler - dateTime
styleNoStyle settings for the upscale. Use `mode` (`"preserve"`, `"balanced"`, or `"creative"`). Defaults to `"balanced"`.
assetsYesProvide the assets for upscaling
scale_factorYesHow much to scale the image. Must be either 2 or 4. Note: 4x upscale is only available on Creator, Pro, or Business tier.

Output Schema

NameRequiredDescription
idYesUnique ID of the image. Use it with the [Get image Project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the image. We charge credits right when the request is made. If an error occurred while generating the image(s), credits will be refunded and this field will be updated to include the refund.

TDQS

A4/5.0
Behavior4/5

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

Annotations already flag it as a non-read-only, open-world operation, and the description adds genuinely new context: credit cost range (25-200) tied to scale and mode, and that it returns a project id rather than a finished file. It does not mention the tier restriction on 4x or failure modes, keeping it below a 5.

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

Conciseness5/5

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

Two sentences, no filler, with the core operation front-loaded and the async handoff stated after it. Every clause carries information an agent needs.

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

Completeness4/5

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

Output schema exists and the rich input schema covers parameters, so the description's job is mostly routing and cost signaling, both of which it does. It stops short of noting the Creator+ tier requirement for 4x or typical processing time, small residual gaps for a paid async job.

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

Parameters3/5

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

Schema description coverage is 100%, so mode enums, the 2/4 scale constraint, the 4096px input limit, and credit multipliers are all already documented in the schema. The description only restates the 2x/4x option without adding syntax or defaults, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb (upscales), resource (image), and constraint (2x or 4x), which cleanly separates it from upscale_video and the many create_* siblings. An agent can identify the operation without opening the schema.

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

Usage Guidelines3/5

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

The description implies the use case (make an image larger/higher resolution) and points to wait_for_image_project for the async follow-up, but never states when to prefer this over edit_image or generate_image, nor any preconditions for input assets. Usage is inferable but not spelled out.

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

upscale_videoUpscale videoAInspect

Upscales a supplied video segment to a selected output resolution while preserving its aspect ratio. Starts a background job that costs credits; returns a project id for wait_for_video_project.

NameRequiredDescriptionDefault
nameNoGive your video a custom name for easy identification.Video Upscaler - dateTime
assetsYesSource video for the upscale job.
resolutionYesOutput resolution. `720p` and `1080p` set the output's short side, `2k` and `4k` its long side; the aspect ratio is kept. Requires a paid plan.
end_secondsYesEnd time of your clip (seconds). Must be greater than start_seconds.
start_secondsNoStart time of your clip (seconds). Must be ≥ 0.

Output Schema

NameRequiredDescription
idYesUnique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads.
credits_chargedYesThe amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the output video. If video generation fails, credits will be refunded, and this field will be updated to include the refund.

TDQS

A4.2/5.0
Behavior4/5

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

Goes beyond the annotations by disclosing that the operation is asynchronous and consumes credits — neither is inferable from readOnlyHint=false/destructiveHint=false/openWorldHint=true. It stops short of stating whether credits are refunded on failure or any rate limits.

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

Conciseness5/5

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

Two sentences, zero waste: the what/how comes first, then the async-plus-cost-plus-next-step facts. Nothing is repeated from the schema or annotations verbatim.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the description covers the async lifecycle, cost, and the follow-up tool. The remaining gap is failure/timeout behavior and credit refund policy, which matter for a paid async job.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains resolution enum semantics (short side vs long side), clip start/end, and video_file_path formats. The description adds only a light restatement ('selected output resolution', 'segment') — baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb ('Upscales') and resource ('a supplied video segment') plus the key outcome (preserving aspect ratio, selected output resolution). The 'video' resource cleanly separates it from the sibling upscale_image without needing to name it.

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

Usage Guidelines4/5

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

Explicitly says it starts a background job and returns a project id 'for wait_for_video_project', which routes the agent to the correct follow-up tool. It does not discuss when to prefer upscale_video over restyle_video or edit_video, so the alternative-selection guidance is only partial.

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

wait_for_audio_projectWait for Audio ProjectA
Read-only
Inspect

Polls an audio project until it completes, errors, is canceled or times out. Use with the id returned by an audio create tool. Read-only; returns the project and download URLs, with optional inline audio previews sharing an 8 MiB total limit. After a timeout, resume with the same id rather than creating another generation. Use signed download URLs exactly as returned.

NameRequiredDescriptionDefault
idYes
timeout_secondsNo
max_inline_downloadsNo
poll_interval_secondsNo
max_bytes_per_downloadNo
include_inline_downloadsNo

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the readOnlyHint/non-destructive annotations by disclosing polling semantics, timeout/resume behavior, the 8 MiB aggregate inline-download cap, and the requirement to use signed URLs verbatim (a real auth/side-effect signal). This is exactly the kind of operational context annotations cannot express.

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

Conciseness4/5

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

Four tight sentences, front-loaded with the core behavior and terminal states, followed by usage, return content, and constraints in a sensible order. Dense but no filler; only the signed-URL sentence sits slightly apart from the main flow.

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

Completeness4/5

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

With no output schema and 0% param coverage, the description does most of the work: it names return values (project and download URLs), the inline preview option and its size limit, and the timeout/resume contract. Missing only explanations of the polling interval and inline-download count knobs.

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

Parameters3/5

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

Schema description coverage is 0% across 6 params, so the description must compensate. It clarifies the `id` source, implies `timeout_seconds`, and covers the inline-download byte cap, but leaves `poll_interval_seconds`, `max_inline_downloads`, and `include_inline_downloads` unexplained.

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

Purpose4/5

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

States a specific verb and resource ('Polls an audio project') plus the terminal conditions (completes, errors, canceled, times out). It implicitly distinguishes itself from the single-shot get_audio_project sibling via the polling behavior, but never names that sibling directly.

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

Usage Guidelines4/5

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

Gives clear preconditions ('Use with the id returned by an audio create tool') and an explicit recovery rule ('After a timeout, resume with the same id rather than creating another generation'). It does not explicitly say when to prefer get_audio_project over this polling tool, leaving one gap.

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

wait_for_image_projectWait for Image ProjectA
Read-only
Inspect

Polls an image project until it completes, errors, is canceled or times out. Use with the id returned by an image create tool. Read-only; returns the project and download URLs, with optional inline image previews sharing an 8 MiB total limit. After a timeout, resume with the same id rather than creating another generation. Use signed download URLs exactly as returned.

NameRequiredDescriptionDefault
idYes
timeout_secondsNo
max_inline_downloadsNo
poll_interval_secondsNo
max_bytes_per_downloadNo
include_inline_downloadsNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/non-destructive/non-open-world, yet the description still adds genuine value: it says what is returned (project plus download URLs), that inline previews are optional and share an 8 MiB total budget, and that signed URLs must be used verbatim. Minor tension: the schema's per-download default is also 8 MiB, so the 'total limit' phrasing could be misread, but this is not an annotation contradiction.

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

Conciseness5/5

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

Four tight sentences, each doing distinct work: purpose/terminal states, required id provenance, return payload plus limits, and timeout recovery. Front-loaded with the polling behavior before operational caveats — no filler.

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

Completeness3/5

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

No output schema exists, and the description does cover the return payload and timeout behavior, which is the most important gap. However, for a six-parameter polling tool the tuning parameters (interval, caps, per-byte limit) remain entirely undocumented anywhere, leaving an agent to guess at polling cost and preview sizes.

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

Parameters2/5

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

Schema description coverage is 0% across six parameters, so the description carries the full burden. It only indirectly touches two of them (timeout via the resume advice, inline downloads via the preview/8 MiB sentence) and never explains timeout_seconds units, poll_interval_seconds, max_inline_downloads, or max_bytes_per_download semantics.

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

Purpose4/5

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

States a specific verb and resource: 'Polls an image project until it completes, errors, is canceled or times out', with the terminal states enumerated. It does not explicitly distinguish itself from the sibling get_image_project or wait_for_video_project/wait_for_audio_project, so sibling differentiation is left to inference.

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

Usage Guidelines4/5

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

Gives concrete context: 'Use with the id returned by an image create tool' and a strong recovery rule — after a timeout, resume with the same id rather than creating another generation. It does not name get_image_project as the non-blocking alternative, so the when-not-to-use case is only implied.

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

wait_for_video_projectWait for Video ProjectA
Read-only
Inspect

Polls a video project until it completes, errors, is canceled or times out. Use with the id returned by a video create tool. Read-only; returns download URLs when complete. After a timeout, resume with the same id rather than creating another generation. Use signed download URLs exactly as returned. Does not inline video content.

NameRequiredDescriptionDefault
idYes
timeout_secondsNo
max_inline_downloadsNo
poll_interval_secondsNo
include_inline_downloadsNo

TDQS

A3.8/5.0
Behavior3/5

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

Goes beyond the readOnlyHint annotations with real behavioral context: long-polling, terminal outcomes, download URLs on completion, timeout resumption, and signed-URL handling. However, 'Does not inline video content' sits in tension with the include_inline_downloads and max_inline_downloads parameters, leaving the agent unsure whether inlining is possible; that ambiguity needs resolving.

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

Conciseness5/5

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

Six short sentences, front-loaded with the core behavior, then the usage constraint, then the caveat. Every sentence carries a distinct rule and none restates the title.

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

Completeness3/5

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

Adequate for a polling tool with no output schema: the agent knows when it returns and roughly what it returns. But with 0% schema coverage across five parameters and an unresolved inlining contradiction, key call-shaping details are still missing.

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

Parameters2/5

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

Schema description coverage is 0% and there are five parameters, yet the description explains only id (implicitly, as the id from a create tool). timeout_seconds, poll_interval_seconds, include_inline_downloads and max_inline_downloads get no mention at all, so an agent must guess at their meaning and defaults.

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

Purpose5/5

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

States a specific verb and resource (polls a video project) plus the full terminal-state set (completes, errors, canceled, times out), which cleanly separates it from the single-shot get_video_project and from the fetch_video_download siblings.

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

Usage Guidelines4/5

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

Ties the tool to the id returned by a video create tool and gives an explicit recovery rule: after a timeout, resume with the same id rather than creating another generation. It also warns to use signed URLs as returned. It stops short of saying when to poll here versus calling get_video_project for a single status check.

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

Tool Schema Changelog

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

  1. 82 tool updates
    • Removedaccount_retrieve
    • Addedadd_subtitles_to_video
    • Removedai_clothes_changer_create_image
    • Removedai_face_editor_edit_image
    • Removedai_gif_generator_create_image
    • Removedai_headshot_generator_create_image
    • Removedai_image_editor_create_image
    • Removedai_image_generator_create_image
    • Removedai_image_upscaler_create_image
    • Removedai_meme_generator_create_image
    • Removedai_music_generator_create_audio
    • Removedai_qr_code_generator_create_image
    • Removedai_talking_photo_create_talking_photo
    • Removedai_ugc_ad_create_video
    • Removedai_video_editor_create_video
    • Removedai_video_translator_create_video
    • Removedai_video_upscaler_create_video
    • Removedanimation_create_video
    • Removedaudio_projects_delete
    • Removedaudio_projects_retrieve_details
    • Removedaudio_to_video_create_video
    • Removedauto_subtitle_generator_create_video
    • Removedbody_swap_create_image
    • Addedchange_clothes_in_photo
    • Removedcharacter_replace_create_video
    • Addedcolorize_photo
    • Addedcreate_animation
    • Addedcreate_gif_or_short_video
    • Addedcreate_lip_sync_video
    • Addedcreate_meme
    • Addedcreate_qr_code
    • Addedcreate_spoken_ad_video
    • Addedcreate_talking_photo
    • Addedcreate_video_from_audio
    • Addedcreate_video_from_image
    • Addedcreate_video_from_text
    • Addeddelete_audio_project
    • Addeddelete_image_project
    • Addeddelete_video_project
    • Addeddetect_faces
    • Addededit_face_in_photo
    • Addededit_image
    • Addededit_video
    • Removedface_detection_detect_faces
    • Removedface_detection_retrieve_details
    • Removedface_swap_create_video
    • Removedface_swap_photo_create_image
    • Addedgenerate_headshot
    • Addedgenerate_image
    • Addedgenerate_music
    • Addedget_account_info
    • Addedget_audio_project
    • Addedget_face_detection_results
    • Addedget_image_project
    • Addedget_upload_urls
    • Addedget_video_project
    • Addedget_workflow_guide
    • Removedhead_swap_create_image
    • Removedimage_background_remover_create_image
    • Removedimage_projects_delete
    • Removedimage_projects_retrieve_details
    • Removedimage_to_video_create_video
    • Removedlip_sync_create_video
    • Addedlist_saved_items
    • Removedphoto_colorizer_create_image
    • Addedplace_person_in_scene
    • Addedremove_image_background
    • Addedreplace_character_in_video
    • Addedrestyle_video
    • Removedsaved_items_list
    • Addedswap_face_in_photo
    • Addedswap_face_in_video
    • Addedswap_head_in_photo
    • Removedtext_to_video_create_video
    • Addedtranslate_video
    • Addedupscale_image
    • Addedupscale_video
    • Removedvideo_assets_generate_presigned_url
    • Removedvideo_projects_delete
    • Removedvideo_projects_retrieve_details
    • Removedvideo_to_video_create_video
    • Removedworkflow_guide_retrieve
  2. 2 tool updates
    • Changedai_ugc_ad_create_video1 field changed
      • changedInput schema / properties / script / description
        Previous value: -"The words the actor should speak. Character limits apply after trimming:\n* kling-3.0: 2500 characters.\n* ltx-2.5: 1804 characters.\n* veo3.1: 2500 characters.\nLTX's dialogue wrapper counts toward its model prompt limit."New value: +"The words the actor should speak. Character limits apply after trimming:\n* kling-3.0: 2304 characters.\n* ltx-2.5: 1804 characters.\n* veo3.1: 2500 characters.\nLTX and Kling dialogue wrappers count toward their model prompt limit."
    • Changedvideo_assets_generate_presigned_url1 field changed
      • changedInput schema / properties / items / items / properties / extension / description
        Previous value: -"The extension of the file to upload. Do not include the dot (.) before the extension. Possible extensions are mp4,m4v,mov,webm,mp3,wav,aac,flac,webm,weba,m4a,opus,ogg,oga,aiff,amr,png,jpg,jpeg,jfif,heic,heif,webp,avif,jp2,tiff,tif,bmp,gif,webp,webm"New value: +"The extension of the file to upload. Do not include the dot (.) before the extension. Possible extensions are mp4,m4v,mov,webm,mp3,wav,aac,flac,webm,weba,m4a,opus,ogg,oga,aiff,amr,png,jpg,jpeg,jpe,jfif,heic,heif,webp,avif,jp2,tiff,tif,bmp,gif,webp,webm"
  3. 25 tool updates
    • Changedai_clothes_changer_create_image2 fields changed
      • changedInput schema / properties / assets / properties / garment_file_path / description
        Previous value: -"The image of the outfit. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"The image of the outfit. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
      • changedInput schema / properties / assets / properties / person_file_path / description
        Previous value: -"The image with the person. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"The image with the person. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedai_face_editor_edit_image1 field changed
      • changedInput schema / properties / assets / properties / image_file_path / description
        Previous value: -"This is the image whose face will be edited. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"This is the image whose face will be edited. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedai_headshot_generator_create_image1 field changed
      • changedInput schema / properties / assets / properties / image_file_path / description
        Previous value: -"The image used to generate the headshot. This image must contain one detectable face. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"The image used to generate the headshot. This image must contain one detectable face. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedai_image_editor_create_image1 field changed
      • changedInput schema / properties / assets / properties / image_file_paths / description
        Previous value: -"The image(s) used in the edit, maximum of 10 images. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"The image(s) used in the edit, maximum of 10 images. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedai_image_upscaler_create_image1 field changed
      • changedInput schema / properties / assets / properties / image_file_path / description
        Previous value: -"The image to upscale. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n. The maximum input image size is 4096x4096px."New value: +"The image to upscale. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n. The maximum input image size is 4096x4096px."
    • Changedai_talking_photo_create_talking_photo4 fields changed
      • changedInput schema / properties / assets / properties / audio_file_path / description
        Previous value: -"The audio file to sync with the image. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"The audio file to sync with the image. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
      • changedInput schema / properties / assets / properties / image_file_path / description
        Previous value: -"The source image to animate. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"The source image to animate. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
      • changedInput schema / properties / end_seconds / description
        Previous value: -"The end time of the input audio in seconds. Maximum clip length depends on style.generation_mode: realistic 300s, prompted 45s."New value: +"The end time of the input audio in seconds. Maximum clip length depends on style.generation_mode: realistic 300s, prompted 60s."
      • changedInput schema / properties / start_seconds / description
        Previous value: -"The start time of the input audio in seconds. Maximum clip length depends on style.generation_mode: realistic 300s, prompted 45s."New value: +"The start time of the input audio in seconds. Maximum clip length depends on style.generation_mode: realistic 300s, prompted 60s."
    • Changedai_ugc_ad_create_video1 field changed
      • changedInput schema / properties / assets / properties / image_file_path / description
        Previous value: -"Prepared image to animate. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"Prepared image to animate. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedai_video_editor_create_video3 fields changed
      • changedInput schema / properties / assets / properties / video_file_path / description
        Previous value: -"The video to edit. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"The video to edit. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
      • changedInput schema / properties / end_seconds / description
        Previous value: -"End time of your clip in seconds. Must be greater than `start_seconds`. Minimum duration depends on model: `gemini-omni-1.1`: 3s, LTX 2.5: 0.5s. Maximum duration depends on model: `gemini-omni-1.1`: 10s, LTX 2.5: 20s."New value: +"End time of your clip in seconds. Must be greater than `start_seconds`. Minimum duration depends on model: `gemini-omni-1.1`: 3s, LTX 2.5: 0.5s. Maximum duration depends on model: `gemini-omni-1.1`: 10s, LTX 2.5: 60s (30s at 1080p)."
      • changedInput schema / properties / model / enum
        Previous value: -[
        -  "gemini-omni-1.1",
        -  "gemini-omni",
        -  "ltx-2.5",
        -  "ltx-2.3"
        -]New value: +[
        +  "gemini-omni-1.1",
        +  "ltx-2.5",
        +  "gemini-omni",
        +  "ltx-2.3"
        +]
    • Changedai_video_translator_create_video1 field changed
      • changedInput schema / properties / assets / properties / video_file_path / description
        Previous value: -"Source video containing the speech to translate. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"Source video containing the speech to translate. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedai_video_upscaler_create_video1 field changed
      • changedInput schema / properties / assets / properties / video_file_path / description
        Previous value: -"Video to upscale. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"Video to upscale. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedanimation_create_video2 fields changed
      • changedInput schema / properties / assets / properties / audio_file_path / description
        Previous value: -"The path of the input audio. This field is required if `audio_source` is `file`. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"The path of the input audio. This field is required if `audio_source` is `file`. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
      • changedInput schema / properties / assets / properties / image_file_path / description
        Previous value: -"An initial image to use a the first frame of the video. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"An initial image to use a the first frame of the video. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedaudio_to_video_create_video2 fields changed
      • changedInput schema / properties / assets / properties / audio_file_path / description
        Previous value: -"The path of the audio file. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"The path of the audio file. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
      • changedInput schema / properties / assets / properties / image_file_path / description
        Previous value: -"Reference image for the initial frame of the video. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"Reference image for the initial frame of the video. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedauto_subtitle_generator_create_video1 field changed
      • changedInput schema / properties / assets / properties / video_file_path / description
        Previous value: -"This is the video used to add subtitles. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"This is the video used to add subtitles. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedbody_swap_create_image2 fields changed
      • changedInput schema / properties / assets / properties / person_file_path / description
        Previous value: -"Image of the person to place into the scene. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"Image of the person to place into the scene. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
      • changedInput schema / properties / assets / properties / scene_file_path / description
        Previous value: -"Original scene image (background). This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"Original scene image (background). This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedcharacter_replace_create_video7 fields changed
      • changedInput schema / properties / assets / properties / image_file_path / description
        Previous value: -"Reference character image used as the replacement or animation target. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"Reference character image used as the replacement or animation target. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
      • changedInput schema / properties / assets / properties / video_file_path / description
        Previous value: -"Source video containing the subject to replace or animate. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"Source video containing the subject to replace or animate. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
      • changedInput schema / properties / model / description
        Previous value: -"Model to use. Defaults to `wan-animate`.\n\n* **`wan-animate`**: 480p, 720p. Supports `points` subject selection.\n* **`kling-3.0`**: 720p, 1080p. Clips of 3–10 seconds in `replace` mode or 3–30 seconds in `animate` mode. Picks the main person automatically, so `points` are rejected."New value: +"Model to use. Defaults to `wan-animate`.\n\n* **`wan-animate`**: 480p, 720p. Supports `points` subject selection.\n* **`kling-3.0`**: 720p, 1080p. Clips of 3–10 seconds in `replace` mode or 3–30 seconds in `animate` mode. Picks the main person automatically, so `points` are rejected.\n* **`minimax-h3`**: 480p, 720p, 1080p. Clips of 1–60 seconds in `replace` mode or 1–60 seconds in `animate` mode. Subject `points` are `replace`-only; `animate` with `selection_mode` `point` returns 422, and with `auto` or no `selection_mode` the points are ignored."
      • changedInput schema / properties / model / enum
        Previous value: -[
        -  "wan-animate",
        -  "kling-3.0"
        -]New value: +[
        +  "wan-animate",
        +  "kling-3.0",
        +  "minimax-h3"
        +]
      • changedInput schema / properties / style / properties / points / description
        Previous value: -"On-frame markers for manual subject selection. Required when `selection_mode` is `point`. Ignored when `selection_mode` is `auto` or omitted. Rejected for models without subject selection (supported by `wan-animate`)."New value: +"On-frame markers for manual subject selection. Required when `selection_mode` is `point`. Ignored when `selection_mode` is `auto` or omitted. Rejected for models without subject selection (supported by `wan-animate`, `minimax-h3`). `minimax-h3` subject `points` are `replace`-only; `animate` with `selection_mode` `point` returns 422, and with `auto` or no `selection_mode` the points are ignored."
      • addedInput schema / properties / style / properties / prompt
        Added value: +{
        +  "description": "Optional direction. Supported by kling-3.0, minimax-h3.",
        +  "maxLength": 2000,
        +  "type": "string"
        +}
      • changedInput schema / properties / style / properties / selection_mode / description
        Previous value: -"How to locate the subject in the source video. `auto` detects a person automatically. `point` uses your `points` to mark the subject and is supported by `wan-animate`. Defaults to `auto`."New value: +"How to locate the subject in the source video. `auto` detects a person automatically. `point` uses your `points` to mark the subject and is supported by `wan-animate`, `minimax-h3`. `minimax-h3` subject `points` are `replace`-only; `animate` with `selection_mode` `point` returns 422, and with `auto` or no `selection_mode` the points are ignored. Defaults to `auto`."
    • Changedface_detection_detect_faces1 field changed
      • changedInput schema / properties / assets / properties / target_file_path / description
        Previous value: -"This is the image or video where the face will be detected. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"This is the image or video where the face will be detected. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedface_swap_create_video3 fields changed
      • changedInput schema / properties / assets / properties / face_mappings / items / properties / new_face / description
        Previous value: -"The face image that will be used to replace the face in the `original_face`. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"The face image that will be used to replace the face in the `original_face`. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
      • changedInput schema / properties / assets / properties / image_file_path / description
        Previous value: -"The path of the input image with the face to be swapped.  The value is required if `face_swap_mode` is `all-faces`.\n\nThis value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"The path of the input image with the face to be swapped.  The value is required if `face_swap_mode` is `all-faces`.\n\nThis value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
      • changedInput schema / properties / assets / properties / video_file_path / description
        Previous value: -"Your video file. Required if `video_source` is `file`. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"Your video file. Required if `video_source` is `file`. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedface_swap_photo_create_image3 fields changed
      • changedInput schema / properties / assets / properties / face_mappings / items / properties / new_face / description
        Previous value: -"The face image that will be used to replace the face in the `original_face`. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"The face image that will be used to replace the face in the `original_face`. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
      • changedInput schema / properties / assets / properties / source_file_path / description
        Previous value: -"This is the image from which the face is extracted. The value is required if `face_swap_mode` is `all-faces`.\n\nThis value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"This is the image from which the face is extracted. The value is required if `face_swap_mode` is `all-faces`.\n\nThis value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
      • changedInput schema / properties / assets / properties / target_file_path / description
        Previous value: -"This is the image where the face from the source image will be placed. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"This is the image where the face from the source image will be placed. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedhead_swap_create_image2 fields changed
      • changedInput schema / properties / assets / properties / body_file_path / description
        Previous value: -"Image that receives the swapped head. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"Image that receives the swapped head. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
      • changedInput schema / properties / assets / properties / head_file_path / description
        Previous value: -"Image of the head to place on the body. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"Image of the head to place on the body. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedimage_background_remover_create_image2 fields changed
      • changedInput schema / properties / assets / properties / background_image_file_path / description
        Previous value: -"The image used as the new background for the image_file_path. This image will be resized to match the image in image_file_path. Please make sure the resolution between the images are similar.\n\nThis value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"The image used as the new background for the image_file_path. This image will be resized to match the image in image_file_path. Please make sure the resolution between the images are similar.\n\nThis value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
      • changedInput schema / properties / assets / properties / image_file_path / description
        Previous value: -"The image to remove the background. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"The image to remove the background. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedimage_to_video_create_video2 fields changed
      • changedInput schema / properties / assets / properties / end_image_file_path / description
        Previous value: -"The image to use as the last frame of the video.\n\n* **`gemini-omni-1.1`**: Supports 360p, 720p, 1080p, 4k.\n* **`kling-2.6`**: Supports 1080p.\n* **`kling-3.0`**: Supports 720p, 1080p, 4k.\n* **`ltx-2.5`**: Supports 480p, 720p, 1080p.\n* **`minimax-h3`**: Supports 480p, 720p, 1080p.\n* **`seedance-1.5`**: Supports 480p, 720p, 1080p.\n* **`seedance-2.0`**: Supports 480p, 720p, 1080p, 4k.\n* **`seedance-2.0-fast`**: Supports 480p, 720p.\n* **`seedance-2.0-mini`**: Supports 480p, 720p.\n* **`seedance-2.5`**: Supports 480p, 720p, 1080p.\n* **`veo3.1`**: Supports 720p, 1080p. Requires a duration of 8 seconds or less.\n* **`veo3.1-lite`**: Supports 720p, 1080p. Requires a duration of 8 seconds or less.\n* **`wan-2.2`**: Not supported\n* **`wan-3.0`**: Supports 480p, 720p, 1080p.\n"New value: +"The image to use as the last frame of the video.\n\n* **`gemini-omni-1.1`**: Supports 360p, 720p, 1080p, 4k.\n* **`kling-2.6`**: Supports 1080p.\n* **`kling-3.0`**: Supports 720p, 1080p, 4k.\n* **`ltx-2.5`**: Supports 480p, 720p, 1080p.\n* **`minimax-h3`**: Supports 480p, 720p, 1080p.\n* **`seedance-1.5`**: Supports 480p, 720p, 1080p.\n* **`seedance-2.0`**: Supports 480p, 720p, 1080p, 4k.\n* **`seedance-2.0-fast`**: Supports 480p, 720p.\n* **`seedance-2.0-mini`**: Supports 480p, 720p.\n* **`seedance-2.5`**: Supports 480p, 720p, 1080p.\n* **`veo3.1`**: Supports 720p, 1080p. Requires a duration of 8 seconds or less.\n* **`veo3.1-lite`**: Supports 720p, 1080p. Requires a duration of 8 seconds or less.\n* **`wan-2.2`**: Not supported\n* **`wan-3.0`**: Supports 480p, 720p, 1080p.\n\nThis value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
      • changedInput schema / properties / assets / properties / image_file_path / description
        Previous value: -"The path of the image file. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"The path of the image file. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedlip_sync_create_video2 fields changed
      • changedInput schema / properties / assets / properties / audio_file_path / description
        Previous value: -"The path of the audio file. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"The path of the audio file. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
      • changedInput schema / properties / assets / properties / video_file_path / description
        Previous value: -"Your video file. Required if `video_source` is `file`. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"Your video file. Required if `video_source` is `file`. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedphoto_colorizer_create_image1 field changed
      • changedInput schema / properties / assets / properties / image_file_path / description
        Previous value: -"The image used to generate the colorized image. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"The image used to generate the colorized image. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedtext_to_video_create_video1 field changed
      • addedInput schema / properties / references / items / properties / file_path / description
        Added value: +"This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
    • Changedvideo_to_video_create_video1 field changed
      • changedInput schema / properties / assets / properties / video_file_path / description
        Previous value: -"Your video file. Required if `video_source` is `file`. This value is either\n- a direct URL to the video file\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"New value: +"Your video file. Required if `video_source` is `file`. This value is either\n- a direct URL to the file. The URL path must end in a supported file extension.\n- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).\n\nSee the [file upload guide](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) for details.\n"
  4. 8 tool updates
    • Changedai_image_editor_create_image1 field changed
      • changedInput schema / properties / model / enum
        Previous value: -[
        -  "default",
        -  "qwen-image-2.1",
        -  "qwen-edit",
        -  "flux-2-klein",
        -  "nano-banana-2-lite",
        -  "nano-banana-2",
        -  "nano-banana-2.1",
        -  "krea-2",
        -  "gpt-image-2.5-flare",
        -  "gpt-image-2",
        -  "seedream-v5-pro",
        -  "seedream-v4.5",
        -  "seedream-v4",
        -  "nano-banana",
        -  "nano-banana-pro"
        -]New value: +[
        +  "default",
        +  "qwen-image-2.1",
        +  "gpt-image-2",
        +  "nano-banana-2",
        +  "flux-2-klein",
        +  "nano-banana-pro",
        +  "seedream-v5-pro",
        +  "seedream-v4.5",
        +  "nano-banana-2.1",
        +  "qwen-edit",
        +  "nano-banana-2-lite",
        +  "krea-2",
        +  "gpt-image-2.5-flare",
        +  "seedream-v4",
        +  "nano-banana"
        +]
    • Changedai_image_generator_create_image1 field changed
      • changedInput schema / properties / model / enum
        Previous value: -[
        -  "default",
        -  "z-image-turbo",
        -  "qwen-image-2.1",
        -  "flux-2-klein",
        -  "nano-banana-2-lite",
        -  "nano-banana-2",
        -  "nano-banana-2.1",
        -  "krea-2",
        -  "gpt-image-2.5-flare",
        -  "gpt-image-2",
        -  "seedream-v5-pro",
        -  "seedream-v4",
        -  "nano-banana",
        -  "nano-banana-pro",
        -  "flux-schnell",
        -  "seedream"
        -]New value: +[
        +  "default",
        +  "z-image-turbo",
        +  "gpt-image-2",
        +  "qwen-image-2.1",
        +  "flux-2-klein",
        +  "nano-banana-2",
        +  "nano-banana-2.1",
        +  "nano-banana-pro",
        +  "krea-2",
        +  "seedream-v5-pro",
        +  "nano-banana-2-lite",
        +  "gpt-image-2.5-flare",
        +  "seedream-v4",
        +  "nano-banana",
        +  "flux-schnell",
        +  "seedream"
        +]
    • Addedai_music_generator_create_audio
    • Changedai_talking_photo_create_talking_photo2 fields changed
      • removedInput schema / properties / max_resolution
        Removed value: -{
        -  "description": "Constrains the larger dimension (height or width) of the output video. Allows you to set a lower resolution than your plan's maximum if desired. The value is capped by your plan's max resolution.",
        -  "example": 512,
        -  "type": "integer"
        -}
      • addedInput schema / properties / resolution
        Added value: +{
        +  "description": "Output preset. Overrides `max_resolution`. Defaults to 480p in prompted mode; realistic mode uses the mapped plan maximum.",
        +  "enum": [
        +    "480p",
        +    "720p"
        +  ],
        +  "example": "480p",
        +  "type": "string"
        +}
    • Changedai_ugc_ad_create_video3 fields changed
      • changedInput schema / properties / script / description
        Previous value: -"The words the actor should speak. Character limits apply after trimming:\n* kling-3.0: 2500 characters.\n* ltx-2.5: 1981 characters.\n* veo3.1: 2500 characters.\nLTX's dialogue wrapper counts toward its model prompt limit."New value: +"The words the actor should speak. Character limits apply after trimming:\n* kling-3.0: 2500 characters.\n* ltx-2.5: 1804 characters.\n* veo3.1: 2500 characters.\nLTX's dialogue wrapper counts toward its model prompt limit."
      • removedOutput schema / properties / estimated_frame_cost
        Removed value: -{
        -  "description": "Deprecated: Previously represented the number of frames (original name of our credit system) used for video generation. Use 'credits_charged' instead.\n\nThe amount of frames used to generate the video. If the status is not 'complete', the cost is an estimate and will be adjusted when the video completes.",
        -  "type": "integer"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "estimated_frame_cost",
        -  "credits_charged"
        -]New value: +[
        +  "id",
        +  "credits_charged"
        +]
    • Addedai_video_upscaler_create_video
    • Changedimage_to_video_create_video6 fields changed
      • changedInput schema / properties / assets / properties / end_image_file_path / description
        Previous value: -"The image to use as the last frame of the video.\n\n* **`gemini-omni-1.1`**: Supports 360p, 720p, 1080p, 4k.\n* **`kling-2.6`**: Supports 1080p.\n* **`kling-3.0`**: Supports 720p, 1080p, 4k.\n* **`ltx-2.5`**: Supports 480p, 720p, 1080p.\n* **`minimax-h3`**: Supports 480p, 720p, 1080p.\n* **`seedance-1.5`**: Supports 480p, 720p, 1080p.\n* **`seedance-2.0`**: Supports 480p, 720p, 1080p, 4k.\n* **`seedance-2.0-mini`**: Supports 480p, 720p.\n* **`seedance-2.5`**: Supports 480p, 720p, 1080p.\n* **`veo3.1`**: Supports 720p, 1080p. Requires a duration of 8 seconds or less.\n* **`veo3.1-lite`**: Supports 720p, 1080p. Requires a duration of 8 seconds or less.\n* **`wan-2.2`**: Not supported\n* **`wan-3.0`**: Supports 480p, 720p, 1080p.\n"New value: +"The image to use as the last frame of the video.\n\n* **`gemini-omni-1.1`**: Supports 360p, 720p, 1080p, 4k.\n* **`kling-2.6`**: Supports 1080p.\n* **`kling-3.0`**: Supports 720p, 1080p, 4k.\n* **`ltx-2.5`**: Supports 480p, 720p, 1080p.\n* **`minimax-h3`**: Supports 480p, 720p, 1080p.\n* **`seedance-1.5`**: Supports 480p, 720p, 1080p.\n* **`seedance-2.0`**: Supports 480p, 720p, 1080p, 4k.\n* **`seedance-2.0-fast`**: Supports 480p, 720p.\n* **`seedance-2.0-mini`**: Supports 480p, 720p.\n* **`seedance-2.5`**: Supports 480p, 720p, 1080p.\n* **`veo3.1`**: Supports 720p, 1080p. Requires a duration of 8 seconds or less.\n* **`veo3.1-lite`**: Supports 720p, 1080p. Requires a duration of 8 seconds or less.\n* **`wan-2.2`**: Not supported\n* **`wan-3.0`**: Supports 480p, 720p, 1080p.\n"
      • changedInput schema / properties / audio / description
        Previous value: -"Whether to include audio in the video. Defaults to `false` if not specified.\n\nAudio support varies by model:\n* **`gemini-omni-1.1`**: Not supported\n* **`kling-2.6`**: Not supported\n* **`kling-3.0`**: Toggle-able: audio adds extra credits when enabled\n* **`ltx-2.5`**: Toggle-able: no additional credits for audio\n* **`minimax-h3`**: Toggle-able: no additional credits for audio\n* **`seedance-1.5`**: Toggle-able: audio adds extra credits when enabled\n* **`seedance-2.0`**: Toggle-able: no additional credits for audio\n* **`seedance-2.0-mini`**: Toggle-able: no additional credits for audio\n* **`seedance-2.5`**: Toggle-able: no additional credits for audio\n* **`veo3.1`**: Toggle-able: audio adds extra credits when enabled\n* **`veo3.1-lite`**: Toggle-able: audio adds extra credits when enabled\n* **`wan-2.2`**: Not supported\n* **`wan-3.0`**: Toggle-able: no additional credits for audio\n"New value: +"Whether to include audio in the video. Defaults to `false` if not specified.\n\nAudio support varies by model:\n* **`gemini-omni-1.1`**: Not supported\n* **`kling-2.6`**: Not supported\n* **`kling-3.0`**: Toggle-able: audio adds extra credits when enabled\n* **`ltx-2.5`**: Toggle-able: no additional credits for audio\n* **`minimax-h3`**: Toggle-able: no additional credits for audio\n* **`seedance-1.5`**: Toggle-able: audio adds extra credits when enabled\n* **`seedance-2.0`**: Toggle-able: no additional credits for audio\n* **`seedance-2.0-fast`**: Toggle-able: no additional credits for audio\n* **`seedance-2.0-mini`**: Toggle-able: no additional credits for audio\n* **`seedance-2.5`**: Toggle-able: no additional credits for audio\n* **`veo3.1`**: Toggle-able: audio adds extra credits when enabled\n* **`veo3.1-lite`**: Toggle-able: audio adds extra credits when enabled\n* **`wan-2.2`**: Not supported\n* **`wan-3.0`**: Toggle-able: no additional credits for audio\n"
      • changedInput schema / properties / end_seconds / description
        Previous value: -"The total duration of the output video in seconds. Supported durations depend on the chosen model:\n\n* **`gemini-omni-1.1`**: any integer from 3 to 10\n* **`kling-2.6`**: 5, 10\n* **`kling-3.0`**: any integer from 3 to 15\n* **`ltx-2.5`**: any integer from 1 to 60\n* **`minimax-h3`**: any integer from 1 to 30\n* **`seedance-1.5`**: any integer from 4 to 12\n* **`seedance-2.0`**: any integer from 4 to 15\n* **`seedance-2.0-mini`**: any integer from 4 to 15\n* **`seedance-2.5`**: any integer from 4 to 30\n* **`veo3.1`**: 4, 6, 8, 16, 24, 32, 40, 48, 56\n* **`veo3.1-lite`**: 4, 6, 8, 16, 24, 32, 40, 48, 56\n* **`wan-2.2`**: 3, 4, 5, 6, 7, 8, 9, 10, 15\n* **`wan-3.0`**: 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30\n"New value: +"The total duration of the output video in seconds. Supported durations depend on the chosen model:\n\n* **`gemini-omni-1.1`**: any integer from 3 to 10\n* **`kling-2.6`**: 5, 10\n* **`kling-3.0`**: any integer from 3 to 15\n* **`ltx-2.5`**: any integer from 1 to 60\n* **`minimax-h3`**: any integer from 1 to 30\n* **`seedance-1.5`**: any integer from 4 to 12\n* **`seedance-2.0`**: any integer from 4 to 15\n* **`seedance-2.0-fast`**: any integer from 4 to 15\n* **`seedance-2.0-mini`**: any integer from 4 to 15\n* **`seedance-2.5`**: any integer from 4 to 30\n* **`veo3.1`**: 4, 6, 8, 16, 24, 32, 40, 48, 56\n* **`veo3.1-lite`**: 4, 6, 8, 16, 24, 32, 40, 48, 56\n* **`wan-2.2`**: 3, 4, 5, 6, 7, 8, 9, 10, 15\n* **`wan-3.0`**: 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30\n"
      • changedInput schema / properties / model / description
        Previous value: -"The AI model to use for video generation.\n\n* `default`: uses our currently recommended model for general use. For paid tiers, defaults to `kling-3.0`. For free tiers, it defaults to `ltx-2.5`.\n* `gemini-omni-1.1`: Best for precise short clips, first/last frames, and high-resolution output.\n* `kling-2.6`: Best for action, motion blur, and controlled camera moves.\n* `kling-3.0`: Best for cinematic stories, references, and optional audio.\n* `ltx-2.5`: Fastest for general scenes, long clips, audio, and rapid iteration.\n* `minimax-h3`: Great for reference-driven clips with native audio and longer durations.\n* `seedance-1.5`: Best for smooth, consistent motion with an end frame.\n* `seedance-2.0`: Best for reference-led clips with precise subject control.\n* `seedance-2.0-mini`: Faster reference-led clips with consistent motion and audio.\n* `seedance-2.5`: Best for premium realism, detail, and natural motion.\n* `veo3.1`: Best for romantic interactions and expressive action, with realistic detail.\n* `veo3.1-lite`: Balanced realism and audio at a lower cost than Veo 3.1.\n* `wan-2.2`: Best for physical motion, action, and camera movement.\n* `wan-3.0`: High-quality video with native audio, long clips, and end-frame control.\n\nIf you specify the deprecated model value that includes the `-audio` suffix, this will be the same as included `audio` as `true`."New value: +"The AI model to use for video generation.\n\n* `default`: uses our currently recommended model for general use. For paid tiers, defaults to `kling-3.0`. For free tiers, it defaults to `ltx-2.5`.\n* `gemini-omni-1.1`: Best for precise short clips, first/last frames, and high-resolution output.\n* `kling-2.6`: Best for action, motion blur, and controlled camera moves.\n* `kling-3.0`: Best for cinematic stories, references, and optional audio.\n* `ltx-2.5`: Fastest for general scenes, long clips, audio, and rapid iteration.\n* `minimax-h3`: Great for reference-driven clips with native audio and longer durations.\n* `seedance-1.5`: Best for smooth, consistent motion with an end frame.\n* `seedance-2.0`: Best for reference-led clips with precise subject control.\n* `seedance-2.0-fast`: Fast reference-led clips with consistent motion and audio.\n* `seedance-2.0-mini`: Faster reference-led clips with consistent motion and audio.\n* `seedance-2.5`: Best for premium realism, detail, and natural motion.\n* `veo3.1`: Best for romantic interactions and expressive action, with realistic detail.\n* `veo3.1-lite`: Balanced realism and audio at a lower cost than Veo 3.1.\n* `wan-2.2`: Best for physical motion, action, and camera movement.\n* `wan-3.0`: High-quality video with native audio, long clips, and end-frame control.\n\nIf you specify the deprecated model value that includes the `-audio` suffix, this will be the same as included `audio` as `true`."
      • changedInput schema / properties / model / enum
        Previous value: -[
        -  "default",
        -  "kling-3.0",
        -  "ltx-2.5",
        -  "seedance-2.0-mini",
        -  "wan-3.0",
        -  "seedance-2.5",
        -  "gemini-omni-1.1",
        -  "minimax-h3",
        -  "wan-2.2",
        -  "seedance-1.5",
        -  "seedance-2.0",
        -  "veo3.1-lite",
        -  "sora-2",
        -  "veo3.1",
        -  "kling-2.6",
        -  "ltx-2.3",
        -  "ltx-2",
        -  "kling-2.5",
        -  "kling-1.6",
        -  "seedance",
        -  "kling-2.5-audio",
        -  "veo3.1-audio"
        -]New value: +[
        +  "default",
        +  "minimax-h3",
        +  "kling-3.0",
        +  "ltx-2.5",
        +  "wan-2.2",
        +  "seedance-2.5",
        +  "wan-3.0",
        +  "seedance-2.0-mini",
        +  "veo3.1",
        +  "veo3.1-lite",
        +  "seedance-2.0",
        +  "kling-2.6",
        +  "gemini-omni-1.1",
        +  "seedance-2.0-fast",
        +  "seedance-1.5",
        +  "sora-2",
        +  "ltx-2.3",
        +  "ltx-2",
        +  "kling-2.5",
        +  "kling-1.6",
        +  "seedance",
        +  "kling-2.5-audio",
        +  "veo3.1-audio"
        +]
      • changedInput schema / properties / resolution / description
        Previous value: -"Controls the output video resolution. Defaults to `720p` on paid tiers and `480p` on free tiers.\n\n* **`gemini-omni-1.1`**: Supports 360p, 720p, 1080p, 4k.\n* **`kling-2.6`**: Supports 720p, 1080p.\n* **`kling-3.0`**: Supports 720p, 1080p, 4k.\n* **`ltx-2.5`**: Supports 480p, 720p, 1080p.\n* **`minimax-h3`**: Supports 480p, 720p, 1080p.\n* **`seedance-1.5`**: Supports 480p, 720p, 1080p.\n* **`seedance-2.0`**: Supports 480p, 720p, 1080p, 4k.\n* **`seedance-2.0-mini`**: Supports 480p, 720p.\n* **`seedance-2.5`**: Supports 480p, 720p, 1080p.\n* **`veo3.1`**: Supports 720p, 1080p.\n* **`veo3.1-lite`**: Supports 720p, 1080p.\n* **`wan-2.2`**: Supports 480p, 720p, 1080p.\n* **`wan-3.0`**: Supports 480p, 720p, 1080p.\n"New value: +"Controls the output video resolution. Defaults to `720p` on paid tiers and `480p` on free tiers.\n\n* **`gemini-omni-1.1`**: Supports 360p, 720p, 1080p, 4k.\n* **`kling-2.6`**: Supports 720p, 1080p.\n* **`kling-3.0`**: Supports 720p, 1080p, 4k.\n* **`ltx-2.5`**: Supports 480p, 720p, 1080p.\n* **`minimax-h3`**: Supports 480p, 720p, 1080p.\n* **`seedance-1.5`**: Supports 480p, 720p, 1080p.\n* **`seedance-2.0`**: Supports 480p, 720p, 1080p, 4k.\n* **`seedance-2.0-fast`**: Supports 480p, 720p.\n* **`seedance-2.0-mini`**: Supports 480p, 720p.\n* **`seedance-2.5`**: Supports 480p, 720p, 1080p.\n* **`veo3.1`**: Supports 720p, 1080p.\n* **`veo3.1-lite`**: Supports 720p, 1080p.\n* **`wan-2.2`**: Supports 480p, 720p, 1080p.\n* **`wan-3.0`**: Supports 480p, 720p, 1080p.\n"
    • Changedtext_to_video_create_video7 fields changed
      • changedInput schema / properties / aspect_ratio / description
        Previous value: -"Determines the aspect ratio of the output video.\n\n* **`gemini-omni-1.1`**: Supports 16:9, 9:16.\n* **`kling-2.6`**: Supports 9:16, 16:9, 1:1.\n* **`kling-3.0`**: Supports 9:16, 16:9, 1:1.\n* **`ltx-2.5`**: Supports 9:16, 16:9, 1:1.\n* **`minimax-h3`**: Supports 16:9, 9:16, 1:1.\n* **`seedance-1.5`**: Supports 9:16, 16:9, 1:1.\n* **`seedance-2.0`**: Supports 9:16, 16:9, 1:1.\n* **`seedance-2.0-mini`**: Supports 9:16, 16:9, 1:1.\n* **`seedance-2.5`**: Supports 9:16, 16:9, 1:1.\n* **`veo3.1`**: Supports 9:16, 16:9.\n* **`veo3.1-lite`**: Supports 9:16, 16:9.\n* **`wan-2.2`**: Supports 9:16, 16:9, 1:1.\n* **`wan-3.0`**: Supports 16:9, 9:16, 1:1.\n"New value: +"Provide `aspect_ratio` to set the video’s aspect ratio. Determines the aspect ratio of the output video.\n\n* **`gemini-omni-1.1`**: Supports 16:9, 9:16.\n* **`kling-2.6`**: Supports 9:16, 16:9, 1:1.\n* **`kling-3.0`**: Supports 9:16, 16:9, 1:1.\n* **`ltx-2.5`**: Supports 9:16, 16:9, 1:1.\n* **`minimax-h3`**: Supports 16:9, 9:16, 1:1.\n* **`seedance-1.5`**: Supports 9:16, 16:9, 1:1.\n* **`seedance-2.0`**: Supports 9:16, 16:9, 1:1.\n* **`seedance-2.0-fast`**: Supports 9:16, 16:9, 1:1.\n* **`seedance-2.0-mini`**: Supports 9:16, 16:9, 1:1.\n* **`seedance-2.5`**: Supports 9:16, 16:9, 1:1.\n* **`veo3.1`**: Supports 9:16, 16:9.\n* **`veo3.1-lite`**: Supports 9:16, 16:9.\n* **`wan-2.2`**: Supports 9:16, 16:9, 1:1.\n* **`wan-3.0`**: Supports 16:9, 9:16, 1:1.\n"
      • changedInput schema / properties / audio / description
        Previous value: -"Whether to include audio in the video. Defaults to `false` if not specified.\n\nAudio support varies by model:\n* **`gemini-omni-1.1`**: Not supported\n* **`kling-2.6`**: Not supported\n* **`kling-3.0`**: Toggle-able: audio adds extra credits when enabled\n* **`ltx-2.5`**: Toggle-able: no additional credits for audio\n* **`minimax-h3`**: Toggle-able: no additional credits for audio\n* **`seedance-1.5`**: Toggle-able: audio adds extra credits when enabled\n* **`seedance-2.0`**: Toggle-able: no additional credits for audio\n* **`seedance-2.0-mini`**: Toggle-able: no additional credits for audio\n* **`seedance-2.5`**: Toggle-able: no additional credits for audio\n* **`veo3.1`**: Toggle-able: audio adds extra credits when enabled\n* **`veo3.1-lite`**: Toggle-able: audio adds extra credits when enabled\n* **`wan-2.2`**: Not supported\n* **`wan-3.0`**: Toggle-able: no additional credits for audio\n"New value: +"Whether to include audio in the video. Defaults to `false` if not specified.\n\nAudio support varies by model:\n* **`gemini-omni-1.1`**: Not supported\n* **`kling-2.6`**: Not supported\n* **`kling-3.0`**: Toggle-able: audio adds extra credits when enabled\n* **`ltx-2.5`**: Toggle-able: no additional credits for audio\n* **`minimax-h3`**: Toggle-able: no additional credits for audio\n* **`seedance-1.5`**: Toggle-able: audio adds extra credits when enabled\n* **`seedance-2.0`**: Toggle-able: no additional credits for audio\n* **`seedance-2.0-fast`**: Toggle-able: no additional credits for audio\n* **`seedance-2.0-mini`**: Toggle-able: no additional credits for audio\n* **`seedance-2.5`**: Toggle-able: no additional credits for audio\n* **`veo3.1`**: Toggle-able: audio adds extra credits when enabled\n* **`veo3.1-lite`**: Toggle-able: audio adds extra credits when enabled\n* **`wan-2.2`**: Not supported\n* **`wan-3.0`**: Toggle-able: no additional credits for audio\n"
      • changedInput schema / properties / end_seconds / description
        Previous value: -"The total duration of the output video in seconds. Supported durations depend on the chosen model:\n\n* **`gemini-omni-1.1`**: any integer from 3 to 10\n* **`kling-2.6`**: 5, 10\n* **`kling-3.0`**: any integer from 3 to 15\n* **`ltx-2.5`**: any integer from 1 to 60\n* **`minimax-h3`**: any integer from 1 to 30\n* **`seedance-1.5`**: any integer from 4 to 12\n* **`seedance-2.0`**: any integer from 4 to 15\n* **`seedance-2.0-mini`**: any integer from 4 to 15\n* **`seedance-2.5`**: any integer from 4 to 30\n* **`veo3.1`**: 4, 6, 8, 16, 24, 32, 40, 48, 56\n* **`veo3.1-lite`**: 4, 6, 8, 16, 24, 32, 40, 48, 56\n* **`wan-2.2`**: 3, 4, 5, 6, 7, 8, 9, 10, 15\n* **`wan-3.0`**: 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30\n"New value: +"The total duration of the output video in seconds. Supported durations depend on the chosen model:\n\n* **`gemini-omni-1.1`**: any integer from 3 to 10\n* **`kling-2.6`**: 5, 10\n* **`kling-3.0`**: any integer from 3 to 15\n* **`ltx-2.5`**: any integer from 1 to 60\n* **`minimax-h3`**: any integer from 1 to 30\n* **`seedance-1.5`**: any integer from 4 to 12\n* **`seedance-2.0`**: any integer from 4 to 15\n* **`seedance-2.0-fast`**: any integer from 4 to 15\n* **`seedance-2.0-mini`**: any integer from 4 to 15\n* **`seedance-2.5`**: any integer from 4 to 30\n* **`veo3.1`**: 4, 6, 8, 16, 24, 32, 40, 48, 56\n* **`veo3.1-lite`**: 4, 6, 8, 16, 24, 32, 40, 48, 56\n* **`wan-2.2`**: 3, 4, 5, 6, 7, 8, 9, 10, 15\n* **`wan-3.0`**: 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30\n"
      • changedInput schema / properties / model / description
        Previous value: -"The AI model to use for video generation.\n\n* `default`: uses our currently recommended model for general use. For paid tiers, defaults to `kling-3.0`. For free tiers, it defaults to `ltx-2.5`.\n* `gemini-omni-1.1`: Best for precise short clips, first/last frames, and high-resolution output.\n* `kling-2.6`: Best for action, motion blur, and controlled camera moves.\n* `kling-3.0`: Best for cinematic stories, references, and optional audio.\n* `ltx-2.5`: Fastest for general scenes, long clips, audio, and rapid iteration.\n* `minimax-h3`: Great for reference-driven clips with native audio and longer durations.\n* `seedance-1.5`: Best for smooth, consistent motion with an end frame.\n* `seedance-2.0`: Best for reference-led clips with precise subject control.\n* `seedance-2.0-mini`: Faster reference-led clips with consistent motion and audio.\n* `seedance-2.5`: Best for premium realism, detail, and natural motion.\n* `veo3.1`: Best for romantic interactions and expressive action, with realistic detail.\n* `veo3.1-lite`: Balanced realism and audio at a lower cost than Veo 3.1.\n* `wan-2.2`: Best for physical motion, action, and camera movement.\n* `wan-3.0`: High-quality video with native audio, long clips, and end-frame control.\n\nIf you specify the deprecated model value that includes the `-audio` suffix, this will be the same as included `audio` as `true`."New value: +"The AI model to use for video generation.\n\n* `default`: uses our currently recommended model for general use. For paid tiers, defaults to `kling-3.0`. For free tiers, it defaults to `ltx-2.5`.\n* `gemini-omni-1.1`: Best for precise short clips, first/last frames, and high-resolution output.\n* `kling-2.6`: Best for action, motion blur, and controlled camera moves.\n* `kling-3.0`: Best for cinematic stories, references, and optional audio.\n* `ltx-2.5`: Fastest for general scenes, long clips, audio, and rapid iteration.\n* `minimax-h3`: Great for reference-driven clips with native audio and longer durations.\n* `seedance-1.5`: Best for smooth, consistent motion with an end frame.\n* `seedance-2.0`: Best for reference-led clips with precise subject control.\n* `seedance-2.0-fast`: Fast reference-led clips with consistent motion and audio.\n* `seedance-2.0-mini`: Faster reference-led clips with consistent motion and audio.\n* `seedance-2.5`: Best for premium realism, detail, and natural motion.\n* `veo3.1`: Best for romantic interactions and expressive action, with realistic detail.\n* `veo3.1-lite`: Balanced realism and audio at a lower cost than Veo 3.1.\n* `wan-2.2`: Best for physical motion, action, and camera movement.\n* `wan-3.0`: High-quality video with native audio, long clips, and end-frame control.\n\nIf you specify the deprecated model value that includes the `-audio` suffix, this will be the same as included `audio` as `true`."
      • changedInput schema / properties / model / enum
        Previous value: -[
        -  "default",
        -  "kling-3.0",
        -  "ltx-2.5",
        -  "seedance-2.0-mini",
        -  "wan-3.0",
        -  "seedance-2.5",
        -  "gemini-omni-1.1",
        -  "minimax-h3",
        -  "wan-2.2",
        -  "seedance-1.5",
        -  "seedance-2.0",
        -  "veo3.1-lite",
        -  "sora-2",
        -  "veo3.1",
        -  "kling-2.6",
        -  "ltx-2.3",
        -  "ltx-2",
        -  "kling-2.5",
        -  "kling-1.6",
        -  "seedance",
        -  "kling-2.5-audio",
        -  "veo3.1-audio"
        -]New value: +[
        +  "default",
        +  "minimax-h3",
        +  "kling-3.0",
        +  "ltx-2.5",
        +  "wan-2.2",
        +  "seedance-2.5",
        +  "wan-3.0",
        +  "seedance-2.0-mini",
        +  "veo3.1",
        +  "veo3.1-lite",
        +  "seedance-2.0",
        +  "kling-2.6",
        +  "gemini-omni-1.1",
        +  "seedance-2.0-fast",
        +  "seedance-1.5",
        +  "sora-2",
        +  "ltx-2.3",
        +  "ltx-2",
        +  "kling-2.5",
        +  "kling-1.6",
        +  "seedance",
        +  "kling-2.5-audio",
        +  "veo3.1-audio"
        +]
      • changedInput schema / properties / references / description
        Previous value: -"Reference media for video generation. Name references without @ and refer to them as @name in style.prompt. Maximum 10 references total.\n\nSupported models and reference media:\n* **`kling-3.0`**: Supports images, videos.\n* **`minimax-h3`**: Supports images, videos, audio.\n* **`seedance-2.0`**: Supports images, videos, audio.\n* **`seedance-2.0-mini`**: Supports images, videos, audio.\n* **`seedance-2.5`**: Supports images, videos, audio.\n* **`wan-3.0`**: Supports images, videos, audio."New value: +"Reference media for video generation. Name references without @ and refer to them as @name in style.prompt. Maximum 10 references total.\n\nSupported models and reference media:\n* **`gemini-omni-1.1`**: Supports images, videos. Up to 10 references.\n* **`kling-3.0`**: Supports images, videos.\n* **`minimax-h3`**: Supports images, videos, audio.\n* **`seedance-2.0`**: Supports images, videos, audio.\n* **`seedance-2.0-fast`**: Supports images, videos, audio.\n* **`seedance-2.0-mini`**: Supports images, videos, audio.\n* **`seedance-2.5`**: Supports images, videos, audio.\n* **`veo3.1`**: Supports images. Up to 3 references. Requires `end_seconds` of 8.\n* **`wan-3.0`**: Supports images, videos, audio."
      • changedInput schema / properties / resolution / description
        Previous value: -"Controls the output video resolution. Defaults to `720p` on paid tiers and `480p` on free tiers.\n\n* **`gemini-omni-1.1`**: Supports 360p, 720p, 1080p, 4k.\n* **`kling-2.6`**: Supports 720p, 1080p.\n* **`kling-3.0`**: Supports 720p, 1080p, 4k.\n* **`ltx-2.5`**: Supports 480p, 720p, 1080p.\n* **`minimax-h3`**: Supports 480p, 720p, 1080p.\n* **`seedance-1.5`**: Supports 480p, 720p, 1080p.\n* **`seedance-2.0`**: Supports 480p, 720p, 1080p, 4k.\n* **`seedance-2.0-mini`**: Supports 480p, 720p.\n* **`seedance-2.5`**: Supports 480p, 720p, 1080p.\n* **`veo3.1`**: Supports 720p, 1080p.\n* **`veo3.1-lite`**: Supports 720p, 1080p.\n* **`wan-2.2`**: Supports 480p, 720p, 1080p.\n* **`wan-3.0`**: Supports 480p, 720p, 1080p.\n"New value: +"Controls the output video resolution. Defaults to `720p` on paid tiers and `480p` on free tiers.\n\n* **`gemini-omni-1.1`**: Supports 360p, 720p, 1080p, 4k.\n* **`kling-2.6`**: Supports 720p, 1080p.\n* **`kling-3.0`**: Supports 720p, 1080p, 4k.\n* **`ltx-2.5`**: Supports 480p, 720p, 1080p.\n* **`minimax-h3`**: Supports 480p, 720p, 1080p.\n* **`seedance-1.5`**: Supports 480p, 720p, 1080p.\n* **`seedance-2.0`**: Supports 480p, 720p, 1080p, 4k.\n* **`seedance-2.0-fast`**: Supports 480p, 720p.\n* **`seedance-2.0-mini`**: Supports 480p, 720p.\n* **`seedance-2.5`**: Supports 480p, 720p, 1080p.\n* **`veo3.1`**: Supports 720p, 1080p.\n* **`veo3.1-lite`**: Supports 720p, 1080p.\n* **`wan-2.2`**: Supports 480p, 720p, 1080p.\n* **`wan-3.0`**: Supports 480p, 720p, 1080p.\n"
  5. 5 tool updates
    • Changedfetch_audio_download1 field changed
      • changedInput schema / properties / max_bytes / default
        Previous value: -15728640New value: +8388608
    • Changedfetch_image_download1 field changed
      • changedInput schema / properties / max_bytes / default
        Previous value: -15728640New value: +8388608
    • Changedfetch_video_download1 field changed
      • changedInput schema / properties / max_bytes / default
        Previous value: -15728640New value: +8388608
    • Changedwait_for_audio_project1 field changed
      • changedInput schema / properties / max_bytes_per_download / default
        Previous value: -15728640New value: +8388608
    • Changedwait_for_image_project1 field changed
      • changedInput schema / properties / max_bytes_per_download / default
        Previous value: -15728640New value: +8388608
  6. 1 tool update
    • Addedai_ugc_ad_create_video
  7. 1 tool update
    • Addedworkflow_guide_retrieve
  8. 19 tool updates
    • Changedai_headshot_generator_create_image1 field changed
      • addedInput schema / properties / style / properties / prompt / example
        Added value: +"Professional studio headshot with soft lighting and a neutral background"
    • Changedai_image_editor_create_image3 fields changed
      • changedInput schema / properties / model / example
        Previous value: -"default"New value: +"flux-2-klein"
      • changedInput schema / properties / resolution / example
        Previous value: -"1k"New value: +"640px"
      • changedOutput schema / properties / credits_charged / example
        Previous value: -50New value: +5
    • Changedai_image_generator_create_image2 fields changed
      • changedInput schema / properties / model / example
        Previous value: -"default"New value: +"z-image-turbo"
      • changedInput schema / properties / resolution / example
        Previous value: -"1k"New value: +"640px"
    • Changedai_image_upscaler_create_image4 fields changed
      • addedInput schema / properties / style / example
        Added value: +{
        +  "mode": "preserve"
        +}
      • changedInput schema / properties / style / properties / mode / example
        Previous value: -"balanced"New value: +"preserve"
      • addedInput schema / properties / style / properties / prompt / example
        Added value: +"Enhance fine details and keep the image natural"
      • changedOutput schema / properties / credits_charged / example
        Previous value: -50New value: +25
    • Changedai_talking_photo_create_talking_photo3 fields changed
      • changedInput schema / properties / end_seconds / example
        Previous value: -15New value: +5
      • changedInput schema / properties / max_resolution / example
        Previous value: -1024New value: +512
      • addedInput schema / properties / style / properties / prompt / example
        Added value: +"A person smiling and speaking naturally to the camera"
    • Changedai_video_editor_create_video2 fields changed
      • changedInput schema / properties / model / example
        Previous value: -"gemini-omni-1.1"New value: +"ltx-2.5"
      • changedInput schema / properties / resolution / example
        Previous value: -"720p"New value: +"480p"
    • Changedai_video_translator_create_video2 fields changed
      • changedInput schema / properties / end_seconds / example
        Previous value: -15New value: +5
      • changedInput schema / properties / resolution / example
        Previous value: -"720p"New value: +"480p"
    • Changedanimation_create_video4 fields changed
      • addedInput schema / properties / assets / example
        Added value: +{
        +  "audio_file_path": "api-assets/id/1234.mp3",
        +  "audio_source": "file",
        +  "image_file_path": "api-assets/id/1234.png"
        +}
      • changedInput schema / properties / end_seconds / example
        Previous value: -15New value: +5
      • changedInput schema / properties / height / example
        Previous value: -960New value: +512
      • addedInput schema / properties / style / properties / art_style_custom / example
        Added value: +"Watercolor painting with soft pastel colors"
    • Changedaudio_to_video_create_video2 fields changed
      • changedInput schema / properties / end_seconds / example
        Previous value: -15New value: +5
      • changedInput schema / properties / resolution / example
        Previous value: -"720p"New value: +"480p"
    • Changedauto_subtitle_generator_create_video2 fields changed
      • changedInput schema / properties / end_seconds / example
        Previous value: -15New value: +5
      • addedInput schema / properties / style / properties / template / example
        Added value: +"karaoke"
    • Changedbody_swap_create_image1 field changed
      • changedInput schema / properties / resolution / example
        Previous value: -"1k"New value: +"640px"
    • Changedcharacter_replace_create_video2 fields changed
      • changedInput schema / properties / end_seconds / example
        Previous value: -15New value: +5
      • changedInput schema / properties / resolution / example
        Previous value: -"720p"New value: +"480p"
    • Changedface_swap_create_video3 fields changed
      • addedInput schema / properties / assets / example
        Added value: +{
        +  "face_swap_mode": "all-faces",
        +  "image_file_path": "api-assets/id/1234.png",
        +  "video_file_path": "api-assets/id/1234.mp4",
        +  "video_source": "file"
        +}
      • changedInput schema / properties / assets / properties / image_file_path / example
        Previous value: -"image/id/1234.png"New value: +"api-assets/id/1234.png"
      • changedInput schema / properties / end_seconds / example
        Previous value: -15New value: +5
    • Changedface_swap_photo_create_image1 field changed
      • addedInput schema / properties / assets / example
        Added value: +{
        +  "face_swap_mode": "all-faces",
        +  "source_file_path": "api-assets/id/1234.png",
        +  "target_file_path": "api-assets/id/1234.png"
        +}
    • Changedimage_to_video_create_video3 fields changed
      • changedInput schema / properties / assets / properties / end_image_file_path / description
        Previous value: -"The image to use as the last frame of the video.\n\n* **`gemini-omni-1.1`**: Supports 360p, 720p, 1080p, 4k.\n* **`kling-2.6`**: Supports 1080p.\n* **`kling-3.0`**: Supports 720p, 1080p, 4k.\n* **`ltx-2.5`**: Supports 480p, 720p, 1080p.\n* **`minimax-h3`**: Not supported\n* **`seedance-1.5`**: Supports 480p, 720p, 1080p.\n* **`seedance-2.0`**: Supports 480p, 720p, 1080p, 4k.\n* **`seedance-2.0-mini`**: Supports 480p, 720p.\n* **`seedance-2.5`**: Supports 480p, 720p, 1080p.\n* **`veo3.1`**: Supports 720p, 1080p. Requires a duration of 8 seconds or less.\n* **`veo3.1-lite`**: Supports 720p, 1080p. Requires a duration of 8 seconds or less.\n* **`wan-2.2`**: Not supported\n* **`wan-3.0`**: Supports 480p, 720p, 1080p.\n"New value: +"The image to use as the last frame of the video.\n\n* **`gemini-omni-1.1`**: Supports 360p, 720p, 1080p, 4k.\n* **`kling-2.6`**: Supports 1080p.\n* **`kling-3.0`**: Supports 720p, 1080p, 4k.\n* **`ltx-2.5`**: Supports 480p, 720p, 1080p.\n* **`minimax-h3`**: Supports 480p, 720p, 1080p.\n* **`seedance-1.5`**: Supports 480p, 720p, 1080p.\n* **`seedance-2.0`**: Supports 480p, 720p, 1080p, 4k.\n* **`seedance-2.0-mini`**: Supports 480p, 720p.\n* **`seedance-2.5`**: Supports 480p, 720p, 1080p.\n* **`veo3.1`**: Supports 720p, 1080p. Requires a duration of 8 seconds or less.\n* **`veo3.1-lite`**: Supports 720p, 1080p. Requires a duration of 8 seconds or less.\n* **`wan-2.2`**: Not supported\n* **`wan-3.0`**: Supports 480p, 720p, 1080p.\n"
      • changedInput schema / properties / model / example
        Previous value: -"kling-3.0"New value: +"ltx-2.5"
      • changedInput schema / properties / resolution / example
        Previous value: -"720p"New value: +"480p"
    • Changedlip_sync_create_video2 fields changed
      • addedInput schema / properties / assets / example
        Added value: +{
        +  "audio_file_path": "api-assets/id/1234.mp3",
        +  "video_file_path": "api-assets/id/1234.mp4",
        +  "video_source": "file"
        +}
      • changedInput schema / properties / end_seconds / example
        Previous value: -15New value: +5
    • Changedtext_to_video_create_video5 fields changed
      • changedInput schema / properties / model / example
        Previous value: -"kling-3.0"New value: +"ltx-2.5"
      • addedInput schema / properties / references / description
        Added value: +"Reference media for video generation. Name references without @ and refer to them as @name in style.prompt. Maximum 10 references total.\n\nSupported models and reference media:\n* **`kling-3.0`**: Supports images, videos.\n* **`minimax-h3`**: Supports images, videos, audio.\n* **`seedance-2.0`**: Supports images, videos, audio.\n* **`seedance-2.0-mini`**: Supports images, videos, audio.\n* **`seedance-2.5`**: Supports images, videos, audio.\n* **`wan-3.0`**: Supports images, videos, audio."
      • addedInput schema / properties / references / items / properties / file_path / example
        Added value: +"api-assets/id/1234.png"
      • addedInput schema / properties / references / items / properties / name / example
        Added value: +"hero"
      • changedInput schema / properties / resolution / example
        Previous value: -"720p"New value: +"480p"
    • Changedvideo_projects_retrieve_details1 field changed
      • changedOutput schema / properties / end_seconds / example
        Previous value: -15New value: +5
    • Changedvideo_to_video_create_video5 fields changed
      • addedInput schema / properties / assets / example
        Added value: +{
        +  "video_file_path": "api-assets/id/1234.mp4",
        +  "video_source": "file"
        +}
      • changedInput schema / properties / end_seconds / example
        Previous value: -15New value: +5
      • addedInput schema / properties / style / properties / art_style / example
        Added value: +"Minecraft"
      • addedInput schema / properties / style / properties / prompt / example
        Added value: +"A cinematic scene with warm lighting"
      • changedInput schema / properties / style / properties / version / description
        Previous value: -"* `v1` - more detail, closer prompt adherence, and frame-by-frame previews.\n* `v2` - faster, more consistent, and less noisy.\n* `default` - use the default version for the selected art style."New value: +"* `v1` - more detail, closer prompt adherence, and frame-by-frame previews.\n* `v2` - faster, more consistent, and less noisy.\n* `default` - use the selected art style's default version. Some art styles default to v3, which is unavailable through this API. For `Studio Ghibli`, explicitly set `version` to `v2` to use its supported preset."
  9. 2 tool updates
    • Changedai_image_editor_create_image3 fields changed
      • changedInput schema / properties / model / description
        Previous value: -"The AI model to use for image editing. Each model has different capabilities and costs.\n\n**Models:**\n- `default` - Use the model we recommend, which will change over time. This is recommended unless you need a specific model. This is the default behavior.\n- `flux-2-klein` - from 5 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Max additional input images: 5\n- `gpt-image-2` - from 50 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `gpt-image-2.5-flare` - from 100 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `krea-2` - from 10 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: free, creator, pro, business\n  - Max additional input images: 1\n- `nano-banana` - from 50 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `nano-banana-2` - from 100 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `nano-banana-2-lite` - from 50 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `nano-banana-pro` - from 150 credits/image\n  - Supported resolutions: 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `qwen-edit` - from 10 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Max additional input images: 2\n- `qwen-image-2.1` - from 10 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Max additional input images: 2\n- `seedream-v4` - from 40 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `seedream-v4.5` - from 50 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `seedream-v5-pro` - from 75 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n"New value: +"The AI model to use for image editing. Each model has different capabilities and costs.\n\n**Models:**\n- `default` - Use the model we recommend, which will change over time. This is recommended unless you need a specific model. This is the default behavior.\n- `flux-2-klein` - from 5 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Max additional input images: 5\n- `gpt-image-2` - from 50 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `gpt-image-2.5-flare` - from 100 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `krea-2` - from 10 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: free, creator, pro, business\n  - Max additional input images: 1\n- `nano-banana` - from 50 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `nano-banana-2` - from 100 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `nano-banana-2-lite` - from 50 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `nano-banana-2.1` - from 50 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `nano-banana-pro` - from 150 credits/image\n  - Supported resolutions: 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `qwen-edit` - from 10 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Max additional input images: 2\n- `qwen-image-2.1` - from 10 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Max additional input images: 2\n- `seedream-v4` - from 40 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `seedream-v4.5` - from 50 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `seedream-v5-pro` - from 75 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n"
      • changedInput schema / properties / model / enum
        Previous value: -[
        -  "default",
        -  "qwen-image-2.1",
        -  "qwen-edit",
        -  "flux-2-klein",
        -  "nano-banana-2-lite",
        -  "nano-banana-2",
        -  "krea-2",
        -  "gpt-image-2.5-flare",
        -  "gpt-image-2",
        -  "seedream-v5-pro",
        -  "seedream-v4.5",
        -  "seedream-v4",
        -  "nano-banana",
        -  "nano-banana-pro"
        -]New value: +[
        +  "default",
        +  "qwen-image-2.1",
        +  "qwen-edit",
        +  "flux-2-klein",
        +  "nano-banana-2-lite",
        +  "nano-banana-2",
        +  "nano-banana-2.1",
        +  "krea-2",
        +  "gpt-image-2.5-flare",
        +  "gpt-image-2",
        +  "seedream-v5-pro",
        +  "seedream-v4.5",
        +  "seedream-v4",
        +  "nano-banana",
        +  "nano-banana-pro"
        +]
      • changedInput schema / properties / resolution / description
        Previous value: -"Maximum resolution (longest edge) for the output image.\n\n**Options:**\n- `640px` — up to 640px\n- `1k` — up to 1024px\n- `2k` — up to 2048px\n- `4k` — up to 4096px\n- `auto` — **Deprecated.** Mapped server-side from your subscription tier to the best matching resolution the model supports\n\n**Per-model support:**\n- `flux-2-klein` - 640px, 1k, 2k\n- `gpt-image-2` - 640px, 1k, 2k, 4k\n- `gpt-image-2.5-flare` - 640px, 1k, 2k, 4k\n- `krea-2` - 640px, 1k\n- `nano-banana` - 640px, 1k\n- `nano-banana-2` - 640px, 1k, 2k, 4k\n- `nano-banana-2-lite` - 640px, 1k\n- `nano-banana-pro` - 1k, 2k, 4k\n- `qwen-edit` - 640px, 1k, 2k\n- `qwen-image-2.1` - 640px, 1k, 2k\n- `seedream-v4` - 640px, 1k, 2k, 4k\n- `seedream-v4.5` - 640px, 1k, 2k, 4k\n- `seedream-v5-pro` - 640px, 1k, 2k\n\nNote: Resolution availability depends on the model and your subscription tier."New value: +"Maximum resolution (longest edge) for the output image.\n\n**Options:**\n- `640px` — up to 640px\n- `1k` — up to 1024px\n- `2k` — up to 2048px\n- `4k` — up to 4096px\n- `auto` — **Deprecated.** Mapped server-side from your subscription tier to the best matching resolution the model supports\n\n**Per-model support:**\n- `flux-2-klein` - 640px, 1k, 2k\n- `gpt-image-2` - 640px, 1k, 2k, 4k\n- `gpt-image-2.5-flare` - 640px, 1k, 2k, 4k\n- `krea-2` - 640px, 1k\n- `nano-banana` - 640px, 1k\n- `nano-banana-2` - 640px, 1k, 2k, 4k\n- `nano-banana-2-lite` - 640px, 1k\n- `nano-banana-2.1` - 640px, 1k, 2k, 4k\n- `nano-banana-pro` - 1k, 2k, 4k\n- `qwen-edit` - 640px, 1k, 2k\n- `qwen-image-2.1` - 640px, 1k, 2k\n- `seedream-v4` - 640px, 1k, 2k, 4k\n- `seedream-v4.5` - 640px, 1k, 2k, 4k\n- `seedream-v5-pro` - 640px, 1k, 2k\n\nNote: Resolution availability depends on the model and your subscription tier."
    • Changedai_image_generator_create_image3 fields changed
      • changedInput schema / properties / model / description
        Previous value: -"The AI model to use for image generation. Each model has different capabilities and costs.\n\n**Models:**\n- `default` - Use the model we recommend, which will change over time. This is recommended unless you need a specific model. This is the default behavior.\n- `flux-2-klein` - from 5 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1\n- `flux-schnell` - from 5 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `gpt-image-2` - from 50 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `gpt-image-2.5-flare` - from 100 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `krea-2` - from 10 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1\n- `nano-banana` - from 50 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `nano-banana-2` - from 100 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 4, 9, 16\n- `nano-banana-2-lite` - from 50 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `nano-banana-pro` - from 150 credits/image\n  - Supported resolutions: 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 4, 9, 16\n- `qwen-image-2.1` - from 10 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `seedream-v4` - from 40 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `seedream-v5-pro` - from 75 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `z-image-turbo` - from 5 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n\n**Deprecated Enum Values:**\n- `seedream` - Use `seedream-v4` instead.\n"New value: +"The AI model to use for image generation. Each model has different capabilities and costs.\n\n**Models:**\n- `default` - Use the model we recommend, which will change over time. This is recommended unless you need a specific model. This is the default behavior.\n- `flux-2-klein` - from 5 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1\n- `flux-schnell` - from 5 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `gpt-image-2` - from 50 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `gpt-image-2.5-flare` - from 100 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `krea-2` - from 10 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1\n- `nano-banana` - from 50 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `nano-banana-2` - from 100 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 4, 9, 16\n- `nano-banana-2-lite` - from 50 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `nano-banana-2.1` - from 50 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 4, 9, 16\n- `nano-banana-pro` - from 150 credits/image\n  - Supported resolutions: 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 4, 9, 16\n- `qwen-image-2.1` - from 10 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `seedream-v4` - from 40 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `seedream-v5-pro` - from 75 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `z-image-turbo` - from 5 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n\n**Deprecated Enum Values:**\n- `seedream` - Use `seedream-v4` instead.\n"
      • changedInput schema / properties / model / enum
        Previous value: -[
        -  "default",
        -  "z-image-turbo",
        -  "qwen-image-2.1",
        -  "flux-2-klein",
        -  "nano-banana-2-lite",
        -  "nano-banana-2",
        -  "krea-2",
        -  "gpt-image-2.5-flare",
        -  "gpt-image-2",
        -  "seedream-v5-pro",
        -  "seedream-v4",
        -  "nano-banana",
        -  "nano-banana-pro",
        -  "flux-schnell",
        -  "seedream"
        -]New value: +[
        +  "default",
        +  "z-image-turbo",
        +  "qwen-image-2.1",
        +  "flux-2-klein",
        +  "nano-banana-2-lite",
        +  "nano-banana-2",
        +  "nano-banana-2.1",
        +  "krea-2",
        +  "gpt-image-2.5-flare",
        +  "gpt-image-2",
        +  "seedream-v5-pro",
        +  "seedream-v4",
        +  "nano-banana",
        +  "nano-banana-pro",
        +  "flux-schnell",
        +  "seedream"
        +]
      • changedInput schema / properties / resolution / description
        Previous value: -"Maximum resolution (longest edge) for the output image.\n\n**Options:**\n- `640px` — up to 640px\n- `1k` — up to 1024px\n- `2k` — up to 2048px\n- `4k` — up to 4096px\n- `auto` — **Deprecated.** Mapped server-side from your subscription tier to the best matching resolution the model supports\n\n**Per-model support:**\n- `flux-2-klein` - 640px, 1k, 2k\n- `flux-schnell` - 640px, 1k, 2k\n- `gpt-image-2` - 640px, 1k, 2k, 4k\n- `gpt-image-2.5-flare` - 640px, 1k, 2k, 4k\n- `krea-2` - 640px, 1k\n- `nano-banana` - 640px, 1k\n- `nano-banana-2` - 640px, 1k, 2k, 4k\n- `nano-banana-2-lite` - 640px, 1k\n- `nano-banana-pro` - 1k, 2k, 4k\n- `qwen-image-2.1` - 640px, 1k, 2k\n- `seedream-v4` - 640px, 1k, 2k, 4k\n- `seedream-v5-pro` - 640px, 1k, 2k\n- `z-image-turbo` - 640px, 1k, 2k\n\nNote: Resolution availability depends on the model and your subscription tier."New value: +"Maximum resolution (longest edge) for the output image.\n\n**Options:**\n- `640px` — up to 640px\n- `1k` — up to 1024px\n- `2k` — up to 2048px\n- `4k` — up to 4096px\n- `auto` — **Deprecated.** Mapped server-side from your subscription tier to the best matching resolution the model supports\n\n**Per-model support:**\n- `flux-2-klein` - 640px, 1k, 2k\n- `flux-schnell` - 640px, 1k, 2k\n- `gpt-image-2` - 640px, 1k, 2k, 4k\n- `gpt-image-2.5-flare` - 640px, 1k, 2k, 4k\n- `krea-2` - 640px, 1k\n- `nano-banana` - 640px, 1k\n- `nano-banana-2` - 640px, 1k, 2k, 4k\n- `nano-banana-2-lite` - 640px, 1k\n- `nano-banana-2.1` - 640px, 1k, 2k, 4k\n- `nano-banana-pro` - 1k, 2k, 4k\n- `qwen-image-2.1` - 640px, 1k, 2k\n- `seedream-v4` - 640px, 1k, 2k, 4k\n- `seedream-v5-pro` - 640px, 1k, 2k\n- `z-image-turbo` - 640px, 1k, 2k\n\nNote: Resolution availability depends on the model and your subscription tier."
  10. 4 tool updates
    • Changedai_image_editor_create_image3 fields changed
      • changedInput schema / properties / model / description
        Previous value: -"The AI model to use for image editing. Each model has different capabilities and costs.\n\n**Models:**\n- `default` - Use the model we recommend, which will change over time. This is recommended unless you need a specific model. This is the default behavior.\n- `flux-2-klein` - from 5 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Max additional input images: 5\n- `gpt-image-2` - from 50 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `gpt-image-2.5-flare` - from 100 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `krea-2` - from 10 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: free, creator, pro, business\n  - Max additional input images: 1\n- `nano-banana` - from 50 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `nano-banana-2` - from 100 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `nano-banana-2-lite` - from 50 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `nano-banana-pro` - from 150 credits/image\n  - Supported resolutions: 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `qwen-edit` - from 10 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Max additional input images: 2\n- `seedream-v4` - from 40 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `seedream-v4.5` - from 50 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `seedream-v5-pro` - from 75 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n"New value: +"The AI model to use for image editing. Each model has different capabilities and costs.\n\n**Models:**\n- `default` - Use the model we recommend, which will change over time. This is recommended unless you need a specific model. This is the default behavior.\n- `flux-2-klein` - from 5 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Max additional input images: 5\n- `gpt-image-2` - from 50 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `gpt-image-2.5-flare` - from 100 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `krea-2` - from 10 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: free, creator, pro, business\n  - Max additional input images: 1\n- `nano-banana` - from 50 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `nano-banana-2` - from 100 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `nano-banana-2-lite` - from 50 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `nano-banana-pro` - from 150 credits/image\n  - Supported resolutions: 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `qwen-edit` - from 10 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Max additional input images: 2\n- `qwen-image-2.1` - from 10 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Max additional input images: 2\n- `seedream-v4` - from 40 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `seedream-v4.5` - from 50 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n- `seedream-v5-pro` - from 75 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: creator, pro, business\n  - Max additional input images: 9\n"
      • changedInput schema / properties / model / enum
        Previous value: -[
        -  "default",
        -  "qwen-edit",
        -  "flux-2-klein",
        -  "nano-banana-2-lite",
        -  "nano-banana-2",
        -  "krea-2",
        -  "gpt-image-2.5-flare",
        -  "gpt-image-2",
        -  "seedream-v5-pro",
        -  "seedream-v4.5",
        -  "seedream-v4",
        -  "nano-banana",
        -  "nano-banana-pro"
        -]New value: +[
        +  "default",
        +  "qwen-image-2.1",
        +  "qwen-edit",
        +  "flux-2-klein",
        +  "nano-banana-2-lite",
        +  "nano-banana-2",
        +  "krea-2",
        +  "gpt-image-2.5-flare",
        +  "gpt-image-2",
        +  "seedream-v5-pro",
        +  "seedream-v4.5",
        +  "seedream-v4",
        +  "nano-banana",
        +  "nano-banana-pro"
        +]
      • changedInput schema / properties / resolution / description
        Previous value: -"Maximum resolution (longest edge) for the output image.\n\n**Options:**\n- `640px` — up to 640px\n- `1k` — up to 1024px\n- `2k` — up to 2048px\n- `4k` — up to 4096px\n- `auto` — **Deprecated.** Mapped server-side from your subscription tier to the best matching resolution the model supports\n\n**Per-model support:**\n- `flux-2-klein` - 640px, 1k, 2k\n- `gpt-image-2` - 640px, 1k, 2k, 4k\n- `gpt-image-2.5-flare` - 640px, 1k, 2k, 4k\n- `krea-2` - 640px, 1k\n- `nano-banana` - 640px, 1k\n- `nano-banana-2` - 640px, 1k, 2k, 4k\n- `nano-banana-2-lite` - 640px, 1k\n- `nano-banana-pro` - 1k, 2k, 4k\n- `qwen-edit` - 640px, 1k, 2k\n- `seedream-v4` - 640px, 1k, 2k, 4k\n- `seedream-v4.5` - 640px, 1k, 2k, 4k\n- `seedream-v5-pro` - 640px, 1k, 2k\n\nNote: Resolution availability depends on the model and your subscription tier."New value: +"Maximum resolution (longest edge) for the output image.\n\n**Options:**\n- `640px` — up to 640px\n- `1k` — up to 1024px\n- `2k` — up to 2048px\n- `4k` — up to 4096px\n- `auto` — **Deprecated.** Mapped server-side from your subscription tier to the best matching resolution the model supports\n\n**Per-model support:**\n- `flux-2-klein` - 640px, 1k, 2k\n- `gpt-image-2` - 640px, 1k, 2k, 4k\n- `gpt-image-2.5-flare` - 640px, 1k, 2k, 4k\n- `krea-2` - 640px, 1k\n- `nano-banana` - 640px, 1k\n- `nano-banana-2` - 640px, 1k, 2k, 4k\n- `nano-banana-2-lite` - 640px, 1k\n- `nano-banana-pro` - 1k, 2k, 4k\n- `qwen-edit` - 640px, 1k, 2k\n- `qwen-image-2.1` - 640px, 1k, 2k\n- `seedream-v4` - 640px, 1k, 2k, 4k\n- `seedream-v4.5` - 640px, 1k, 2k, 4k\n- `seedream-v5-pro` - 640px, 1k, 2k\n\nNote: Resolution availability depends on the model and your subscription tier."
    • Changedai_image_generator_create_image3 fields changed
      • changedInput schema / properties / model / description
        Previous value: -"The AI model to use for image generation. Each model has different capabilities and costs.\n\n**Models:**\n- `default` - Use the model we recommend, which will change over time. This is recommended unless you need a specific model. This is the default behavior.\n- `flux-2-klein` - from 5 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1\n- `flux-schnell` - from 5 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `gpt-image-2` - from 50 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `gpt-image-2.5-flare` - from 100 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `krea-2` - from 10 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1\n- `nano-banana` - from 50 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `nano-banana-2` - from 100 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 4, 9, 16\n- `nano-banana-2-lite` - from 50 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `nano-banana-pro` - from 150 credits/image\n  - Supported resolutions: 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 4, 9, 16\n- `seedream-v4` - from 40 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `seedream-v5-pro` - from 75 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `z-image-turbo` - from 5 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n\n**Deprecated Enum Values:**\n- `seedream` - Use `seedream-v4` instead.\n"New value: +"The AI model to use for image generation. Each model has different capabilities and costs.\n\n**Models:**\n- `default` - Use the model we recommend, which will change over time. This is recommended unless you need a specific model. This is the default behavior.\n- `flux-2-klein` - from 5 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1\n- `flux-schnell` - from 5 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `gpt-image-2` - from 50 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `gpt-image-2.5-flare` - from 100 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `krea-2` - from 10 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1\n- `nano-banana` - from 50 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `nano-banana-2` - from 100 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 4, 9, 16\n- `nano-banana-2-lite` - from 50 credits/image\n  - Supported resolutions: 640px, 1k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `nano-banana-pro` - from 150 credits/image\n  - Supported resolutions: 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 4, 9, 16\n- `qwen-image-2.1` - from 10 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `seedream-v4` - from 40 credits/image\n  - Supported resolutions: 640px, 1k, 2k, 4k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `seedream-v5-pro` - from 75 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n- `z-image-turbo` - from 5 credits/image\n  - Supported resolutions: 640px, 1k, 2k\n  - Available for tiers: free, creator, pro, business\n  - Image count allowed: 1, 2, 3, 4\n\n**Deprecated Enum Values:**\n- `seedream` - Use `seedream-v4` instead.\n"
      • changedInput schema / properties / model / enum
        Previous value: -[
        -  "default",
        -  "z-image-turbo",
        -  "flux-2-klein",
        -  "nano-banana-2-lite",
        -  "nano-banana-2",
        -  "krea-2",
        -  "gpt-image-2.5-flare",
        -  "gpt-image-2",
        -  "seedream-v5-pro",
        -  "seedream-v4",
        -  "nano-banana",
        -  "nano-banana-pro",
        -  "flux-schnell",
        -  "seedream"
        -]New value: +[
        +  "default",
        +  "z-image-turbo",
        +  "qwen-image-2.1",
        +  "flux-2-klein",
        +  "nano-banana-2-lite",
        +  "nano-banana-2",
        +  "krea-2",
        +  "gpt-image-2.5-flare",
        +  "gpt-image-2",
        +  "seedream-v5-pro",
        +  "seedream-v4",
        +  "nano-banana",
        +  "nano-banana-pro",
        +  "flux-schnell",
        +  "seedream"
        +]
      • changedInput schema / properties / resolution / description
        Previous value: -"Maximum resolution (longest edge) for the output image.\n\n**Options:**\n- `640px` — up to 640px\n- `1k` — up to 1024px\n- `2k` — up to 2048px\n- `4k` — up to 4096px\n- `auto` — **Deprecated.** Mapped server-side from your subscription tier to the best matching resolution the model supports\n\n**Per-model support:**\n- `flux-2-klein` - 640px, 1k, 2k\n- `flux-schnell` - 640px, 1k, 2k\n- `gpt-image-2` - 640px, 1k, 2k, 4k\n- `gpt-image-2.5-flare` - 640px, 1k, 2k, 4k\n- `krea-2` - 640px, 1k\n- `nano-banana` - 640px, 1k\n- `nano-banana-2` - 640px, 1k, 2k, 4k\n- `nano-banana-2-lite` - 640px, 1k\n- `nano-banana-pro` - 1k, 2k, 4k\n- `seedream-v4` - 640px, 1k, 2k, 4k\n- `seedream-v5-pro` - 640px, 1k, 2k\n- `z-image-turbo` - 640px, 1k, 2k\n\nNote: Resolution availability depends on the model and your subscription tier."New value: +"Maximum resolution (longest edge) for the output image.\n\n**Options:**\n- `640px` — up to 640px\n- `1k` — up to 1024px\n- `2k` — up to 2048px\n- `4k` — up to 4096px\n- `auto` — **Deprecated.** Mapped server-side from your subscription tier to the best matching resolution the model supports\n\n**Per-model support:**\n- `flux-2-klein` - 640px, 1k, 2k\n- `flux-schnell` - 640px, 1k, 2k\n- `gpt-image-2` - 640px, 1k, 2k, 4k\n- `gpt-image-2.5-flare` - 640px, 1k, 2k, 4k\n- `krea-2` - 640px, 1k\n- `nano-banana` - 640px, 1k\n- `nano-banana-2` - 640px, 1k, 2k, 4k\n- `nano-banana-2-lite` - 640px, 1k\n- `nano-banana-pro` - 1k, 2k, 4k\n- `qwen-image-2.1` - 640px, 1k, 2k\n- `seedream-v4` - 640px, 1k, 2k, 4k\n- `seedream-v5-pro` - 640px, 1k, 2k\n- `z-image-turbo` - 640px, 1k, 2k\n\nNote: Resolution availability depends on the model and your subscription tier."
    • Changedai_talking_photo_create_talking_photo2 fields changed
      • changedInput schema / properties / name / description
        Previous value: -"Give your image a custom name for easy identification."New value: +"Give your video a custom name for easy identification."
      • changedInput schema / properties / name / example
        Previous value: -"My Talking Photo image"New value: +"My Talking Photo video"
    • Changedlip_sync_create_video1 field changed
      • changedInput schema / properties / style / properties / generation_mode / description
        Previous value: -"A specific version of our lip sync system, optimized for different needs.\n* `lite` -  Fast lip sync - best for simple videos. Costs 1 credit per frame of video.\n* `standard` -  Natural, accurate lip sync - best for most creators. Costs 1 credit per frame of video.\n* `pro` -  Premium fidelity with enhanced detail - best for professionals. Costs 2 credits per frame of video.\n\nNote: `standard` and `pro` are only available for users on Creator, Pro, and Business tiers.\n              "New value: +"A specific version of our lip sync system, optimized for different needs.\n* `lite` -  Fast lip sync - best for simple videos. Costs 1 credit per frame of video.\n* `standard` -  Natural, accurate lip sync - best for most creators. Requires visible mouth movement in the opening seconds of the input video. Costs 1 credit per frame of video.\n* `pro` -  Premium fidelity with enhanced detail - best for professionals. Requires visible mouth movement in the opening seconds of the input video. Costs 2 credits per frame of video.\n\nIf your source is a still image, including a still image saved as a static video, use [AI Talking Photo](https://docs.magichour.ai/api-reference/video-projects/ai-talking-photo) with the original image and your audio instead.\n\nNote: `pro` is only available for users on Creator, Pro, and Business tiers.\n              "

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.