generate_concept_set
Generate a SET of DIFFERENT CONCEPTS from one brief - each image its own idea drawn in its own style - on one SOLID-COLOR background or a TRANSPARENT one: logo ideas for a business, mascot concepts, app icon directions. Use it to explore before choosing; to show one chosen concept many ways, pass its image to generate_logo_variations (fill a reference with create_reference's sourceGeneration and sourceImage). The brief parameter says what the concepts are for; the optional concepts parameter lists them, each its own idea in a named style, and left out, the model invents 16 concepts from the brief; the background parameter is a color or "transparent". Returns a zip download URL. Cost: 1 credit per call. Run generation calls sequentially, never in parallel - only one generation runs at a time per API key.
For many different subjects in ONE shared style, use generate_image_set instead.
Output formats: PNG (lossless), JPEG, or WebP; JPEG has no alpha channel, so a set delivered transparent is PNG or WebP.
Size and quality considerations match generate_image_set: leaving width and height unset delivers native resolution (best quality, varies between generations; relative sizing scales nothing but a concept far larger than the rest, fill scales each concept to its frame); fixing them resamples to that box, and fixing one axis lets the other hug each concept.
IMPORTANT - brief and concept rules for best results:
Listing the concepts says exactly what each one is; leaving them out lets the model invent them, each file and caption numbered and named from what it shows (concept_01_boat_on_waves.png, "Concept 1: boat on waves"), and the brief is all it has to go on.
Give each listed concept its own idea and its own named style, ranging widely across media, eras and design traditions; no two concepts should share an idea or a style.
Put a name, must-haves, things to avoid and a mood in the brief. A name in the brief is lettered into the concepts.
Each image is ONE isolated concept, not a scene: never describe a surrounding setting, scenery or backdrop.
Do not put background color or background descriptions in the brief or concept text.
Lettering is welcome: a name, initials, a wordmark, a tagline.
Maximum 16 images per generation.
Brief description max length: 500 characters. Concept description max length: 200 characters each.
Size: width and height are separate parameters, each 256 to 512 pixels when given. Both given is an exact box; one given fixes that axis and the other hugs each concept (so images in the set differ on it, and it may fall below 256); neither given delivers native resolution, which is also the path to larger images.
Sizing: relative (the default) keeps the sizes the model gave the concepts in relation to one another, one scale for the whole set; fill scales each concept on its own to fill its frame less the margin, the icon-set convention, giving up relative size and enlarging concepts smaller than the frame (the result says by how much). Both can be changed later with edit_set.
More concepts: call this tool again with the same brief and new concepts, or none for another invented set. Concept sets have no extend tool.
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": {
"brief": "<brief>"
},
"name": "generate_concept_set"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| brief | Yes | What the concepts are for, in words: for example "Logo ideas for Ember & Oak, a small-batch coffee roaster in Portland. Warm, handmade, a little rustic." A name, must-haves, things to avoid and a mood all go here. A name in the brief is lettered into the concepts. | |
| maxKB | No | A file size limit for each image, in KB (1 KB = 1024 bytes), 10 to 10240; webp only (rejected with png or jpg). An image that fits keeps the quality set 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. Omit for no limit. | |
| width | No | Delivered width in pixels. 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 concept at that scale plus the margin (so images in the set differ on it); give neither and images arrive at their native size (relative sizing scales nothing but a concept far larger than the rest, fill scales each concept to its frame) - the highest detail, though dimensions then vary between generations. The per-axis range is given in the tool description; a given axis outside it is rejected, and the hugging axis is whatever each concept needs. A fixed size guarantees consistent dimensions across images and generations but applies Lanczos resampling which may soften fine detail; if the user will post-process the images, recommend leaving both unset. | |
| format | No | Output format: png, jpg, or webp. Defaults to png. jpg has no alpha channel, so a set delivered transparent is png or webp. | |
| height | No | Delivered height in pixels; see width for how the two combine (both: an exact box; one: the other axis hugs each concept; neither: native size). | |
| sizing | No | How concepts are scaled. relative (the default) keeps the sizes the model gave them in relation to one another: one scale for the whole set, so a small concept stays small in its frame. fill scales each concept on its own to fill the frame less the margin, touching it on one axis, so every image reads at the same visual weight (icon-set convention); that gives up relative size and enlarges any concept smaller than the frame, which the result reports when it happens. | |
| quality | No | Image quality for jpg/webp (1-100). Defaults to 90. | |
| concepts | No | Optional: leave it out and the model invents 16 concepts from the brief, each delivered numbered and named from what it shows (concept_01_boat_on_waves.png). Otherwise the concepts to draw, one per image, each its own idea in its own named style (e.g. "an oak leaf curling into a flame, as copperplate engraving"), as text or objects with description and filename. Entries must be distinct: entries differing only in case, punctuation, or spacing are rejected as the same. Write each concept as plain text, with no list marker such as "1." or "-" in front, no square brackets, and no invisible characters. | |
| unpackTo | No | Path 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). | |
| background | No | The background every image sits on: a 6-char hex color #RRGGBB (e.g. #ffffff, #2c3e50), or "transparent" for images with no background that drop onto any backdrop. Default is #ffffff. Do not mention background in the brief or concept descriptions. | |
| minimumMargin | No | Minimum margin in pixels around each concept. Defaults to 20. At most 15% of the smallest given axis when width or height is given, at most 80 when neither is; negative values are rejected. With relative sizing the actual margin varies by concept and never falls below this (only the set's largest concept sits exactly on it); with fill sizing every concept touches it on one axis. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| brief | No | ||
| format | No | The delivered image format. | |
| images | No | The generated images: each one's file name inside the zip, its concept (when the model invented them, its number and what it shows: "Concept 1: boat on waves"), and its pixel width and height. | |
| zipURL | No | Download URL for the zip of generated images. Time-limited; expiresAt states the deadline. | |
| unpackTo | No | The caller-supplied local extraction path, echoed back. | |
| expiresAt | No | When the download URL expires. | |
| remaining | No | Credits remaining after this call. | |
| background | No | The background color used, or transparent. | |
| manifestURL | No | ||
| rejectedBrief | No | Present only when the request was rejected because the brief does not appear to say what the concepts are for: the submitted text. No generation ran and nothing was charged; revise it and resubmit. | |
| rejectedConcepts | No | Present only when the request was rejected because some concepts do not appear to describe distinct, drawable concepts: the exact rejected entries. No generation ran and nothing was charged; revise or remove them and resubmit. |