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), music (the generate_music brief) 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.

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": "quote_generation"
  }
}

Input Schema

NameRequiredDescriptionDefault
textNo
modelNo
speedNo
voiceNo
inputsNo
lyricsNo
promptNo
targetNo
choicesNo
emotionNo
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.
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.
is_instrumentalNo
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
linesYes
policyYes
creditsYes
messageYes
affordableYes
aspect_ratioYes
available_creditsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • addedInput schema / properties / is_instrumental
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / lyrics
      Added value: +{
      +  "maxLength": 3500,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • 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",
      -  "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"
      -]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",
      +  "minimax-music-2.6",
      +  "eleven-music"
      +]
    • addedInput schema / properties / requests / items / properties / is_instrumental
      Added value: +{
      +  "$ref": "#/properties/is_instrumental"
      +}
    • addedInput schema / properties / requests / items / properties / lyrics
      Added value: +{
      +  "$ref": "#/properties/lyrics"
      +}
    • 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"
      +]
    • changedInput schema / properties / target / enum
      Previous value: -[
      -  "image",
      -  "clip",
      -  "voice",
      -  "guided"
      -]New value: +[
      +  "image",
      +  "clip",
      +  "voice",
      +  "music",
      +  "guided"
      +]
    • changedOutput schema / properties / lines / items / properties / target / enum
      Previous value: -[
      -  "image",
      -  "clip",
      -  "voice",
      -  "guided"
      -]New value: +[
      +  "image",
      +  "clip",
      +  "voice",
      +  "music",
      +  "guided"
      +]
  2. Changed1 schema field changed
    • 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",
      -  "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"
      -]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-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"
      +]
  3. Changed6 schema fields changed
    • addedInput schema / properties / requests / items / properties / runs_on
      Added value: +{
      +  "$ref": "#/properties/runs_on"
      +}
    • 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 / lines / items / properties / estimated_cost_usd
      Added value: +{
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / lines / items / properties / paid_by
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / lines / items / properties / runs_on_blocked
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "reason": {
      +          "type": "string"
      +        },
      +        "vendor": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "vendor",
      +        "reason"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / lines / items / required
      Previous value: -[
      -  "index",
      -  "target",
      -  "model",
      -  "credits",
      -  "policy",
      -  "aspect_ratio",
      -  "error"
      -]New value: +[
      +  "index",
      +  "target",
      +  "model",
      +  "credits",
      +  "policy",
      +  "paid_by",
      +  "estimated_cost_usd",
      +  "runs_on_blocked",
      +  "aspect_ratio",
      +  "error"
      +]
  4. 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"
  5. 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
  6. 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"
      +]
  7. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description reinforces that with 'without creating anything'. Beyond that it discloses genuinely useful behavior: per-line failure tolerance ('a line that cannot run says why and the rest still price'), a batch cap of 20, avatar pricing keyed to existing reference-audio length, and a constraint to the account's existing entitlements. Auth/permission details and rate limits are not addressed.

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 purpose, then mode selection, then batching, then edge cases and policy. Nearly every sentence adds a distinct fact. Slightly dense with backticked identifiers, but nothing is redundant.

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 35-parameter, nested-schema tool with an output schema, the description covers the decisions an agent must make: which target, whether to use `requests`, what the answer shape is, and how partial failures are returned. Remaining gaps — per-parameter constraints and validation behavior — are largely delegated to the sibling generate tools and the schema itself.

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?

With only 17% schema description coverage across 35 parameters, the description carries real weight: it explains `target`'s five rooms by mapping each to the corresponding generate tool's argument set, and explains `requests` as a batch of up to 20 such objects each with its own target. The 'same arguments as the matching generate tool' delegation is an efficient way to cover the remaining pass-through fields, though most individual parameters still get no direct explanation.

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 distinguishes itself from the generate_* siblings by noting it creates nothing and 'takes the same arguments as the matching generate tool'. An agent can tell this apart from generate_image/generate_clip without opening a schema.

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?

Clear context for when to reach for it (dry-run pricing with the same arguments as the real generate call) and a documented batching mode via `requests`. The closing policy line also constrains behavior when a plan does not fit. It stops short of naming an explicit 'do not use this to actually produce media' alternative, but the intent is unambiguous.

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