Home
Logospell · Docs

Character set tools

One character in as many variations as you like, up to 16 per call: a mascot, a creature, a person, or a single product, on a solid-color background or a transparent one. For many different subjects in one style, use the image set tools; for composed scenes, the illustration set tools.

scroll ↓
01 / 05 · Character set
Tool 1 of 2 · Generating a set

generate_character_set

Up to 16 images of one character, from text, reference images, or both, on a solid background color you pick, or transparent, ready for stickers, chats, and any backdrop. 1 credit per call.

generate_character_set call
Use Logospell to make a character set of the fox in this picture, a round orange fox kit with oversized ears and a teal scarf: waving hello, crying with laughter, and asleep in a tight ball, on a #f3d9b1 background, as 512px webp filling each frame, saved to ~/my-project/fox.
characterstringat least one

The character every image depicts, in words: who or what it is and how it looks (a mascot, a creature, a person, or a single product or object). Provide this, characterReferences, or both; with both, the references show what it looks like, and the text adds details and, if a reference image shows more than one character, says which of them to draw.

At most 500 characters, with no square brackets. Leave out backgrounds and scenes. When a reference image shows more than one character, say here which of them to draw.

characterReferencesstring[]at least one

Up to 3 reference images of the character, alone or alongside character. Each entry is a ref_ token from the create_reference tool, which has its own guide covering uploads, limits, and token reuse. The set shows the character alone, not the rest of the reference images.

variationsstring[] or object[]required

What the character is doing in each image, one entry per image. Each entry is a string description, OR an object with { description, filename } to control the output filename.

Limits. At most 16 per call, each up to 200 characters of letters, numbers, dashes, spaces and apostrophes, starting and ending with a letter or number. Each must be a distinct, drawable variation: entries that differ only in case, punctuation or spacing count as the same variation.

Filenames. Each file is named from its variation, so a variation with no Latin letters or numbers needs the object form with a filename, cleaned up the same way as an image set's subjects.

Writing them. Each says what the character is doing: the action and pose, the feeling and how strongly, the expression, and anything held or worn. See the variations section.

backgroundstringoptional

The background every image sits on: a solid color as a 6-char hex (#RRGGBB), or transparent for images with no background, ready to drop onto any brand color or surface.

Default: #ffffff
Values:#RRGGBBtransparent

Do NOT describe background in the character or in any variation; set it here so we can ensure you get exactly the background you want.

formatstringoptional

png is always lossless. jpg and webp use the quality parameter.

Default: png
Values:pngjpgwebp

jpg has no alpha channel, so a set delivered transparent is png or webp.

widthintegeroptional

Delivered width in pixels, 256 to 512 when given. Give both width and height for an exact box: every image lands on it, one uniform scale, the shorter axis padded. Give only one and the other axis hugs each variation at that scale plus the margin, so images in the set differ on it. Give neither and images come back at their native resolution: relative sizing scales nothing but a variation far larger than the rest, and fill scales each variation to its frame.

Default: not fixed

Leave both unset for highest quality when you plan to post-process; fix them for consistent dimensions across calls; fix one to let each image keep its variation's own proportion on the other.

heightintegeroptional

Delivered height in pixels, 256 to 512 when given; see width for how the two combine (both: an exact box; one: the other axis hugs each variation; neither: native size).

Default: not fixed

A hugging axis is not checked against the range: a wide variation fixed at 512 wide comes back well under 512 tall, which is the point, and its neighbors each take their own height.

minimumMarginintegeroptional

Minimum margin in pixels around each variation inside its output frame.

Default: 20

With relative sizing the actual margin varies by variation and never falls below this (only the set's largest variation sits exactly on it); with fill sizing every variation touches it on one axis. Raise for breathing room, drop to 0 when you will add your own margin. At most 15% of the smallest fixed side when a size is given, at most 80 without one.

sizingstringoptional

How variations are scaled. relative keeps the sizes the model gave them in relation to one another: one scale for the whole set, so a small variation stays small in its frame. fill scales each variation on its own to fill the frame less the margin, touching it on one axis, so every image reads at the same visual weight.

Default: relative
Values:relativefill

The icon-set convention is fill; it gives up relative size and enlarges any variation smaller than the frame, which the result reports when it happens. Either can be changed later with edit_set.

qualityintegeroptional

Compression quality for jpg and webp, from 1 (smallest file) to 100 (best quality). Ignored for png.

Default: 90
Values:1 to 100
maxKBintegeroptional

A file size limit for each image, in KB (1 KB = 1024 bytes). webp only; rejected with png or jpg.

Values:10 to 10240

An image that fits keeps the quality above; one that does not has its quality and the precision of its transparent edges lowered together, 5 quality points at a time down to 70, until it fits (a set below 70 keeps its quality and lowers only its edges), so images in a set can land at different qualities and the faintest edges of a busy transparent image can soften. An image still over the limit at the last step is delivered anyway and named in the result. For platforms that cap each file's size.

validationstringoptional

How the character and variation cleanup is handled before generating. suggest returns a cleaned-up version of your prompt for review when the character text or a variation carries something it should not (a background, a scene, or in the character text, what the character is doing); skip generates your wording as given, with no cleanup; auto-apply applies the cleanup and generates in one step.

Default: suggest
Values:suggestskipauto-apply

No mode skips the rejection of character text that does not describe a character, or of variations that are not distinct, drawable variations. Set skip when resubmitting a prompt you already revised from a previous suggestion (so your approved wording is used as-is, with no further suggestions) or when you are confident the prompt is clean. Use auto-apply when you just want the cleaned result without a review step; if the cleanup would leave no usable character text and you passed no characterReferences, it returns the suggestion instead of generating.

unpackTostringoptional

Local filesystem path your MCP client should extract the returned zip into.

Any path on your machine, such as ~/stickers; your client extracts the zip there, since the server never writes to your disk. If omitted, the client picks a destination.

What comes back

Beside its text reply, a call returns these fields, each only when it applies:

zipURLstring

Download URL for the zip of the set. It works until expiresAt.

expiresAtstring

When the download URL expires, 30 days after the call.

imagesobject[]

One entry per image: filename inside the zip, description (the variation it was made from, as the call gave it), width and height in pixels, and the file's size in bytes. Under a file size limit (maxKB) each entry also carries the quality it was delivered at, the transparency levels it kept (maskLevels, 256 when exact), and overBudget when it is still over the limit.

formatstring

The delivered image format.

characterstring

The character text the set was generated with, after any auto-apply cleanup. Absent when the character came from references alone.

backgroundstring

The background the set was generated on: a color, or transparent.

remaininginteger

Credits left on your key after this call.

unpackTostring

Your unpackTo, echoed back.

suggestedCharacter, suggestedVariationsstring, string[]

Only on a validation suggestion: the cleaned character text and variation list, for review. Nothing was generated or charged. An empty suggestedCharacter means nothing in the character text said who or what the character is; replace it, or use characterReferences.

rejectedCharacter, rejectedVariationsstring, string[]

Only when the content check refused the request: the character text that does not describe a character, or the variations that are not distinct, drawable variations, as checked (after any auto-apply cleanup). The refusal comes back as a result, not an error. Nothing was generated or charged; revise them and resubmit.

02 / 05 · Extend
Tool 2 of 2 · Growing a set

extend_character_set

Adds up to 16 more variations to a set made with generate_character_set, generated exactly as the set was: 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. Each call costs what one of the set's own generations costs.

Minimal extend_character_set call
Use Logospell to add two more axolotl stickers to that set: ice skating gracefully, and winning a trophy.
generationstringrequired

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.

variationsstring[] or object[]required

What the character is doing in each image, one entry per image. Each entry is a string description, OR an object with { description, filename } to control the output filename.

Limits. At most 16 per call, each up to 200 characters of letters, numbers, dashes, spaces and apostrophes, starting and ending with a letter or number. Each must be a distinct, drawable variation: entries that differ only in case, punctuation or spacing count as the same variation.

Filenames. Each file is named from its variation, so a variation with no Latin letters or numbers needs the object form with a filename, cleaned up the same way as an image set's subjects.

Writing them. Each says what the character is doing: the action and pose, the feeling and how strongly, the expression, and anything held or worn. See the variations section.

validationstringoptional

How the cleanup of the new variations is handled before generating; the set's character text is settled and is not checked again. suggest returns cleaned-up variations for review when they need it; skip generates your wording as given, with no cleanup; auto-apply applies the cleanup and generates in one step.

Default: suggest
Values:suggestskipauto-apply

No mode skips the rejection of variations that are not distinct, drawable variations. Set skip when resubmitting variations you already revised from a previous suggestion, or when you are confident they are clean.

unpackTostringoptional

Local filesystem path your MCP client should extract the returned zip into.

Any path on your machine, such as ~/stickers; your client extracts the zip there, since the server never writes to your disk. If omitted, the client picks a destination.

What comes back

The same fields as generate_character_set returns.

03 / 05 · Delivery
What lands on your filesystem

A folder of files
ready to use

Character sets deliver like image sets: your AI client receives a download URL that works for 30 days, fetches the ZIP, and extracts it into the path you passed as unpackTo. A call for transparent stickers:

Transparent stickers
Use Logospell to make transparent stickers of the man in this photo, not the woman beside him: giving a double thumbs up, facepalming, and jumping for joy, as 512px webp filling each frame, saved to ~/stickers.

After the client unzips the result you get those files on disk:

your filesystem
~/stickers/
├── giving_a_double_thumbs_up.webp
├── facepalming.webp
├── jumping_for_joy.webp
├── references/  (your characterReferences, or images from the set's first batch when extending a set made from text)
│   └── reference-1.png
├── prompt.json      (the request, for your records)
└── index.html       (preview viewer for the set)

The index.html is a small preview page showing every image with its variation, and the character references when you used them. A set can be delivered again at another size or format with edit_set, or exported as app icons with export_set.

04 / 05 · Variations
How to write a good variation

A variation is what the character is doing.

The character and its references decide who appears in every image; each variation decides only what that one character is doing in its image. Describe the action and pose, the feeling and how strongly, the expression, and anything it holds or wears. No backgrounds, settings, or captions.

variation

How strongly it feels

variation
laughing so hard it doubles over clutching its stomach

Name the feeling and how strongly it is felt: a slow-burning glare and a mid-leap scream read very differently.

variation

The character, not a scene

variation
curled in a tight ball fast asleep with its tail over its nose

Describe only the character, never where it is or what is around it.

variation

What it holds

variation
sipping from a steaming mug with a smug look

Describe anything it holds or wears; leave out what is around it.

variation

A product, many ways

variation
tilted mid-pour with coffee streaming out

A single product works the same way, here a coffee mug: each variation is one view or use of the same object.

05 / 05 · Tips
Things worth knowing

Small habits that get you better sets.

When a reference shows more than one character

A reference image can show more than one character. Say in character which of them to draw (the man in the photo, not the woman beside him); the rest of the photo stays out of the set.

Sticker packs

Use background: "transparent" with sizing: "fill", so every sticker drops onto any chat background at the same visual weight. Strong, specific feelings make the best stickers.

Sets bigger than 16: extend them

The 16-variation ceiling is per call, not per set. Grow a set with extend_character_set: the id of any batch in it and the next variations, and the new batch is generated exactly as the set was, restarting the whole set's download window. Expanding a set from your generations does the same.