Skip to main content
Glama

Generate image

generate_image

Make an image in the user's Kuro account. This spends credits, or runs on the user's own key (get_credits), and waits for the image, so a quick one comes back ready in this call. 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. Only if it comes back still queued or generating, call get_generation once: it waits for the result. Presets from list_presets add Style, Lighting and Framing through the presets map; a guided recipe runs through generate_with_recipe instead. Name the account's Subjects in subjects rather than attaching pictures of them. list_models carries each model's full envelope. To change something about an image that already exists, call edit_image instead. Re-sending an edited prompt here is a fresh roll of the dice — a different composition, different light, a different picture — not an edit of the one on screen. Models (credits per image at the default setting; reference images):

  • seedream-5-lite: ~3, 7 refs

  • nano-banana-2.1: ~3, 14 refs

  • nano-banana-2: ~6, 7 refs

  • gpt-image-2.5-flare: ~11, 7 refs

  • gpt-image-2.5-sunburst: ~11, 7 refs

  • gpt-image-2: ~11, 7 refs

  • nano-banana-2-lite: ~3, 7 refs

  • seedream-5-pro: ~4, 7 refs

  • flux-schnell: ~0.5, no refs

  • flux-2-flex: ~5, 7 refs

  • flux-2-pro: ~2.5, 7 refs

  • flux-2-max: ~6, 7 refs

  • recraft-v4.1-svg: ~3.5, no refs, SVG

  • recraft-v4.1-pro-svg: ~21, no refs, SVG

  • p-image: ~0.5, no refs

  • grok-imagine-image: ~2, 1 refs

  • grok-imagine-image-quality: ~6, 1 refs

  • krea-3: ~5, 8 refs

  • qwen-image-3-pro: ~3.5, 1 refs

  • soul-2: ~0.5, no refs

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_image"
  }
}

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.
settingNo
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.
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).
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.
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.
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.

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. Changed2 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"
      -]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"
      +]
    • 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"
      -]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"
      +]
  5. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, the description discloses the two costly behaviors an agent must know: the call spends credits or runs on the user's own key (with get_credits as the lookup), and it waits for the image so most calls return a finished result synchronously, with a defined fallback (get_generation) for the queued case. The explicit warning that re-prompting yields a different composition rather than an edit is a behavioral trait no annotation or schema field conveys.

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 purpose and the recipe-vs-direct routing are front-loaded before the catalog, and nearly every sentence carries a decision the agent needs. The 20-line model table is long but earns its space by saving a list_models round trip on a cost-sensitive operation; only the length of the edit_image comparison paragraph feels slightly padded.

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 an 11-parameter, nested, cost-incurring generation tool, the description covers payer selection, synchronous-versus-queued completion, recipe/preset routing, subject handling, and the edit-versus-regenerate distinction. Return-value detail is unnecessary here because an output schema exists, and the listed gaps in parameter semantics are minor.

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 55%, so the schema carries much of the burden (runs_on, subjects, references, aspect_ratio, refined_from and idempotency_key all have their own descriptions). The description adds genuine value by annotating every model in the enum with a credit price and reference-image capacity, and by explaining what the presets map contributes, but it lists only Style, Lighting and Framing while the schema also exposes motion, and it says nothing about `setting`, `recreate_of` or `prompt` (including the 2000-character cap).

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?

The first sentence names a concrete verb and resource (image generation) and scopes it to the user's Kuro account, then immediately distinguishes itself from the two nearest siblings by name: generate_with_recipe for close-fitting recipes and edit_image for modifying existing images. The model catalog with credit costs further pins down exactly what kind of operation this is.

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?

Explicit routing rules: search list_recipes and read with get_recipe first, prefer generate_with_recipe when a recipe fits, use this tool only when none fits. It also states when to call get_generation (only if the result comes back queued), when to use the presets map versus a guided recipe, when to use subjects instead of reference images, and that re-sending an edited prompt here is a fresh generation rather than an edit.

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