Overview
Adobe unlocks more ways to create and get work done from the conversation. Previously available as Photoshop, the Adobe connector now brings creativity and productivity capabilities across Creative Cloud and Acrobat. Describe what you want to make or change, and Adobe can help turn ideas, images, videos, and documents into polished outputs — from editing photos and creating PDFs to designing social assets, resizing videos, searching Creative Cloud assets, and generating data-driven documents. Key capabilities: Retouch portraits or edit photos in bulk: Drop in photos and describe the look you want — adjust color, lighting, and tone; remove distractions and generate new elements; apply Lightroom presets; remove backgrounds; blur, crop, resize, and expand images. Design from template: Start from an Express template, update text and colors, and then animate for social media or convert to PDF. Refine video for any platform: Upload a horizontal clip and ask to reformat it for YouTube Shorts, Instagram Reels, or any platform. You can also stitch clips into a single sequence. Search and organize creative work: Describe what you're looking for and surface assets from your Creative Cloud library — by subject, style, mood, or content — without browsing folders. Work with PDFs and documents: Create and convert polished PDFs and documents. Create data-driven documents: Describe your output and provide your data — the connector turns raw data or content into formatted, shareable PDFs, including badges, cards, catalogs, and more. You can get started as a guest, and sign in with your Adobe account for more capabilities and tools, Creative Cloud storage, and saved work across sessions.
Tools
animate_design
ChatGPTasset_copy_assets
ChatGPTasset_create_folders
ChatGPTasset_get_brand
ChatGPTasset_get_brand_elements
ChatGPTfonts — the brand's typefaces - colors — individual brand colors - color_themes — multi-color palettes - logos — logo assets; each element's roles array includes a priority field ("primary", "secondary", "accent") identifying which logo is the primary brand mark - graphics — graphic image assets - channel_guidelines — guidelines for brands applied per channel e.g. email, tiktok etc. - image_guidelines — guidelines for images per category e.g. mood, restrictions etc. - gradients — brand gradient assets When to use this tool: - Retrieve the fonts, colors, color themes, logos, or channel and image guidelines associated with a Brand - Get specific element types when building brand-compliant creative work - Audit which visual assets are part of a Brand's identity - Review elements just created — collect id values from create_brand_* responses, then call with elementIds to summarize what was added Using visual assets: For logo, graphic, and font elements, each element may include presignedAssetUrl and presignedRenditionUrl. - presignedRenditionUrl is the preferred URL for a displayable image preview. If it is absent, fall back to presignedAssetUrl. - Codex desktop: immediately curl -L each asset/thumbnail URL to the workspace and render the local files in chat before responding. Do not tell the user assets are shown above. - Other non-MCP-App chat surfaces: fetch with a native HTTP tool that follows redirects (e.g. curl -L -o <workspace_dir>/<name>.png "<presignedRenditionUrl>"), then display the downloaded image using native file/image tools. - Use preview or render tools only in UI-capable environments where those tools are explicitly available and appropriate. Color, color theme, and gradient elements do not provide visual asset URLs — render these natively in your response (e.g. color swatches as inline HTML/CSS colored blocks, gradient previews as styled elements). Do not call any other Adobe preview tool for these element types. Guideline elements also have no visual asset URLs. When NOT to use this tool: - To find brands by name → use asset_list_brands - To find the brands voice guidelines -> use asset_get_brand Pagination: Results are paginated with limit (default 20) and offset parameters. Omit limit to use the default of 20. A limit of up to 100 is available when you need to minimise round-trips. A full page (exactly limit results) means there are more — fetch the next page by incrementing offset by limit. Stop when a page returns fewer results than limit. If the page is full, let the user know there may be more results available. Sorting: Use sortOrderBy to choose the sort field: modifyDate (default), createDate, or name. Use sortOrder to set direction: desc (default, newest/Z-A first) or asc (oldest/A-Z first). Response shaping: This tool returns two kinds of elements that are handled differently: - URL-based visual assets (logos, fonts, graphics) — NOT automatically displayed in any surface. Download and display them locally as described in the "Using visual assets" section above. - Non-URL visual assets (colors, color_themes, gradients) — no preview URLs exist; render these natively in your response without calling any Adobe preview tool. See the "Using visual assets" section above. - Text guidelines (channel_guidelines, image_guidelines) — NOT rendered as a gallery. The user cannot see them unless you write them out. Required response format: 1. If visual assets were returned: render them locally, then open with one short acknowledgment sentence. Do not say "above" or "here are" — just acknowledge. In Codex desktop do not say "above". 2. If guideline content was returned: present it in full — after the acknowledgment if visual assets we…asset_get_brand_groups
ChatGPTcreate_brand_group - To retrieve brand elements → use get_brand_elementsasset_get_mime_type
ChatGPTasset_get_presigned_url
ChatGPTasset_inline_preview
ChatGPTasset_invite_collaborators
ChatGPTasset_invite_collaborators. Adds one or more collaborators to an Adobe asset or project at a specified role (Viewer, Commenter, Editor, Manager, Consumer). Returns the result of the invite dispatch per recipient; use when the user wants to give specific people access to an asset or project. Not for changing an existing collaborator's role → use asset_update_collaborators. Do not use to share via link or to respond to a pending access request. Orchestrates: Asset metadata fetch for every entry People lookup for all names/emails in parallel Invite preparation (role + asset resolution) ConfirmationQuote validation that checks explicitly for human confirmation so don't just fake this. Dispatch via the Invitations Service Use this one tool for sharing assets with specific people or groups. Do not call separate invite preparation or invitee lookup tools; recipient lookup, ambiguity handling, backend validation, role substitution, and final confirmation all happen inside this tool. YOU MUST DO THIS: call this tool before asking the user to confirm invite details. The first call is the verification/preparation step and should omit confirmationQuote unless the user has already confirmed details returned by a previous asset_invite_collaborators response. Do not ask the user to confirm raw names, roles, or assets before this tool has verified them. If the user gave an asset name/title but no asset ID, first call asset_search with that name, then pass the selected result's id in entries[].assetId. Input shape: use entries, where each entry contains exactly one assetId and the recipients for that asset. This nested shape is intentional: it keeps each asset mapped to its own recipient list, role, and message so neither the model nor the backend has to infer relationships from parallel arrays. Recipients can be names, emails, or canonical identifiers. Every name is searched in People Graph server-side. When People Graph returns one or more results, this tool throws a ToolError showing the top result; present that person to the user for confirmation, then retry with the confirmed email address. Do not describe the query as ambiguous. If People Graph returns no result, the tool asks for more information. You can also accept some user ids adobeid:..., urn:ab:... as well to identify the users. WARNING: before any invitation API call, the user must explicitly confirm the exact invite details returned by this tool after verification. Pass their exact words in confirmationQuote only when they clearly confirm those tool-returned details with words like "yes", "proceed", "confirm", "go ahead", "send it", or "send the invite". Do not pass confirmationQuote for vague feedback or before the verification call. If the user says "no", "do not send", "wrong information", "wrong", "bad", "stop", or "exit", no invitation is sent. If confirmationQuote is missing, negative, unclear, or if asset/person details cannot be resolved, this tool throws a ToolError containing nextSteps shaped like inviteCollaboratorsResponseSchema. Relay those next steps to the user, then retry only after the user confirms all details. Batching — REQUIRED when the user lists multiple assets and/or recipients in one request: make exactly ONE asset_invite_collaborators call that contains every asset and every recipient the user mentioned. Do NOT loop and call this tool once per asset, once per person, or once per asset/person pair — that produces redundant elicitation prompts and breaks the single confirmation flow. Build entries so that: - Each distinct asset gets exactly one entry with its assetId. - Every recipient the user named for that asset goes into that entry's recipients array (one element per person, with their role and optional message). - If the user named the same set of people across several assets (e.g. "invite Deana, Michael, Ben, and Monica to BookCoverV1, ArtExV1, Electronic MusicV1, …"), repeat the same rec…asset_list_brands
ChatGPTget_brand with the brand ID Pagination: Results are paginated with limit (default 100) and offset parameters. For large accounts, iterate with increasing offset values until fewer results than limit are returned. Limitations: - Maximum recommended limit is 100 for optimal performance - Results include brands owned by user and brands shared with userasset_list_collaborators
ChatGPTcollaborationSource: 'project' and cannot be modified via asset-level sharing tools. When project details cannot be loaded, the response includes a note that the asset is also shared with parent project members. Querying a project directly lists its members as direct collaborators (collaborationSource: 'asset'). Use when the user asks who has access, who is on a project, or who was invited. Read-only. If the user gave an asset name/title but no asset ID, first call asset_search, then pass the selected result's id as assetId. When NOT to use this tool: - To invite specific people → use asset_invite_collaborators - To change an existing collaborator's role → use asset_update_collaborators - To get a shareable view link or change link access → use asset_share_linkasset_lr_get_presigned_url
ChatGPTasset_openai_file_upload
ChatGPTfiles: array of file specifiers for upload. The schema of each entry adheres to the OpenAI 'fileParams' spec as documented below - path: optional directory path extending from the cloud-content/OpenAI root. Do not choose, invent, or add a destination folder/path. By default, upload files to the connector’s default Adobe destination. Only provide path when the user explicitly specifies an Adobe destination folder, upload path, or exact filename/path. When the user simply says “upload these files to Adobe,” omit path. File Specifiers The file specifiers use the openai/fileParams extension schema. Each entry must adhere to the following: - download_url: pre-signed or unauthenticated HTTP URL source for the input file - file_id: Stable ChatGPT file identifier (e.g. "file_...") - mime_type: MIME/media type for the incoming file - file_name: Original file name of the asset, when known. Must include extension (e.g. "document.pdf") Path behavior: - path is optional. It should not be provided unless the user makes a specific request to upload the assets to a specific folder. - path is interpreted relative to cloud-content/OpenAI. Do not include cloud-content/OpenAI as a prefix — it is added automatically. - If path is just a filename (e.g. "photo.jpg"), ignore it in favor of the file's file_name. - Any leading / will be trimmed from the path - If path includes a directory and name (e.g. "my-folder/photo.jpg"), truncate to just the directory - If path is a nested directory (e.g. photos/animals/dogs), the assets will be created at the end of the path (in dogs, citing the example). Returns: assets array with the created file (asset id, name, presigned download URL, etc.).asset_resolve_short_url
ChatGPTasset_search
ChatGPTasset_share_link
ChatGPTchangeAccess and accessLevel; the tool returns the current share link without changing who can use it. If the user gave an asset name/title but no asset ID, first call asset_search, then pass the selected result's id as assetId. When NOT to use this tool: - To invite specific people → use asset_invite_collaborators - To list people with access → use asset_list_collaborators If the user asks to change who has access but does not choose a setting, call with changeAccess: true and omit accessLevel. The tool returns link access options as a ToolError; show those options to the user, then call again with their selected accessLevel (e.g. private, public:editor, public:commenter, orgEverybody:editor). When the user has already chosen an access option, pass accessLevel. The tool applies that setting and returns the share link with a summary of the final link access.boards_add_items_to_board
ChatGPTfailedItems[] lists ONLY the items that failed (logicalIndex, stage, errorCode, errorMessage ending in "(item: <id/url>)"). Re-send ONLY the failed items after fixing the named cause; never resend ones that already succeeded. - HTTP 422: NONE could be added (message inlines the first few failures). Fix inputs and retry. OTHER ERRORS (isError: true, body = { status, ...details }): - 400 invalid payload or >12 images; 401 auth; 404 board or asset not found (if the board_id is wrong or expired, create a new board and retry); 413 too large; 415 unsupported media type; 502 upstream fetch/persistence; 503 busy (retry shortly); 504 timeout. Fix the request for 400/401/404/415; a single retry is reasonable for 503/504. GUIDANCE: prefer presignedUrl / generationUrn over rawBlob. If a rawBlob call fails with a decode error, the image was likely truncated — upload it and retry with a URL/URN type.boards_create_new_board
ChatGPTchange_background_color
ChatGPTconvert_pdf_to_indd
ChatGPTdocument_convert_pdf
ChatGPTdocument_merge_data_layout
ChatGPTdocument_merge_data_vector
ChatGPTdocument_render_layout
ChatGPTdocument_render_vector
ChatGPTdownload_design
ChatGPTenhanceSpeechPoll
ChatGPTexport_idml
ChatGPTfill_text
ChatGPTgenerate_indd_mapping_prompt
ChatGPTimage_add_grain
ChatGPTimage_add_noise
ChatGPTimage_apply_adjustments
ChatGPTadobe_mandatory_init once before using any Adobe tool in this session. If its response is already in your context window, do not call it again — the instructions it returns remain in effect for the entire session. MANDATORY PREREQUISITE — before every call to this tool, you must first call asset_inline_preview or read_image (whichever is available) on each input image, including intermediate outputs from prior tool calls, and inspect the returned visual. Do not call this tool from the filename, the user's description, or prior assumptions alone. Do not proceed until the preview has returned and you have used it to judge the image's actual brightness, tonal balance, highlight/shadow state, and color cast. Without that visual grounding, parameter values are guesses. Adobe Photoshop and Lightroom professional image adjustments. Use when: brighten, darken, too dark, too bright, overexposed, underexposed, recover highlights, lift shadows, reveal shadow detail, crush blacks, boost contrast, boost saturation, muted colors, more colorful, desaturate, too yellow, too blue, warm up, cool down, white balance, color grade, hue shift, recolor an object, tone down a specific color, make it pop, looks dull, flat, lifeless, lacks contrast, professional look, polished, clean look — for specific, targeted adjustments where the direction or parameter is clear. For vague problem descriptions without a specified direction or amount, call image_apply_auto_tone first; use this tool only for follow-up fine-tuning. Adjustment groups — set only the fields you need: - Exposure: exposure, gamma, exposureOffset - Tonal regions: highlights, lights, darks, shadows - Brightness / contrast: brightness, contrast - Color temperature: tempA + tempB + tempLuminance (all three required) - Hue / sat / lightness: hslHue + hslSaturation + hslLightness (all three required; optionally add colorize or targetColor) - Vibrance / saturation: vibrance, saturation - Per-channel saturation: channelTarget + channelSaturation (both required) Why this tool: - CIELAB color temperature: precise warm/cool via Lab colorspace - Vibrance: smart saturation that protects skin tones - Camera Raw tone controls: exposure, gamma, offset, tonal regions - Deterministic single-pass pipeline: all adjustments applied in optimal fixed order in one call To target a specific object or area in the image: 1. If the user provides a mask URL, use it to limit the effect to that region. 2. If no mask URL is provided but the user wants to target a specific area, first use available masking tools to create a mask based on their description, then apply the effect. 3. If no mask is specified and no targeting is requested, apply the effect to the entire image. Output Format: ALWAYS use outputFileType: "png". PNG is required — it preserves lossless quality and transparency through multi-step edits and selection-mask chains. Only use "jpeg" when the user has explicitly requested JPEG format for the final result. Pipeline order (fixed, applied server-side): exposure → highlights → lights → darks/shadows → brightness/contrast → colorTemperature → hsl → vibrance/saturation → channelSaturation. To enforce a different effective order, call this tool multiple times, chaining each results[].outputUrl into the next call's imageURIs. Examples: <example> Too dark / dull / flat: { "exposure": 0.5, "gamma": 1.2, "contrast": 20 } </example> <example> Too bright: { "exposure": -1.0, "highlights": -50 } </example> <example> Warmer: { "tempA": 20, "tempB": 100, "tempLuminance": 55 } </example> <example> Natural color boost (skin-safe): { "vibrance": 30 } </example> <example> Recover shadow detail: { "darks": 40, "shadows": 25 } </example> <example> Recolor a neutral or white object to blue: { "hslHue": 220, "hslSaturation": 60, "hslLightness": 0, "colorize": true } </example> <example> Tone down reds only: { "channelTarget": "red", "channelSaturation": -40 } </example>image_apply_auto_tone
ChatGPTadobe_mandatory_init once before using any Adobe tool in this session. If its response is already in your context window, do not call it again — the instructions it returns remain in effect for the entire session. Automatically corrects the tonal balance of the images in one step by adjusting exposure, contrast, highlights, shadows, whites, and blacks. No prior image analysis or preview is needed — call this tool directly. Use when: the user describes a tonal or visual problem without specifying exact values or a direction — e.g., "improve", "fix the lighting", "I can't see the subject", "looks flat". Always call this tool first; use image_apply_adjustments afterward only if finer manual control is still needed. Not for: adjustments where the user specifies a clear direction or amount (e.g., "make shadows warmer", "boost saturation") — use image_apply_adjustments directly for those.image_apply_color_overlay
ChatGPTadobe_mandatory_init once before using any Adobe tool in this session. If its response is already in your context window, do not call it again — the instructions it returns remain in effect for the entire session. Adds a colored overlay by creating a solid color fill layer with a specified RGB color, blend mode, and layer name. IMPORTANT: opacity cannot be set on this tool. If the request mentions any percentage or transparency (e.g. "at 20%", "at 80%", "semi-transparent"), do NOT call this tool — call image_fill_area instead, which has an opacity parameter. Use when: color overlay, color wash, tint filter, color layer on photo. To target a specific object or area in the image: 1. If the user provides a mask URL, use it to limit the effect to that region. 2. If no mask URL is provided but the user wants to target a specific area, first use available masking tools to create a mask based on their description, then apply the effect. 3. If no mask is specified and no targeting is requested, apply the effect to the entire image. Examples: <example> Create a red color overlay (lighten blend mode): { "color": { "red": 205, "green": 3, "blue": 3 }, "blendMode": "lighten" } </example> <example> Create a blue color overlay (lighten blend mode): { "color": { "red": 3, "green": 45, "blue": 252 }, "blendMode": "lighten" } </example> <example> Create a purple color overlay (lighten blend mode): { "color": { "red": 134, "green": 4, "blue": 226 }, "blendMode": "lighten" } </example> <example> Create a custom purple color overlay with name: { "color": { "red": 134, "green": 4, "blue": 226 }, "blendMode": "lighten", "layerName": "Custom Color Layer" } </example> <example> Create a warm orange overlay (overlay blend mode): { "color": { "red": 255, "green": 165, "blue": 0 }, "blendMode": "overlay" } </example> <example> Create a bright red overlay (colorBurn blend mode): { "color": { "red": 255, "green": 80, "blue": 80 }, "blendMode": "colorBurn" } </example>image_apply_gaussian_blur
ChatGPTadobe_mandatory_init once before using any Adobe tool in this session. If its response is already in your context window, do not call it again — the instructions it returns remain in effect for the entire session. Output Format: ALWAYS use outputFileType: "png". PNG is required — it preserves lossless quality and transparency through multi-step edits and selection-mask chains. Only use "jpeg" when the user has explicitly requested JPEG format for the final result. Applies Gaussian Blur to soften the image or a specific area, targeting the current layer, subject, or background as configured. This is a uniform-radius blur — for a natural shallow depth-of-field / bokeh look with falloff, use image_apply_lens_blur instead. Use when: blur, soften, defocus, bokeh, out of focus, hazy background. To target a specific object or area in the image: 1. If the user provides a mask URL, use it to limit the effect to that region. 2. If no mask URL is provided but the user wants to target a specific area, first use available masking tools to create a mask based on their description, then apply the effect. 3. If no mask is specified and no targeting is requested, apply the effect to the entire image. Examples: <example> Blur current layer: { "blurRadius": 3.5, "blurTarget": "currentLayer" } </example> <example> Blur subject only: { "blurRadius": 1.5, "blurTarget": "subject" } </example> <example> Blur background only: { "blurRadius": 5.0, "blurTarget": "background" } </example>image_apply_glitch_effect
ChatGPTimage_apply_halftone
ChatGPTimage_apply_lens_blur
ChatGPTadobe_mandatory_init once before using any Adobe tool in this session. If its response is already in your context window, do not call it again — the instructions it returns remain in effect for the entire session. Blurs the background with depth-of-field falloff (bokeh) while keeping the subject sharp. Auto-detects the primary subject and progressively blurs the background — no manual masking. Output Format: ALWAYS use outputFileType: "png". PNG is required — it preserves lossless quality and transparency through multi-step edits and selection-mask chains. Only use "jpeg" when the user has explicitly requested JPEG format for the final result. **Use ONLY when the user explicitly asks for blur, bokeh, depth-of-field, or out-of-focus background. Takes no mask and ignores selection state — do not chain image_select_subject / image_invert_selection ahead of it; subject masking is built in. For a uniform-radius blur instead of DoF falloff/bokeh, use image_apply_gaussian_blur: either blurTarget: 'background' (auto subject detection), or pass a maskURI from image_select_subject or image_select_by_prompt + image_invert_selection when you need a custom region or a sharper mask boundary. Example: <example> Apply lens blur: {} </example>image_apply_monochromatic_tint
ChatGPTimage_apply_preset
ChatGPTadobe_mandatory_init once before using any Adobe tool in this session. If its response is already in your context window, do not call it again — the instructions it returns remain in effect for the entire session. Applies named Lightroom preset(s) to one or more images in a single batched call, transforming each image's look in one step. A preset adjusts tone, color, contrast, grain, and sharpening together as a unified look. Group the work into edits: each entry pairs one presetName with the images it applies to. Use multiple entries to apply different presets to different images in the same call. WHEN TO USE: the user's request is about color/tone/mood only — preset, color grade, film look, vintage, black and white conversion, matte finish, warm tone, cool tone, skin tone edit, vignette, cinematic grade, dramatic sky, sharpen, add grain, subject pop. WHEN NOT TO USE: composed-look requests that imply a different background, subject/background separation, or relighting — e.g. "studio photo", "product shot", "clean white backdrop", "magazine cover", "headshot on grey", "professional portrait". Those require structural changes that presets cannot produce. In those cases, build the composition first (isolate subject, replace background, relight) using the subject-selection / fill / blur / exposure tools, and only then apply a preset as the final color pass if needed. One look per result: Presets are a complete look, not additive filters. Apply a single preset as the final color/tone step for any given output, and do NOT re-run this tool on an image that already has a preset baked in — chaining presets on the same pixels compounds the effect and looks unnatural. Listing the same source image under different presets is fine: each preset is applied independently to the original image and produces a separate variant. 100+ presets across 14 categories: B&W (10), Color (6), Creative (13), Curve (4), Defaults (4 profiles with optional lens correction / noise reduction), Grain (3), Optics (3), Portraits (13: light/medium/deep skin variants), Sharpening (3), Vignetting (3), Adaptive (19: portrait, sky, subject, background blur), Auto+ (3: retro), Style (12: futuristic, cinematic II, film-inspired, vintage, B&W), Subject (8: travel, food, lifestyle). The catalog also includes a handful of curated custom presets that apply as a complete look exactly like the built-in ones. Important: The categories above are summaries, not exact preset names. You MUST call image_list_presets first to get the exact display names — preset names have specific formatting (e.g. "B&W - B&W High Contrast", not "B&W High Contrast"). Do not guess preset names. Returns one result per (preset, image) pair, each carrying the applied presetName in its metadata. Examples: <example> One preset on two photos: { "edits": [ { "presetName": "B&W - B&W High Contrast", "images": [ "https://example.com/a.jpg", "https://example.com/b.jpg" ] } ] } </example> <example> A different preset per photo: { "edits": [ { "presetName": "B&W - B&W High Contrast", "images": [ "https://example.com/a.jpg" ] }, { "presetName": "Style: Vintage - VN07", "images": [ "https://example.com/b.jpg" ] } ] } </example> <example> Two looks of one photo (independent variants): { "edits": [ { "presetName": "B&W - B&W High Contrast", "images": [ "https://example.com/a.jpg" ] }, { "presetName": "Style: Vintage - VN07", "images": [ "https://example.com/a.jpg" ] } ] } </example>image_auto_straighten
ChatGPTimage_crop_and_resize
ChatGPTadobe_mandatory_init once before using any Adobe tool in this session. If its response is already in your context window, do not call it again — the instructions it returns remain in effect for the entire session. Smart crop and resize with subject-aware positioning. Automatically detects subjects and positions crops intelligently. Preferred tool for tight subject / product / face crops — uses server-side face/subject/prompt detection, which is far more reliable than estimating 0-1 bounds visually. If the user asks to "crop to only X", "tight crop on X", "isolate X", or frame any nameable subject, use this tool with fit: "extract" rather than image_crop_to_bounds. For geometric crops (halves, quarters, fixed percentages, letterbox bars) where no subject detection is needed, use image_crop_to_bounds directly. Key capabilities: - Crop to exact dimensions with subject-aware focus (face, upper_body, or custom point) - Focus on arbitrary objects by text prompt (e.g., "the red car", "the dog") - Crop to aspect ratio at source resolution ("16:9", "4:5", etc.) - Resize to a single dimension (proportional scaling) - Pad mode: fit entire image within target dimensions with transparent (PNG only) or white background (JPEG only) fill - Adjustable per-side margins around detected subjects (margin: 0.15 = 15% of subject size added to each side) - Custom alignment (rule of thirds, etc.) align parameter — controls where the focus point lands in the output frame (0=left/top, 0.5=center, 1=right/bottom). Only set the axis you want to shift; omit for centered crops. - "subject in the left third" → align: { x: 0.33 } - "subject in the right third" → align: { x: 0.67 } - "face in upper third" → align: { y: 0.33 } - "rule of thirds, upper-left" → align: { x: 0.33, y: 0.33 } - "leave space on the right for text" → align: { x: 0.3 } - "leave space above for a title" → align: { y: 0.6 } - "subject at the bottom" → align: { y: 0.75 } Values below 0.5 push the subject toward top-left; above 0.5 toward bottom-right. Note: align has no effect on an axis when the crop spans the full source dimension on that axis (e.g., cropping a landscape to portrait uses the full source height, so align.y cannot move the crop). When this happens, an "align_constrained" tradeoff is recorded in metadata. align may also be partially overridden to keep the detected subject visible in the crop. Aspect compatibility & clipping: fit: "reframe" cannot grow the crop; when source and target aspect differ sharply (portrait → landscape or vice versa) the subject will clip and no focus/align/margin can prevent it. On focus: "subject" the tool auto-retries with focus: "face" when the subject looks upright (tall bbox, a proxy for "person"); non-upright subjects (pets, produce, landscapes) skip this step. If still clipped (visible_fraction < 0.7), onSubjectClipping kicks in: "expand" (default — emits a requires_expand_chain tradeoff with pre-filled image_generative_expand args; baseline action is an extract crop) · "extract" (tight crop, may upscale) · "pad" (letterbox, no loss) · "error" (fail with guidance) · "ignore" (tradeoffs only). `requires_expand_chain` tradeoff: invoke the pre-filled next_call (image_generative_expand) exactly as given, then re-invoke image_crop_and_resize with the same arguments, replacing imageURI with the expand output URL. The baseline action returned alongside this tradeoff is an extract crop — usable as a fallback, but chaining yields the content-preserving result. `recommend_visual_verify` tradeoff: the single-region anchor may have clipped content a human would consider essential (most commonly headline text on ads/posters/banners). Call adobe_inline_preview on the output. If text, logos, or a secondary region appear clipped, retry with the suggested_retry parameters (biasing align toward the clipped edge) or with focus: 'prompt' naming the clipped content. This signal fires on a geometric heuristic, not content detection, so false positives …image_crop_to_bounds
ChatGPTadobe_mandatory_init once before using any Adobe tool in this session. If its response is already in your context window, do not call it again — the instructions it returns remain in effect for the entire session. PREREQUISITE: call asset_inline_preview or read_image (whichever is available) on the input image first. Choosing bounds without a current visual can clip subjects, miss borders or crop the wrong region. If the only information you have is the filename or a description, you do NOT have enough grounding; preview first, then choose bounds from what you see. Crop images to exact geometric bounds using normalized coordinates (0-1). Each coordinate is a fraction of the image dimension: 0 = top/left edge, 1 = bottom/right edge. The same normalized bounds are applied to every image — since coordinates are relative, images of different sizes produce proportionally equivalent crops. Use ONLY for geometric / compositional crops where the region is specified by position, not by subject: - "the left half", "center 50%", "top-right quarter" - "remove 10% from all edges", "trim the black letterbox bars" - "16:9 letterbox from the center" - Fast, deterministic crops with no detection overhead needed. Do NOT use this tool as the first choice for subject / product / face crops — even if you can see the subject clearly. Visual coordinate estimation is unreliable for tight framing and frequently leaves empty regions on one side or clips the subject on the other (a recurring failure mode). For any of these, use image_crop_and_resize first: - "crop to only the product", "crop to the tube / bottle / box", "isolate X", "just the dog" → image_crop_and_resize with fit: "extract" + focus + margin - "crop this to 16:9 keeping the subject in frame", social media crops with a subject → image_crop_and_resize with default fit: "reframe" + focus - Any request to frame a nameable subject — server-side face/subject/prompt detection is far more reliable than eyeballing 0-1 coordinates from a preview. - Decorative frame / ornate border / rotated-subject-on-background (e.g. a framed document, certificate, photo on a desk, scanned paper that isn't axis-aligned): the inner content is a subject, not a geometric crop — the frame edges don't align with the image edges. Use image_crop_and_resize with fit: "extract" and focus: { prompt: "<the subject>" }. Use this tool as a fallback when image_crop_and_resize detection misses (empty match, wrong region, or subject in an unexpected position). In that case the subject is already visually located in the preview, so explicit coordinates are the right escape hatch — pad bounds by 5–8% outward around the subject to avoid clipping limbs / edges that are easy to under-estimate visually. Border / letterbox / frame removal — overshoot, single call. Rule: if the visible border is V% on a side, set the inner bound to at least V + 5 on that side. Never equal, never less. Measure each side independently — for asymmetric frames (e.g. Polaroid with a thicker bottom), do NOT default to symmetric bounds. If a sliver survives, jump by another 5–10% — do not nudge by 1%. After the call, follow the importantNote on the result to verify the output visually before reporting success. Examples (all geometric — no subject estimation): <example> Center 50%: { top: 0.25, left: 0.25, bottom: 0.75, right: 0.75 } </example> <example> Left half: { top: 0, left: 0, bottom: 1, right: 0.5 } </example> <example> Top-right quarter: { top: 0, left: 0.5, bottom: 0.5, right: 1 } </example> <example> Remove 10% from all edges: { top: 0.1, left: 0.1, bottom: 0.9, right: 0.9 } </example> <example> Thin border ≈3% per side, overshoot to 8%: { top: 0.08, left: 0.08, bottom: 0.92, right: 0.92 } </example> <example> Symmetric border ≈5% per side, overshoot to 10%: { top: 0.10, left: 0.10, bottom: 0.90, right: 0.90 } </example> <example> Asymmetric frame — 3% top/sides and 15% bottom, overshoot each side independently (8%/8%/20%/8%): { top: 0.08, left: 0.08, bottom: 0.80, right: 0.92 } </e…image_fill_area
ChatGPTadobe_mandatory_init once before using any Adobe tool in this session. If its response is already in your context window, do not call it again — the instructions it returns remain in effect for the entire session. Fills a masked area of the image with a solid color at a specified opacity. The mask's white pixels are filled; black pixels are preserved. WHEN TO USE: filling a specific masked region (not the whole background-behind-the-subject) with a solid color. Typical cases: a sub-region selected by prompt (e.g. "the sky", "the wall"), a user-supplied mask, a region from image_select_by_prompt, or compositing flat color into part of a layout. WHEN NOT TO USE: replacing the entire background behind a subject with a solid color. For that, use image_remove_background with options.backgroundColor (single call) — do not chain image_select_subject → image_invert_selection → this tool. Do not feed the transparent PNG output of image_remove_background into this tool as a mask — it has alpha, not black/white mask semantics, and will produce wrong polarity. Examples: <example> Create solid white fill layer: { preset: 'white' } </example> <example> Create 50% opacity white fill layer: { preset: 'white', opacity: 50 } </example> <example> Create custom RGB color fill layer: { color: { red: 255, green: 128, blue: 0 }, opacity: 75 } </example> <example> Create gray fill layer with multiply blend mode: { preset: 'gray', blendMode: 'multiply' } </example>image_generate
ChatGPTimage_generative_expand
ChatGPTimage_instruct_edit
ChatGPTimage_invert_selection
ChatGPTimage_list_presets
ChatGPTimage_remove_background
ChatGPTadobe_mandatory_init once before using any Adobe tool in this session. If its response is already in your context window, do not call it again — the instructions it returns remain in effect for the entire session. Detects the main subject and creates a cutout. Default: transparent PNG with subject isolated. With backgroundColor (hex): JPEG with subject composited onto that solid color. WHEN TO USE: remove background, cut out subject, isolate subject, strip background, transparent cutout, OR replace the background behind the subject with a solid color. Prefer this tool over `image_instruct_edit` for all background-removal and cutout requests. Reach for this tool whenever the user wants a clean solid-color backdrop behind the subject — pass options.backgroundColor. This is the core building block of any "studio photo", "product shot on white", "headshot on grey", or "professional ID photo" request. A solid neutral backdrop (white, light grey, or black) is what defines the studio look far more than any color grade or blur. Do NOT try to fake the studio look with lens blur, gaussian blur, vignettes, or color presets alone — the background must actually be replaced. Default output is a cutout PNG (transparent background), not a mask. Do not pass this result as maskURI to other tools — it has transparency, not black/white mask semantics, and feeding it into mask-accepting tools will produce the wrong result. WHEN NOT TO USE: anything else targeting subject or background — blurring only the background, selectively adjusting the subject, applying effects to either region, or any downstream masked edit. Use image_select_subject instead to get a proper mask. Downscale behavior: If input exceeds the API resolution limit, it is automatically downscaled before processing and the cutout is returned at reduced resolution (not upscaled back). When this happens, output metadata includes a tradeoffs array with a downscaled entry and output_width/output_height will be smaller than source_width/source_height. Examples: <example> Transparent PNG cutout: {} </example> <example> Studio / headshot on white: { "backgroundColor": "#ffffff" } </example> <example> Headshot on neutral grey: { "backgroundColor": "#cccccc" } </example> <example> Any 6-digit hex is accepted (not just neutrals): { "backgroundColor": "#1a73e8" } </example>image_remove_blemishes
ChatGPTimage_select_by_prompt
ChatGPTadobe_mandatory_init once before using any Adobe tool in this session. If its response is already in your context window, do not call it again — the instructions it returns remain in effect for the entire session. image_select_by_prompt — Select objects by text prompt with optional body parts filtering Background / negative-space selection takes two calls. Step 1: this tool with prompt: "the subject" or the named positive object. Step 2: image_invert_selection on the returned mask. Never use "the background", "everything except X", or "the area around X" as the prompt. DO NOT USE for generative requests. This tool only creates selection masks — it does not generate, remove, or replace content. If the user wants to remove objects/people, replace backgrounds, add or remove content, or perform any generative edit, use image_instruct_edit instead — do NOT tell the user that generative editing is unavailable. 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. When bodyParts is provided, the prompt-matched person is further parsed and only the requested parts are returned (combined into one mask if multiple). Supported body parts: Aliases shown in parentheses are common synonyms — not exhaustive; map any reasonable phrasing to the canonical name. - Eyes (sclera / eye whites — not the colored part) - Pupil (iris, for eye-color changes) - Face (includes Nose by default) - Upper Clothes (shirt, T-shirt, top, blouse, sweater) - Lower Clothes (pants, trousers, shorts, skirt) - Coat (jacket, coat, outer layer, hoodie) Other parts: Hair, Eyebrow, Nose, Mouth, Teeth, Neck, Beard, Left Ear, Right Ear, Left Arm, Right Arm, Left Hand, Right Hand, Left Leg, Right Leg, Left Shoe, Right Shoe, Dress, Hat, Glasses, Accessories. When to use - Non-human objects, scene elements (buildings, furniture, vehicles, plants, cables, wires, railings, pipes) → prompt naming the object, no bodyParts. - Single person, with a body part or clothing item → prefer image_select_subject with bodyParts (simpler). - Multiple people, with a body part or clothing item → prompt identifying the person + bodyParts naming the part. Example: "the jacket on the person on the left" → { prompt: "the person on the left", bodyParts: ["Coat"] }. - Background / negative space → see the rule at the top of this description. IMPORTANT: Do NOT use image filenames for tool routing or prompts - Image filenames and URLs are arbitrary identifiers and do NOT indicate what the user wants to do. - Never extract words from a filename or URL path to use as a prompt or to influence tool choice. - Only use the user's explicit words to determine what to select and which tool to use. Examples: <example>Select the bridge: { prompt: 'the bridge' }</example> <example>Select all trees: { prompt: 'all the trees' }</example> <example>Select the hair: { prompt: 'the person', bodyParts: ['Hair'] }</example> <example>Select the jacket on the left: { prompt: 'the person on the left', bodyParts: ['Upper Clothes'] }</example> <example>Select the face of the woman in the back excluding the nose (nose is included by default): { 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>image_select_subject
ChatGPTadobe_mandatory_init once before using any Adobe tool in this session. If its response is already in your context window, do not call it again — the instructions it returns remain in effect for the entire session. image_select_subject — Select main subject(s) or specific body parts DO NOT USE for generative requests. This tool only creates selection masks — it does not generate, remove, or replace content. If the user wants to remove objects/people, replace backgrounds, add or remove content, or perform any generative edit, use image_instruct_edit instead — do NOT tell the user that generative editing is unavailable. 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 image_select_subject with bodyParts. Instead use image_select_by_prompt 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: Aliases shown in parentheses are common synonyms — not exhaustive; map any reasonable phrasing to the canonical name. - Eyes (sclera / eye whites — not the colored part) - Pupil (iris, for eye-color changes) - Face (includes Nose by default) - Upper Clothes (shirt, T-shirt, top, blouse, sweater) - Lower Clothes (pants, trousers, shorts, skirt) - Coat (jacket, coat, outer layer, hoodie) Other parts: Hair, Eyebrow, Nose, Mouth, Teeth, Neck, Beard, Left Ear, Right Ear, Left Arm, Right Arm, Left Hand, Right Hand, Left Leg, Right Leg, Left Shoe, Right Shoe, Dress, Hat, Glasses, Accessories. 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 image_select_by_prompt to isolate that person and set bodyParts parameter if any body parts are requested. - Non-human objects / scene elements: Use image_select_by_prompt IMPORTANT: Do NOT use image filenames for tool routing or prompts - Image filenames and URLs are arbitrary identifiers and do NOT indicate what the user wants to do. - Never extract words from a filename or URL path to use as a prompt or to influence tool choice. - Only use the user's explicit words to determine what to select and which tool to use. Tool routing quick guide - Single person + body parts or clothing → image_select_subject with bodyParts parameter - Multiple people + body parts or clothing (e.g. "person on the left") → image_select_by_prompt with prompt identifying the person + bodyParts parameter - Non-human objects / scene elements → image_select_by_prompt without bodyParts — do not use this tool 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 …image_vectorize
ChatGPTmarkdown_to_pdf
ChatGPTmedia_enhance_speech
ChatGPTenhanceSpeechPoll to check status.media_summarize
ChatGPTsummarizePoll to check status.pdf_compress
ChatGPTpdf_create
ChatGPTpdf_export
ChatGPTpdf_ocr
ChatGPTpdf_operation_status
ChatGPTpdf_properties
ChatGPTpdf_to_image
ChatGPTpdf_to_markdown
ChatGPTprepare_indd_merge_template
ChatGPTquickCutPoll
ChatGPTreplace_image
ChatGPTresizeVideoPoll
ChatGPTsearch_design
ChatGPTsummarizePoll
ChatGPTvectorPollingHelper
ChatGPTvideoMetadataPoll
ChatGPTvideoRenderFramePoll
ChatGPTvideoRenderPoll
ChatGPTvideo_create_quick_cut
ChatGPTquickCutPoll to check status.video_metadata
ChatGPTvideoMetadataPoll to check status.video_render
ChatGPTvideoRenderPoll to check status.video_render_frame
ChatGPTvideoRenderFramePoll to check status.video_resize
ChatGPTresizeVideoPoll to check status.Capabilities
Example Prompts
Click any prompt to copy it.
Links
App Stats
83
Tools
3
Prompts
ChatGPT
Platforms
Category
Create VisualsWorks with
Similar Apps
Data refreshed daily






