Skip to main content
Glama

Generate an AI video

generate_video
Destructive

Starts an AI video on the signed-in account, opens the aicut card and returns the job id at once; it does NOT wait. WHEN: the user asks for a video. Call list_models first this session (an unpublished combination is rejected); see get_recipe starter-video. CONSENT: a real person's picture only with their permission, never a public figure or celebrity. seedance-2.5 and seedance-2.0-mini often refuse a real person's image: say so BEFORE the ask, quote that it may be refused, and offer a generated character or another model. THE CARD: this call already opened the aicut card: do not call show_generation for this job. WAIT: wait_for_generation (this id, media), again at once while terminal: false, then one short line; no get_* polling, timers, background shells or narrating the wait. No card? Give the user the url. TIMING: a video takes 1-3 minutes, up to about 6: do not assume it failed before then. COST: this spends the user's tokens. SPENDS TOKENS: price with estimate_only: true, ask in the SAME message as the price, and wait for a go that names THIS purchase (SPENDING RULES, this server's instructions). IDEMPOTENCY: a reused idempotency_key REPLAYS the first job whatever the settings: never reuse one for a new generation (this server's instructions).

Input Schema

NameRequiredDescriptionDefault
audioNoSound on the video, where supported (`list_models` says whether it costs extra). DEFAULTS TO FALSE: a model sold on native audio still renders SILENT unless set for the sound, dialogue or effects the user asked for. Only if the user asked; never to save tokens, never carried over.
modelYesModel id exactly as `list_models` returns it (e.g. `kling-3.0`). Use the one the user asked for; never substitute a cheaper model to save them tokens.
promptNoWhat the video should show; `list_models` gives the character limit.
scenesNoA storyboard instead of one prompt, returned as ONE video. Only where published (today `kling-3.0`): at most 5 scenes of 1-15s, 3-15s in total. Replaces `prompt`, `duration` and every image input; `model`, `resolution` and `aspect_ratio` stay REQUIRED. Priced as one generation of the combined duration; `estimate_only` first.
durationNoSeconds, one of the model's durations; longer costs more. Only if the user asked; never to save tokens, never carried over.
end_imageNo
keyframesNo
resolutionNoOne of the model's options (e.g. `1080p`); higher costs more. Only if the user asked; never to save tokens, never carried over.
start_imageNoStart image URL: a public https URL or this account's earlier generation.
aspect_ratioNoOne of the model's `aspect_ratios` (e.g. `9:16`).
character_idsNoIds of this account's UPLOADED characters (`kind: "uploaded"` in `list_characters`, up to 20, in order of appearance): a start frame placing them is drawn first (flat 0.2 tokens, included in `estimate_only`), so not with `scenes` or references. A `cast_member` id belongs to `generate_story_video`.
estimate_onlyNoPrice only; creates nothing.
idempotency_keyNoRetry-safety key (IDEMPOTENCY).
reference_audiosNoAudio the video performs to (lip-sync): `{url, start_seconds, end_seconds}` of an own generation or upload; windows 2-30 s each, 30 s in total, no window = the whole file. Only where `list_models` roles include `reference_audio`; not with start/end images.
reference_imagesNoStyle or subject reference image URLs where the model accepts them; rules as `start_image`.
reference_videosNoReference video URLs where the model accepts them: own media or public (imported), never another account's.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • removedInput schema / properties / end_image / description
      Removed value: -"End-frame image URL; rules as `start_image`."
    • addedInput schema / properties / keyframes
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "seconds": {
      +        "type": "number"
      +      },
      +      "url": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "url",
      +      "seconds"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / reference_images / description
      Previous value: -"Image URLs for style or subject references, where the model accepts them; rules as `start_image`."New value: +"Style or subject reference image URLs where the model accepts them; rules as `start_image`."
    • changedInput schema / properties / reference_videos / description
      Previous value: -"Reference video URLs, where the model accepts them: own media or a public video (imported), never another account's."New value: +"Reference video URLs where the model accepts them: own media or public (imported), never another account's."
    • changedInput schema / properties / scenes / description
      Previous value: -"A storyboard instead of one prompt, returned as ONE video. Only on models that publish it (today `kling-3.0`): at most 5 scenes, each 1-15s, 3-15s in total, else refused. Omit `prompt`/`duration`/`start_image`/`end_image`/`reference_images`; `model`, `resolution` and `aspect_ratio` stay REQUIRED. Priced as one generation of the combined duration; `estimate_only` first."New value: +"A storyboard instead of one prompt, returned as ONE video. Only where published (today `kling-3.0`): at most 5 scenes of 1-15s, 3-15s in total. Replaces `prompt`, `duration` and every image input; `model`, `resolution` and `aspect_ratio` stay REQUIRED. Priced as one generation of the combined duration; `estimate_only` first."
    • changedInput schema / properties / scenes / items / properties / duration / description
      Previous value: -"This scene's own length in seconds."New value: +"Scene seconds."
    • changedInput schema / properties / scenes / items / properties / prompt / description
      Previous value: -"This scene's own prompt: what happens in this shot."New value: +"This scene's own prompt."
    • changedInput schema / properties / start_image / description
      Previous value: -"Image URL to start from: a public https URL or this account's earlier generation."New value: +"Start image URL: a public https URL or this account's earlier generation."
  2. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Goes well beyond the annotations: async/non-blocking behavior, consent rules for real people, the seedance refusal warning, the card already being opened, the no-polling rule, 1-3 (up to ~6) minute timing, token spend, and idempotency-key replay semantics. The only gap is that the annotations declare destructiveHint=true while the description never frames the operation as destructive — it says 'spends tokens' but not that a job cannot be undone or that credits are consumed even on refusal. Not a contradiction, but an underused opportunity.

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?

Labeled sections (WHEN, CONSENT, CARD, WAIT, TIMING, COST, IDEMPOTENCY) make it scannable and the non-blocking contract is front-loaded in sentence one. It is dense and pushes the practical limit of length, but nearly every clause encodes a distinct failure mode an agent would otherwise hit.

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 16-parameter generative tool with no output schema, the description covers the return value (job id), the card side effect, the required follow-up call, waiting/timing expectations, and the pricing flow. An agent has everything needed to invoke it and handle the result without guessing.

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 88%, so the schema already carries most parameter meaning and baseline would be 3. The description still adds real workflow semantics on top: price with `estimate_only: true` in the same message, never reuse an `idempotency_key`, and the scenes/images mutual-exclusion consequences. `end_image` and `keyframes` remain undocumented in both places.

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 and an explicit async contract: 'Starts an AI video on the signed-in account, opens the aicut card and returns the job id at once; it does NOT wait.' That distinguishes it immediately from `wait_for_generation`, `show_generation`, and `generate_story_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?

Gives an explicit WHEN trigger, a prerequisite ('Call `list_models` first this session'), a recipe pointer, and named alternatives/handoffs (`show_generation`, `wait_for_generation`, `generate_story_video` for cast members). Exclusions are stated, not inferred.

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.

Directories

Listed in ChatGPT · aicut

Last observed