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.
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.
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.
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.
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).
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.
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.
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.
maxKBintegeroptional
A file size limit for each image, in KB (1 KB = 1024 bytes). webp only; rejected with png or jpg.
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.
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.
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.