Image
Generate, transform, edit, mask, composite and describe images from an AI assistant with the Nodaro image tools, their parameters, defaults and credits.
The image tools let an assistant create and change images in Nodaro: generate from a prompt, transform or edit an existing image, cut a mask, composite several images or layers, and describe what an image shows. Each tool except suggest_overlay_placement, save_image_defaults and the palette and moodboard tools starts a job and returns its id, and the result is saved to your library. Every image tool except the palette and moodboard tools needs the workflows:execute permission.
| Tool | What it does | Credits |
|---|---|---|
generate_image | Text to image, with references and optional inpainting | The model's price |
modify_image | Edits, restyles and transforms an existing image | The model's price |
image_to_image | Prompt-guided image to image, with masks and several references | The model's price |
edit_image | Upscale, background removal and targeted edits | The operation's price |
split_into_layers | One image split into a base picture and transparent layers | Per image returned |
generate_mask | A black and white mask of what you describe | 55 |
image_collage | 2 to 30 images in one large image | 22 at 2K, 44 at 4K |
image_overlay | Logos, text, QR codes and shapes placed on an image, without AI | 11, more with extra sizes |
suggest_overlay_placement | Where a logo or text should sit on an image | One image description |
image_to_text | A description or answer about an image | Charged for the tokens used, at the model's rate |
save_image_defaults | Your default image model and settings | Free |
list_palettes, save_palette | Your own color palettes, to steer generate_image | Free |
list_moodboards, save_moodboard | Your own moodboards, to steer generate_image | Free |
generate_image
Creates an image from a text prompt with one of Nodaro's image models. It is the tool behind requests such as "make an image of…", and it works like the Generate Image node.
Permission: workflows:execute. Credits: the price of the model at the chosen resolution or quality.
| Parameter | Type | Notes |
|---|---|---|
prompt | string | The description of the image, up to 4,000 characters. Required unless a preset supplies it. |
model | string | The model id. Default gpt-image-2. An unknown id falls back to the default. See list_models. |
aspect_ratio | string | For example 16:9, 9:16, 1:1, 4:3, 3:4 or 21:9. Default 16:9. Forms such as 16x9 are accepted, and a ratio the model does not support falls back to one it does. auto keeps the shape of your photo on every model: base_image_url when set, else the first reference image. A model whose own auto setting keeps the shape receives it. Any other model uses its supported ratio closest to that photo, and so does GPT Image 2.6, whose own auto renders a portrait square. With no photo, auto gives the model's own auto where it has one, else 16:9 where the model lists it, else its first listed ratio. |
resolution | string | 1K, 2K or 4K, on models that support it. The nearest supported value is used. |
quality | string | The quality levels the model lists in list_models, on models that have a quality setting. With auto, the run is charged for the image it actually made, and never more than the price of max. |
background | string | auto, opaque or transparent, on models that list it. On GPT Image, a transparent background renders at 1K. |
output_format | string | The file format: png (default), jpeg, webp, gif or svg, on GPT Image 2.6 Flare and Sunburst. See Output format. |
gif_frames, gif_frame_duration_ms, svg_level | The GIF and SVG settings of output_format. | |
negative_prompt | string | What to avoid, up to 2,000 characters. |
reference_image_urls | array | Up to 14 reference images, or 16 on GPT Image 2.6 or MiniMax H3 Image, as URLs or Nodaro ids, to keep a person, character, product or style. The reply confirms how many were attached. |
count | integer | From 1 to 4 images per model. Each image is its own job. |
models | array | From 2 to 4 image model ids, instead of model. The same request runs on each model. |
presetId | string | A preset from list_node_presets, applied as the editor applies it. Fields you pass override it. See Apply a preset. |
variables | object | Values for a preset's placeholders that have no default, for example { "BRAND": "Acme" }. |
palette_id | string | A palette from list_palettes. Its colors are named in the prompt. |
moodboard_id | string | A moodboard from list_moodboards. Its description joins the prompt, and its images go to the model as style references. |
subject | object | Who is in the shot, as catalog ids: { field: id } or { field: [ids] }. The fields are the person and styling fields, heldProp, material and animal, from get_picker_catalog. |
structured | object | Structured details added to the prompt: person (age, gender, expression, eyes, hair, profession), styling (aesthetic, color look, lighting, mood), setting (atmosphere, backdrop, era), camera (format, framing, motion), lens (aperture, focal length) and mood. |
described_references | array | Up to 10 { name, description } entries for a subject you can name but have no picture of. Each becomes a line of the prompt, so the name in your prompt reaches the model as a described subject. |
connected_references, reference_order | array | Advanced. Labeled, ordered references in the editor's own format, up to 14. |
base_image_url, mask_url | string | Inpainting: the image to edit and a mask, where white is changed and black is kept. The masked area is generated again and placed back over the image. |
strength | number | For inpainting, from 0 (subtle) to 1 (full repaint), on models that support it. |
guidance_scale | number | From 0 to 20, on models that support it. |
user_request | string | The user's latest message to the assistant, word for word, up to 4,000 characters. It is kept on the node in the conversation's workflow and never changes what is generated. See MCP conversations become workflows. |
flow_id | string | "new" starts a new workflow for this step. A workflow id from an earlier result adds the step to that workflow. Up to 36 characters. See MCP conversations. |
Returns: a job id. In clients with MCP Apps, the card shows the image when it is ready.
Several images in one call
countmakes up to 4 images of the same request. Each image is its own job.modelsruns the same request on 2 to 4 models. With both,countis per model, so one call makes at most 8 images.- The answer lists every job id, grouped by model, with the batch id. The card and
jobIdfollow the first job. - Each model gets its own settings. Levers such as aspect ratio and resolution are fitted to each model, as on a single call.
- The batch is charged as a whole. Nodaro checks your balance for the whole batch and creates all of its jobs, or none. An error answer means nothing was charged.
- Refusals. A
countoutside 1 to 4, more than 4 models,modelandmodelstogether, or a list that names a model that is not an image model is refused. The error names the problem. Model ids inmodelsmatch without regard to capital letters.
Apply a preset
presetId applies a built-in or saved preset exactly as the editor applies it:
- The preset's prompt and its text before and after the prompt are used. Your own
promptis wrapped in that text. - Placeholders written as
{name || default}are filled with their defaults. - The preset's style and negative prompt are passed the way the model takes them.
- Any setting the preset leaves unset gets the editor's default. Your saved image defaults do not apply to a preset call.
A placeholder with no default, such as {BRAND}, needs a value in variables. Without one, the tool names the missing value. With count, the tool makes that many images of the preset's request. With models, it applies the preset once for each model. You cannot combine presetId with palette_id or moodboard_id yet: the call is refused.
Palettes and moodboards
palette_id names every color of a palette in the prompt, by an everyday name and its hex code. moodboard_id adds the moodboard's description to the prompt and sends its images as style references, after your own references, up to the model's limit. The answer says when some images did not fit. Create and find palettes and moodboards with the tools below.
Output format
generate_image, modify_image and image_to_image take output_format on GPT Image 2.6 Flare and Sunburst. list_models lists the formats of each model as outputFormats.
- Formats.
png(default),jpeg,webp,giforsvg.jpgis read asjpeg. - GIF. An animated square GIF of 512 × 512 pixels, with 2 to 16 frames.
gif_framessets the number of frames, default9.gif_frame_duration_mssets how long each frame shows, from 20 to 2,000 ms, default200. A GIF ignores the aspect ratio and the resolution. - SVG.
svg_levelsets the detail:standard,detailedormax. - Price. PNG, JPEG and WebP cost the same. A GIF is priced by its quality and its number of frames. An SVG costs the PNG price plus a part for its level. See Formats on the Generate Image page.
- Limits. A transparent background is kept only in PNG and WebP. A mask with a GIF or an SVG is refused.
What the server changed is listed in the answer's adjustments.
modify_image
Edits, restyles or transforms an existing image with a prompt: change a color, swap a background, apply a style, extend or repaint part of the frame. It works like the Modify Image node.
Permission: workflows:execute. Credits: the price of the model.
| Parameter | Type | Notes |
|---|---|---|
prompt | string | Required. The change you want, up to 8,000 characters. |
image_url or image_asset_id | string | Required, one of the two. A public https URL, or the id of a Nodaro job whose result is an image. |
model | string | Default gpt-image-2-6-flare-i2i. Use nano-banana-pro to keep a face or a character the same across several edits and for text in the image, and gpt-image-2-i2i for edits with a lot of text. An unknown id falls back to the default. |
aspect_ratio | string | The output shape. auto keeps the shape of the photo on every model. A model whose own auto setting keeps the shape receives it. Any other model uses its supported ratio closest to the source image, and so does GPT Image 2.6, whose own auto renders a portrait square. Another unsupported value falls back. Without it, your saved aspect ratio is used. With neither, the GPT Image 2, 2.5 and 2.6 edit models, the default included, and Seedream 5.5 run at auto. Other models run at 16:9 where they list it, else at their first listed ratio. |
resolution | string | The nearest supported value is used. GPT Image 2.5 renders the ratios 27:16, 16:27, 9:8 and 8:9 at 1K only: a 2K or 4K request at those ratios runs, and is charged, at 1K. |
quality | string | The quality levels the model lists in list_models, on models that have it. With auto, the run is charged for the image it actually made, and never more than the price of max. |
background | string | auto, opaque or transparent, on models that list it. On GPT Image, a transparent background renders at 1K. |
output_format, gif_frames, gif_frame_duration_ms, svg_level | The file format, as on generate_image. See Output format. | |
negative_prompt | string | What to avoid, up to 2,000 characters. |
mask_url | string | An inpainting mask: white is changed, black is kept. Used by gpt-image-2-6-flare-i2i, gpt-image-2-6-sunburst-i2i, ideogram-edit and flux-fill, the models whose list_models sheet lists the mask feature. Other models ignore it. A mask cannot be used with a GIF or an SVG output. See Masks. |
structured | object | The same structured details as generate_image. |
user_request | string | The user's latest message to the assistant, word for word, up to 4,000 characters. It is kept on the node in the conversation's workflow and never changes what is generated. See MCP conversations become workflows. |
flow_id | string | "new" starts a new workflow for this step. A workflow id from an earlier result adds the step to that workflow. Up to 36 characters. See MCP conversations. |
Returns: a job id.
image_to_image
Transforms an image with a prompt, with options for masks and for composing several references in one image.
Permission: workflows:execute. Credits: the price of the model.
| Parameter | Type | Notes |
|---|---|---|
prompt | string | Required. The transformation, up to 2,000 characters. |
image_url or image_asset_id | string | The source image. |
model | string | Default gpt-image-2-6-flare-i2i, or the edit model that draws the aspect_ratio you asked for. Others include nano-banana, nano-banana-2, flux-kontext for photorealistic edits, gpt-image-i2i for creative repaints, flux-i2i and ideogram-remix. An unknown id is refused. The answer's model names the model that the job runs. |
reference_image_urls | array | Extra reference images beside the source image, as URLs or Nodaro ids, for models that take several references. Up to 13, or 15 on GPT Image 2.6 or MiniMax H3 Image, and 9 on Seedream 5.5. |
mask_url | string | An inpainting mask: white is changed, black is kept. Used by gpt-image-2-6-flare-i2i, gpt-image-2-6-sunburst-i2i, ideogram-edit and flux-fill, the models whose list_models sheet lists the mask feature. Other models ignore it. A mask cannot be used with a GIF or an SVG output. See Masks. |
strength | number | From 0 (subtle) to 1 (full repaint). |
aspect_ratio | string | The output shape. |
resolution | string | 1K, 1.5K, 2K or 4K, depending on the model. |
quality | string | auto, low, medium, high, xhigh, max or basic, depending on the model. |
output_format, gif_frames, gif_frame_duration_ms, svg_level | The file format, as on generate_image. See Output format. | |
seed | integer | A fixed seed, on models that support it. |
negative_prompt | string | What to avoid, up to 5,000 characters. |
user_request | string | The user's latest message to the assistant, word for word, up to 4,000 characters. It is kept on the node in the conversation's workflow and never changes what is generated. See MCP conversations become workflows. |
flow_id | string | "new" starts a new workflow for this step. A workflow id from an earlier result adds the step to that workflow. Up to 36 characters. See MCP conversations. |
Your saved image defaults fill in what the call leaves out. A value the call names always wins.
- Aspect ratio, resolution and quality. Each saved value is fitted to the model. A saved
aspect_ratio: "auto"works like a named ratio. A saved resolution or quality that the model does not take is left out. - Model. The saved model is used only when an edit can run it: an edit model, or a model that generates and edits under one id, such as
nano-banana-pro. A text-to-image model such asgpt-image-2is not used for an edit. - With neither. The GPT Image 2, 2.5 and 2.6 edit models and Seedream 5.5 run at
autoand keep the photo's shape. GPT Image 2, GPT Image 2.5 and Seedream 5.5 receive their ownauto, and GPT Image 2.6 the supported ratio closest to the photo. Any other model runs at its own default ratio.
Returns: a job id.
Masks
mask_url is a black and white image: white is the area to change, and black is kept. image_to_image and modify_image take it the same way. On GPT Image 2.6, the rest of the picture is kept exactly as it was: the source is pasted back everywhere outside the mask, and the result has the source's size. The run keeps the photo's shape and renders at the size (1K, 2K or 4K) nearest the photo, and is priced at that size. The answer's adjustments list each change. A mask costs nothing extra and does not count as an input image. Make a mask with generate_mask.
edit_image
Upscales an image, removes its background, or applies a targeted edit. Choose the operation with model.
Permission: workflows:execute. Credits: the price of the operation, in the table below.
model | Operation | Needs |
|---|---|---|
recraft-upscale (default) | A sharp upscale | The image |
topaz-image-upscale | Upscale by 1, 2 or 4 times | The image, and upscale_factor |
nodaro-image-upscale | Nodaro Image Upscale: 1 (enhance only), 2, 4 or 8 times. It restores detail and keeps lettering exactly as written. Priced by the output's size | The image, and upscale_factor |
recraft-remove-bg | Removes the background and returns a PNG with transparency | The image |
nano-banana-edit | A prompt edit, inside a mask or outside the frame | The image, prompt, and an optional mask_url |
grok-2-segment | A free map of named regions of an earlier Grok Imagine 2 image | task_id |
grok-2-edit | A prompt edit of an earlier Grok Imagine 2 image, optionally only in some regions | task_id, prompt, and optional mask_indexes |
| Model | Maker | Modes | Credits | Details |
|---|---|---|---|---|
| Recraft Crisp Upscale | Recraft | Image upscaling | 3 | Light-weight image upscale (Recraft Crisp). |
| Topaz Image Upscale | Topaz | Image upscaling | from 28 | High-quality image upscale at 1x (enhance only), 2x or 4x. Best for production-ready output. |
| Recraft Remove BG | Recraft | Background removal | 4 | Remove image background. Cheap utility. |
| Nano Banana Edit | Image editing | 11 | Image-to-image edits via Google's Nano Banana family. Good general-purpose editor. | |
| Grok Imagine 2 Segment Map | xAI | Image editing | 0 | FREE semantic segment map of a prior grok-2 generation — named region masks whose indexes feed grok-2-edit's region targeting. |
| Grok Imagine 2 Edit | xAI | Image editing | 11 | Prompt-edit a prior grok-2 generation by task id. Optional mask indexes (from grok-2-segment) restrict the edit to named regions. |
| Parameter | Type | Notes |
|---|---|---|
model | string | The operation, from the table above. Default recraft-upscale. |
image_url or image_asset_id | string | The source image, for every operation except the two Grok ones. |
prompt | string | Required for nano-banana-edit and grok-2-edit. Up to 2,000 characters. |
mask_url | string | For nano-banana-edit: white is changed. |
upscale_factor | string | For topaz-image-upscale: 1, 2 or 4. For nodaro-image-upscale: 1, 2, 4 or 8. Default 2. |
target_resolution | string | An older way to set the upscale factor for topaz-image-upscale: 2K is 2, and 4K and 8K are both 4. Use upscale_factor instead. |
task_id | string | For the Grok operations: the task id of the earlier Grok Imagine 2 generation. get_job returns it as providerTaskId in the generation's output. |
mask_indexes | array | For grok-2-edit: the index values of the regions to change, from a grok-2-segment run. |
negative_prompt, seed, style | Optional, on the operations that use them. |
To edit only some regions of a Grok Imagine 2 image, work in two steps. First run grok-2-segment with the image's task_id, and read the named regions from the job's segments. Then run grok-2-edit with the same task_id, a prompt, and the mask_indexes of the regions to change. The region map is free.
grok-upscale is no longer offered: it never upscaled an image. A call that still names it is refused with a message that names the replacement, recraft-upscale or topaz-image-upscale.
Returns: a job id.
split_into_layers
Splits one image into a base picture and separate layers, each element on its own transparent PNG. Each layer comes with its name, description, position and stacking order. It works like the Split into Layers node, and is not listed where that node is not offered.
Permission: workflows:execute. Credits: charged per image returned, the base included. A run holds the price of max_layers + 1 images at its size, and is charged only for the images it returns. 1K and 1.5K are priced alike, and so are 2K and auto.
| Parameter | Type | Notes |
|---|---|---|
image_url or image_asset_id | string | The image to split: a URL, a Nodaro image job id or an uploaded image's id. |
max_layers | integer | The most layers to make, from 1 to 99. Default 9. More elements than that are merged into fewer layers, and none is dropped. |
size | string | Each image's pixel budget: 1K (default, about one megapixel), 1.5K, 2K or auto, which keeps the picture's own size between 1K and 2K. |
prompt | string | What to separate, up to 2,000 characters. It may mark areas as <bbox>x1 y1 x2 y2</bbox>, on a 0 to 1000 scale. Leave it empty, and the main elements are found automatically. |
Returns: a job id. The job's output holds:
imageUrl: the base picture, an opaque PNG.layers: each layer's file, from bottom to top, andlayerCount.layersNotSaved: the layers that could not be saved. They are not charged.layerData: one entry per layer, in the same order, withname,description,zIndex,width,height,box,boxNormalized,urlandbaseUrl.
zIndex is the stacking order: 1 sits on the base, and higher is drawn above. box is where the layer sits on the base, in the base's pixels, and boxNormalized is the same box on a 0 to 1000 scale. A layer file is cropped to its element, so scale it to its box to put it back in place. A run that finds no element returns the base only, at the price of one image.
generate_mask
Makes a black and white mask of what you describe, for example "the person" or "sky and clouds". White is the selected area. Use the mask with image_to_image, edit_image or the inpainting fields of generate_image. It works like the Generate Mask node.
Permission: workflows:execute. Credits: 55.
| Parameter | Type | Notes |
|---|---|---|
prompt | string | Required. What to select, up to 500 characters. |
image_url or image_asset_id | string | The source image. |
threshold | number | The detection confidence, from 0 to 1. Default 0.3. |
Returns: a job id. The result is a PNG mask.
image_collage
Puts 2 to 30 images into one large image. No image is ever cropped: the smart layout arranges them in rows at their own shapes, and the grid layout uses equal cells with the empty space filled by the background color. It works like the Image Collage node, and suits storyboards and contact sheets.
Permission: workflows:execute. Credits: 22 at 2K, 44 at 4K.
| Parameter | Type | Notes |
|---|---|---|
images | array | Required. 2 to 30 items, each { url } or { asset_id }. An item can add size, a relative size for the smart layout (0 auto, 1 big, 2 medium, 3 small), and label, a caption of up to 80 characters. |
layout | string | smart (default) or grid. |
resolution | string | The long edge: 2K, or 4K (default, 3,840 pixels). |
aspect_ratio | string | Any W:H, such as 16:9 or 9:16. Default 4:3. Exact in grid; a target in smart, where the height follows the rows. |
gap | integer | The space between images and around them, from 0 to 200 pixels. Default 24. |
background_color | string | A #RRGGBB color. Default #ffffff. |
numbered | boolean | Stamps 1, 2, 3 and so on in the corner of each image, in the order of images. |
badge_position | string | The corner of the numbers and labels: top-left (default) or top-right. |
Returns: a job id.
image_overlay
Places 1 to 12 layers on a base image, pixel-exactly: logos, cut-outs, text, QR codes and shapes. No AI model runs, so the result is the same every time. It works like the Image Overlay node, which documents every option.
Permission: workflows:execute. Credits: 11, and a little more for each extra platform size in variants, as on the Image Overlay node.
| Parameter | Type | Notes |
|---|---|---|
image_url or image_asset_id | string | The base image. |
layers | array | Required. 1 to 12 layers. See the layer fields below. The array order is the stacking order unless a layer sets z_index. |
canvas | object | An output size, width and height from 16 to 8,192 pixels, with a background_color. The base is placed into it with base_fit, contain or cover. Leave it out to keep the base image's size. |
variants | array | Extra platform sizes to render at once: youtube-thumbnail, youtube-banner, linkedin-company, linkedin-personal, x-header, facebook-cover, instagram-post, instagram-portrait, instagram-story, open-graph, presentation, a4-print. |
qr_text | string | Fills every QR layer whose qr.fromInput is true. |
mask_mode | string | The mask the job also returns as maskUrl, where white may change: around (default, a ring around the layers for an AI finish), layers, outside or none. |
mask_spread | integer | The width of the around ring, from 1 to 400 pixels. Default 48. |
output_format | string | png (default, keeps transparency), jpg or webp. |
The main layer fields:
| Layer field | Notes |
|---|---|
kind | image (default, needs url or asset_id), text, qr or shape. |
anchor | One of 9 positions, from top-left to bottom-right. Default center. |
x, y | The offset from the anchor, in percent of the base width and height. A negative value on a right or bottom anchor moves the layer inward. |
width, height | In percent of the base width and height. Default width 25%. The height follows the layer's shape unless you set it. |
opacity, rotation, blend | Opacity from 0 to 1, rotation in degrees, and blend over, multiply or screen. |
fit, shadow, rounded_corners, z_index | How the layer fills its box (contain, cover or stretch), a drop shadow, rounded corners and the stacking order. |
effects | Image layers only: a circle mask, a feather, a stroke or a glow. |
text | For a text layer: the text, a fontId (inter, montserrat, space-grotesk, playfair-display, oswald, bebas-neue, anton, pacifico, rubik or heebo; rubik and heebo set Hebrew), a fontSize in percent of the base height, fontWeight, color, align, letterSpacing, lineHeight, uppercase, an outline and a background box. |
qr | For a QR layer: the text to encode, or fromInput: true, plus colors and margin. |
shape | For a shape layer: rect, rounded, pill, circle, ribbon, triangle, diamond, hexagon, star, burst or arrow, with a color and an outline. |
A watermark in the bottom right corner is anchor: "bottom-right", x: -4, y: -6, width: 12. SVG logos are rendered sharp at the target size.
Returns: a job id. The result carries the image, maskUrl, its width and height, and variants, a list of { id, label, width, height, url }.
suggest_overlay_placement
Asks a vision model where one layer should sit on a base image. The model looks at the picture and keeps the layer off faces, the subject and busy texture. Nothing is composited: pass the answer to image_overlay.
Permission: workflows:execute. Credits: one image description, charged like image_to_text.
| Parameter | Type | Notes |
|---|---|---|
image_url or image_asset_id | string | The base image. |
intent | string | What the layer is, such as a logo, a headline, a price badge or a QR code. Up to 300 characters. Default: a logo. |
layer_aspect | number | The layer's width divided by its height, from 0.05 to 20. Default 1, a square. |
safe_area | object | The area that is always visible, as fractions of the canvas: x, y, w, h. The layer stays inside it. |
Returns: anchor, x, y and width in the same percent units as image_overlay, and a one-sentence reason.
image_to_text
Describes an image, or answers a question about it, with a vision model. Use it for captions, alt text, scene analysis or a specific question, such as "list all the text in the image". It works like the Describe Image node.
Permission: workflows:execute. Credits: one LLM call, charged for the tokens it actually used at the rate of the model that ran it. A hold is reserved before the call, and a balance below the hold is refused with 402. A longer description costs more. The editor's Run button shows ≈N, an estimate of a typical call. See How LLM calls are charged.
| Parameter | Type | Notes |
|---|---|---|
image_url or image_asset_id | string | The image to describe. |
detail_level | string | brief, detailed (default) or comprehensive. |
custom_prompt | string | A specific question instead of a general description, up to 2,000 characters. |
llmModel | string | The vision model, one of the LLM ids the tool lists. Default: Claude Sonnet 5.5. |
reasoning_effort | string | none to max. A higher effort usually spends more output tokens, so the call costs more. On a Claude model, any effort runs on the model maker's own service and is charged at that service's rate. |
advanced_mode, temperature, max_tokens | Gemini and Claude models, as on the prompt tools. The call is charged per token at the model maker's own rate. |
Returns: a job id. The text is in the job's output, and the card shows it with a Copy button.
save_image_defaults
Saves your preferred image settings on your account, as the defaults of later generate_image, modify_image and image_to_image calls. Only the fields you pass change. In clients with MCP Apps, the Save as default chip on an image card calls this tool.
- A value the call names wins. A saved value fills in what the call leaves out. With neither, the tool's own default applies. A saved
aspect_ratio: "auto"works like a named ratio. - One saved model for all three tools. The star on an image card saves the model that made the picture. An edit (
modify_image,image_to_image) uses the saved model only when an edit can run it.generate_imageuses it only when the model generates images. So after a star on an edit's result,generate_imageruns its own default. - Presets. A call with
presetIddoes not read your saved defaults.
Permission: workflows:execute. Credits: free.
| Parameter | Type | Notes |
|---|---|---|
model | string or null | Your default model. null clears it, and the tool's own default applies again. |
aspect_ratio | string or null | Your default aspect ratio. |
resolution | string or null | Your default resolution. |
quality | string or null | Your default quality. |
Pass null for a field to clear it.
Returns: a confirmation.
list_palettes
Lists your color palettes, newest first: the name, each color by its everyday name and hex code, the note and the id. Pass an id to generate_image as palette_id.
Permission: assets:read. Credits: free.
| Parameter | Type | Notes |
|---|---|---|
cursor | string | The cursor of the previous page. |
Returns: a page of palettes, the same list as GET /v1/palettes.
save_palette
Creates a palette, or changes one. To create, pass name and colors. To change a palette, pass its id and only the fields that change.
Permission: assets:write. Credits: free.
| Parameter | Type | Notes |
|---|---|---|
id | string | The palette to change. Leave it out to create a palette. |
name | string | From 1 to 80 characters. Required to create. |
colors | array | From 2 to 12 colors written as #RRGGBB. Required to create. Colors are stored in capital letters. |
description | string | A note, up to 500 characters. |
Returns: the palette with its id. The tool cannot delete a palette. Delete one in the app, with the CLI or through the API.
list_moodboards
Lists your moodboards, newest first: the name, the number of images, the description and the id. With id, it returns one moodboard with each image's link and caption. Pass an id to generate_image as moodboard_id.
Permission: assets:read. Credits: free.
| Parameter | Type | Notes |
|---|---|---|
id | string | Read this moodboard in full. |
cursor | string | The cursor of the previous page. |
Returns: a page of moodboards, or one moodboard, as GET /v1/moodboards and GET /v1/moodboards/:id return them.
save_moodboard
Creates a moodboard, or changes one. To create, pass name and images. To change a moodboard, pass its id and only the fields that change.
Permission: assets:write. Credits: free.
| Parameter | Type | Notes |
|---|---|---|
id | string | The moodboard to change. Leave it out to create a moodboard. |
name | string | From 1 to 80 characters. Required to create. |
description | string | Up to 1,000 characters. A run puts these words into the prompt. |
images | array | From 1 to 12 { url, caption } entries. Each url is an image link or the id of one of your Nodaro images. A caption is optional, up to 200 characters. Required to create. On a change, images replaces every image. |
Returns: the moodboard with its id. Images are kept as links, never copied. The tool cannot delete a moodboard.
Frequently asked questions
Which model does generate_image use by default?
GPT Image 2. Pass model with another id from list_models to change it, for example nano-banana-pro for readable text or gpt-image-2-5-flare for fast iterations. An unknown id falls back to the default without an error.
How do I keep the same person in several images?
Pass the person's pictures in reference_image_urls, up to 14 URLs or Nodaro ids (16 on GPT Image 2.6 or MiniMax H3 Image), and the reply confirms how many were attached. For a saved character, pass the approved portrait that get_character returns.
How do I remove a background or upscale an image through MCP?
Use edit_image. Set model to recraft-remove-bg for a transparent PNG, or to recraft-upscale or topaz-image-upscale to upscale. None of them needs a prompt.
Can an assistant put a logo or text on an image without AI?
Yes. image_overlay places images, text, QR codes and shapes on a base image, pixel-exactly and without a model, for 11 credits. suggest_overlay_placement can first propose where a logo should go.
How much does an image generation cost through MCP?
The same as in the editor. The price depends on the model and its resolution or quality; list_models and each model page list the exact credits.
Related
Generate Image
Modify Image
Image Overlay
Video
Choosing a model
Last updated on
Prompts and text
Turn a rough idea into a tested prompt, write a scene-by-scene video script, and let an LLM judge pick the best of several results with Nodaro MCP tools.
Video
Generate video from text or an image, extend, restyle, relight and upscale clips, and make faces talk or move with Nodaro's video tools for AI assistants.