quote_generation

Quote a generation

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.

Scope

Behaviour

Read-only
Reads the caller's own account and changes nothing.
Stays in the account
Stays inside the caller's private Kuro account: any media provider it calls acts on Kuro's account, and the result is visible to no one else.
Idempotent
Calling it again with the same arguments has no further effect.

Inputs

Example call

A tools/call request with the required arguments only, each a placeholder read off the schema. Replace them before sending.

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

Input schema

As the server sends it in tools/list.

{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "enum": [
        "image",
        "clip",
        "voice",
        "music",
        "guided"
      ]
    },
    "prompt": {
      "type": "string",
      "maxLength": 4000
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Optional. 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."
    },
    "model": {
      "type": "string",
      "enum": [
        "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"
      ]
    },
    "aspect_ratio": {
      "type": "string",
      "enum": [
        "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"
      ]
    },
    "setting": {
      "type": "string"
    },
    "presets": {
      "type": "object",
      "properties": {
        "style": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            },
            {
              "type": "null"
            }
          ]
        },
        "motion": {
          "anyOf": [
            {
              "$ref": "#/properties/presets/properties/style/anyOf/0"
            },
            {
              "type": "null"
            }
          ]
        },
        "lighting": {
          "anyOf": [
            {
              "$ref": "#/properties/presets/properties/style/anyOf/0"
            },
            {
              "type": "null"
            }
          ]
        },
        "framing": {
          "anyOf": [
            {
              "$ref": "#/properties/presets/properties/style/anyOf/0"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "recreate_of": {
      "type": "string",
      "format": "uuid"
    },
    "references": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "upload"
              },
              "upload_id": {
                "type": "string",
                "format": "uuid"
              }
            },
            "required": [
              "type",
              "upload_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "generation"
              },
              "generation_id": {
                "type": "string",
                "format": "uuid"
              }
            },
            "required": [
              "type",
              "generation_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "description": "The 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)."
    },
    "subjects": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 4,
      "description": "Names 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."
    },
    "refined_from": {
      "type": "string",
      "format": "uuid",
      "description": "Lineage 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."
    },
    "runs_on": {
      "type": "string",
      "enum": [
        "credits",
        "replicate",
        "fal",
        "siray",
        "runware",
        "higgsfield",
        "sunra",
        "comfy"
      ],
      "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."
    },
    "duration_seconds": {
      "anyOf": [
        {
          "type": "number",
          "const": -1
        },
        {
          "type": "integer",
          "minimum": 1,
          "maximum": 1800
        }
      ]
    },
    "resolution": {
      "type": "string",
      "enum": [
        "360p",
        "480p",
        "720p",
        "768p",
        "1080p",
        "4K"
      ]
    },
    "generate_audio": {
      "type": "boolean"
    },
    "first_frame": {
      "$ref": "#/properties/references/items"
    },
    "last_frame": {
      "$ref": "#/properties/references/items"
    },
    "reference_images": {
      "type": "array",
      "items": {
        "$ref": "#/properties/references/items"
      },
      "maxItems": 30
    },
    "reference_videos": {
      "type": "array",
      "items": {
        "$ref": "#/properties/references/items"
      },
      "maxItems": 10,
      "description": "The 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."
    },
    "reference_audios": {
      "type": "array",
      "items": {
        "$ref": "#/properties/references/items"
      },
      "maxItems": 10
    },
    "recipe_id": {
      "type": "string",
      "format": "uuid"
    },
    "creative_prompt": {
      "type": "string",
      "maxLength": 4000
    },
    "inputs": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slot_key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "sources": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "const": "upload"
                    },
                    "upload_id": {
                      "type": "string",
                      "format": "uuid"
                    }
                  },
                  "required": [
                    "type",
                    "upload_id"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "const": "generation"
                    },
                    "generation_id": {
                      "type": "string",
                      "format": "uuid"
                    }
                  },
                  "required": [
                    "type",
                    "generation_id"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "const": "subject"
                    },
                    "subject_id": {
                      "type": "string",
                      "format": "uuid"
                    }
                  },
                  "required": [
                    "type",
                    "subject_id"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "minItems": 1,
            "maxItems": 6
          }
        },
        "required": [
          "slot_key",
          "sources"
        ],
        "additionalProperties": false
      },
      "maxItems": 6
    },
    "choices": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "maxItems": 16
          }
        ]
      }
    },
    "model_id": {
      "type": "string",
      "enum": [
        "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"
      ]
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4000
    },
    "subject": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "voice": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "style_prompt": {
      "type": "string",
      "maxLength": 4000
    },
    "language_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 35
    },
    "speed": {
      "type": "number",
      "minimum": 0.1,
      "maximum": 5
    },
    "emotion": {
      "type": "string",
      "enum": [
        "auto",
        "neutral",
        "happy",
        "sad",
        "angry",
        "fearful",
        "disgusted",
        "surprised",
        "calm"
      ]
    },
    "lyrics": {
      "type": "string",
      "minLength": 1,
      "maxLength": 3500
    },
    "is_instrumental": {
      "type": "boolean"
    },
    "requests": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "target": {
            "$ref": "#/properties/target"
          },
          "prompt": {
            "$ref": "#/properties/prompt"
          },
          "idempotency_key": {
            "$ref": "#/properties/idempotency_key"
          },
          "model": {
            "$ref": "#/properties/model"
          },
          "aspect_ratio": {
            "$ref": "#/properties/aspect_ratio"
          },
          "setting": {
            "$ref": "#/properties/setting"
          },
          "presets": {
            "$ref": "#/properties/presets"
          },
          "recreate_of": {
            "$ref": "#/properties/recreate_of"
          },
          "references": {
            "$ref": "#/properties/references"
          },
          "subjects": {
            "$ref": "#/properties/subjects"
          },
          "refined_from": {
            "$ref": "#/properties/refined_from"
          },
          "runs_on": {
            "$ref": "#/properties/runs_on"
          },
          "duration_seconds": {
            "$ref": "#/properties/duration_seconds"
          },
          "resolution": {
            "$ref": "#/properties/resolution"
          },
          "generate_audio": {
            "$ref": "#/properties/generate_audio"
          },
          "first_frame": {
            "$ref": "#/properties/first_frame"
          },
          "last_frame": {
            "$ref": "#/properties/last_frame"
          },
          "reference_images": {
            "$ref": "#/properties/reference_images"
          },
          "reference_videos": {
            "$ref": "#/properties/reference_videos"
          },
          "reference_audios": {
            "$ref": "#/properties/reference_audios"
          },
          "recipe_id": {
            "$ref": "#/properties/recipe_id"
          },
          "creative_prompt": {
            "$ref": "#/properties/creative_prompt"
          },
          "inputs": {
            "$ref": "#/properties/inputs"
          },
          "choices": {
            "$ref": "#/properties/choices"
          },
          "model_id": {
            "$ref": "#/properties/model_id"
          },
          "text": {
            "$ref": "#/properties/text"
          },
          "subject": {
            "$ref": "#/properties/subject"
          },
          "voice": {
            "$ref": "#/properties/voice"
          },
          "style_prompt": {
            "$ref": "#/properties/style_prompt"
          },
          "language_code": {
            "$ref": "#/properties/language_code"
          },
          "speed": {
            "$ref": "#/properties/speed"
          },
          "emotion": {
            "$ref": "#/properties/emotion"
          },
          "lyrics": {
            "$ref": "#/properties/lyrics"
          },
          "is_instrumental": {
            "$ref": "#/properties/is_instrumental"
          }
        },
        "required": [
          "target"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 20
    }
  },
  "additionalProperties": false
}

Related tools

Every tool· This page as Markdown