Skip to main content
Glama

generate_illustration_set

Generate a SET of illustrations in one consistent style - scenes, environments, hero images, banners, posters, portraits - one composed illustration per scene, every illustration in the call at the same size. The style parameter says how they are drawn, styleReferences shows that style in up to 3 reference images, and the scenes parameter says what each illustration shows. Without style references, the first scene is drawn first and the rest are drawn to match it. Returns a zip download URL. Each call costs 1 credit. Run generation calls sequentially, never in parallel - only one generation runs at a time per API key.

For separate isolated subjects on a plain or transparent background (icons, sprites, asset packs), use generate_image_set instead; for one character in many variations, generate_character_set.

width and height must be one of the supported pixel pairs below; any other pair is rejected. These are the maximums offered - nothing larger is available. Each line is one shape: the first pair is that shape's largest size, the rest are exact proportional downscales of it. To add scenes later, at this size or another from the list, use extend_illustration_set; to deliver a batch again at another of its sizes, format or quality, use edit_set.

2752x1536, 1376x768, 688x384 2048x2048, 1024x1024, 512x512, 256x256 1024x4128, 512x2064, 256x1032 704x5856, 352x2928 3168x1344, 1584x672, 792x336 1696x2528, 848x1264, 424x632 2528x1696, 1264x848, 632x424 1792x2400, 896x1200, 448x600 4128x1024, 2064x512, 1032x256 2400x1792, 1200x896, 600x448 1856x2304, 928x1152, 464x576 2304x1856, 1152x928, 576x464 5856x704, 2928x352 1536x2752, 768x1376, 384x688

IMPORTANT - style and scene rules for best results:

  • The style is how every illustration is drawn (medium, technique, palette, lighting treatment); each scene is what one illustration shows (its subject, setting, moment and composition). Keep the shared look in the style, so the set stays consistent.

  • Scene craft, since each call costs a credit: name the light and the time of day (cold blue twilight, one warm lamp from the left); fix the camera (wide establishing shot, three-quarter portrait, viewed from the doorway); and ask for open space on a named side when text will be laid over the illustration later.

  • Illustrations carry no text unless a scene asks for it: write any words that belong in an illustration, such as the name on a shop sign, into its scene.

  • Scenes must describe distinct illustrations; a scene that describes nothing to draw, or repeats another, is rejected, as is a style that does not describe a visual style.

  • Maximum 6 scenes per call. Style max length: 500 characters. Scene max length: 2500 characters each.

  • Formats: png (default, lossless), jpg, webp. quality (1-100) applies to jpg and webp; default 90.

  • To add more scenes to a set, call extend_illustration_set with the id of any batch in it, as often as the set needs.

  • If a "Rate limit exceeded" error is returned, wait the suggested number of seconds before retrying. Do not retry immediately.

  • Showing the result: as soon as the call returns, show the user every delivered image before you put them to use, then keep working without waiting for a reply (unless the user asked to review first), so they can ask for a change before anything is built on them. Show each image exactly as delivered, as its own file: the files are the product, and their exact size, margin and background are what the user asked for. Never present a new image made from them, even to check them; it hides all three. Files on disk or a link in your context are not delivery. Where you can open files on the user's machine, open the extracted index.html with the host's file opener; it shows each image at its delivered size with its dimensions. Where you can attach files to your reply, attach each delivered file as it is (attaching is not inspecting). Otherwise give the online viewer link and the zip link. Show every image unless the user asked for only some, and say in one line what you left out; if you can show none, say the set was made but you could not show it, and give the viewer link.

Input Schema

NameRequiredDescriptionDefault
styleNoHow every illustration in the set is drawn: medium, technique, palette, and lighting treatment (e.g. painterly storybook watercolor with warm golden light). Text that does not describe a visual style is rejected. Provide this, styleReferences, or both - together they hold a style most tightly.
widthYesWidth in pixels, together with height: one of the supported pixel pairs listed in the tool description. Every scene is delivered at this size.
formatNoOutput format: png, jpg, or webp. Defaults to png.
heightYesHeight in pixels, together with width: one of the supported pixel pairs listed in the tool description.
scenesYesWhat each illustration shows, one entry per illustration: either a list of scene descriptions or objects with description and filename (e.g. [{"description": "a harbor market at dawn", "filename": "hero.webp"}]). A scene is prose and may name a setting, a moment, the light and the camera. Entries must describe distinct illustrations; without a filename, the file is named from the start of its scene.
qualityNoImage quality for jpg/webp (1-100). Defaults to 90.
unpackToNoPath on the caller's local filesystem where the generated files should be saved. The server does NOT write here. After this call returns, you (the calling client) must download images.zip from the returned zip URL, extract it to this path yourself, then report the path to the user. Make the download your immediate next action when the result arrives, before any commentary; the download URL expires (the result states when).
styleReferencesNoUp to 3 reference images that define the style, alone or alongside the style parameter. Each entry is a ref_ token from the create_reference tool: create an upload slot, send the image file with the curl command it returns, then pass the token here. Image data itself never goes in a tool call; ref_ tokens are the only accepted form. Uploads take PNG, JPEG, or WebP; size and dimension limits are given in the create_reference tool's description. Their rendering carries over; their subjects and composition do not. Provide at least one of style and styleReferences.

Output Schema

NameRequiredDescriptionDefault
styleNo
formatNoThe delivered image format.
imagesNoThe illustrations: each one's file name inside the zip, its scene, and its pixel width and height.
zipURLNoDownload URL for the zip of illustrations. Time-limited; expiresAt states the deadline.
unpackToNoThe caller-supplied local extraction path, echoed back.
expiresAtNoWhen the download URL expires.
remainingNoCredits remaining after this call.
manifestURLNo
rejectedStyleNoPresent only when the request was rejected because the style does not appear to describe a visual style: the submitted style text. No generation ran and nothing was charged; revise the style (or drop it and use styleReferences) and resubmit.
rejectedScenesNoPresent only when the request was rejected because some scenes do not appear to describe distinct illustrations: the exact rejected entries. No generation ran and nothing was charged; revise or remove them and resubmit.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / scenes / description
      Previous value: -"What each illustration shows, one entry per picture: either a list of scene descriptions or objects with description and filename (e.g. [{\"description\": \"a harbor market at dawn\", \"filename\": \"hero.webp\"}]). A scene is prose and may name a setting, a moment, the light and the camera. Entries must describe distinct pictures; without a filename, the file is named from the start of its scene."New value: +"What each illustration shows, one entry per illustration: either a list of scene descriptions or objects with description and filename (e.g. [{\"description\": \"a harbor market at dawn\", \"filename\": \"hero.webp\"}]). A scene is prose and may name a setting, a moment, the light and the camera. Entries must describe distinct illustrations; without a filename, the file is named from the start of its scene."
    • changedOutput schema / properties / rejectedScenes / description
      Previous value: -"Present only when the request was rejected because some scenes do not appear to describe distinct pictures: the exact rejected entries. No generation ran and nothing was charged; revise or remove them and resubmit."New value: +"Present only when the request was rejected because some scenes do not appear to describe distinct illustrations: the exact rejected entries. No generation ran and nothing was charged; revise or remove them and resubmit."
  2. Changed4 schema fields changed
    • addedOutput schema / properties / images / items / properties / bytes
      Added value: +{
      +  "description": "The image file's size in bytes.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / images / items / properties / maskLevels
      Added value: +{
      +  "description": "Under a file size limit (maxKB): how many transparency levels this image kept; 256 is exact.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / images / items / properties / overBudget
      Added value: +{
      +  "description": "Under a file size limit (maxKB): true when this image is still over the limit at the lowest step (quality 70, or the set's own when that is lower).",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / images / items / properties / quality
      Added value: +{
      +  "description": "Under a file size limit (maxKB): the quality this image was delivered at.",
      +  "type": "integer"
      +}
  3. Added

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only declare readOnly=false, openWorld=true, idempotent=false, destructive=false. The description adds cost (1 credit per call), concurrency constraints (one generation at a time per API key), rate-limit retry behavior, input validation rejection rules (scene/style/length limits), and URL expiry on the returned zip — none of which the annotations convey. This is substantial disclosure beyond the structured fields.

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?

Well front-loaded (purpose, alternatives, sizes, craft rules) and the pixel table and bulleted rule blocks are scannable. It is nonetheless very long, and the closing 'Showing the result' block restates the same delivery requirement several ways ('Show each image exactly as delivered,' 'Show every image,' 'attaching is not inspecting'), which costs more words than it needs.

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?

Given an 8-parameter generation tool with nested scene objects and an output schema, the description covers everything an agent needs: validation constraints, credit cost, sequential execution, sibling routing, and what to do with the returned zip. No gaps remain for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline would be 3, but the description goes well beyond it: it encodes the full supported pixel-pair matrix (with the note that any other pair is rejected), explains that style vs scenes is 'how' vs 'what', and describes the styleReferences ref_ token upload workflow that the schema only alludes to. This is meaning the agent could not derive from the schema alone.

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?

Opens with a specific verb+resource+scope: 'Generate a SET of illustrations in one consistent style,' then enumerates the scene types it covers. It explicitly distinguishes itself from generate_image_set (isolated subjects/icons) and generate_character_set (one character, many variations), so an agent can route without opening any schema.

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?

States when to use alternatives by name (generate_image_set for icons/sprites, generate_character_set for character variations), and when to use extend_illustration_set and edit_set afterwards. It also gives operational exclusions ('Run generation calls sequentially, never in parallel'), which is exactly the routing guidance an agent needs.

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