Skip to main content
Glama

Generate video

generate_video
DestructiveIdempotent

Make an AI video: a product ad, a vertical clip for social, a cinematic shot, or animate a photo into video (image-to-video). Requires a quote_id from estimate_credit_cost so the price is agreed first; then returns a job id to poll with get_generation. Credits are charged only when the video succeeds. SIGN-IN REQUIRED: connect this server with OAuth (the host prompts for it), or add an API key header "Authorization: Bearer acd_live_…" created at https://aicontentdrop.com/settings/integrations.

Input Schema

NameRequiredDescriptionDefault
modelNoModel ID from list_models, e.g. "kling_3_0". Must match the quoted model; omitted means the quoted model.
promptYesWhat the video should show. Detailed prompts produce better results.
durationNoLength in seconds. Must match the quoted duration for per-second models.
quote_idYesThe quote_id from estimate_credit_cost for this exact model, duration and resolution. Required.
image_urlNoPublic image URL to animate (image-to-video). Required for models whose list_models entry has needs_start_image; optional for the rest.
resolutionNoe.g. "720p" or "1080p". Must match the quoted resolution for per-second models.
aspect_ratioNoDefaults to 16:9. Use 9:16 for vertical social clips.
reference_video_urlNoOptional public https URL of a reference video (for example a 3D blockout playblast) whose camera movement, shot rhythm and subject motion the generation must follow. seedance_2_5 (30 s max) or seedance_2_0_fast (15 s max, 720p). The quote must have been priced with reference_video_seconds equal to this clip's length rounded up; the server measures the clip and refuses on mismatch.

Output Schema

NameRequiredDescriptionDefault
idYesPoll this with get_generation.
kindYes
modelNo
statusYes
replayedYesTrue when this quote_id had already been submitted and the original job was returned.
image_urlNoNull until the render finishes.
next_stepYesWhat to do next, in words, so a model need not infer it.
unlimitedNo
video_urlNoNull until the render finishes.
credits_usedYes0 until the render succeeds; billing is post-deduct.
credits_quotedYesThe price fixed by the quote.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / image_url / description
      Previous value: -"Optional public image URL to animate (image-to-video)."New value: +"Public image URL to animate (image-to-video). Required for models whose list_models entry has needs_start_image; optional for the rest."
  2. Changed1 schema field changed
    • addedInput schema / properties / reference_video_url
      Added value: +{
      +  "description": "Optional public https URL of a reference video (for example a 3D blockout playblast) whose camera movement, shot rhythm and subject motion the generation must follow. seedance_2_5 (30 s max) or seedance_2_0_fast (15 s max, 720p). The quote must have been priced with reference_video_seconds equal to this clip's length rounded up; the server measures the clip and refuses on mismatch.",
      +  "type": "string"
      +}
  3. Changed12 schema fields changed
    • changedInput schema / properties / aspect_ratio / description
      Previous value: -"Defaults to 16:9."New value: +"Defaults to 16:9. Use 9:16 for vertical social clips."
    • changedInput schema / properties / duration / description
      Previous value: -"Length in seconds. Defaults to 5."New value: +"Length in seconds. Must match the quoted duration for per-second models."
    • changedInput schema / properties / model / description
      Previous value: -"Model ID from list_models, e.g. \"kling_3_0\". Omitted means the platform picks a suitable one."New value: +"Model ID from list_models, e.g. \"kling_3_0\". Must match the quoted model; omitted means the quoted model."
    • addedInput schema / properties / quote_id
      Added value: +{
      +  "description": "The quote_id from estimate_credit_cost for this exact model, duration and resolution. Required.",
      +  "type": "string"
      +}
    • addedInput schema / properties / resolution
      Added value: +{
      +  "description": "e.g. \"720p\" or \"1080p\". Must match the quoted resolution for per-second models.",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "prompt"
      -]New value: +[
      +  "prompt",
      +  "quote_id"
      +]
    • addedOutput schema / properties / credits_quoted
      Added value: +{
      +  "description": "The price fixed by the quote.",
      +  "type": "number"
      +}
    • changedOutput schema / properties / credits_used / description
      Previous value: -"0 until the render succeeds — billing is post-deduct."New value: +"0 until the render succeeds; billing is post-deduct."
    • addedOutput schema / properties / image_url
      Added value: +{
      +  "description": "Null until the render finishes.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / kind
      Added value: +{
      +  "enum": [
      +    "video",
      +    "image"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / replayed
      Added value: +{
      +  "description": "True when this quote_id had already been submitted and the original job was returned.",
      +  "type": "boolean"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "status",
      -  "credits_used",
      -  "next_step"
      -]New value: +[
      +  "id",
      +  "kind",
      +  "status",
      +  "credits_quoted",
      +  "credits_used",
      +  "replayed",
      +  "next_step"
      +]
  4. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true, and openWorldHint=true. The description adds valuable behavioral context beyond annotations: credits are charged only on success, sign-in is required via OAuth or API key, and the tool returns an asynchronous job id for polling. This goes well beyond the safety profile in annotations, though it doesn't elaborate on idempotency or 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.

Conciseness4/5

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

The description is front-loaded with the core purpose, followed by workflow prerequisites, billing behavior, and authentication requirements. It is structured and every sentence contributes useful information, though it could be slightly more concise by omitting redundant details like the full API key example URL.

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 that an output schema exists and annotations cover the safety profile, the description is complete enough for an agent to call the tool correctly. It covers the necessary prerequisites (quote_id), async job handling, billing on success, and authentication requirements. Minor gaps like model selection constraints are adequately addressed by the input 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%, meaning all eight parameters are well-documented in the schema itself. The description mentions quote_id and the polling workflow with get_generation, but does not add syntax or format details beyond what the schema already provides. Baseline 3 is appropriate when the schema does the heavy lifting.

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 starts with a specific verb and resource: 'Make an AI video: a product ad, a vertical clip for social, a cinematic shot, or animate a photo into video (image-to-video).' This clearly states what the tool does and covers multiple use cases, distinguishing it from image generation siblings. However, it does not explicitly differentiate from other video generation siblings like generate_ugc_video, so it falls 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?

The description provides clear workflow context: 'Requires a quote_id from estimate_credit_cost so the price is agreed first; then returns a job id to poll with get_generation.' This tells the agent exactly when to use this tool (after getting a quote and before polling). It lacks explicit when-not guidance or comparison to alternative sibling tools, which keeps it from a 5.

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.