Skip to main content
Glama

extend_character_set

Add more variations to a set made with generate_character_set. The new batch is generated exactly as the set was - the same character text and character references, with the background (a color or transparent), size, format, quality, margin, sizing and file size limit of the batch you name - so a set grows past the 16-variation limit of one call without drifting; only the variations are new. A set made with character references is sent them again, and only them; a set made from text alone is sent up to 3 images from its first batch, so the new variations are drawn like the rest of the set. The new batch joins the set: listings show the batches together, and the whole set's download window restarts. Each call costs what a generation of the set costs: 1 credit per call. Run generation calls sequentially, never in parallel - only one generation runs at a time per API key.

Variations that do not describe distinct, drawable variations are refused before anything is generated or charged. To change the character, the size, or anything else, start a new set instead; to change only how an existing set is delivered, use edit_set.

IMPORTANT - variation description rules:

  • Describe each variation by what the character is doing in it: its action and pose, what it is feeling and how strongly, its expression, and anything it holds or wears. Specific feelings at specific intensities give the most expressive sets (a slow-burning silent glare and a mid-leap scream read very differently).

  • Each image is ONE isolated character, not a scene: describe the character and what it directly holds or interacts with, never the surrounding setting, environment, landscape, or sky.

  • Do not use size words (large, tiny, small, etc.) on the character as a whole - all images are produced at the same size. Size words on what it holds or wears are fine (e.g. 'holding a tiny umbrella').

  • Maximum 16 variations per call, or fewer when the batch you name is fixed at a width or height above 512, since the new batch takes that size: up to 9 at 600 or less, up to 4 at 700 or less, and 1 above that. To add more per call, lower that batch's size first with edit_set.

  • If the variation check returns a suggested cleanup, show the user the specific changes and get their confirmation, then resubmit the approved prompt with validation set to "skip" so it generates exactly as approved (resubmitting without "skip" re-runs the check and may return further suggestions). See the validation parameter for when to use "skip" and "auto-apply".

  • 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.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "generation": "<generation>",
      "variations": "<variations>"
    },
    "name": "extend_character_set"
  }
}

Input Schema

NameRequiredDescriptionDefault
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).
generationYesThe id of any batch in the set to extend: the random segment of its download URL (.../download/<id>/images.zip), also returned by list_recent_generations. The new batch is generated exactly as that set: the same tool, character text and character references, and the named batch's background, size, format, quality, margin, sizing and file size limit.
validationNoHow to handle the automatic variation check before generating. One of: suggest (the default) - if the new variation descriptions need cleanup for a consistent set, the cleaned version is returned as a suggestion for you to review before any image is generated; skip - skip the cleanup suggestions and generate exactly as given (the non-drawable-content and repeated-variation rejection rules above still apply; no mode skips them), set this when resubmitting a prompt you already revised from a previous suggestion (so your approved wording is used as-is and not re-checked, which avoids further suggestions) or when you are confident the prompt is already clean; auto-apply - if cleanup is needed, apply it and generate in one step without returning a suggestion. Omit for the default.
variationsYesWhat the character is doing in each image, one entry per image: either a list of descriptions or objects with description and filename (e.g. [{"description": "waving hello", "filename": "waving.png"}]). Each entry is one isolated variation of the same character - its pose, action, expression, how strongly it feels it, and anything it holds or wears - not a scene or setting. Entries must be distinct: entries differing only in case, punctuation, or spacing are rejected as the same. Write each variation as plain text, with no list marker such as "1." or "-" in front, no square brackets, and no invisible characters.

Output Schema

NameRequiredDescriptionDefault
formatNoThe delivered image format.
imagesNoThe generated images: each one's file name inside the zip, its variation, and its pixel width and height.
zipURLNoDownload URL for the zip of generated images. Time-limited; expiresAt states the deadline.
unpackToNoThe caller-supplied local extraction path, echoed back.
characterNo
expiresAtNoWhen the download URL expires.
remainingNoCredits remaining after this call.
backgroundNoThe background color used, or transparent.
manifestURLNo
rejectedCharacterNoPresent only when the request was rejected because the character text does not appear to describe a character: the submitted text. No generation ran and nothing was charged; revise it (or drop it and use characterReferences) and resubmit.
rejectedVariationsNoPresent only when the request was rejected because some variations do not appear to describe distinct, drawable variations: the exact rejected entries. No generation ran and nothing was charged; revise or remove them and resubmit.
suggestedCharacterNoPresent only on a validation suggestion: the cleaned character text, for review. An empty string means the cleanup removed the character text entirely (nothing in it said who or what the character is) - replace it, or use characterReferences. Absent when the character text was not checked (references only, or an extension). No generation ran and nothing was charged.
suggestedVariationsNoPresent only on a validation suggestion: the cleaned variation list, one entry per image. Adopt these, or resubmit your own wording with validation set to skip.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / variations / description
      Previous value: -"What the character is doing in each image, one entry per image: either a list of descriptions or objects with description and filename (e.g. [{\"description\": \"waving hello\", \"filename\": \"waving.png\"}]). Each entry is one isolated variation of the same character - its pose, action, expression, how strongly it feels it, and anything it holds or wears - not a scene or setting. Entries must be distinct: entries differing only in case, punctuation, or spacing are rejected as the same. Text can use only letters, numbers, dashes, spaces, and apostrophes, and must start and end with a letter or number."New value: +"What the character is doing in each image, one entry per image: either a list of descriptions or objects with description and filename (e.g. [{\"description\": \"waving hello\", \"filename\": \"waving.png\"}]). Each entry is one isolated variation of the same character - its pose, action, expression, how strongly it feels it, and anything it holds or wears - not a scene or setting. Entries must be distinct: entries differing only in case, punctuation, or spacing are rejected as the same. Write each variation as plain text, with no list marker such as \"1.\" or \"-\" in front, no square brackets, and no invisible characters."
  2. Changed5 schema fields changed
    • changedInput schema / properties / generation / description
      Previous value: -"The id of any batch in the set to extend: the random segment of its download URL (.../download/<id>/images.zip), also returned by list_recent_generations. The new batch is generated exactly as that set: the same tool, character text and character references, and the named batch's background, size, format, quality, margin and sizing."New value: +"The id of any batch in the set to extend: the random segment of its download URL (.../download/<id>/images.zip), also returned by list_recent_generations. The new batch is generated exactly as that set: the same tool, character text and character references, and the named batch's background, size, format, quality, margin, sizing and file size limit."
    • 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. Changed6 schema fields changed
    • changedOutput schema / properties / background / description
      Previous value: -"The background color used; absent for transparent sets."New value: +"The background color used, or transparent."
    • changedOutput schema / properties / images / description
      Previous value: -"The generated images: variation description, filename inside the zip, and pixel width and height."New value: +"The generated images: each one's file name inside the zip, its variation, and its pixel width and height."
    • addedOutput schema / properties / images / items / properties / description
      Added value: +{
      +  "description": "The subject, variation or scene this image was made from, as the call gave it.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / images / items / properties / filename / description
      Added value: +"The image's file name inside the zip."
    • removedOutput schema / properties / images / items / properties / name
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / properties / images / items / required
      Previous value: -[
      -  "name",
      -  "filename"
      -]New value: +[
      +  "filename",
      +  "description"
      +]
  4. Changed1 schema field changed
    • changedInput schema / properties / variations / description
      Previous value: -"What the character is doing in each image, one entry per image: either a list of descriptions or objects with description and filename (e.g. [{\"description\": \"the fox waving hello\", \"filename\": \"waving.png\"}]). Each entry is one isolated variation of the same character - its pose, action, expression, how strongly it feels it, and anything it holds or wears - not a scene or setting. Entries must be distinct: entries differing only in case, punctuation, or spacing are rejected as the same. Text can use only letters, numbers, dashes, spaces, and apostrophes, and must start and end with a letter or number."New value: +"What the character is doing in each image, one entry per image: either a list of descriptions or objects with description and filename (e.g. [{\"description\": \"waving hello\", \"filename\": \"waving.png\"}]). Each entry is one isolated variation of the same character - its pose, action, expression, how strongly it feels it, and anything it holds or wears - not a scene or setting. Entries must be distinct: entries differing only in case, punctuation, or spacing are rejected as the same. Text can use only letters, numbers, dashes, spaces, and apostrophes, and must start and end with a letter or number."
  5. Added

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare non-read-only, non-idempotent, open-world, non-destructive; the description adds the material facts an agent cannot infer: 1 credit per call, the new batch joins the set and restarts the whole set's download window, the 16-variation ceiling and how batch size shrinks it, and pre-generation validation refusals that cost nothing. Those are exactly the behavioral disclosures annotations cannot carry.

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

Conciseness3/5

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

Purpose and cost are front-loaded and the bullet structure is scannable, but the definition is very long and the final 'Showing the result' paragraph is client workflow guidance rather than tool semantics, running many sentences past what an agent needs to select and invoke the tool. Several rules (validation, delivery) are restated in both the body and the schema without added meaning.

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 a costly, non-idempotent mutation with an output schema present, the description covers the credit charge, the growth/side effects on the set, size-dependent limits, validation modes, rejection conditions, rate-limit behavior, and delivery expectations. Nothing an agent needs to avoid a wrong or wasted call is missing.

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 semantics beyond it: per-batch variation caps tied to the named batch's width/height (16/9/4/1), the rule that 'skip' does not bypass rejection rules, and the practical note that lowering the batch's size via edit_set raises the per-call cap. It does not restate the variations formatting rules in more depth than the schema, hence 4 rather than 5.

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 ('Add more variations to a set made with generate_character_set') and immediately distinguishes itself from the generation sibling and from edit_set. An agent can tell exactly what this does and what it extends without opening either 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?

Explicitly routes: use this to grow an existing set, 'start a new set instead' to change character or size, and 'use edit_set' to change only delivery. It also states the operational constraint that generation calls must run sequentially, never in parallel, plus the retry rule on rate-limit errors.

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