← Back to all apps

Adobe Photoshop

Designby Adobe Inc
Launched Mar 19, 2026 on ChatGPT

Adobe Photoshop for ChatGPT makes powerful photo editing simple and free for everyone. Just upload a photo and transform it in seconds. Simply type to change backgrounds, add or remove objects, apply creative effects, or fine-tune lighting and color. Intuitive tools help you bring your vision to life with no editing experience required. From profile pictures to social posts to favorite snapshots, edit your images exactly how you want, just by chatting.

12ChatGPT Tools
Adobe IncDeveloper
DesignCategory

Available Tools

Display adjustments

applyAdjustments
Full Description

Apply adjustments for brightness, contrast, hue, saturation, vibrance, exposure, color balance, or black and white conversion. These adjustments can be applied to an entire image or parts of the image by manually adjusting sliders in the widget. Based on the user's intent, configure specific parameter values for each adjustment or let them start at defaults for manual adjustment. See below for list of available adjustments.

IMPORTANT: This tool does NOT analyze the image or apply image-context-aware logic. Default values are fixed schema values (e.g., exposure: 0), not computed from image content.

HOW TO USE THIS TOOL: 1. Basic usage

  • Display adjustments with default starting values:
    • Call with adjustments array: [{"id": "hueSat"}, {"id": "exposure"}]
    • All parameters start at their default values; user adjusts manually via sliders

2. Advanced usage

  • Pre-configure specific parameter values:
    • Call with adjustments array including params: [{"id": "hueSat", "params": {"hue": 15, "saturation": 20}}, {"id": "exposure", "params": {"exposure": 0.5}}]
    • Adjustment sliders will start at your specified values instead of defaults
    • IMPORTANT: Only include parameters related to the user's intent - omit other parameters that would stay at defaults

3. The tool applies the adjustments to the image(s) with adjustment controls starting at configured or default values 4. User can click on the settings icon on each image to reveal adjustment sliders for real-time refinement 5. In your response, acknowledge any configured values and provide guidance on further adjustments if needed

MANDATORY PARAMETER DISCOVERY (ENFORCED): If any entry in the adjustments array includes a params object, you must use correct parameter names and constraints for that adjustment. If you do not already have the specific details (parameter names, ranges, defaults) for the adjustment in question, call getOptionsForAdjustments (no input) first to get them. When you receive results from getOptionsForAdjustments, you MUST follow the "instruction" for each parameter when configuring adjustment parameters—the instruction describes valid ranges, units, and how to interpret values.

ENFORCEMENT RULES: 1. For each adjustments[i].id where adjustments[i].params is present: a. Use specific details (parameter names, ranges, defaults) for the adjustment in question when you already have them; otherwise call getOptionsForAdjustments (no input) to get all adjustments and their parameters b. All keys in adjustments[i].params must exactly match parameter names returned by getOptionsForAdjustments c. All parameter values must meet the constraints provided by getOptionsForAdjustments d. ONLY include parameters that differ from their default values - omit any parameter already at its default 2. If no params objects are provided, discovery is optional and the tool uses default starting values. Note: Omitting params is NOT a way to reset an adjustment back to default. To reset, explicitly provide the default values in params (call getOptionsForAdjustments with no input to get defaults). 3. This discovery requirement applies to conceptual (e.g., "make the cat pink"), explicit (e.g., "set hue to +30"), and "auto"/"balance"/"fix" requests (e.g., "auto apply exposure", "balance the highlights")

Rationale: Prevents guesswork about parameter names and ranges, ensures consistent behavior across schema changes, protects users from invalid configurations.

ADJUSTMENT SELECTION STRATEGY: 1. VAGUE REQUESTS (e.g., "apply adjustments")

  • Call this tool with no adjustments to show the default set of adjustments

2. SPECIFIC INTENT (descriptive, explicit names, "auto"/"balance"/"fix" requests, conceptual/visual, or numeric values)

  • Includes: "improve lighting", "enhance colors", "adjust exposure", "auto apply exposure", "auto balance the highlights", "fix the shadows", "balance the image"
  • Color Changes
  • Unless hue or saturation adjustments are explicitly requested: use InstructEditV5 Generative features for color or tone changes.
  • A request for an image to be black and white should be handled by the grey adjustment tool.
  • If you do not have the specific details (parameter names, ranges, defaults) for the adjustment in question, call getOptionsForAdjustments (no input) to get them. Never assume parameter names or ranges.
  • Selection: For descriptive intent, select up to 5 relevant adjustments (lighting: exposure, brightness, contrast; colors: saturation, vibrance, hueSat). For explicit name or "auto X" requests, provide ONLY that adjustment in the array and suggest related ones in response text.
  • Parameters: Start with defaults unless the user specifies amounts. For conceptual/visual (e.g., "make cat pink", "warmer tones"), numeric (e.g., "set hue to +30"), or "auto"/"balance"/"fix" requests (e.g., "auto apply exposure", "balance the highlights"), configure reasonable starting values from discovered options - the tool does not compute values from image content.
  • Response: For configured values, acknowledge them in your reply (e.g., "I've set the hue to +30 and saturation to +40. The adjustment controls are now displayed - you can further refine these using the sliders if needed.").

3. MORE ADJUSTMENTS REQUEST (applies after any of the above)

  • User asks for more adjustments: pick additional adjustments based on image context and intent, without repeating any already shown, until all are shown or limit reached
  • Never repeat an adjustment unless the user explicitly requests it again

CONSTRAINTS:

  • Maximum 5 adjustments per request
  • If user requests more than 5, suggest remaining adjustments in the tool response
  • DO NOT automatically make multiple tool calls for remaining adjustments
  • Always WAIT for explicit user confirmation before displaying additional batches
  • DO NOT use this tool to undo by passing an empty adjustments list. For undo, use the undoEdits tool instead

AVAILABLE ADJUSTMENTS: When asked to list available adjustments, use only the adjustment name (not the ID), description, and recommended for fields. When selecting adjustments for the adjustmentIds parameter, use the Adjustment ID value shown below.

Adjustment ID: brightnessContrast

  • Name: Brightness & contrast
  • Description: Changes the brightness and contrast of an image.
  • Recommended for: Any image.

Adjustment ID: contrast

  • Name: Contrast
  • Description: Adjusts the overall intensity of colors.
  • Recommended for: Any color image with low contrast.

Adjustment ID: exposure

  • Name: Exposure
  • Description: Brightens or darkens your image to make you properly lit and visible. Brings you out of shadows or tones down overexposure so you're the clear focal point with perfect lighting.
  • Recommended for: Making yourself stand out by fixing underexposure, bringing yourself out of dark shadows, ensuring you're properly lit and visible in photos, balancing lighting so you're prominent, making sure you're not lost in dim or overly bright areas

Adjustment ID: gray

  • Name: Gray (Black / White)
  • Description: Converts your color image to black-and-white by desaturating it.
  • Recommended for: Any color image.

Adjustment ID: highlightsShadows

  • Name: Highlights & Shadows
  • Description: Adjusts tonal highlights or shadows.
  • Recommended for: Any image with low contrast between highlights and shadows.

Adjustment ID: hueSat

  • Name: Hue & saturation
  • Description: Changes the hue, saturation, and lightness of an image.
  • Recommended for: Any color image

Adjustment ID: saturation

  • Name: Saturation
  • Description: Dramatically enhances color vibrancy to make you or your subject pop from the background. Powerfully increases visual impact by intensifying all color saturation for maximum presence.
  • Recommended for: Making yourself stand out in photos, dramatically emphasizing people and subjects in a scene, drawing maximum attention to the main subject, increasing visual presence and impact, making yourself the vibrant focal point of any image

Adjustment ID: vibrance

  • Name: Vibrance
  • Description: Intelligently enhances color vibrancy to make you pop from the background while preserving natural skin tones. Selectively boosts muted colors for a flattering, eye-catching look.
  • Recommended for: Making yourself stand out in photos, portraits where you want to be the focal point, enhancing your presence without oversaturating skin tones, drawing attention to people in group shots, creating vibrant but natural-looking portraits

Adjustment ID: whiteBalance

  • Name: White Balance
  • Description: Changes the color temperature and tint of an image, changing all colors in the image.
  • Recommended for: Any color image
Parameters (2 required, 5 optional)
Required
inputImageTypestring

The type of the input image. If the user uploaded an image in this request, use "nativeImage" (and pass nativeImage). If there is no new image upload, read the latest widget state and set this param to currentInputImage.type. If multiple widget states are present, read the one with the most recent updateTimestamp. DO NOT use instructEditInputImage.type. Use nativeImage params when type is "nativeImage", or imageURI when type is "url".

Options:nativeImageurl
originalUploadedImagestring

The path to the original image for the current editing session for that particular image. IMPORTANT: If an image was just uploaded to chat, this should be the local path of the image starting with "/mnt", otherwise read this from the widget state.

Optional
adjustmentsarray

Array of Photoshop adjustments to display in the interactive widget with the image. Select adjustments intelligently based on user intent.

imageURIstring

Use this when the inputImageType param is "url". Read the latest widget state and set this param to currentInputImage.URL. If multiple widget states are present, read the one with the most recent updateTimestamp. Do NOT use instructEditInputImage.URL. Use a valid accessible image URL (http or https). Do NOT reuse URLs from earlier assistant messages or tool responses.

maskobject

The mask to be applied to the image. This must contain the following fields: - maskURI: The URI of the mask to be applied to the image, must be generated from the same image being used in this tool call. - maskDescription: The description of the mask, this will be outputted from the selection tool alongside the maskURI. - toBeInverted: Set to true if targeting the area OUTSIDE the mask, false otherwise. e.g., subject mask + invert = background selection. This should be provided if the user wants to apply the effect to a specific area of the image like the main subject, the background or a particular object (e.g., blur the background). IMPORTANT: If a maskURI exists in the context, you MUST verify it was generated from the same image being used in this tool call. If the maskURI was generated from a different image, or if no maskURI exists, you must use the selection tool to generate a new mask from the current image before calling this tool.

nativeImageobject

Use this when the inputImageType param is "nativeImage". Use this when the user uploads a new image in this request, or when currentInputImage.type is "nativeImage" in the latest widget state. If multiple widget states are present, read the one with the most recent updateTimestamp. For new uploads, use the uploaded image; otherwise set this param to currentInputImage.nativeImagePath. Valid paths start with "/mnt/".

replaceLastEditboolean

Boolean value that tells the widget to undo the previous effect before applying the next requested. **For Example** a prompt like "undo the last effect and apply a twirl" would set this boolean to true to undo the last effect before applying what is requested in this prompt. With this input parameter the undoEdit tool does not need to be called before calling the next effect tool

Apply effects

applyEffects
Full Description

Apply artistic effects and filters to an image or parts of the image. Effects such as glitch, bokeh blur, grain, motion blur, bloom, radial blur, photocopy, and much more are available. Each effect is applied with default parameter values. See below for list of available effects.

IMPORTANT – ASSISTANT BEHAVIOR CONSTRAINTS:

  • This tool applies effects with default parameter values; it does NOT allow setting specific parameter values in the tool call.
  • The assistant MUST NOT claim to set or configure specific parameter values (e.g., "I'll set glitch intensity to 80%," "I've configured blur radius to 15px," "Grain amount is now at 50%").

The assistant MAY only:

  • Call this tool with effectIds to apply effects with their default parameters
  • Explain that users can manually adjust effect parameters using the interactive sliders in the widget after the effect is applied
  • Give directional guidance on adjusting parameters (e.g., "Use the Intensity slider to increase the glitch effect")

When asked to "apply effects to xxx or give xxx effects" or something along those lines, you should use the "selectSubject" or "selectionByPrompt" tool to generate a mask first. See those selection tools' descriptions for more details.

Forbidden phrasing:

  • "I'll set the glitch intensity to 80% for you."
  • "I've configured the blur radius to 15 pixels."
  • "Grain amount is now at 50%."
  • "I can apply the effect with specific parameter values."

Allowed phrasing:

  • "I'll apply the glitch effect with default settings. You can adjust the intensity using the sliders in the widget."
  • "The blur effect has been applied. Use the Radius slider to control the blur amount."
  • "After the grain effect is applied, increase the Amount slider to make it more pronounced."
  • "The effect will start with default values. Click the settings icon to adjust the parameters."

EFFECT SELECTION STRATEGY: 1. VAGUE REQUESTS (e.g., "apply effects to my image", "add some effects") → OMIT this parameter entirely to use the default set of effects 2. DESCRIPTIVE INTENT (e.g., "apply creative effects", "make me stand out", "make my image pop", "add artistic touches") → Analyze the intent and select up to 5 effects from the available list that best match the description → Consider image context: for portraits prioritize effects recommended for people, for landscapes use scene-appropriate effects 3. EXPLICIT SINGLE EFFECT (e.g., "apply glitch effect", "apply vintage effect", "add a duotone") → Find the single best matching effect and provide ONLY that one effect in this array → If you want to suggest additional related effects, do NOT add them to this array → Instead, include suggestions in your response text as follow-up prompts for the user 4. EXPLICIT MULTIPLE EFFECTS (e.g., "apply glitch and vintage effects", "show me duotone, tritone, and cartoon") → Provide only the specific effects requested (up to 5 maximum) → If you want to suggest additional related effects, do NOT add them to this array → Instead, include suggestions in your response text as follow-up prompts for the user 5. MORE OR ADDITIONAL EFFECTS REQUEST → Review conversation history to see which effects were already applied → Select NEW effects that haven't been shown yet, following the appropriate strategy above → Never repeat previously applied effects unless explicitly requested

CONSTRAINTS:

  • Maximum 5 effects per request
  • If user requests more than 5, make suggestions for the remaining effects as part of the tool response
  • DO NOT automatically make multiple tool calls for remaining effects
  • Always WAIT for explicit user confirmation before applying additional batches
  • DO NOT use this tool to undo by passing an empty effectIds list. For undo, use the undoEdits tool instead

AVAILABLE EFFECTS:

When asked to list available effects, use only the effect name (not the ID), description, and recommended for fields. When selecting effects for the effectIds parameter, use the Effect ID value shown below.

Effect ID: bloom

  • Name: Bloom
  • Description: Adds a soft glow making bright areas radiate light to create a dreamy, hazy atmosphere.
  • Recommended for: Dreamy portraits, luminous landscapes, ethereal composites.

Effect ID: bokehBlur

  • Name: Bokeh blur
  • Description: Blurs highlights into soft, glowing shapes to mimic a shallow depth of field.
  • Recommended for: Night portraits, illuminated streets scenes, soft-focus portraits.

Effect ID: cartoon

  • Name: Comic
  • Description: Simplifies details into outlines and flat color to give the appearance of a comic illustration.
  • Recommended for: Pop art scenes, character art, stylized portraits.

Effect ID: colorhalftone

  • Name: Halftone color
  • Description: Transforms images into patterns that mimic classic printing colors, echoing the layered look of vintage.
  • Recommended for: Retro posters, pop-art portraits, vintage prints.

Effect ID: dither

  • Name: Dither
  • Description: Creates patterns of colored squares to mimic retro arcade aesthetics.
  • Recommended for: Retro graphics, early web aesthetics, arcade inspired graphics.

Effect ID: duotone

  • Name: Duotone
  • Description: Creates a vintage two-tone effect that gives images a nostalgic, retro aesthetic. Perfect for adding timeless character to portraits and people.
  • Recommended for: Vintage effects on people and portraits, retro aesthetics, nostalgic mood photos, classic film looks, artistic portraits with vintage character.

Effect ID: glitch

  • Name: Glitch
  • Description: Separates and shifts color channels to produce a multi-color, stepped, displacement.
  • Recommended for: Stylized motion, futuristic portraits, digital distortion.

Effect ID: grain

  • Name: Grain
  • Description: Applies a uniform, film-like texture for a vintage or cinematic feel.
  • Recommended for: Vintage portraits, cinematic stills, atmospheric landscapes.

Effect ID: lensDistortion

  • Name: Lens Distortion
  • Description: Radiates chromatic color flares that amplify energy and motion.
  • Recommended for: Expressive portraits, stylized movement, dreamlike scenes.

Effect ID: mosaic

  • Name: Mosaic
  • Description: Transforms the image into a pattern of colored cells to mimic the artistic style.
  • Recommended for: Expressive typography, experimental visuals, abstract imagery.

Effect ID: motionBlur

  • Name: Motion Blur
  • Description: Adds directional streaks and blends details to give the impression of movement and speed.
  • Recommended for: Action shots, stylized motion scenes, dynamic portraits.

Effect ID: noise

  • Name: noise
  • Description: Applies random, uneven texture to add grit and static and mimic digital artifacts.
  • Recommended for: Digital disruption, gritty portraits, cinematic scenes.

Effect ID: pixelate

  • Name: Pixelate
  • Description: Transforms the image into a grid of visible squares, creating a low-resolution aesthetic.
  • Recommended for: Low-fi digital abstractions, retro portraits, pixel art.

Effect ID: radialBlur

  • Name: Radial Blur
  • Description: Creates circular motion from a center point to give the impression of spinning.
  • Recommended for: Action shots, stylized motion scenes, dynamic portraits.

Effect ID: threshold

  • Name: Photocopy
  • Description: Mimics the gritty, high-contrast style of a photocopy with bold shapes and texture.
  • Recommended for: Gritty portraits, high-contrast graphics, zine artwork.

Effect ID: tritone

  • Name: Tritone
  • Description: Transforms the image into three colors, adding depth and richness for a stylized graphic finish.
  • Recommended for: Graphic posters, artistic portraits, retro-inspired visuals.

Effect ID: tritoneSepia

  • Name: Tritone Sepia
  • Description: Transforms the image into three sepia tone colors, adding depth and richness for a stylized graphic finish.
  • Recommended for: Graphic posters, artistic portraits, retro-inspired visuals.

Effect ID: twirl

  • Name: Twirl
  • Description: Swirls the image around a central point, creating a spiraling distortion.
  • Recommended for: Expressive typography, experimental visuals, abstract imagery.
Parameters (2 required, 6 optional)
Required
inputImageTypestring

The type of the input image. If the user uploaded an image in this request, use "nativeImage" (and pass nativeImage). If there is no new image upload, read the latest widget state and set this param to currentInputImage.type. If multiple widget states are present, read the one with the most recent updateTimestamp. DO NOT use instructEditInputImage.type. Use nativeImage params when type is "nativeImage", or imageURI when type is "url".

Options:nativeImageurl
originalUploadedImagestring

The path to the original image for the current editing session for that particular image. IMPORTANT: If an image was just uploaded to chat, this should be the local path of the image starting with "/mnt", otherwise read this from the widget state.

Optional
effectIdsarray

Array of Photoshop effects to apply to the image. Select effects intelligently based on user intent.

Default: ['tritone', 'colorhalftone', 'glitch', 'dither', 'lensDistortion']
externalImageURIstring

Provide exactly ONE of nativeImage or externalImageURI. External public image URL starting with http or https. This field is optional and should only be used if images have not been uploaded to the chat but the user provided a public URL directly.

imageURIstring

Use this when the inputImageType param is "url". Read the latest widget state and set this param to currentInputImage.URL. If multiple widget states are present, read the one with the most recent updateTimestamp. Do NOT use instructEditInputImage.URL. Use a valid accessible image URL (http or https). Do NOT reuse URLs from earlier assistant messages or tool responses.

maskobject

The mask to be applied to the image. This must contain the following fields: - maskURI: The URI of the mask to be applied to the image, must be generated from the same image being used in this tool call. - maskDescription: The description of the mask, this will be outputted from the selection tool alongside the maskURI. - toBeInverted: Set to true if targeting the area OUTSIDE the mask, false otherwise. e.g., subject mask + invert = background selection. This should be provided if the user wants to apply the effect to a specific area of the image like the main subject, the background or a particular object (e.g., blur the background). IMPORTANT: If a maskURI exists in the context, you MUST verify it was generated from the same image being used in this tool call. If the maskURI was generated from a different image, or if no maskURI exists, you must use the selection tool to generate a new mask from the current image before calling this tool.

nativeImageobject

Use this when the inputImageType param is "nativeImage". Use this when the user uploads a new image in this request, or when currentInputImage.type is "nativeImage" in the latest widget state. If multiple widget states are present, read the one with the most recent updateTimestamp. For new uploads, use the uploaded image; otherwise set this param to currentInputImage.nativeImagePath. Valid paths start with "/mnt/".

replaceLastEditboolean

Boolean value that tells the widget to undo the previous effect before applying the next requested. **For Example** a prompt like "undo the last effect and apply a twirl" would set this boolean to true to undo the last effect before applying what is requested in this prompt. With this input parameter the undoEdit tool does not need to be called before calling the next effect tool

Blur background

blurBackground
Full Description

Blur background of the image to make the main subject stand out. This tool uses the Gaussian Blur effect to blur the background. For other types of blur effects, use the applyEffects tool instead.

Requires a mask:

  • If no maskURI exists for this image, call selectSubject tool first.
  • Verify the mask was generated from the same image being edited.
  • The mask required for this tool must be the background mask.

→ If the mask is the subject mask, set toBeInverted to true. → If the mask is the background mask, set toBeInverted to false.

Parameters (3 required, 4 optional)
Required
inputImageTypestring

The type of the input image. If the user uploaded an image in this request, use "nativeImage" (and pass nativeImage). If there is no new image upload, read the latest widget state and set this param to currentInputImage.type. If multiple widget states are present, read the one with the most recent updateTimestamp. DO NOT use instructEditInputImage.type. Use nativeImage params when type is "nativeImage", or imageURI when type is "url".

Options:nativeImageurl
maskobject

The mask to be applied to the image. This must contain the following fields: - maskURI: The URI of the mask to be applied to the image, must be generated from the same image being used in this tool call. - maskDescription: The description of the mask, this will be outputted from the selection tool alongside the maskURI. - toBeInverted: Set to true if targeting the area OUTSIDE the mask, false otherwise. e.g., subject mask + invert = background selection. This should be provided if the user wants to apply the effect to a specific area of the image like the main subject, the background or a particular object (e.g., blur the background). IMPORTANT: If a maskURI exists in the context, you MUST verify it was generated from the same image being used in this tool call. If the maskURI was generated from a different image, or if no maskURI exists, you must use the selection tool to generate a new mask from the current image before calling this tool.

originalUploadedImagestring

The path to the original image for the current editing session for that particular image. IMPORTANT: If an image was just uploaded to chat, this should be the local path of the image starting with "/mnt", otherwise read this from the widget state.

Optional
externalImageURIstring

Provide exactly ONE of nativeImage or externalImageURI. External public image URL starting with http or https. This field is optional and should only be used if images have not been uploaded to the chat but the user provided a public URL directly.

imageURIstring

Use this when the inputImageType param is "url". Read the latest widget state and set this param to currentInputImage.URL. If multiple widget states are present, read the one with the most recent updateTimestamp. Do NOT use instructEditInputImage.URL. Use a valid accessible image URL (http or https). Do NOT reuse URLs from earlier assistant messages or tool responses.

nativeImageobject

Use this when the inputImageType param is "nativeImage". Use this when the user uploads a new image in this request, or when currentInputImage.type is "nativeImage" in the latest widget state. If multiple widget states are present, read the one with the most recent updateTimestamp. For new uploads, use the uploaded image; otherwise set this param to currentInputImage.nativeImagePath. Valid paths start with "/mnt/".

replaceLastEditboolean

Boolean value that tells the widget to undo the previous effect before applying the next requested. **For Example** a prompt like "undo the last effect and apply a twirl" would set this boolean to true to undo the last effect before applying what is requested in this prompt. With this input parameter the undoEdit tool does not need to be called before calling the next effect tool

Display adjustments

displayAdjustments
Full Description

Display interactive adjustment controls for brightness, contrast, hue, saturation, vibrance, exposure, color balance, or black and white conversion. These adjustments can be applied to an entire image or parts of the image by manually adjusting sliders in the widget. See below for list of available adjustments.

IMPORTANT – ASSISTANT BEHAVIOR CONSTRAINTS:

  • This tool only displays adjustment controls; it never applies adjustments automatically.
  • The assistant MUST NOT claim to set or change numeric values (e.g., "I'll increase exposure by 20%," "I've set saturation to 80," "Contrast is now at 60%").

The assistant MAY only:

  • Call this tool with adjustmentIds to display the appropriate adjustment controls
  • Give directional, qualitative guidance (e.g., "Move the Exposure slider to the right to brighten") while the user adjusts sliders manually

When asked to "apply adjustments to xxx or change xxx's look" or something along those lines, you should use the "selectSubject" or "selectionByPrompt" tool to generate a mask first. See those selection tools' descriptions for more details.

Forbidden phrasing:

  • "I'll increase exposure by 20% for you."
  • "I've set contrast to 0.8."
  • "Saturation is now at 60%."
  • "I can apply specific values automatically."

Allowed phrasing:

  • "Move the Exposure slider to the right to brighten the image."
  • "Lower the Saturation slider to reduce color intensity."
  • "Increase the Hue slider until the car shifts to blue."
  • "Adjust the Contrast slider upward to add more definition."

HOW TO USE THIS TOOL: 1. Call this tool with adjustmentIds (see available adjustments below): ["adjustmentId"] (e.g., ["hueSat"] for color changes) 2. The tool displays the image(s) with adjustment controls available

  • NO adjustments are applied initially, all sliders start at default/zero values

3. User must click the settings icon on each image to enter fullscreen mode and reveal the adjustment sliders 4. User manually adjusts the sliders in real-time to achieve their desired results 5. In your response, provide directional guidance on which sliders to adjust (e.g., "Move the Exposure slider to the right to brighten"). Even if the user requests specific numeric values, provide only qualitative guidance and never restate values as if they were applied.

ADJUSTMENT SELECTION STRATEGY: 1. VAGUE REQUESTS (e.g., "adjust my image", "fix the colors") → OMIT adjustmentIds to use defaults: exposure, contrast, saturation, vibrance 2. DESCRIPTIVE INTENT (e.g., "improve lighting", "enhance colors", "fix exposure") → Select up to 5 relevant adjustments → For lighting: exposure, brightness, contrast; For colors: saturation, vibrance, hueSat 3. EXPLICIT ADJUSTMENT NAMES (e.g., "adjust exposure", "increase saturation") → Provide ONLY that adjustment in the array → Suggest related adjustments in response text, not in the array 4. SPECIFIC VALUE REQUESTS (e.g., "Set car to blue", "Increase exposure by +20%", "Contrast to 80%") → You CANNOT apply these values automatically - you can only display the controls → Call this tool with the appropriate adjustment name(s) to display the controls: • For color changes: use "hueSat" • For brightness: use "exposure" or "brightnessAndContrast" • For contrast: use "contrast" or "brightnessAndContrast" → In your response, guide the user on which direction to move the sliders (e.g., "Move the Exposure slider to the right to increase brightness") → NEVER say "I can apply specific values" or "I'll set it to X" - this is not possible with this tool 5. MORE ADJUSTMENTS REQUEST → Select NEW adjustments not previously displayed → Never repeat unless explicitly requested

CONSTRAINTS:

  • Maximum 5 adjustments per request
  • If user requests more than 5, make suggestions for the remaining effects as part of the tool response
  • DO NOT automatically make multiple tool calls for remaining effects
  • Always WAIT for explicit user confirmation before displaying additional batches

AVAILABLE ADJUSTMENTS:

When asked to list available adjustments, use only the adjustment name (not the ID), description, and recommended for fields. When selecting adjustments for the adjustmentIds parameter, use the Adjustment ID value shown below.

Adjustment ID: brightnessContrast

  • Name: Brightness & contrast
  • Description: Changes the brightness and contrast of an image.
  • Recommended for: Any image.

Adjustment ID: contrast

  • Name: Contrast
  • Description: Adjusts the overall intensity of colors.
  • Recommended for: Any color image with low contrast.

Adjustment ID: exposure

  • Name: Exposure
  • Description: Brightens or darkens your image to make you properly lit and visible. Brings you out of shadows or tones down overexposure so you're the clear focal point with perfect lighting.
  • Recommended for: Making yourself stand out by fixing underexposure, bringing yourself out of dark shadows, ensuring you're properly lit and visible in photos, balancing lighting so you're prominent, making sure you're not lost in dim or overly bright areas

Adjustment ID: gray

  • Name: Gray (Black / White)
  • Description: Converts your color image to black-and-white by desaturating it.
  • Recommended for: Any color image.

Adjustment ID: highlightsShadows

  • Name: Highlights & Shadows
  • Description: Adjusts tonal highlights or shadows.
  • Recommended for: Any image with low contrast between highlights and shadows.

Adjustment ID: hueSat

  • Name: Hue & saturation
  • Description: Changes the hue, saturation, and lightness of an image.
  • Recommended for: Any color image

Adjustment ID: saturation

  • Name: Saturation
  • Description: Dramatically enhances color vibrancy to make you or your subject pop from the background. Powerfully increases visual impact by intensifying all color saturation for maximum presence.
  • Recommended for: Making yourself stand out in photos, dramatically emphasizing people and subjects in a scene, drawing maximum attention to the main subject, increasing visual presence and impact, making yourself the vibrant focal point of any image

Adjustment ID: vibrance

  • Name: Vibrance
  • Description: Intelligently enhances color vibrancy to make you pop from the background while preserving natural skin tones. Selectively boosts muted colors for a flattering, eye-catching look.
  • Recommended for: Making yourself stand out in photos, portraits where you want to be the focal point, enhancing your presence without oversaturating skin tones, drawing attention to people in group shots, creating vibrant but natural-looking portraits

Adjustment ID: whiteBalance

  • Name: White Balance
  • Description: Changes the color temperature and tint of an image, changing all colors in the image.
  • Recommended for: Any color image
Parameters (0 required, 4 optional)
Optional
adjustmentIdsarray

Array of Photoshop adjustments to display in the interactive widget with the image. Select adjustments intelligently based on user intent.

Default: ['vibrance', 'hueSat', 'gray', 'exposure', 'contrast']
externalImageURIstring

Provide exactly ONE of nativeImage or externalImageURI. External public image URL starting with http or https. This field is optional and should only be used if images have not been uploaded to the chat but the user provided a public URL directly.

maskobject

The mask to be applied to the image. This must contain the following fields: - maskURI: The URI of the mask to be applied to the image, must be generated from the same image being used in this tool call. - maskDescription: The description of the mask, this will be outputted from the selection tool alongside the maskURI. - toBeInverted: Set to true if targeting the area OUTSIDE the mask, false otherwise. e.g., subject mask + invert = background selection. This should be provided if the user wants to apply the effect to a specific area of the image like the main subject, the background or a particular object (e.g., blur the background). IMPORTANT: If a maskURI exists in the context, you MUST verify it was generated from the same image being used in this tool call. If the maskURI was generated from a different image, or if no maskURI exists, you must use the selection tool to generate a new mask from the current image before calling this tool.

nativeImageobject

Provide exactly ONE of nativeImage or externalImageURI. This **MUST** be a valid file path of the user uploaded image, starting with "/mnt/". This should be the primary source of the image to be edited if the user has uploaded an image directly to ChatGPT. If this field is provided, do not use externalImageURI.

getOptionsForAdjustments

getOptionsForAdjustments
Full Description

Retrieve all available adjustments and their configurable parameters. Call this tool when you need to know what adjustments exist and how to configure them (e.g. parameter names, types, defaults, min/max).

WHEN TO USE THIS TOOL: Call this tool to get the full list of available adjustments and their configurable parameters before suggesting or applying adjustments.

Select objects

getPresignedUrls
Full Description

Internal presigned url accessor tool for Adobe Photoshop custom UX widgets.

Parameters (1 required, 1 optional)
Required
countnumber

Amount of presigned urls to fetch

Optional
shouldShortenUrlboolean

Whether to shorten the presigned urls

Upload image

imageUploader
Full Description

Internal helper upload tool for Adobe Photoshop custom UX widgets.

Parameters (1 required, 3 optional)
Required
hasNextStepboolean

REQUIRED: Set to true if there is an additional step or steps planned in your execution plan after this tool call (e.g., you plan to call applyEffects or other editing tools after the user uploads an image), false if this is the final step.

Optional
calledFromstring

The identifier of the component that called this tool

fileobject

Do not provide this if you want to display the uploader widget

shouldUseFullURLboolean

Set to true if there is a requirment to use full, presigned urls rather than shortened urls (e.g. if this tool is being used to call out to external photoshop APIs that require a fully resolved URL without redirection)

Instruct Edit

instructEdit
Full Description

Apply instruction-based generative edits to images.

PREQUISITE: When the user uploads a new image in this request, ALWAYS use that image (nativeImage) and ignore instructEditInputImage from widget state. When no new image was uploaded in this request, read the latest widget state and use the latest instructEditInputImage. If multiple widget states are present, read the one with the most recent updateTimestamp.

PRIORITY RULE: If a request can be solved with the available non-generative Photoshop tools, you MUST prefer the non-generative tool over this tool.

WHEN TO USE THIS TOOL:

  • Add an object to the scene
  • Remove an object from the scene
  • Replace an object with another object
  • Change the background of the scene
  • Change the color or tone of objects in the scene.

WHEN NOT TO USE THIS TOOL:

  • To display a secondary generation before user input. DO NOT call this tool more than once per response. Provide the user a message in the response from the tool
  • Use applyAdjustments to apply adjustments to the image (other than color or tone), see tool for full list of available adjustments.
  • Use applyEffects to apply an artistic effect to the image, see tool for full list of available effects.
  • Use removeBackground to remove the background of the image
  • Use blurBackground to blur the background of the image
Parameters (3 required, 3 optional)
Required
instructEditInputImageTypestring

The type of the input image: "nativeImage" when the user uploaded an image in this request (always use that image); "url" only when no new image was uploaded and you are continuing from a previous edit (use instructEditInputImage from widget state). If multiple widget states are present, read the one with the most recent updateTimestamp.

Options:nativeImageurl
optionsobject

Configuration for how the image should be edited

originalUploadedImagestring

The edit session key to link the widget state in the editing session for a particular image. IMPORTANT: If an image was just uploaded to chat, this should be the local path of the image starting with "/mnt", otherwise read this from the widget state.

Optional
instructEditInputImageURIstring

If instructEditInputImageType is "url", read the latest widget state and take the latest instructEditInputImage. If multiple widget states are present, read the one with the most recent updateTimestamp. Use a valid accessible image URL (http or https). Do NOT reuse URLs from earlier assistant messages or tool responses. IMPORTANT: Only when the user has NOT uploaded a new image in this request

nativeImageobject

If the inputImageType is "nativeImage", this **MUST** be a valid file path of the user uploaded image, starting with "/mnt/". IMPORTANT: New uploads take precedence over earlier uploads or images referenced in instructEditInputImage in widget state. If multiple widget states are present, read the one with the most recent updateTimestamp.

replaceLastEditboolean

Boolean value that tells the widget to undo the previous effect before applying the next requested. **For Example** a prompt like "undo the last effect and apply a twirl" would set this boolean to true to undo the last effect before applying what is requested in this prompt. With this input parameter the undoEdit tool does not need to be called before calling the next effect tool

Remove background

removeBackground
Full Description

Remove background from your image and export with a transparent background in PNG format.

Requires a mask:

  • If no maskURI exists for this image, call selectSubject tool first.
  • Verify the mask was generated from the same image being edited.
  • The mask required for this tool must be the background mask.

→ If the mask is the subject mask, set toBeInverted to true. → If the mask is the background mask, set toBeInverted to false.

Parameters (3 required, 4 optional)
Required
inputImageTypestring

The type of the input image. If the user uploaded an image in this request, use "nativeImage" (and pass nativeImage). If there is no new image upload, read the latest widget state and set this param to currentInputImage.type. If multiple widget states are present, read the one with the most recent updateTimestamp. DO NOT use instructEditInputImage.type. Use nativeImage params when type is "nativeImage", or imageURI when type is "url".

Options:nativeImageurl
maskobject

The mask to be applied to the image. This must contain the following fields: - maskURI: The URI of the mask to be applied to the image, must be generated from the same image being used in this tool call. - maskDescription: The description of the mask, this will be outputted from the selection tool alongside the maskURI. - toBeInverted: Set to true if targeting the area OUTSIDE the mask, false otherwise. e.g., subject mask + invert = background selection. This should be provided if the user wants to apply the effect to a specific area of the image like the main subject, the background or a particular object (e.g., blur the background). IMPORTANT: If a maskURI exists in the context, you MUST verify it was generated from the same image being used in this tool call. If the maskURI was generated from a different image, or if no maskURI exists, you must use the selection tool to generate a new mask from the current image before calling this tool.

originalUploadedImagestring

The path to the original image for the current editing session for that particular image. IMPORTANT: If an image was just uploaded to chat, this should be the local path of the image starting with "/mnt", otherwise read this from the widget state.

Optional
externalImageURIstring

Provide exactly ONE of nativeImage or externalImageURI. External public image URL starting with http or https. This field is optional and should only be used if images have not been uploaded to the chat but the user provided a public URL directly.

imageURIstring

Use this when the inputImageType param is "url". Read the latest widget state and set this param to currentInputImage.URL. If multiple widget states are present, read the one with the most recent updateTimestamp. Do NOT use instructEditInputImage.URL. Use a valid accessible image URL (http or https). Do NOT reuse URLs from earlier assistant messages or tool responses.

nativeImageobject

Use this when the inputImageType param is "nativeImage". Use this when the user uploads a new image in this request, or when currentInputImage.type is "nativeImage" in the latest widget state. If multiple widget states are present, read the one with the most recent updateTimestamp. For new uploads, use the uploaded image; otherwise set this param to currentInputImage.nativeImagePath. Valid paths start with "/mnt/".

replaceLastEditboolean

Boolean value that tells the widget to undo the previous effect before applying the next requested. **For Example** a prompt like "undo the last effect and apply a twirl" would set this boolean to true to undo the last effect before applying what is requested in this prompt. With this input parameter the undoEdit tool does not need to be called before calling the next effect tool

Select objects

selectionByPrompt
Full Description

selectionByPrompt — Select objects by text prompt with optional body parts filtering

Select specific objects in the image so you can apply effects or adjustments to those objects only. This enables you to select multiple objects that are similar, such as selecting all trees in the image.

Generates a precise mask for non-anatomical, uniquely identifiable objects or scene elements using a detailed prompt.

Body Parts Support: When bodyParts parameter is provided, the tool will: 1. First select the object specified by the prompt (e.g., "the person on the left") 2. Parse the selected object into body parts using Adobe Sensei 3. Return a mask for the specified body part(s) 4. Combine multiple body parts into a single mask if multiple parts are requested

Supported body parts: Background, Hair, Eyebrows, Eyes, Nose, Mouth, Teeth, Ears, Face, Neck, Arms, Hands, Legs, Coat, Upper Clothes, Lower Clothes, Glasses, Shoes, Dress, Hat, Accessories, Beard, Pupil

Some subparts are included by default when the parent part is requested. For example, if the user asks for "face", the tool will include the nose by default unless the user explicitly asks to exclude it.

Default body part hierarchy: Face: Face, Nose

When to use:
  • Select specific object: Call without bodyParts parameter for non-human objects
  • Select person + body parts: Call WITH bodyParts parameter when you need to isolate a specific person AND then select body parts
    • Example: "the jacket on the person on the left" → { prompt: "the person on the left", bodyParts: ["Upper Clothes"] }
    • Example: "the face of the woman in the back" → { prompt: "the woman in the back", bodyParts: ["Face"] (by default, the nose is included unless the user explicitly asks to exclude it) }
Best for:
  • Buildings, furniture, plants, vehicles, props, background regions
  • Choosing a specific person from a group (e.g., "the person on the left") and then selecting body parts

Tool routing quick guide

  • Anything on a person (body parts, clothing, wearable items)selectionByPrompt with bodyParts parameter
  • Which person? (left/right, "man in back") → selectionByPrompt with prompt + bodyParts parameter
  • Non-human objects / scene elementsselectionByPrompt without bodyParts parameter

Examples: <example>Select the bridge: { prompt: 'the bridge' }</example> <example>Select all trees: { prompt: 'all the trees' }</example> <example>Select the jacket on the left person: { prompt: 'the person on the left', bodyParts: ['Upper Clothes'] }</example> <example>Select the face of the woman in the back (by default, the nose is included): { prompt: 'the woman in the back', bodyParts: ['Face'] }</example> <example>Select the face of the woman in the back excluding the nose: { prompt: 'the woman in the back', bodyParts: ['Face'], excludedBodyParts: ['Nose'] }</example> <example>Select hair and face of right person: { prompt: 'the person on the right', bodyParts: ['Hair', 'Face'] }</example> <example>Change eye color of person on left: { prompt: 'the person on the left', bodyParts: ['Pupil'] }</example> <example>Select the eye whites (sclera) of the child: { prompt: 'the child', bodyParts: ['Eyes'] }</example>

Parameters (4 required, 5 optional)
Required
inputImageTypestring

The type of the input image. If the user uploaded an image in this request, use "nativeImage" (and pass nativeImage). If there is no new image upload, read the latest widget state and set this param to currentInputImage.type. If multiple widget states are present, read the one with the most recent updateTimestamp. DO NOT use instructEditInputImage.type. Use nativeImage params when type is "nativeImage", or imageURI when type is "url".

Options:nativeImageurl
optionsobject

Configuration for how images should be edited

originalUploadedImagestring

The path to the original image for the current editing session for that particular image. IMPORTANT: If an image was just uploaded to chat, this should be the local path of the image starting with "/mnt", otherwise read this from the widget state.

promptstring

Text prompt describing what to select in the image

Optional
bodyPartsarray

Optional: One or more specific body parts or clothing items to select from the selected object. If provided, the tool will first select the object by prompt, then parse body parts, and return a mask for the specified parts.

excludedBodyPartsarray

Optional: One or more specific body parts or clothing items to exclude if they are included by default according to the **Default body part hierarchy**.

externalImageURIstring

Provide exactly ONE of nativeImage or externalImageURI. External public image URL starting with http or https. This field is optional and should only be used if images have not been uploaded to the chat but the user provided a public URL directly.

imageURIstring

Use this when the inputImageType param is "url". Read the latest widget state and set this param to currentInputImage.URL. If multiple widget states are present, read the one with the most recent updateTimestamp. Do NOT use instructEditInputImage.URL. Use a valid accessible image URL (http or https). Do NOT reuse URLs from earlier assistant messages or tool responses.

nativeImageobject

Use this when the inputImageType param is "nativeImage". Use this when the user uploads a new image in this request, or when currentInputImage.type is "nativeImage" in the latest widget state. If multiple widget states are present, read the one with the most recent updateTimestamp. For new uploads, use the uploaded image; otherwise set this param to currentInputImage.nativeImagePath. Valid paths start with "/mnt/".

Select subject

selectSubject
Full Description

selectSubject — Select main subject(s) or specific body parts

Selects the main subject(s) in an image and creates a selection mask. Optionally, you can specify specific body parts or clothing items to isolate using the bodyParts parameter.

PRIORITY RULE (applies before the routing guide):

The input image MUST be analyzed first to determine if it is already a particular part of a human subject, such as legs or feet only. If the image is cropped to a specific body region (e.g., only legs, feet, hands), DO NOT use selectSubject with bodyParts.

Instead use selectionByPrompt with a descriptive prompt such as:

  • "the shoes"
  • "the legs"
  • "the hands"

Rationale: body-part parsing works best with a full or mostly full human subject.

Body Parts Support: When bodyParts parameter is provided, the tool will: 1. First detect and select the main subject 2. Parse the subject into body parts using Adobe Sensei 3. Return a mask for the specified body part(s) 4. Combine multiple body parts into a single mask if multiple parts are requested

Supported body parts: Background, Hair, Eyebrows, Eyes, Nose, Mouth, Teeth, Ears, Face, Neck, Arms, Hands, Legs, Coat, Upper Clothes, Lower Clothes, Glasses, Shoes, Dress, Hat, Accessories, Beard, Pupil

Some subparts are included by default when the parent part is requested. For example, if the user asks for "face", the tool will include the nose by default unless the user explicitly asks to exclude it.

Default body part hierarchy: Face: Face, Nose

When to use:

  • Select main subject(s): Call without bodyParts parameter
  • Select specific body part(s) or clothing: Call WITH bodyParts parameter (e.g. ["Hair"], ["Upper Clothes"])
    • Which person? (left/right, "man in back"): Use selectionByPrompt to isolate that person and set bodyParts parameter if any body parts are requested.
  • Non-human objects / scene elements: Use selectionByPrompt

Tool routing quick guide

  • Anything on a person (body parts, clothing, wearable items) if there is only one person in the imageselectSubject with bodyParts parameter
  • Which person if there are more than one person in the image? (left/right, "man in back") → selectionByPrompt to isolate that person → anything on a person? (e.g. face, hair, clothing, shoes) with bodyParts parameter
  • Non-human objects / scene elementsselectionByPrompt

Examples: <example>Select the subject: {}</example> <example>Select the person's face (by default, the nose is included): {"bodyParts": ["Face"]}</example> <example>Select the person's face excluding the nose: {"bodyParts": ["Face"], "excludedBodyParts": ["Nose"]}</example> <example>Select the shirt and pants: {"bodyParts": ["Upper Clothes", "Lower Clothes"]}</example> <example>Select the jacket: {"bodyParts": ["Coat"]}</example> <example>Select the pupils/iris for eye color changes: {"bodyParts": ["Pupil"]}</example> <example>Select the eye whites (sclera): {"bodyParts": ["Eyes"]}</example> <example>Select both pupils and eye whites: {"bodyParts": ["Pupil", "Eyes"]}</example>

Parameters (2 required, 5 optional)
Required
inputImageTypestring

The type of the input image. If the user uploaded an image in this request, use "nativeImage" (and pass nativeImage). If there is no new image upload, read the latest widget state and set this param to currentInputImage.type. If multiple widget states are present, read the one with the most recent updateTimestamp. DO NOT use instructEditInputImage.type. Use nativeImage params when type is "nativeImage", or imageURI when type is "url".

Options:nativeImageurl
originalUploadedImagestring

The path to the original image for the current editing session for that particular image. IMPORTANT: If an image was just uploaded to chat, this should be the local path of the image starting with "/mnt", otherwise read this from the widget state.

Optional
bodyPartsarray

Optional: One or more specific body parts or clothing items to select from the subject. If provided, the tool will first detect the subject, then parse body parts, and return a mask for the specified parts.

excludedBodyPartsarray

Optional: One or more specific body parts or clothing items to exclude if they are included by default according to the **Default body part hierarchy**.

externalImageURIstring

Provide exactly ONE of nativeImage or externalImageURI. External public image URL starting with http or https. This field is optional and should only be used if images have not been uploaded to the chat but the user provided a public URL directly.

imageURIstring

Use this when the inputImageType param is "url". Read the latest widget state and set this param to currentInputImage.URL. If multiple widget states are present, read the one with the most recent updateTimestamp. Do NOT use instructEditInputImage.URL. Use a valid accessible image URL (http or https). Do NOT reuse URLs from earlier assistant messages or tool responses.

nativeImageobject

Use this when the inputImageType param is "nativeImage". Use this when the user uploads a new image in this request, or when currentInputImage.type is "nativeImage" in the latest widget state. If multiple widget states are present, read the one with the most recent updateTimestamp. For new uploads, use the uploaded image; otherwise set this param to currentInputImage.nativeImagePath. Valid paths start with "/mnt/".

Undo edits

undoEdits
Full Description

Undo previous edits applied to an image by an Photoshop tool. When undoing multiple edits, make a single call with { numberOfEdits: N } to undo the last N edits. Do NOT make multiple sequential calls with { numberOfEdits: 1 }.

HOW TO USE THIS TOOL: 1. Undo last N edits (use numberOfEdits): When the user wants to step back through recent edits.

  • User says "undo" or "undo last" → use { numberOfEdits: 1 } (undo only the last edit).
  • User says "undo last X" or "undo X edits" → use { numberOfEdits: X }.

2. Undo by edit name (use numberOfEdits): When the user wants to undo a specific edit by name, undo that edit and all subsequent edits after.

  • MUST read the latest widget state and take the latest "actionHistory". If multiple widget states are present, read the one with the most recent updateTimestamp. Find the matching edit in this list and derive the correct numberOfEdits from the reverse chronological order of applied edits.
  • If the target edit is the first (oldest) entry in actionHistory, use revertToOriginal instead (step 3).
  • i.e. edits applied in order: (1) apply hueSat, (2) remove background, (3) blur background. User says "undo remove background". The edit to undo is the 2nd from the end → use { numberOfEdits: 2 }.

3. Revert to original (use revertToOriginal): Only when the user explicitly asks to remove ALL edits and return to the original image.

  • User says "undo all", "clear all", "start over", etc → use { revertToOriginal: true }.
  • Do NOT use revertToOriginal when the user only says "undo".

Implementation notes:

  • This tool does NOT use generative AI, it manipulates the edit history directly (removes or reverts edits).
  • When it comes to tool inputs. The model should prioritize 'currentInputImage' as input over 'instructEditInputImage'
  • If there are no edits to undo, inform the user instead of calling the tool.
Parameters (3 required, 3 optional)
Required
inputImageTypestring

The type of the input image. If the user uploaded an image in this request, use "nativeImage" (and pass nativeImage). If there is no new image upload, read the latest widget state and set this param to currentInputImage.type. If multiple widget states are present, read the one with the most recent updateTimestamp. DO NOT use instructEditInputImage.type. Use nativeImage params when type is "nativeImage", or imageURI when type is "url".

Options:nativeImageurl
originalUploadedImagestring

The path to the original image for the current editing session for that particular image. IMPORTANT: If an image was just uploaded to chat, this should be the local path of the image starting with "/mnt", otherwise read this from the widget state.

undoobject

Exactly one option: (1) numberOfEdits for undoing the last N edits, or (2) revertToOriginal: true for reverting to the original image. Default to numberOfEdits: 1 when the user says "undo" without "all" or a number.

Optional
externalImageURIstring

Provide exactly ONE of nativeImage or externalImageURI. External public image URL starting with http or https. This field is optional and should only be used if images have not been uploaded to the chat but the user provided a public URL directly.

imageURIstring

Use this when the inputImageType param is "url". Read the latest widget state and set this param to currentInputImage.URL. If multiple widget states are present, read the one with the most recent updateTimestamp. Do NOT use instructEditInputImage.URL. Use a valid accessible image URL (http or https). Do NOT reuse URLs from earlier assistant messages or tool responses.

nativeImageobject

Use this when the inputImageType param is "nativeImage". Use this when the user uploads a new image in this request, or when currentInputImage.type is "nativeImage" in the latest widget state. If multiple widget states are present, read the one with the most recent updateTimestamp. For new uploads, use the uploaded image; otherwise set this param to currentInputImage.nativeImagePath. Valid paths start with "/mnt/".

Zero Credits Widget

zeroCredits
Full Description

Display a zero credits widget that informs users they have reached their daily limit and provides an option to continue editing in Photoshop.

PREQUISITE: ALWAYS read the latest widget state and take the latest instructEditInputImage if available, otherwise use the original uploaded image. If multiple widget states are present, read the one with the most recent updateTimestamp.

This widget shows:

  • Message about continuing edits in Photoshop
  • Credit reset countdown timer
  • Image preview (if provided)
  • "Open in Photoshop" button

Use this widget when a user has exhausted their daily generative tool credits.

Parameters (2 required, 3 optional)
Required
inputImageTypestring

The type of the input image. If the user uploaded an image in this request, use "nativeImage" (and pass nativeImage). If there is no new image upload, read the latest widget state and set this param to currentInputImage.type. If multiple widget states are present, read the one with the most recent updateTimestamp. DO NOT use instructEditInputImage.type. Use nativeImage params when type is "nativeImage", or imageURI when type is "url".

Options:nativeImageurl
originalUploadedImagestring

The path to the original image for the current editing session for that particular image. IMPORTANT: If an image was just uploaded to chat, this should be the local path of the image starting with "/mnt", otherwise read this from the widget state.

Optional
hoursUntilResetinteger

Optional: Hours until credit reset. If not provided, calculated automatically.

imageURIstring

Use this when the inputImageType param is "url". Read the latest widget state and set this param to currentInputImage.URL. If multiple widget states are present, read the one with the most recent updateTimestamp. Do NOT use instructEditInputImage.URL. Use a valid accessible image URL (http or https). Do NOT reuse URLs from earlier assistant messages or tool responses.

nativeImageobject

Use this when the inputImageType param is "nativeImage". Use this when the user uploads a new image in this request, or when currentInputImage.type is "nativeImage" in the latest widget state. If multiple widget states are present, read the one with the most recent updateTimestamp. For new uploads, use the uploaded image; otherwise set this param to currentInputImage.nativeImagePath. Valid paths start with "/mnt/".