Skip to main content
Glama

Generate clip

generate_clip

Start a short video clip generation. This spends credits, or runs on the user's own key (get_credits), and returns immediately. Search list_recipes and read promising matches with get_recipe before choosing a model. Prefer a close-fitting recipe through generate_with_recipe; use this direct tool when none fits, with parameters from the chosen model's guide. Presets add Style, Motion, Lighting and Framing through the presets map. Name the account's Subjects in subjects — the server seats each one's face. Several models require a reference image, video or audio track — list_models has each model's durations, resolutions and required_inputs; create_upload, import_media or request_upload_link bring media in. One call is one shot. Longer motion: carry the last frame into the next call (extract_video_frame), then join_clips. Speech is the exception: each line of at most 15 seconds starts from the same portrait, never a chained frame. Models (credits for 5s at 720p):

  • seedance-2.5: ~96.5

  • seedance-2.0: ~75

  • seedance-2.0-fast: ~62.5

  • seedance-2.0-mini: ~37.5

  • grok-imagine-video-1.5: ~33.5, needs image

  • veo-3.1: ~83.5

  • veo-3.1-fast: ~42

  • veo-3.1-lite: ~21

  • gemini-omni-1.1: ~62.5, length set by input

  • kling-v3-omni-video: ~70

  • kling-v3-video: ~70

  • happyhorse-1.0: ~58.5

  • wan-3: ~42

  • wan-3-prime: ~58.5

  • gen-4.5: ~50

  • p-video: ~8.5

  • p-video-2: ~12.5

  • flux-3: ~71

  • minimax-h3-max: ~33.5

  • p-video-avatar: ~10.5, needs image+audio, length set by input

  • p-video-animate: ~12.5, needs image+video, length set by input

  • p-video-replace: ~12.5, needs image+video, length set by input

  • omni-human-1.5: ~67, needs image+audio, length set by input

  • kling-avatar-v2: ~22, needs image+audio, length set by input

  • kling-v3-motion-control: ~29.5, needs image+video, length set by input

  • sync-lipsync-2: ~21, needs video+audio, length set by input

  • kling-lip-sync: ~6, needs video, length set by input …and 2 more; list_models has every model.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "generate_clip"
  }
}

Input Schema

NameRequiredDescriptionDefault
modelNo
promptNo
presetsNo
runs_onNoWho pays: "credits", or one of the user's own keys by vendor (get_credits lists them). Leave out to follow their payer order; set it only when the user chose.
subjectsNoNames or ids of the account's Subjects (list_subjects). The server supplies each one's face and description — seated against the model's capacity — so do not also attach pictures of them.
last_frameNo
resolutionNo
first_frameNo
recreate_ofNo
aspect_ratioNoDefaults to 9:16 (vertical). Confirm the shape with the user when the destination is unclear — a feed, a banner and a phone screen want different ones. With a first frame, leave it out: the clip takes the frame's own shape, and a ratio that disagrees with the frame is refused.
generate_audioNo
idempotency_keyNoOptional. Pass the same value to retry one operation without spending twice; omit it for a new operation. Different arguments under a reused key are refused.
duration_secondsNo
reference_audiosNo
reference_imagesNo
reference_videosNoThe video this clip is driven by — a source performance to copy, or the take a mouth is re-synced in. Uploads and clips you generated alike, in the shape list_media returns.

Output Schema

NameRequiredDescriptionDefault
messageYes
generationYesOne image, clip, voice-over or piece of music.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed21 schema fields changed
    • changedInput schema / properties / runs_on / enum
      Previous value: -[
      -  "credits",
      -  "replicate",
      -  "fal",
      -  "siray",
      -  "runware",
      -  "higgsfield",
      -  "sunra"
      -]New value: +[
      +  "credits",
      +  "replicate",
      +  "fal",
      +  "siray",
      +  "runware",
      +  "higgsfield",
      +  "sunra",
      +  "comfy"
      +]
    • addedOutput schema / properties / generation / description
      Added value: +"One image, clip, voice-over or piece of music."
    • addedOutput schema / properties / generation / properties / app_url / description
      Added value: +"Opens it in the app."
    • addedOutput schema / properties / generation / properties / aspect_ratio / description
      Added value: +"Null for audio."
    • addedOutput schema / properties / generation / properties / created_at / format
      Added value: +"date-time"
    • addedOutput schema / properties / generation / properties / credits
      Added value: +{
      +  "description": "Credits charged. Zero when your own provider key or the free allowance paid.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • removedOutput schema / properties / generation / properties / credits_cost
      Removed value: -{
      -  "type": [
      -    "number",
      -    "null"
      -  ]
      -}
    • addedOutput schema / properties / generation / properties / error / description
      Added value: +"Why it failed. Null otherwise."
    • removedOutput schema / properties / generation / properties / generation_id
      Removed value: -{
      -  "format": "uuid",
      -  "type": "string"
      -}
    • addedOutput schema / properties / generation / properties / id
      Added value: +{
      +  "format": "uuid",
      +  "type": "string"
      +}
    • removedOutput schema / properties / generation / properties / kind
      Removed value: -{
      -  "enum": [
      -    "image",
      -    "video",
      -    "audio",
      -    "tool"
      -  ],
      -  "type": "string"
      -}
    • addedOutput schema / properties / generation / properties / model / description
      Added value: +"The model id it was made with (`GET /v1/models`)."
    • addedOutput schema / properties / generation / properties / object
      Added value: +{
      +  "const": "generation",
      +  "type": "string"
      +}
    • addedOutput schema / properties / generation / properties / output_url / description
      Added value: +"The finished file, once `ready`. A signed link that works for about an hour; read the generation again for a fresh one."
    • addedOutput schema / properties / generation / properties / paid_by / description
      Added value: +"Who paid: \"credits\", \"house\" (the free allowance), \"server\" (a server that charges nothing), or the vendor of your own key (\"replicate\", \"fal\", …)."
    • addedOutput schema / properties / generation / properties / ready_in_seconds / description
      Added value: +"Roughly how long an unfinished generation has left; 0 means past its usual time."
    • addedOutput schema / properties / generation / properties / recipe_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/properties/generation/properties/id"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "The recipe it was made with, if any."
      +}
    • addedOutput schema / properties / generation / properties / status / description
      Added value: +"`ready` and `failed` are final."
    • addedOutput schema / properties / generation / properties / thumbnail_url
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/properties/generation/properties/output_url/anyOf/0"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "A small still of the result, for a grid. Null for audio and while it works."
      +}
    • addedOutput schema / properties / generation / properties / type
      Added value: +{
      +  "description": "What was made. New values may be added; treat an unknown one as opaque.",
      +  "enum": [
      +    "image",
      +    "clip",
      +    "voiceover",
      +    "music",
      +    "tool"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / generation / required
      Previous value: -[
      -  "generation_id",
      -  "kind",
      -  "status",
      -  "model",
      -  "prompt",
      -  "aspect_ratio",
      -  "refined_from",
      -  "caption_style",
      -  "output_url",
      -  "credits_cost",
      -  "paid_by",
      -  "error",
      -  "vendor_phase",
      -  "stalled",
      -  "ready_in_seconds",
      -  "created_at",
      -  "app_url"
      -]New value: +[
      +  "object",
      +  "id",
      +  "type",
      +  "status",
      +  "model",
      +  "prompt",
      +  "aspect_ratio",
      +  "output_url",
      +  "thumbnail_url",
      +  "credits",
      +  "paid_by",
      +  "error",
      +  "ready_in_seconds",
      +  "recipe_id",
      +  "created_at",
      +  "app_url",
      +  "refined_from",
      +  "caption_style",
      +  "vendor_phase",
      +  "stalled"
      +]
  2. Changed3 schema fields changed
    • addedInput schema / properties / runs_on
      Added value: +{
      +  "description": "Who pays: \"credits\", or one of the user's own keys by vendor (get_credits lists them). Leave out to follow their payer order; set it only when the user chose.",
      +  "enum": [
      +    "credits",
      +    "replicate",
      +    "fal",
      +    "siray",
      +    "runware",
      +    "higgsfield",
      +    "sunra"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / generation / properties / paid_by
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / generation / required
      Previous value: -[
      -  "generation_id",
      -  "kind",
      -  "status",
      -  "model",
      -  "prompt",
      -  "aspect_ratio",
      -  "refined_from",
      -  "caption_style",
      -  "output_url",
      -  "credits_cost",
      -  "error",
      -  "vendor_phase",
      -  "stalled",
      -  "ready_in_seconds",
      -  "created_at",
      -  "app_url"
      -]New value: +[
      +  "generation_id",
      +  "kind",
      +  "status",
      +  "model",
      +  "prompt",
      +  "aspect_ratio",
      +  "refined_from",
      +  "caption_style",
      +  "output_url",
      +  "credits_cost",
      +  "paid_by",
      +  "error",
      +  "vendor_phase",
      +  "stalled",
      +  "ready_in_seconds",
      +  "created_at",
      +  "app_url"
      +]
  3. Changed2 schema fields changed
    • addedOutput schema / properties / generation / properties / ready_in_seconds
      Added value: +{
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / generation / required
      Previous value: -[
      -  "generation_id",
      -  "kind",
      -  "status",
      -  "model",
      -  "prompt",
      -  "aspect_ratio",
      -  "refined_from",
      -  "caption_style",
      -  "output_url",
      -  "credits_cost",
      -  "error",
      -  "vendor_phase",
      -  "stalled",
      -  "created_at",
      -  "app_url"
      -]New value: +[
      +  "generation_id",
      +  "kind",
      +  "status",
      +  "model",
      +  "prompt",
      +  "aspect_ratio",
      +  "refined_from",
      +  "caption_style",
      +  "output_url",
      +  "credits_cost",
      +  "error",
      +  "vendor_phase",
      +  "stalled",
      +  "ready_in_seconds",
      +  "created_at",
      +  "app_url"
      +]
  4. Changed3 schema fields changed
    • changedInput schema / properties / reference_audios / maxItems
      Previous value: -3New value: +10
    • changedInput schema / properties / reference_images / maxItems
      Previous value: -9New value: +30
    • changedInput schema / properties / reference_videos / maxItems
      Previous value: -3New value: +10
  5. Changed1 schema field changed
    • changedInput schema / properties / duration_seconds / anyOf
      Previous value: -[
      -  {
      -    "const": -1,
      -    "type": "number"
      -  },
      -  {
      -    "maximum": 15,
      -    "minimum": 1,
      -    "type": "integer"
      -  }
      -]New value: +[
      +  {
      +    "const": -1,
      +    "type": "number"
      +  },
      +  {
      +    "maximum": 1800,
      +    "minimum": 1,
      +    "type": "integer"
      +  }
      +]
  6. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only declare the generic non-read-only, non-destructive, non-idempotent profile; the description adds real substance beyond that — it spends credits or runs on the user's own key, it returns immediately (async), each model has distinct required inputs and lengths, and one call is one shot. What it doesn't state is what a failure or credit-refund looks like, or that the returned job must be polled via get_generation, leaving a small gap.

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

Conciseness3/5

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

The action and the recipe-first routing are front-loaded correctly, but the 27-entry credit table dominates the description and is partly duplicated by list_models ("…and 2 more; list_models has every model"). The cost figures are genuinely decision-relevant, yet the volume pushes an otherwise tight description well past the point of easy 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 16-parameter, nested-object, high-variance generation tool, the description covers model selection, input requirements, chaining strategy, cost, and routing to the recipe path. An output schema exists, so return-value explanation is correctly omitted, and nothing an agent needs before calling 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 only 31% across 16 parameters, and the description compensates for the highest-value ones: the model enum is annotated with per-model credit cost and required media, the presets map is explained as Style/Motion/Lighting/Framing, subjects is clarified as account Subjects whose faces the server seats, and last_frame is tied to the chaining workflow. It adds nothing for resolution, generate_audio, recreate_of, or prompt length limits, which keeps it below a 5.

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 and resource ("Start a short video clip generation") and immediately distinguishes itself from the sibling generate_with_recipe by naming the fallback condition. An agent knows exactly what this tool produces versus animate_image, generate_with_recipe, or the storyboard tools.

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 prescribes the workflow: search list_recipes, read get_recipe, prefer generate_with_recipe, and use this direct tool only when no recipe fits. It also gives conditional guidance for chained motion (extract_video_frame then join_clips), the speech exception, and media import paths (create_upload, import_media, request_upload_link).

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.

Resources