Home
Logospell · Docs

Image set tools

A set of separate images in one shared style, one subject each, on a solid-color background or a transparent one. For one character in many variations, use the character set tools; for composed scenes, the illustration set tools.

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

generate_image_set

A cohesive set of up to 16 subjects rendered in one style, on a solid background color you pick, or transparent, ready to drop onto any brand color or surface. 1 credit per call.

generate_image_set call
Use Logospell to make an image set of home, search, settings, profile, and notifications icons in a flat minimalist style with thin strokes, on a #2c3e50 background, as 512px webp at quality 85 with 30px margins, saved to ~/my-project/icons.
stylestringat least one

Visual style applied to all images, as text. Accepts any descriptive prose: art movements, mediums, color palettes, specific artists, or aesthetic references. Provide this, styleReferences, or both; together they hold a style most tightly.

At most 500 characters, with no square brackets. Text that does not describe a visual style is rejected. For the background, use the background parameter instead of mentioning it here. Image count, layout, and sizing should not appear in the style either. See the style examples section.

styleReferencesstring[]at least one

Up to 3 reference images that define the style by example, alone or alongside style. Each entry is a ref_ token from the create_reference tool, which has its own guide covering uploads, limits, and token reuse. The references carry rendering technique only; their subjects never appear in your output.

subjectsstring[] or object[]required

Subjects to render. 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 plain text, with no list marker such as "1." or "-" in front, no square brackets, and no invisible characters. Each must name a drawable subject and be distinct: entries that differ only in case, punctuation or spacing count as the same subject.

Filenames. Each file is named from its subject, so a subject with no Latin letters or numbers needs the object form with a filename. A filename is lowercased, its spaces become underscores, and characters other than a-z, 0-9, dash and underscore are dropped; its extension is replaced by the format's and a long base name is shortened. Filenames must still differ after this cleanup, ignoring extension and letter case.

Writing them. Name the subject only, concretely: "treasure chest overflowing with gold coins" beats "chest", and position or overall size don't belong, though size words on its own details are fine. Fewer subjects per call also means larger crisp icons later; see icon sizes.

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 style or in any subject; 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 subject 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 subject far larger than the rest, and fill scales each subject 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 subject's own proportion on the other. On a solid background, native sizes track the subject count: up to 6 subjects typically delivers roughly 650-950px per side, around ten 500-700, and a full 16 roughly 400-650. Fewer subjects means larger native images.

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 subject; neither: native size).

Default: not fixed

A hugging axis is not checked against the range: a wide subject 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 subject inside its output frame.

Default: 20

With relative sizing the actual margin varies by subject and never falls below this (only the set's largest subject sits exactly on it); with fill sizing every subject 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 subjects are scaled. relative keeps the sizes the model gave them in relation to one another: one scale for the whole set, so a small subject stays small in its frame. fill scales each subject 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 subject 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 style/subject cleanup is handled before generating. suggest returns a cleaned-up version of your prompt for review when the style and descriptions need separating; 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 a style that does not describe a visual style, or of subjects that are not distinct, drawable subjects. 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 style and you passed no styleReferences, 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 ~/my-project/icons; 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 subject 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.

stylestring

The style the set was generated with, after any auto-apply cleanup. Absent when the style 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.

suggestedStyle, suggestedSubjectsstring, string[]

Only on a validation suggestion: the cleaned style and subject list, for review. Nothing was generated or charged. An empty suggestedStyle means nothing in the style was usable; replace it, or use styleReferences.

rejectedStyle, rejectedSubjectsstring, string[]

Only when the content check refused the request: the style that does not describe a visual style, or the subjects that are not distinct, drawable subjects, 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_image_set

Adds up to 16 more subjects to a set made with generate_image_set, generated exactly as the set was: only the subjects are new. A set made with style 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 subjects are drawn like the rest of the set. Each call costs what one of the set's own generations costs.

Minimal extend_image_set call
Use Logospell to add a violin, an owl, and a hot air balloon to that last image set.
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, style text and style references, and the named batch's background, size, format, quality, margin, sizing and file size limit.

subjectsstring[] or object[]required

Subjects to render. 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 plain text, with no list marker such as "1." or "-" in front, no square brackets, and no invisible characters. Each must name a drawable subject and be distinct: entries that differ only in case, punctuation or spacing count as the same subject.

Filenames. Each file is named from its subject, so a subject with no Latin letters or numbers needs the object form with a filename. A filename is lowercased, its spaces become underscores, and characters other than a-z, 0-9, dash and underscore are dropped; its extension is replaced by the format's and a long base name is shortened. Filenames must still differ after this cleanup, ignoring extension and letter case.

Writing them. Name the subject only, concretely: "treasure chest overflowing with gold coins" beats "chest", and position or overall size don't belong, though size words on its own details are fine. Fewer subjects per call also means larger crisp icons later; see icon sizes.

validationstringoptional

How the cleanup of the new subjects is handled before generating; the set's style is settled and is not checked again. suggest returns cleaned-up subjects 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 subjects that are not distinct, drawable subjects. Set skip when resubmitting subjects 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 ~/my-project/icons; 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_image_set returns.

03 / 05 · Delivery
What lands on your filesystem

A folder of files
ready to use

Every set delivers the same way: 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. To name the files yourself, pass each subject as { description, filename }.

Call with filenames
Use Logospell to make a transparent image set in ornate art-nouveau botanical line art in burnished gold, 512px, saved to ~/my-project/icons: a regal crown as crown.png, an ornate key as key.png, a compass rose as compass.png, an oil lantern as lantern.png, and a rolled scroll as scroll.png.

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

your filesystem
~/my-project/icons/
├── crown.png
├── key.png
├── compass.png
├── lantern.png
├── scroll.png
├── references/  (your styleReferences, 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)

Omit the filename field and one is generated from the description. The index.html is a small preview page showing every generated file with its description, and the style references when you used them; open it in a browser for a quick visual check. If a connection ever drops mid-generation, list_recent_generations recovers the result.

04 / 05 · Style examples
How to write a good style

The style parameter takes prose.

The style is the one visual treatment shared by every subject in the set. More specific prompts produce more distinctive, more cohesive output. Name an art movement, an artist, a medium, a decade, or all of those at once, and describe only how the subjects are drawn: no background, scene, or frame. For many more looks, see styles.

style

Art Deco

style
art deco illustration with crisp geometric symmetry, stepped fan motifs, and a palette of burnished gold, jet black, and ivory

A well-known movement carries most of the look; a named palette pins its colors.

style

Pixel Art

style
16-bit pixel art game sprites with a limited 8-color palette, crisp blocky outlines, and chunky dithered shading, no anti-aliasing

For sprite and asset packs, name the bit depth and palette size to keep every subject on the same grid.

style

Stained Glass

style
stained-glass leadlight rendering with thick black leading and jewel-toned glass in sapphire, ruby, and amber

A craft with built-in structure, like leading, makes the set read as one collection.

style

Pencil Sketch

style
loose hand-drawn graphite pencil sketch with visible hatching, imperfect lines, and soft smudged shading

Describing imperfections prevents overly polished output.

05 / 05 · Tips
Things worth knowing

Small habits that get you better sets.

Skip painted canvases and color fields

Phrasings like oil painting or gouache painting, and color fields like set against jewel-tone fields, tend to render each subject as a framed rectangle with its own colored backdrop. Name a specific technique instead (watercolor illustration, pen-and-ink sketch, ink wash, relief etching) and describe only the subject's own linework, palette, and technique.

Style by reference

styleReferences work best when they share form with what you are making: three icons from an existing set carry its style onto new subjects far better than a photo of a mural.

Sets bigger than 16: extend them

The 16-subject ceiling is per call, not per set. Grow a set with extend_image_set: the id of any batch in it and the next subjects, 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.

See it on the site: style without subjects, style without a scene, subjects without style, subjects without a scene, adding to a set.