Skip to main content
Glama

Upscale an image

ideogram_upscale

Enlarge an image with AI models like Topaz and Nano Banana Pro, each taking its own controls. Results are saved to the output directory.

Instructions

Enlarge an image (auto, Topaz Bloom, Redefine, Standard, Text Refine and Wonder, or Nano Banana Pro); each model takes its own controls. Results are saved to the output directory; ideogram_quote prices a call first (nothing is generated).

Input Schema

NameRequiredDescriptionDefault
seedNoRandom seed for a reproducible result
imageNoLocal image file to work on, or a public https URL of one
modelNoThe model (default auto); each takes the fields of its variant below
promptNoWhat to create or change, in natural language
wait_sNoSeconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice).
privateNoKeep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)
inline_imagesNotrue: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access
upscale_factorNox2, x4 or x8
resolution_tierNoThe output resolution tier
image_asset_identifierNoAn Ideogram asset (an upload or an earlier result) instead of a local image

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed24 schema fields changedv2.5.0
    • addedInput schema / additionalProperties
      Added value: +{}
    • addedInput schema / definitions
      Added value: +{
      +  "__schema0": {
      +    "properties": {
      +      "asset_id": {
      +        "type": "string"
      +      },
      +      "asset_type": {
      +        "enum": [
      +          "ASSET",
      +          "CANVAS_ASSET",
      +          "LAYERED_ASSET",
      +          "RESPONSE",
      +          "UPLOAD"
      +        ],
      +        "type": "string"
      +      },
      +      "collection_id": {
      +        "maxLength": 22,
      +        "minLength": 22,
      +        "pattern": "^[A-Za-z0-9_-]{22}$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "asset_id",
      +      "asset_type"
      +    ],
      +    "type": "object"
      +  },
      +  "shared1": {
      +    "maximum": 2147483647,
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  "shared2": {
      +    "default": "x2",
      +    "enum": [
      +      "x2",
      +      "x4",
      +      "x8"
      +    ],
      +    "type": "string"
      +  },
      +  "shared3": {
      +    "default": 3,
      +    "maximum": 9,
      +    "minimum": 1,
      +    "type": "integer"
      +  },
      +  "shared4": {
      +    "default": "",
      +    "maxLength": 1024,
      +    "type": "string"
      +  },
      +  "shared6": {
      +    "maximum": 1,
      +    "minimum": 0,
      +    "type": "number"
      +  },
      +  "shared7": {
      +    "enum": [
      +      "all",
      +      "foreground",
      +      "background"
      +    ],
      +    "type": "string"
      +  },
      +  "shared8": {
      +    "maximum": 1,
      +    "minimum": 0.01,
      +    "type": "number"
      +  }
      +}
    • addedInput schema / oneOf
      Added value: +[
      +  {
      +    "properties": {
      +      "image": {
      +        "type": "string"
      +      },
      +      "image_asset_identifier": {
      +        "$ref": "#/definitions/__schema0"
      +      },
      +      "model": {
      +        "const": "auto",
      +        "type": "string"
      +      },
      +      "private": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "seed": {
      +        "$ref": "#/definitions/shared1"
      +      },
      +      "upscale_factor": {
      +        "$ref": "#/definitions/shared2"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "image": {
      +        "type": "string"
      +      },
      +      "image_asset_identifier": {
      +        "$ref": "#/definitions/__schema0"
      +      },
      +      "model": {
      +        "const": "nano-banana-pro",
      +        "type": "string"
      +      },
      +      "private": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "prompt": {
      +        "maxLength": 2000,
      +        "type": "string"
      +      },
      +      "resolution_tier": {
      +        "default": "2K",
      +        "enum": [
      +          "1K",
      +          "2K",
      +          "4K"
      +        ],
      +        "type": "string"
      +      },
      +      "seed": {
      +        "$ref": "#/definitions/shared1"
      +      }
      +    },
      +    "required": [
      +      "model"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "color_preservation": {
      +        "default": true,
      +        "type": "boolean"
      +      },
      +      "creativity": {
      +        "$ref": "#/definitions/shared3"
      +      },
      +      "image": {
      +        "type": "string"
      +      },
      +      "image_asset_identifier": {
      +        "$ref": "#/definitions/__schema0"
      +      },
      +      "model": {
      +        "const": "topaz-bloom-2",
      +        "type": "string"
      +      },
      +      "private": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "prompt": {
      +        "$ref": "#/definitions/shared4"
      +      },
      +      "seed": {
      +        "$ref": "#/definitions/shared1"
      +      },
      +      "upscale_factor": {
      +        "$ref": "#/definitions/shared2"
      +      }
      +    },
      +    "required": [
      +      "model"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "autoprompt": {
      +        "default": false,
      +        "type": "boolean"
      +      },
      +      "creativity": {
      +        "$ref": "#/definitions/shared3"
      +      },
      +      "denoise": {
      +        "$ref": "#/definitions/shared6"
      +      },
      +      "detail": {
      +        "default": false,
      +        "type": "boolean"
      +      },
      +      "detail_strength": {
      +        "maximum": 10,
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "face_enhancement": {
      +        "type": "boolean"
      +      },
      +      "face_enhancement_creativity": {
      +        "$ref": "#/definitions/shared6"
      +      },
      +      "face_enhancement_strength": {
      +        "$ref": "#/definitions/shared6"
      +      },
      +      "image": {
      +        "type": "string"
      +      },
      +      "image_asset_identifier": {
      +        "$ref": "#/definitions/__schema0"
      +      },
      +      "model": {
      +        "const": "topaz-redefine",
      +        "type": "string"
      +      },
      +      "private": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "prompt": {
      +        "$ref": "#/definitions/shared4"
      +      },
      +      "seed": {
      +        "$ref": "#/definitions/shared1"
      +      },
      +      "sharpen": {
      +        "$ref": "#/definitions/shared6"
      +      },
      +      "subject_detection": {
      +        "$ref": "#/definitions/shared7"
      +      },
      +      "texture": {
      +        "default": 1,
      +        "maximum": 5,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "upscale_factor": {
      +        "$ref": "#/definitions/shared2"
      +      }
      +    },
      +    "required": [
      +      "model"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "denoise": {
      +        "$ref": "#/definitions/shared6"
      +      },
      +      "face_enhancement": {
      +        "type": "boolean"
      +      },
      +      "face_enhancement_creativity": {
      +        "$ref": "#/definitions/shared6"
      +      },
      +      "face_enhancement_strength": {
      +        "$ref": "#/definitions/shared6"
      +      },
      +      "fix_compression": {
      +        "$ref": "#/definitions/shared6"
      +      },
      +      "image": {
      +        "type": "string"
      +      },
      +      "image_asset_identifier": {
      +        "$ref": "#/definitions/__schema0"
      +      },
      +      "model": {
      +        "const": "topaz-standard-2",
      +        "type": "string"
      +      },
      +      "private": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "sharpen": {
      +        "$ref": "#/definitions/shared6"
      +      },
      +      "strength": {
      +        "$ref": "#/definitions/shared8"
      +      },
      +      "subject_detection": {
      +        "$ref": "#/definitions/shared7"
      +      },
      +      "upscale_factor": {
      +        "$ref": "#/definitions/shared2"
      +      }
      +    },
      +    "required": [
      +      "model"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "denoise": {
      +        "$ref": "#/definitions/shared6"
      +      },
      +      "face_enhancement": {
      +        "type": "boolean"
      +      },
      +      "face_enhancement_creativity": {
      +        "$ref": "#/definitions/shared6"
      +      },
      +      "face_enhancement_strength": {
      +        "$ref": "#/definitions/shared6"
      +      },
      +      "fix_compression": {
      +        "$ref": "#/definitions/shared6"
      +      },
      +      "image": {
      +        "type": "string"
      +      },
      +      "image_asset_identifier": {
      +        "$ref": "#/definitions/__schema0"
      +      },
      +      "model": {
      +        "const": "topaz-text-refine",
      +        "type": "string"
      +      },
      +      "private": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "seed": {
      +        "$ref": "#/definitions/shared1"
      +      },
      +      "sharpen": {
      +        "$ref": "#/definitions/shared6"
      +      },
      +      "strength": {
      +        "$ref": "#/definitions/shared8"
      +      },
      +      "subject_detection": {
      +        "$ref": "#/definitions/shared7"
      +      },
      +      "upscale_factor": {
      +        "$ref": "#/definitions/shared2"
      +      }
      +    },
      +    "required": [
      +      "model"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "enhancement_strength": {
      +        "default": "high",
      +        "enum": [
      +          "low",
      +          "medium",
      +          "high"
      +        ],
      +        "type": "string"
      +      },
      +      "image": {
      +        "type": "string"
      +      },
      +      "image_asset_identifier": {
      +        "$ref": "#/definitions/__schema0"
      +      },
      +      "model": {
      +        "const": "topaz-wonder-3-5",
      +        "type": "string"
      +      },
      +      "private": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "seed": {
      +        "$ref": "#/definitions/shared1"
      +      },
      +      "upscale_factor": {
      +        "$ref": "#/definitions/shared2"
      +      }
      +    },
      +    "required": [
      +      "model"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties / detail
      Removed value: -{
      -  "description": "Detail to add (0-100, default: 50)",
      -  "maximum": 100,
      -  "minimum": 0,
      -  "type": "integer"
      -}
    • changedInput schema / properties / image / description
      Previous value: -"Local file path of the image to upscale"New value: +"Local image file to work on, or a public https URL of one"
    • removedInput schema / properties / image / minLength
      Removed value: -1
    • removedInput schema / properties / image / type
      Removed value: -"string"
    • addedInput schema / properties / image_asset_identifier
      Added value: +{
      +  "description": "An Ideogram asset (an upload or an earlier result) instead of a local image"
      +}
    • addedInput schema / properties / inline_images
      Added value: +{
      +  "description": "true: each saved image is also returned as image content (base64; one over 3.75 MB, or past 10 MB in total, by path only), for a client without file access",
      +  "type": "boolean"
      +}
    • removedInput schema / properties / magic_prompt
      Removed value: -{
      -  "description": "Auto-enhance prompts (AUTO/ON/OFF)",
      -  "enum": [
      -    "AUTO",
      -    "ON",
      -    "OFF"
      -  ],
      -  "type": "string"
      -}
    • addedInput schema / properties / model
      Added value: +{
      +  "description": "The model (default auto); each takes the fields of its variant below",
      +  "enum": [
      +    "auto",
      +    "nano-banana-pro",
      +    "topaz-bloom-2",
      +    "topaz-redefine",
      +    "topaz-standard-2",
      +    "topaz-text-refine",
      +    "topaz-wonder-3-5"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / num_images
      Removed value: -{
      -  "description": "Number of variations (1-8, default: 1)",
      -  "maximum": 8,
      -  "minimum": 1,
      -  "type": "integer"
      -}
    • addedInput schema / properties / private
      Added value: +{
      +  "description": "Keep the result out of Ideogram's public feed; true unless you set false (enterprise accounts are always private)"
      +}
    • changedInput schema / properties / prompt / description
      Previous value: -"Guide the upscaling enhancement"New value: +"What to create or change, in natural language"
    • removedInput schema / properties / prompt / type
      Removed value: -"string"
    • removedInput schema / properties / resemblance
      Removed value: -{
      -  "description": "Similarity to original (0-100, default: 50)",
      -  "maximum": 100,
      -  "minimum": 0,
      -  "type": "integer"
      -}
    • addedInput schema / properties / resolution_tier
      Added value: +{
      +  "description": "The output resolution tier"
      +}
    • changedInput schema / properties / seed / description
      Previous value: -"Reproducibility seed"New value: +"Random seed for a reproducible result"
    • removedInput schema / properties / seed / maximum
      Removed value: -2147483647
    • removedInput schema / properties / seed / minimum
      Removed value: -0
    • removedInput schema / properties / seed / type
      Removed value: -"integer"
    • addedInput schema / properties / upscale_factor
      Added value: +{
      +  "description": "x2, x4 or x8"
      +}
    • addedInput schema / properties / wait_s
      Added value: +{
      +  "description": "Seconds to wait for the result (0-50, default 45). The job is accepted first; if it is still running when the wait ends, the result is its generation_id for ideogram_generation (never resubmitted, never billed twice).",
      +  "maximum": 50,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • removedInput schema / required
      Removed value: -[
      -  "image"
      -]
  2. First observedv1.0.3

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries full behavioral burden. It usefully discloses that results are written to an output directory and that ideogram_quote prices a call without generating anything, implying upscale does incur generation/billing, but it omits cost, async/wait behavior, and reversibility.

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

Conciseness5/5

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

Front-loads the core action, then packs the model options, output behavior, and pricing path into a compact two-clause sentence with no wasted words. Every clause adds usable information.

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 complex 10-parameter tool with seven model variants and no output schema, the description covers purpose, model choice, result destination, and the pricing entry point reasonably well. It could say more about when a result is deferred to a generation_id, though the schema's wait_s field documents that.

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 100%, so the baseline is 3, but the description adds real value by explaining that model variants exist and that "each model takes its own controls" — which frames the oneOf structure for the agent. The friendly model names ("Topaz Bloom") map only loosely to the enum values, slightly weakening the mapping.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Enlarge an image") and enumerates the available model backends, so the agent immediately knows what the tool does. It does not explicitly contrast itself with edit-oriented siblings like ideogram_precise_edit or ideogram_remix, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description names ideogram_quote as the pricing-before-generation path, which clarifies a related tool, but gives no explicit when-to-use/when-not guidance against the many editing and generation siblings. Choice of model is implied by the list rather than explained.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.