Skip to main content
Glama

Quote a generation

quote_generation
Read-onlyIdempotent

Price a request exactly, and compare it to the balance, without creating anything. target picks the room: image, clip, voice (the generate_voiceover arguments) or guided (a guided recipe). Takes the same arguments as the matching generate tool. To price a whole plan — a voice-over and the clips it drives, say — pass requests instead: up to 20 of the same objects, each with its own target. The answer is one line per request, the total and whether the balance covers it; a line that cannot run says why and the rest still price. An avatar clip whose reference audio already exists is priced at that audio's length. Use only the account's existing entitlements: when a plan does not fit, explain it without offering purchases.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textNo
modelNo
speedNo
voiceNo
inputsNo
promptNo
targetNo
choicesNo
emotionNo
presetsNo
settingNo
subjectNo
model_idNo
requestsNo
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.
recipe_idNo
last_frameNo
referencesNoThe pictures this generation can see — uploads and generations alike, in the shape list_media returns. This is the only field that carries image data into the model. The selected model’s reference capacity applies (list_models).
resolutionNo
first_frameNo
recreate_ofNo
aspect_ratioNo
refined_fromNoLineage only — this records that the new image is the next version of that one, and carries NO pixels. Put the same generation in `references` or the model sees no picture. Prefer edit_image, which sets both from one id; reach for this only to hand-assemble a refine edit_image cannot express.
style_promptNo
language_codeNo
generate_audioNo
creative_promptNo
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

TableJSON Schema
NameRequiredDescriptionDefault
linesYes
policyYes
creditsYes
messageYes
affordableYes
aspect_ratioYes
available_creditsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / choices / additionalProperties / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "type": "string"
      +    },
      +    "maxItems": 16,
      +    "minItems": 1,
      +    "type": "array"
      +  }
      +]
    • removedInput schema / properties / choices / additionalProperties / type
      Removed value: -"string"
  2. 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
  3. Changed4 schema fields changed
    • changedInput schema / properties / aspect_ratio / enum
      Previous value: -[
      -  "1:1",
      -  "1:4",
      -  "1:8",
      -  "2:3",
      -  "3:2",
      -  "3:4",
      -  "4:1",
      -  "4:3",
      -  "4:5",
      -  "5:4",
      -  "8:1",
      -  "9:16",
      -  "16:9",
      -  "21:9",
      -  "adaptive"
      -]New value: +[
      +  "1:1",
      +  "1:2",
      +  "1:4",
      +  "1:8",
      +  "2:1",
      +  "2:3",
      +  "3:2",
      +  "3:4",
      +  "4:1",
      +  "4:3",
      +  "4:5",
      +  "5:4",
      +  "8:1",
      +  "9:16",
      +  "16:9",
      +  "21:9",
      +  "adaptive"
      +]
    • 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"
      +  }
      +]
    • changedInput schema / properties / model / enum
      Previous value: -[
      -  "seedream-5-lite",
      -  "nano-banana-2.1",
      -  "nano-banana-2",
      -  "gpt-image-2.5-flare",
      -  "gpt-image-2.5-sunburst",
      -  "gpt-image-2",
      -  "nano-banana-2-lite",
      -  "seedream-5-pro",
      -  "flux-schnell",
      -  "flux-2-flex",
      -  "flux-2-pro",
      -  "flux-2-max",
      -  "recraft-v4.1-svg",
      -  "recraft-v4.1-pro-svg",
      -  "p-image",
      -  "grok-imagine-image",
      -  "grok-imagine-image-quality",
      -  "soul-2",
      -  "seedance-2.5",
      -  "seedance-2.0",
      -  "seedance-2.0-fast",
      -  "seedance-2.0-mini",
      -  "grok-imagine-video-1.5",
      -  "veo-3.1",
      -  "veo-3.1-fast",
      -  "veo-3.1-lite",
      -  "gemini-omni-1.1",
      -  "kling-v3-omni-video",
      -  "kling-v3-video",
      -  "happyhorse-1.0",
      -  "wan-3",
      -  "wan-3-prime",
      -  "gen-4.5",
      -  "p-video",
      -  "p-video-2",
      -  "flux-3",
      -  "minimax-h3-max",
      -  "p-video-avatar",
      -  "p-video-animate",
      -  "p-video-replace",
      -  "omni-human-1.5",
      -  "kling-avatar-v2",
      -  "kling-v3-motion-control",
      -  "sync-lipsync-2",
      -  "kling-lip-sync",
      -  "genjutsu-motion-transfer",
      -  "genjutsu-object-swap",
      -  "elevenlabs-tts",
      -  "eleven-v4",
      -  "gemini-3.1-flash-tts",
      -  "kokoro-82m",
      -  "minimax-speech-2.8-hd",
      -  "inworld-tts-2"
      -]New value: +[
      +  "seedream-5-lite",
      +  "nano-banana-2.1",
      +  "nano-banana-2",
      +  "gpt-image-2.5-flare",
      +  "gpt-image-2.5-sunburst",
      +  "gpt-image-2",
      +  "nano-banana-2-lite",
      +  "seedream-5-pro",
      +  "flux-schnell",
      +  "flux-2-flex",
      +  "flux-2-pro",
      +  "flux-2-max",
      +  "recraft-v4.1-svg",
      +  "recraft-v4.1-pro-svg",
      +  "p-image",
      +  "grok-imagine-image",
      +  "grok-imagine-image-quality",
      +  "krea-3",
      +  "qwen-image-3-pro",
      +  "soul-2",
      +  "seedance-2.5",
      +  "seedance-2.0",
      +  "seedance-2.0-fast",
      +  "seedance-2.0-mini",
      +  "grok-imagine-video-1.5",
      +  "veo-3.1",
      +  "veo-3.1-fast",
      +  "veo-3.1-lite",
      +  "gemini-omni-1.1",
      +  "kling-v3-omni-video",
      +  "kling-v3-video",
      +  "happyhorse-1.0",
      +  "wan-3",
      +  "wan-3-prime",
      +  "gen-4.5",
      +  "p-video",
      +  "p-video-2",
      +  "flux-3",
      +  "minimax-h3-max",
      +  "p-video-avatar",
      +  "p-video-animate",
      +  "p-video-replace",
      +  "omni-human-1.5",
      +  "kling-avatar-v2",
      +  "kling-v3-motion-control",
      +  "sync-lipsync-2",
      +  "kling-lip-sync",
      +  "genjutsu-motion-transfer",
      +  "genjutsu-object-swap",
      +  "elevenlabs-tts",
      +  "eleven-v4",
      +  "gemini-3.1-flash-tts",
      +  "kokoro-82m",
      +  "minimax-speech-2.8-hd",
      +  "inworld-tts-2"
      +]
    • changedInput schema / properties / model_id / enum
      Previous value: -[
      -  "seedream-5-lite",
      -  "nano-banana-2.1",
      -  "nano-banana-2",
      -  "gpt-image-2.5-flare",
      -  "gpt-image-2.5-sunburst",
      -  "gpt-image-2",
      -  "nano-banana-2-lite",
      -  "seedream-5-pro",
      -  "seedream-5-pro-spicy",
      -  "flux-schnell",
      -  "flux-2-flex",
      -  "flux-2-pro",
      -  "flux-2-max",
      -  "recraft-v4.1-svg",
      -  "recraft-v4.1-pro-svg",
      -  "p-image",
      -  "grok-imagine-image",
      -  "grok-imagine-image-quality",
      -  "soul-2",
      -  "seedance-2.5",
      -  "seedance-2.5-spicy",
      -  "seedance-2.0",
      -  "seedance-2.0-mini",
      -  "seedance-2.0-fast",
      -  "grok-imagine-video-1.5",
      -  "veo-3.1",
      -  "veo-3.1-fast",
      -  "veo-3.1-lite",
      -  "gemini-omni-1.1",
      -  "kling-v3-omni-video",
      -  "kling-v3-video",
      -  "happyhorse-1.0",
      -  "wan-3",
      -  "wan-3-prime",
      -  "gen-4.5",
      -  "p-video",
      -  "p-video-2",
      -  "flux-3",
      -  "minimax-h3-max",
      -  "p-video-avatar",
      -  "p-video-animate",
      -  "p-video-replace",
      -  "omni-human-1.5",
      -  "kling-avatar-v2",
      -  "kling-v3-motion-control",
      -  "kling-lip-sync",
      -  "sync-lipsync-2",
      -  "genjutsu-motion-transfer",
      -  "genjutsu-object-swap",
      -  "elevenlabs-tts",
      -  "eleven-v4",
      -  "gemini-3.1-flash-tts",
      -  "kokoro-82m",
      -  "minimax-speech-2.8-hd",
      -  "inworld-tts-2",
      -  "reel-music-1",
      -  "minimax-music-2.6",
      -  "eleven-music"
      -]New value: +[
      +  "seedream-5-lite",
      +  "nano-banana-2.1",
      +  "nano-banana-2",
      +  "gpt-image-2.5-flare",
      +  "gpt-image-2.5-sunburst",
      +  "gpt-image-2",
      +  "nano-banana-2-lite",
      +  "seedream-5-pro",
      +  "seedream-5-pro-spicy",
      +  "flux-schnell",
      +  "flux-2-flex",
      +  "flux-2-pro",
      +  "flux-2-max",
      +  "recraft-v4.1-svg",
      +  "recraft-v4.1-pro-svg",
      +  "p-image",
      +  "grok-imagine-image",
      +  "grok-imagine-image-quality",
      +  "krea-3",
      +  "qwen-image-3-pro",
      +  "soul-2",
      +  "seedance-2.5",
      +  "seedance-2.5-spicy",
      +  "seedance-2.0",
      +  "seedance-2.0-mini",
      +  "seedance-2.0-fast",
      +  "grok-imagine-video-1.5",
      +  "veo-3.1",
      +  "veo-3.1-fast",
      +  "veo-3.1-lite",
      +  "gemini-omni-1.1",
      +  "kling-v3-omni-video",
      +  "kling-v3-video",
      +  "happyhorse-1.0",
      +  "wan-3",
      +  "wan-3-prime",
      +  "gen-4.5",
      +  "p-video",
      +  "p-video-2",
      +  "flux-3",
      +  "minimax-h3-max",
      +  "p-video-avatar",
      +  "p-video-animate",
      +  "p-video-replace",
      +  "omni-human-1.5",
      +  "kling-avatar-v2",
      +  "kling-v3-motion-control",
      +  "kling-lip-sync",
      +  "sync-lipsync-2",
      +  "genjutsu-motion-transfer",
      +  "genjutsu-object-swap",
      +  "elevenlabs-tts",
      +  "eleven-v4",
      +  "gemini-3.1-flash-tts",
      +  "kokoro-82m",
      +  "minimax-speech-2.8-hd",
      +  "inworld-tts-2",
      +  "reel-music-1",
      +  "minimax-music-2.6",
      +  "eleven-music"
      +]
  4. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that: what the response contains (one line per request, total, balance coverage), that one bad line does not abort the rest, and the special avatar-clip pricing rule based on reference audio length.

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-loads the core action and the non-creation guarantee in the first sentence, then handles the batch case and edge rules efficiently. The avatar-audio pricing note is somewhat niche, but it is short and a genuine pricing behavior an agent would otherwise get wrong.

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 32-parameter, heavily nested tool this is a solid brief: it covers the single-vs-batch dispatch, the response shape, partial-failure behavior, and the entitlement constraint. With an output schema present, return details need not be spelled out further, though the missing guidance on most non-target parameters keeps it from being fully 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 coverage is only 16% across 32 parameters, so the description must carry more weight. It does well on the two decisive parameters — `target`'s four modes and `requests` as an array of up to 20 objects with their own targets — but it defers all remaining argument semantics to 'the same arguments as the matching generate tool', leaving the majority of params (model, inputs, presets, references, duration_seconds, etc.) undocumented in either place.

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 — 'Price a request exactly, and compare it to the balance' — and immediately disambiguates from the generate_* siblings with 'without creating anything'. An agent can tell this is a read-only cost estimate, not a creation call.

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?

Explains the routing condition clearly: use `target` for a single room (image, clip, voice, guided) and `requests` for a whole plan of up to 20. It also states the entitlement constraint and how to respond when a plan does not fit. It stops short of naming the concrete sibling tools (generate_image, generate_clip, generate_voiceover, generate_with_recipe) explicitly, but the mapping is unambiguous from the target descriptions.

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