Skip to main content
Glama

Create a video

create_video

Start generating a video from a text description with GenMagic (or animate an image: pass 'image' as the opening frame), with any text-to-video model, clip length, resolution and sound the model supports (list_models with category "video" shows them and the per-second price). Video is asynchronous, so this returns a job id immediately (nothing is charged yet). Poll it with the get_video tool every few seconds until the status is "completed" to get the hosted video URL. A failed render is never charged. On-brand automatically when the account has brand personalization on.

Input Schema

NameRequiredDescriptionDefault
imageNoOptional image (an https URL or a data:image URL) the clip opens on: image-to-video. The prompt then describes the motion. list_models shows each model's frame_images, and in its video prices image_input_usd or image_to_video_usd_per_second where a model bills image-to-video apart.
modelNoOptional GenMagic model id for the video (call list_models with category "video" for the ids and prices). Omit it to let GenMagic choose its default.
promptYesA description of the video to create.
durationNoClip length in seconds, one of the lengths the model supports (list_models shows durations_seconds). Omit for the model's default.
last_frameNoOptional image (an https URL or a data:image URL) the clip ends on, for models whose frame_images include last_frame.
referencesNoOptional reference images (https URLs or data:image URLs) of characters, objects or a look the clip keeps consistent, none of them a frame of it: reference-to-video. Name what each shows in the prompt. Not combined with image or last_frame. list_models marks the models made for it with references: true.
resolutionNoOutput resolution the model supports, e.g. 720p or 1080p (list_models shows resolutions). Omit for the model's default.
aspect_ratioNoAspect ratio: 16:9 (landscape), 9:16 (portrait), or 1:1 (square). Defaults to the opening image's shape when 'image' is portrait or landscape, otherwise 16:9.
generate_audioNoGenerate sound with the clip on models that support it (list_models shows audio_supported; a model with audio_always makes sound on every clip). Omit for the model's default.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / aspect_ratio / description
      Previous value: -"Aspect ratio: 16:9 (landscape), 9:16 (portrait), or 1:1 (square). Defaults to 16:9."New value: +"Aspect ratio: 16:9 (landscape), 9:16 (portrait), or 1:1 (square). Defaults to the opening image's shape when 'image' is portrait or landscape, otherwise 16:9."
    • removedInput schema / properties / audio
      Removed value: -{
      -  "description": "Optional https URL of an MP3 or WAV voice line or track (2 to 30 seconds) the clip speaks or moves to, so one voice made once with generate_speech carries every clip of a character. Only for models that take audio (Wan 2.6 and 2.7); with no model named, one that does is chosen.",
      -  "type": "string"
      -}
    • changedInput schema / properties / generate_audio / description
      Previous value: -"Generate sound with the clip on models that support it (list_models shows audio_supported). Omit for the model's default."New value: +"Generate sound with the clip on models that support it (list_models shows audio_supported; a model with audio_always makes sound on every clip). Omit for the model's default."
  2. Changed1 schema field changed
    • addedInput schema / properties / audio
      Added value: +{
      +  "description": "Optional https URL of an MP3 or WAV voice line or track (2 to 30 seconds) the clip speaks or moves to, so one voice made once with generate_speech carries every clip of a character. Only for models that take audio (Wan 2.6 and 2.7); with no model named, one that does is chosen.",
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / references
      Added value: +{
      +  "description": "Optional reference images (https URLs or data:image URLs) of characters, objects or a look the clip keeps consistent, none of them a frame of it: reference-to-video. Name what each shows in the prompt. Not combined with image or last_frame. list_models marks the models made for it with references: true.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 9,
      +  "type": "array"
      +}
  4. Changed1 schema field changed
    • changedInput schema / properties / image / description
      Previous value: -"Optional image (an https URL or a data:image URL) the clip opens on: image-to-video. The prompt then describes the motion. list_models shows each model's frame_images."New value: +"Optional image (an https URL or a data:image URL) the clip opens on: image-to-video. The prompt then describes the motion. list_models shows each model's frame_images, and in its video prices image_input_usd or image_to_video_usd_per_second where a model bills image-to-video apart."
  5. Changed2 schema fields changed
    • addedInput schema / properties / image
      Added value: +{
      +  "description": "Optional image (an https URL or a data:image URL) the clip opens on: image-to-video. The prompt then describes the motion. list_models shows each model's frame_images.",
      +  "type": "string"
      +}
    • addedInput schema / properties / last_frame
      Added value: +{
      +  "description": "Optional image (an https URL or a data:image URL) the clip ends on, for models whose frame_images include last_frame.",
      +  "type": "string"
      +}
  6. Changed4 schema fields changed
    • addedInput schema / properties / duration
      Added value: +{
      +  "description": "Clip length in seconds, one of the lengths the model supports (list_models shows durations_seconds). Omit for the model's default.",
      +  "type": "integer"
      +}
    • addedInput schema / properties / generate_audio
      Added value: +{
      +  "description": "Generate sound with the clip on models that support it (list_models shows audio_supported). Omit for the model's default.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / model
      Added value: +{
      +  "description": "Optional GenMagic model id for the video (call list_models with category \"video\" for the ids and prices). Omit it to let GenMagic choose its default.",
      +  "type": "string"
      +}
    • addedInput schema / properties / resolution
      Added value: +{
      +  "description": "Output resolution the model supports, e.g. 720p or 1080p (list_models shows resolutions). Omit for the model's default.",
      +  "type": "string"
      +}
  7. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that nothing is charged at submit time, that failed renders are never billed, that the call returns a job id rather than a video, and that brand personalization applies automatically when enabled. These are exactly the cost/asynchrony facts an agent needs and that no structured field carries.

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

Conciseness4/5

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

Front-loaded with the core action, then the async/polling rule, then billing. Dense and purposeful, though the opening sentence is long and chains several qualifiers that could be split for faster scanning.

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 9-parameter, non-idempotent, open-world generation tool with no output schema, the description covers the full lifecycle: submission, job id return, polling contract, billing edge cases, and where to look up model capabilities. Nothing essential is missing.

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

Parameters3/5

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

Schema coverage is 100% and each parameter already documents itself thoroughly (including frame_images, references exclusivity, and aspect_ratio defaulting). The description largely restates that information at a high level rather than adding new semantics, so the baseline 3 is appropriate despite the strong prose.

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

Purpose5/5

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

Opens with a specific verb+resource ('Start generating a video from a text description with GenMagic') and immediately covers the image-to-video variant, which distinguishes it from generate_image and the other generators. The model/pricing pointer to list_models tells the agent exactly where to resolve downstream choices.

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

Usage Guidelines5/5

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

Explicitly states the async contract and the required follow-up ('Poll it with the get_video tool every few seconds until status is completed'), names list_models as the source of valid models/lengths/prices, and gives the condition for using the image path. Very little is left to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.