MCP App Store
by KeenEthics

Overview

ImagineArt creates images, videos, music, logos, ads and social artwork from your brief. You can also remove backgrounds, enhance images, apply effects and edit existing assets. Choose an ImagineArt workspace, browse earlier creations, and save reusable products, presenters, fashion models, outfits and shot settings. The ad studio brings product, presenter, format and output settings into one interface. Includes 17 guided skills for creative workflows, from product imagery and fashion to social content, sound and editing. Canva, Photoshop, After Effects, Premiere and Blender workflows require access to the corresponding application or a supported integration; those applications are not included with ImagineArt. Requires an ImagineArt account with access to the selected workspace. Generations use your plan's credits. Only supply reference photos of yourself or adults who have given you permission; reference media is processed by third-party AI providers.

Tools

animate_fashion_image

ChatGPT
Turn a finished fashion photo into a short video clip, with the model and outfit kept the same. Use this when the user wants to animate a fashion photoshoot result, or presses Generate in the fashion video widget (pass exactly the arguments the widget hands you). Two modes: (1) template mode — pass a template_id from list_fashion_video_templates; the template drives the backgrounds, camera, transitions, and pacing. (2) advanced mode — pass a free-text prompt describing the motion, plus an optional camera_movement_id from list_camera_movements (e.g. Pan Right, Push In, Orbit Left). Supply exactly one of template_id or prompt. In both modes the model and wardrobe stay locked to the source still. It registers the still with ByteDance, a third-party video model provider (or reuses an existing reference), and runs a reference-to-video generation. Returns immediately with the queued video uuid and shows a results widget that polls fetch_status and updates in place, so the video appears there when it is ready. In a text-only context, poll fetch_status (id=<uuid>, sync:true) until status is "complete" or "error", then use the returned url. Requires an active subscription (paid organizations only). Arguments: • org_id (required) — the organization the user selected via select_organization. • fashion_project_id (required) — the numeric project id threaded from select_fashion_project; the clip is linked to it. • images — a JSON array STRING of reference stills (a JSON string, not a raw array), in order (first = Image1), e.g. '[{"asset_id":"…","bytedance_id":"…"}]'. asset_id (the still's asset uuid, from list_fashion_generations, or the last path segment of any asset.imagine.art/processed/<uuid> URL already in the conversation (from an upload or another widget) — that uuid IS the asset id) is required per entry; this tool resolves the image url from it, so asset_id carries a uuid rather than a url. bytedance_id is the still's seedance reference when it already has one (from list_fashion_generations or upload_asset_bytedance); omit it and this tool registers the still with bytedance itself. A bytedance_id comes from those tools, and a still that already has one is not re-uploaded through upload_asset_bytedance: a re-upload is rejected upstream. • videos (optional) — the same JSON array STRING shape as images, but for reference VIDEOS (in order, first = Video1). Use this for any reference asset that is a video, NOT images: a video's asset_id put in the images arg is rejected upstream ("not an image"). Same asset_id rule (uuid from a list, or the last path segment of an asset.imagine.art/processed/<uuid> URL) and same optional bytedance_id. At least one reference across images + videos is required; each kind keeps its own 1-based order. • template_id (template mode) — the template to apply, from list_fashion_video_templates. • prompt (advanced mode) — free text describing the desired motion. May be combined with template_id (template drives the shoot, the prompt refines it). • camera_movement_id (optional) — a movement from list_camera_movements to steer the camera; pairs with a prompt. • aspect_ratio (optional) — e.g. 16:9, 9:16, 1:1, 4:3, 3:4, 21:9. Defaults to 3:4. • duration (optional) — clip length in seconds (e.g. 4, 5, 10, 15). Defaults to 15. • resolution (optional) — e.g. 480p, 720p, 1080p. Defaults to 720p. • count (optional) — how many clips. Defaults to 1. • folder_id (optional) — a folder id from select_folder to place the result in. uuid, org_id, asset_id, template_id, camera_movement_id, bytedance_id and fashion_project_id are internal identifiers.

apply_image_effect

ChatGPT
Used internally by the ImagineArt widgets: apply a chosen image effect (a grain / film-stock or color-grade preset from list_image_effects) to an existing generation. It runs a two-step workflow — analyze the source image with the preset to engineer a finishing prompt, then image-to-image generate one variant that re-renders the source with the effect while preserving its subject, wardrobe, pose, framing, and background. It recovers the source asset's framing, resolution, and (for fashion assets) project + composition and preserves them. Returns immediately with the queued variant uuid; where a widget is rendered it polls fetch_status and updates in place. In a text-only context, poll fetch_status (id=<uuid>, sync:true) until status is "complete" or "error", then use the returned url. Requires an active subscription (paid organizations only). Arguments: • effect_id (required) — the id of the effect to apply, from list_image_effects. • asset_id (required) — the uuid of the existing generation to apply the effect to (an ImagineArt asset the user selected or that a prior tool produced). • org_id (required) — the organization the user selected via select_organization. • folder_id (optional) — a folder id from select_folder to place the result in; omit to keep the source asset's folder.

composite_shoot

ChatGPT
Composite two or more source images into a single reconciled frame — e.g. place the same model across shots into one scene, or merge separate product/garment stills into one composition. Runs image-to-image on nano-banana-pro with the reference-aware reconciler so the people, outfits, and setting stay consistent. Returns immediately with the queued asset and a widget that polls fetch_status itself. Requires an active subscription (paid organizations only). Arguments: • org_id (required) — the organization the user selected via select_organization. • image_urls (required) — two or more source image urls to composite. Pass urls the user selected (prior generations) or obtained via user_upload. • camera_angle_id (optional) — a camera angle from list_camera_angles (e.g. Close-Up, FPV Drone Shot) to frame the composite; its preset instruction block drives the composition. Omit to just combine the inputs into one cohesive frame. • background_select_id (optional) — a scene from select_fashion_background (which needs org_id). When the user wants the composite set in a specific scene, call select_fashion_background, then thread the picked select_id here — the scene image is added as a reference. Omit to keep the inputs' own setting. • aspect_ratio (optional) — defaults to the model default. • resolution (optional) — e.g. "1K", "2K", "4K". • count (optional) — how many composites. Defaults to 1. • fashion_project_id (optional) — link the result to a fashion project. • folder_id (optional) — a folder id from select_folder to place the result in. LIKENESS AND CONSENT: only use photographs of the user themselves or of someone who has given the user permission to create AI imagery of them. Do not proceed with a photograph of any other person, and never with a photograph of a minor. If the user has not made that permission clear, ask them to confirm it before calling this tool. Reference photographs are processed by third-party AI model providers. Do not ask for, accept or pass on identity documents, health or medical images, financial or payment card images, or any government identifier.

create_ad

ChatGPT
Use this when the user asks to create an ad of ANY kind: "create an ad", "product ad", "UGC ad", "video ad", "hyper-motion ad", "make an ad for <product>". It opens the ad studio, ONE widget in which the user configures the entire ad: product, presenter, format, hook, setting, project, plus resolution, aspect ratio, duration and any free-text direction. After calling it, STOP and wait. Do not call select_product, select_avatar, select_format, select_hook, select_setting or select_market_project; do not ask the user which product, presenter, format, hook, setting or project they want; do not ask them to upload, paste or describe a photo. The widget collects all of that itself and can create new products, avatars and projects on its own back-channels. When the user presses Generate, every chosen id arrives together. Call generate_ad once with exactly those ids and nothing else. Ids are internal identifiers; never display or echo one. Pass org_id only when you already have one for this chat, and folder_id when the user has already chosen a folder. Pass any choices the user already made in this chat (format, hook, setting, product, presenter, aspect ratio, resolution, duration, direction) so the studio opens with them selected; omit the rest. If the account has several organizations and you pass none, this returns instructions to call select_organization and then retry. In a client that renders no widgets this returns the older step-by-step ad workflow instead.

create_avatar

ChatGPT
Used internally by the ImagineArt picker widgets. Saves a market avatar from already-uploaded photos; the avatar picker widget drives it. LIKENESS AND CONSENT: only use photographs of the user themselves or of someone who has given the user permission to create AI imagery of them. Do not proceed with a photograph of any other person, and never with a photograph of a minor. If the user has not made that permission clear, ask them to confirm it before calling this tool. Reference photographs are processed by third-party AI model providers. Do not ask for, accept or pass on identity documents, health or medical images, financial or payment card images, or any government identifier.

create_fashion

ChatGPT
Use this when the user asks for a fashion photoshoot of ANY kind: "fashion photoshoot", "fashion shoot", "lookbook", "editorial shoot", "model wearing <garment>", "put this outfit on a model". For a fashion video or clip, call fashion_video_shoot instead. When the user just asks for the fashion studio without saying photos or video, call this without asking; it lets them switch to video. It opens the fashion studio, ONE widget in which the user sets up the entire shoot: shoot type, project, model, outfit, background, pose, plus aspect ratio, image count and any free-text direction. After calling it, STOP and wait. Do not call select_fashion_project, select_fashion_models, select_fashion_wardrobe, select_fashion_background or select_fashion_pose; do not ask the user about any of those; do not ask them to upload, paste or describe a photo. The widget collects all of that itself and can create new models, outfits and projects on its own back-channels. When the user presses Generate, every chosen id arrives together. Call generate_fashion_photoshoot once with exactly those ids; it shows the results itself. Ids are internal identifiers; never display or echo one. Call it with no arguments first. Pass org_id only when you already have one for this chat. If the account has several organizations and you pass none, this returns instructions to call select_organization and then retry. Not for a fashion VIDEO ("fashion video", "animate this look"): call fashion_video_shoot for that. In a client that renders no widgets this returns the step-by-step fashion workflow instead.

create_fashion_model

ChatGPT
Create a fashion model for the organization from one or more reference photos. Returns the created model immediately, then generates its character sheet (a 2x2 grid of the same person from four angles, used to keep later fashion generations identity-consistent) in the background and saves it onto the model when ready, with no polling required. Requires org_id (from select_organization), a name, a gender, and at least one image_url reference photo; description, age, and size are optional but size improves the sheet. visibility is optional and defaults to "organization" (shared with the rest of the org); pass "private" to keep the model to the creator. LIKENESS AND CONSENT: only use photographs of the user themselves or of someone who has given the user permission to create AI imagery of them. Do not proceed with a photograph of any other person, and never with a photograph of a minor. If the user has not made that permission clear, ask them to confirm it before calling this tool. Reference photographs are processed by third-party AI model providers. Do not ask for, accept or pass on identity documents, health or medical images, financial or payment card images, or any government identifier.

create_fashion_outfit

ChatGPT
Create a fashion outfit (a top or bottom) for the organization. Requires org_id, a title, and a type; frontal/rear/fabric image_urls, metadata, and visibility are optional. visibility defaults to "organization" (shared with the rest of the org); pass "private" to keep the outfit to the creator.

create_fashion_project

ChatGPT
Used internally by the ImagineArt widgets: create a new fashion project in the selected folder and return its fashion_project_id. The select_fashion_project widget drives this via its inline "Create new project" field. A direct call applies where no widget is rendered and the user asked for a new project; it takes a name plus org_id and directory_id, from select_organization and select_folder.

create_fashion_shot_setting

ChatGPT
Create a fashion shot setting — a scene (type "background") or pose (type "pose") — for the organization. Requires org_id, a title, and a type; category, image_urls, metadata, and visibility are optional. visibility defaults to "organization" (shared with the rest of the org); pass "private" to keep the shot setting to the creator. For type "background" with an image, the server auto-derives a lighting prompt from the image and stores it in metadata.prompt (unless metadata already has a prompt), so the subject is lit as if inside the scene.

create_fashion_utility

ChatGPT
Save a new footwear item or accessory (shoes, bag, jewelry, hat, belt; called a "utility") to the organization's fashion wardrobe, for models to wear in photoshoots. Requires org_id, a title, and a type; description, image_urls, metadata, and visibility are optional. visibility defaults to "organization" (shared with the rest of the org); pass "private" to keep the utility to the creator.

create_market_project

ChatGPT
Used internally by the ImagineArt widgets: create a new marketing project (campaign container) in the selected folder and return its market_project_id. The select_market_project widget drives this via its inline "Create new project" field. A direct call applies where no widget is rendered and the user asked for a new project; it takes a name plus org_id and folder_id, from select_organization and select_folder.

create_product

ChatGPT
Used internally by the ImagineArt picker widgets. Creates a market product from a scraped URL or uploaded photos; the product picker widget drives it.

delete_avatar

ChatGPT
Delete a saved market avatar. Provide avatar_id (from a prior select_avatar) plus org_id. The ad-studio widget drives this; the model may also call it when the user explicitly asks to delete an avatar. Returns {id}.

delete_fashion_asset

ChatGPT
Delete a generated asset from a fashion project. Requires org_id, the project_uuid, and the asset_id.

delete_fashion_model

ChatGPT
Delete an organization's saved fashion model. Requires org_id and the model id.

delete_fashion_outfit

ChatGPT
Delete an organization's saved fashion outfit. Requires org_id and the outfit id.

delete_fashion_project

ChatGPT
Delete a fashion project. Requires org_id and the project uuid.

delete_fashion_shot_setting

ChatGPT
Delete an organization's saved fashion shot setting. Requires org_id and the shot setting id.

delete_fashion_utility

ChatGPT
Delete a footwear item or accessory (a "utility") saved in the organization's fashion wardrobe. Requires org_id and the utility id.

delete_product

ChatGPT
Delete a saved market product. Provide product_id (from a prior select_product) plus org_id. The ad-studio widget drives this; the model may also call it when the user explicitly asks to delete a product. Returns {id}.

edit_photo

ChatGPT
Used internally by the ImagineArt widgets: apply a photo edit to an existing generation. It runs a two-step workflow — analyze the source image to engineer edit prompt(s), then image-to-image generate one variant per prompt (each effect returns a 4-shot set). It recovers the source asset's framing, resolution, and (for fashion assets) project + composition and preserves them on the edit. Returns immediately with the queued variant uuids; where a widget is rendered it polls fetch_status and updates in place. In a text-only context, poll fetch_status (id=<uuid>, sync:true) on each uuid until status is "complete" or "error", then use the returned urls. Requires an active subscription (paid organizations only). Arguments: • effect (required) — which edit to apply; each produces a 4-shot set anchored on the source. One of: Editorial (narrative/creative coverage of the same look): editorial_pose_variation — different poses, gestures, and expressions; look, location, and mood held. editorial_angle_coverage — cinematic camera setups (low, overhead, profile, dutch, over-the-shoulder). editorial_mood_lighting_shift — same outfit and location under different lighting/atmosphere. editorial_location_jump — same look carried across different environments; wardrobe and model held. editorial_time_season_shift — same scene progressed through times of day or seasons. editorial_story_progression — sequential narrative beats within the same scene (a film-still arc). Catalog (e-commerce product coverage): catalog_standard_angle_coverage — the canonical front/back/3-4-left/3-4-right/side set. catalog_pose_variation — clean catalog poses keeping the garment fully visible and silhouette readable. catalog_colorway_swap — recolor the hero garment across color variants at full styling parity. catalog_detail_feature — close-up inserts (collar, cuffs, hem, hardware, stitching, labels, trims). catalog_styling_combinations — the same hero piece restyled with different complementary garments. catalog_model_fit_coverage — the same garment on a range of body types, heights, or sizes. • asset_id (required) — the uuid of the existing generation to edit (an ImagineArt asset the user selected or that a prior tool produced). • org_id (required) — the organization the user selected via select_organization.

enhance_image

ChatGPT
Enhance an image using the ImagineArt API. Pass org_id (required) — the organization id the user selected via select_organization. Optionally pass folder_id (a folder the user picked via select_folder) to create the result inside that folder; omit it to use the workspace root. Pass image_url — if the user selected an existing generation, pass its url; for a non-ImagineArt asset, first call user_upload and pass the resulting url. Returns immediately with a uuid and a widget that mounts in the queued state; the widget polls fetch_status and updates in place. The widget handles the polling.

extract_garment

ChatGPT
Used internally by the ImagineArt widgets: extract a single garment (or its motif) from a reference photo and render it as a clean, isolated product asset suitable for virtual try-on — a ghost-mannequin garment view on a white background, or a flat isolated motif. Renders NO widget. Runs image-to-image and returns immediately with a uuid; poll fetch_status yourself (id=<uuid>, sync:true) until status is "complete" or "error", then use the returned image url as the extracted asset. Requires an active subscription (paid organizations only). Arguments: • org_id (required) — the organization the user selected via select_organization. • image_url (required) — the reference photo. If the user selected an existing generation, pass its url; for a non-ImagineArt asset (a user attachment), user_upload returns a url to pass here. • garment_type (required) — which view to extract. One of: top_front / top_back — the upper-body garment (shirt/blouse/top), front or back. bottom_front / bottom_back — the lower-body garment (pants/skirt/shorts), front or back. dress_front / dress_back — a one-piece / full-length garment (dress/kurta/jumpsuit), front or back. motif — only the print/graphic/logo/embroidery, isolated as flat artwork. • folder_id (optional) — a folder id from select_folder to place the result in; omit for the workspace root.

fashion_video_shoot

ChatGPT
Use this when the user asks for a fashion video: "fashion video", "animate this look", "turn the shoot into a clip". It opens the fashion video shoot, ONE widget in which the user picks the shoot type, the project, the reference media, an effect or free-text motion, an optional camera movement, and the output options. Call it with no arguments first. Pass org_id when you already have one for this chat, and fashion_project_id / shoot_type only when the user already chose them. Do not call select_fashion_project or ask for the shoot type first: the widget asks for both. If the account has several organizations and you pass none, this returns instructions to call select_organization and then retry. After calling it, STOP and wait. When the user presses Generate video, the widget hands you the exact arguments: call animate_fashion_image with them, which shows the video itself. Ids are internal identifiers; never display one.

fetch_music_status

ChatGPT
Status fetcher for queued music generations. The widget polls this silently via the callServerTool backchannel during the queued → generating → complete transition. In text-only contexts, pass sync:true to wait server-side for completion (bounded ~45s). Without sync (default), it's a single point-in-time check.

fetch_product_status

ChatGPT
Used internally by the ImagineArt picker widgets. Polls a from-URL product scrape until it is finished or failed.

fetch_status

ChatGPT
Status fetcher for queued image or video generations (the asset type is derived from the generation, not fixed). The widget polls this silently via the callServerTool backchannel during the queued → generating → complete transition. In text-only contexts, pass sync:true to wait server-side for completion (bounded ~45s). Without sync (default), it's a single point-in-time check.

generate_3d_logo_animation

ChatGPT
Turn a flat 2D logo into a premium 3D version and animate it into a short cinematic logo-reveal clip — smooth rotation, dynamic studio lighting sweeps, reflections gliding over the material, and motion-graphics polish, building to a clean hero hold. This runs the whole 3d-logo-animation recipe in ONE call: internally it first converts the supplied 2D logo into a high-quality 3D version (realistic reflections, studio lighting), waits for that to finish, then animates the 3D logo into the reveal. Use this when the user asks for a 3D logo, an animated logo, a logo reveal / intro, or wants to turn a flat logo into a cinematic motion graphic. Phase A renders on nano-banana-2 (image-to-image edit) and phase B on veo-3.1-fast (image-to-video). Because it renders the 3D logo first, this tool BLOCKS for a short while (typically under a minute) before it returns the queued video. That wait is expected and the call is still running. It then returns a uuid and a widget that mounts in the queued state — the widget itself polls fetch_status and updates in place (queued → generating → complete). The widget handles the polling. Arguments: • org_id (required) — the organization id the user selected via select_organization. The same org_id applies for the whole chat. • folder_id (optional) — a folder id the user picked via select_folder, to create the video inside that folder. Omit to create it at the workspace root. Reuse the same folder_id for the whole chat. • logo_image_url (required) — a URL of the flat 2D logo to convert and animate. Pass a URL the user supplied directly, or one obtained by uploading a user-attached logo via user_upload first. • material_style (optional) — the 3D material appearance (e.g. "gold", "matte plastic", "holographic", "brushed metal"). Defaults to "glossy glass and chrome". • model (optional) — the phase-B video model. One of: "veo-3.1-fast" (default), "veo-3.1", "kling-2.6-pro", "ltx-2.3", "seedance-2.5", "seedance-2.0-fast", "minimax-h3-max", "happy_horse", "seedance-2.0", "wan-2.6", "seedance-1.5-pro", "seedance-pro-fast", "kling-o3", "kling-3.0-pro", "pixverse-v6", "wan-2.2". Pass the model name exactly as written. Omit to use the default. • aspect_ratio (optional) — the animation framing. Defaults to "16:9" (the skill's cinematic option). Each model has its own allow-list (same lists as generate_video); a value not in the chosen model's list silently falls back to a valid ratio, and the request still succeeds. (The intermediate 3D logo still always renders square.) • duration (optional) — clip length as a string (seconds). Defaults to "6". Each model has its own allow-list (same as generate_video); a value not in the chosen model's list silently falls back to a valid duration. • resolution (optional) — the output resolution. One of: "720p", "1080p" (default), "4k". Pass when the user asks for a specific resolution; omit to use 1080p. An unrecognised value falls back to "1080p".

generate_ad

ChatGPT
Run the ad-studio video generation once the selections are made. Args: org_id, market_project_id (from select_market_project/create_market_project), format_id (required), product_id and avatar_id (from select_product/select_avatar), optional setting_id/hook_id, resolution (REQUIRED — from list_resolutions), aspect_ratio (REQUIRED — from list_aspect_ratios), duration (REQUIRED seconds — from list_durations), optional prompt (free-text ad brief — may be empty; the format supplies the base), optional count (default 1), folder_id?. resolution, aspect_ratio, and duration are all required: call list_resolutions, list_aspect_ratios, and list_durations and have the user confirm each before generating, so credits aren't spent on unintended output. format_id is the numeric id from list_formats or a select_format click, rather than the format name. The user saying "UGC" gives you the name "UGC", whose format_id is a number (e.g. 1); pass the number. Passing "UGC" as format_id is wrong and will fail. setting_id/hook_id are likewise numeric ids, not names. The server resolves the ids into the prompt + reference images. If format_id is missing or unrecognized this returns an error; call list_formats to get the right number (or select_format to let the user pick), then retry. Renders the asset-generation widget (queued → progress).

generate_avatar

ChatGPT
Used internally by the ImagineArt picker widgets. Generates one candidate avatar image from a prompt for the avatar picker widget.

generate_cooking_video

ChatGPT
Turn a single photo of a person into a polished, cinematic cooking tutorial video. This runs the whole storyboard-to-cooking-video recipe in ONE call: internally it first renders a composite production reference board (a character reference preserving the person's face, a kitchen location reference, and a 9-panel step-by-step action sequence for the dish), waits for that board to finish, then animates it into a single continuous cinematic clip with soft kitchen ambience — following the steps beat by beat from raw ingredients to a final plated close-up. Use this when the user wants to turn a person's photo into a cooking / recipe tutorial video. Stage 1 renders on gpt-image-2 and stage 2 on seedance-2.0-fast (image-to-video). Because it renders the reference board first, this tool BLOCKS for a short while (typically under a minute) before it returns the queued video. That wait is expected and the call is still running. It then returns a uuid and a widget that mounts in the queued state — the widget itself polls fetch_status and updates in place (queued → generating → complete). The widget handles the polling. Arguments: • org_id (required) — the organization id the user selected via select_organization. The same org_id applies for the whole chat. • folder_id (optional) — a folder id the user picked via select_folder, to create the video inside that folder. Omit to create it at the workspace root. Reuse the same folder_id for the whole chat. • person_image_url (required) — a reference image URL of the person who will star in the tutorial. If the user attaches an image, first call user_upload with it and pass the returned url here; if the user gives an image URL directly, pass it as-is. • dish (optional) — the food being made (e.g. "fresh pasta", "chocolate soufflé", "sushi rolls"). Defaults to "fresh pasta". • kitchen_style (optional) — the kitchen aesthetic (e.g. "modern minimalist", "cozy farmhouse"). Defaults to "Italian rustic-modern". • outfit (optional) — what the person wears (e.g. "chef's whites", "casual sweater and apron"). Defaults to "a clean apron over smart-casual clothing, sleeves rolled up". • duration_seconds (optional) — clip length in seconds. Defaults to "15". An unsupported value for the model silently falls back to a valid duration and the request still succeeds. • aspect_ratio (optional) — pass when the user specifies one. Defaults to "16:9"; pass "9:16" for vertical social-media reels. An unsupported value falls back to a valid ratio. • resolution (optional) — the output resolution. One of: "480p", "720p" (default), "1080p". Pass when the user asks for a specific resolution; omit to use 720p. An unrecognised value falls back to "720p". LIKENESS AND CONSENT: only use photographs of the user themselves or of someone who has given the user permission to create AI imagery of them. Do not proceed with a photograph of any other person, and never with a photograph of a minor. If the user has not made that permission clear, ask them to confirm it before calling this tool. Reference photographs are processed by third-party AI model providers. Do not ask for, accept or pass on identity documents, health or medical images, financial or payment card images, or any government identifier.

generate_drone_video

ChatGPT
Generate a cinematic aerial / drone-style video using the ImagineArt API — sweeping bird's-eye views, orbit shots, flyovers, and top-down footage of landscapes, architecture, and events. Use this when the user asks for drone, aerial, bird's-eye, flyover, overhead, or top-down footage. It expands a subject + shot type + style into an aerial-tuned prompt and renders it on veo-3.1 by default unless another supported model is selected. Returns immediately with a uuid and a widget that mounts in the queued state — the widget itself polls fetch_status and updates in place (queued → generating → complete). Arguments: • org_id (required) — the organization id the user selected via select_organization. The same org_id applies for the whole chat. • folder_id (optional) — a folder id the user picked via select_folder, to create the video inside that folder. Omit to create it at the workspace root. Reuse the same folder_id for the whole chat. • location_or_subject (required) — what to shoot from above (e.g. "a mountain valley at sunrise", "a luxury villa by the ocean", "a crowded city intersection"). • shot_type (optional) — the camera movement. One of: "reveal" (default — ascends and reveals the subject), "orbit" (smooth 360° circular arc around the subject), "flyover" (low, fast forward tracking with depth of field), "top-down" (static overhead bird's-eye). An unrecognised value falls back to "reveal". • style (optional) — the visual atmosphere (e.g. "dramatic storm clouds", "misty morning", "blue hour city lights"). Defaults to "golden hour, cinematic, 4K, ultra-detailed". • reference_image (optional) — an aerial/location reference image to run image-to-video instead of text-to-video. If the user attaches an image, first call user_upload with it and pass the returned url here; if the user gives an image URL directly, pass it as-is. Omit for plain text-to-video. • model (optional) — one of: "veo-3.1" (default), "veo-3.1-fast", "ltx-2.3", "seedance-2.5", "seedance-2.0-fast", "minimax-h3-max", "happy_horse", "seedance-2.0", "wan-2.6", "seedance-1.5-pro", "seedance-pro-fast", "kling-2.6-pro", "kling-o3", "kling-3.0-pro", "pixverse-v6", "wan-2.2". Pass the model name exactly as written. Omit to use the aerial-tuned default. • aspect_ratio (optional) — pass when the user specifies one. Defaults to "16:9". Per-model allow-lists: - veo-3.1: 16:9, 9:16 - veo-3.1-fast: 16:9, 9:16 - ltx-2.3: 16:9, 9:16 - seedance-2.5: 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive (with a reference_image the ratio is always "adaptive") - seedance-2.0-fast: 21:9, 16:9, 9:16, 3:4, 4:3, 1:1, auto - minimax-h3-max: 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 - happy_horse: 16:9, 9:16, 1:1, 4:3, 3:4 - seedance-2.0: 21:9, 16:9, 9:16, 3:4, 4:3, 1:1, auto - wan-2.6: 16:9, 9:16, 1:1, 4:3, 3:4 - seedance-1.5-pro: 21:9, 16:9, 9:16, 3:4, 4:3, 1:1 - seedance-pro-fast: 16:9, 4:3, 1:1, 9:16, 21:9, 3:4 - kling-2.6-pro: 16:9, 9:16, 1:1 - kling-o3: 16:9, 9:16, 1:1 - kling-3.0-pro: 16:9, 9:16, 1:1 - pixverse-v6: 16:9, 9:16, 4:3, 3:4, 1:1, 2:3, 3:2, 21:9 - wan-2.2: (none — always uses 16:9) An aspect_ratio that isn't in the chosen model's list silently falls back to 16:9 (or the model's first listed ratio if it doesn't allow 16:9); the request will still succeed. • duration (optional) — pass as a string (seconds, or "auto" where supported). Defaults to "6". Per-model allow-lists: - veo-3.1: 4, 6, 8 - veo-3.1-fast: 4, 6, 8 - ltx-2.3: 6, 8, 10 - seedance-2.5: 4 through 30 (any whole second) - seedance-2.0-fast: auto, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - minimax-h3-max: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - happy_horse: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - seedance-2.0: auto, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - wan-2.6: 5, 10, 15 - seedance-1.5-pro: 4, 5, 6, 7, 8, 9, 10, 11, 12 - seedance-pro-fast: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 - kling-2.6-pro: 5, 10 - kling-o3: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - kling-3.0-pro: 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - pixverse-v6: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - wan-2.2: (none — always uses its default…

generate_fashion_model_image

ChatGPT
Used internally by the ImagineArt picker widgets. Generates candidate fashion-model images from a text description for the model picker widget.

generate_fashion_photoshoot

ChatGPT
Fire the final Fashion Studio shoot: compose the selected model, wardrobe, scene, and pose into finished photos. It queues the generation and shows the results widget, which updates in place. The model and wardrobe images are registered with ByteDance, a third-party model provider, for the generation. Requires an active subscription (paid organizations only). Arguments: • org_id (required) — the organization the user selected via select_organization. • fashion_project_id (required) — the numeric project id threaded from select_fashion_project; the shoot is linked to it. • prompt (required) — the user's shoot description. The selected background's lighting is appended automatically. • model_select_id (required) — the select_id from select_fashion_model. • outfit_select_ids (optional) — comma-separated select_ids from select_fashion_wardrobe, e.g. "beige-shirt-2e,faded-jeans-39" (a top and/or a bottom, or a single dress). Pass each select_id exactly as reported. Pass one string, not an array. Omit for no outfit. • utility_select_ids (optional) — comma-separated select_ids for footwear / accessories from select_fashion_wardrobe, e.g. "white-sneakers-2d,gold-hoops-71". Pass one string, not an array. • pose_select_id (optional) — the select_id from select_fashion_pose. • background_select_id (optional) — the select_id from select_fashion_background. Omit to shoot at the plain root. • shoot_type (optional) — "editorial" or "catalogue". • aspect_ratio (required) — one of 16:9, 9:16, 1:1, 4:3, 3:4. Ask the user which they want (or call list_aspect_ratios) before generating; the shoot fails if it is empty. • count (optional) — how many images, as a numeric string, e.g. "1". Defaults to the standard batch. • folder_id (optional) — a folder id from select_folder to place the assets in. select_id, fashion_project_id and folder_id are internal identifiers, used as arguments.

generate_giant_product_showcase

ChatGPT
Generate a dramatic "giant product" advertising image — a regular product enlarged to a massive, building-sized scale, towering next to a person for scale comparison, in a polished commercial studio setting. Use this when the user wants a giant/oversized product visual, a surreal scale-comparison ad, or a "product as a building" hero shot. It takes the product photo and renders the giant-scale scene (image-to-image) on the nano-banana-pro model. Returns immediately with a uuid and a widget that mounts in the queued state — the widget itself polls fetch_status and updates in place (queued → generating → complete). Arguments: • org_id (required) — the organization id the user selected via select_organization. The same org_id applies for the whole chat. • folder_id (optional) — a folder id the user picked via select_folder, to create the image inside that folder. Omit to create it at the workspace root. Reuse the same folder_id for the whole chat. • product_image (required) — the product photo to enlarge. If the user attaches an image, first call user_upload with it and pass the returned url here; if the user gives an image URL directly, pass it as-is. This is essential — the giant scene is rendered from this image. • person_description (optional) — the person standing beside the giant product for scale, e.g. "a woman in a red dress", "a child looking up in awe". Defaults to "a stylishly dressed man".

generate_image

ChatGPT
Generate an image using the ImagineArt API. Returns immediately with a uuid and a widget that mounts in the queued state — the widget itself polls fetch_status and updates in place as the generation progresses (queued → generating → complete). Arguments: • org_id (required) — the organization id the user selected via select_organization. The same org_id applies for the whole chat. • folder_id (optional) — a folder id the user picked via select_folder, to create the image inside that folder. Omit to create it at the workspace root. Reuse the same folder_id for the whole chat. • prompt (required) — the text prompt. • image_url (optional) — a reference image to run image-to-image (edit / variation) mode instead of text-to-image. If the user attaches an image, first call user_upload with it and pass the returned url here; if the user gives an image URL directly, pass it as-is. Omit for plain text-to-image. When set, the request automatically switches to the img2img variation (models that don't support img2img silently fall back to text-to-image). • model (optional) — one of: "nano-banana-pro" (default; free accounts default to "seedream-v5-lite" and may only use it, "imagine-art-2.0" or "imagine-art-1.5"), "imagine-art-2.0", "nano-banana-2", "nano-banana", "nano-banana-lite", "gpt-image-2", "gpt-image-2.5-flare", "gpt-image-2.5-sunburst", "imagine-art-1.5", "imagine-art-1.5-pro", "recraft-v4.1", "ideogram-v3", "ideogram-v4", "seedream-v4.5", "seedream-v5-lite", "seedream-v5-pro", "qwen-image-2.1", "xAI-grok-imagine". Pass the model name exactly as written. Omit unless the user asks for a specific model. • aspect_ratio (optional) — pass when the user specifies one. Defaults to "1:1". Per-model allow-lists: - nano-banana-pro: 21:9, 16:9, 3:2, 4:3, 5:4, 1:1, 4:5, 3:4, 2:3, 9:16 - imagine-art-2.0: 1:1, 9:16, 16:9, 4:3, 3:4, 2:3, 3:2, 21:9, 4:5, 5:4 - nano-banana-2: 21:9, 16:9, 3:2, 4:3, 5:4, 1:1, 4:5, 3:4, 2:3, 9:16 - nano-banana: 21:9, 16:9, 3:2, 4:3, 5:4, 1:1, 4:5, 3:4, 2:3, 9:16 - nano-banana-lite: 21:9, 16:9, 3:2, 4:3, 5:4, 1:1, 4:5, 3:4, 2:3, 9:16, 4:1, 1:4, 8:1, 1:8 - gpt-image-2: 1:1, 4:3, 3:4, 3:2, 16:9, 9:16, 21:9, 2:3 - gpt-image-2.5-flare: 1:1, 4:3, 3:4, 3:2, 16:9, 9:16, 21:9, 2:3, 4:5 - gpt-image-2.5-sunburst: 1:1, 4:3, 3:4, 3:2, 16:9, 9:16, 21:9, 2:3, 4:5 - imagine-art-1.5: 1:1, 9:16, 16:9, 4:3, 3:4, 1:3, 3:1, 2:3, 3:2 - imagine-art-1.5-pro: 1:1, 9:16, 16:9, 4:3, 3:4, 1:3, 3:1, 2:3, 3:2 - recraft-v4.1: 1:1, 4:3, 3:4, 16:9, 9:16 - ideogram-v3: 1:1, 4:3, 3:4, 16:9, 9:16 - ideogram-v4: 1:1, 4:3, 3:4, 16:9, 9:16 - seedream-v4.5: 1:1, 2:3, 3:2, 4:3, 3:4, 16:9, 9:16 - seedream-v5-lite: 1:1, 2:3, 3:2, 4:3, 3:4, 16:9, 9:16 - seedream-v5-pro: 1:1, 2:3, 3:2, 4:3, 3:4, 16:9, 9:16 - qwen-image-2.1: 1:1, 4:3, 3:4, 16:9, 9:16 - xAI-grok-imagine: 2:1, 20:9, 19.5:9, 16:9, 4:3, 3:2, 1:1, 2:3, 3:4, 9:16, 9:19.5, 9:20, 1:2 An aspect_ratio that isn't in the chosen model's list silently falls back to 1:1; the request will still succeed. • resolution (optional) — only some models support it; pass only when the user asks for one. Per-model allow-lists (first value is the default the model uses when omitted): - nano-banana-pro: 1K, 2K, 4K - nano-banana-2: 1K, 2K, 4K - gpt-image-2: 1K, 2K, 4K - gpt-image-2.5-flare: 2K, 1K, 4K - gpt-image-2.5-sunburst: 2K, 1K, 4K - seedream-v5-lite: 2K, 4K Other models ignore resolution entirely. A value not in the chosen model's list silently falls back to that model's default. • quality (optional) — per-model allow-lists (first value is the default when omitted): - gpt-image-2: low, medium, high - gpt-image-2.5-flare: auto, low, medium, high, xhigh, max - gpt-image-2.5-sunburst: auto, low, medium, high, xhigh, max Other models ignore quality. A value not in the model's list silently falls back to the model's default. • background (optional) — only gpt-image-2.5-flare and gpt-image-2.5-sunburst support it: "auto" (default when omitted), "transparent", "opaque". Pass "transparent" when the user asks for a transparent / cut-out / no-background image on one of these models. Other models ignore it. • mask_url (…

generate_instagram_post

ChatGPT
Generate a polished, Instagram-ready post using the ImagineArt API: a scroll-stopping hero image plus a caption and hashtags. Use this when the user asks you to CREATE, design or make an Instagram post, a social media post/visual, a feed or Reels image, or "content for Instagram". This tool only produces an image and caption for the user to post themselves. It does NOT publish, upload, schedule, cross-post or send anything to Instagram or any other social platform, and it has no access to the user's social accounts. If the user asks you to post, publish, share or schedule something for them, do NOT call this tool: tell them ImagineArt cannot publish to social platforms and never state or imply that a post was made. It expands a short brief (and optional brand style) into a prompt tuned for social-media photography that grabs attention within two seconds, and renders it on the nano-banana-pro model. Returns immediately with a uuid and a widget that mounts in the queued state — the widget itself polls fetch_status and updates in place (queued → generating → complete). This recipe has two phases. Phase A (the hero image) is produced by this tool and shown in the widget. Phase B (the caption + hashtags) is text output: this tool expects a text reply alongside the image — a 2–4 line caption (hook, brand message, call-to-action) based on the brief, followed by a separate block of 15–20 mixed-tier hashtags (broad, niche, and branded). The widget displays the image. Arguments: • org_id (required) — the organization id the user selected via select_organization. The same org_id applies for the whole chat. • folder_id (optional) — a folder id the user picked via select_folder, to create the post inside that folder. Omit to create it at the workspace root. Reuse the same folder_id for the whole chat. • brief (required) — what the post is about or promotes, e.g. "launch of our summer cold-brew coffee line" or "behind-the-scenes of our pottery studio". • brand_style (optional) — the post's visual personality, e.g. "earthy, minimal, warm film tones". Defaults to "modern, vibrant, clean typography, lifestyle photography aesthetic". • format (optional) — the post aspect ratio: "1:1" (square feed), "4:5" (portrait) or "9:16" (Reels). Defaults to "4:5". Any other value falls back to the default. Boundary: this makes ONE social hero image + caption. create_fashion covers requests involving fashion: a garment on a model, a "fashion post", a lookbook, an editorial shoot, or "put this outfit on a model".

generate_interior_design

ChatGPT
Generate a professional interior design visualization using the ImagineArt API — redesign an existing room from a photo, generate a brand-new room concept, or visualize a furniture style in a space. Use this when the user asks for interior design, a room redesign, home decor, an architecture/room visualization, a furniture layout, or house design. It expands a room type (and optional style / color palette / specific elements) into a prompt tuned for high-end, magazine-quality renders and renders it on the nano-banana-pro model by default. Returns immediately with a uuid and a widget that mounts in the queued state — the widget itself polls fetch_status and updates in place (queued → generating → complete). The widget handles the polling. Arguments: • org_id (required) — the organization id the user selected via select_organization. The same org_id applies for the whole chat. • folder_id (optional) — a folder id the user picked via select_folder, to create the render inside that folder. Omit to create it at the workspace root. Reuse the same folder_id for the whole chat. • room_type (required) — the type of room (e.g. "modern living room", "scandinavian kitchen", "luxury master bedroom", "minimalist home office"). • design_style (optional) — the aesthetic direction (e.g. "japandi", "industrial loft", "boho chic", "mid-century modern", "art deco"). Defaults to "modern minimalist". • color_palette (optional) — preferred colors and materials (e.g. "sage green and brass", "monochrome black and white", "warm terracotta"). Defaults to "neutral tones with wood accents". • specific_elements (optional) — particular items to include (e.g. "large floor-to-ceiling windows", "velvet green sofa", "statement pendant light"). • room_photo (optional) — a photo of an existing room to redesign or use as a layout reference. When supplied, the render keeps the room's structural layout and window placement and transforms only the furniture, decor, and finishes (image-to-image). If the user attaches an image, first call user_upload with it and pass the returned url here; if the user gives an image URL directly, pass it as-is. Omit for a brand-new room concept (text-to-image). • model (optional) — one of: "nano-banana-pro" (default), "imagine-art-2.0", "nano-banana-2", "nano-banana", "nano-banana-lite", "gpt-image-2", "gpt-image-2.5-flare", "gpt-image-2.5-sunburst", "imagine-art-1.5", "imagine-art-1.5-pro", "recraft-v4.1", "ideogram-v3", "ideogram-v4", "seedream-v4.5", "seedream-v5-lite", "seedream-v5-pro", "qwen-image-2.1", "xAI-grok-imagine". Pass the model name exactly as written. Omit unless the user asks for a specific model — the default handles both photo redesigns and new concepts. • aspect_ratio (optional) — defaults to "16:9" (standard for room views). nano-banana-pro allows 21:9, 16:9, 3:2, 4:3, 5:4, 1:1, 4:5, 3:4, 2:3, 9:16; a value the chosen model doesn't allow silently falls back to 16:9 (or the model's first listed ratio) and the request still succeeds.

generate_jewelry_video

ChatGPT
Generate a luxury jewelry advertisement video — a premium, high-end commercial clip with detailed macro animation: a slow, elegant camera rotation around the piece followed by an extreme close-up that glides over the diamond facets under a focused light. This runs the whole jewelry-product-video recipe in ONE call: internally it first renders a luxury product still of the jewelry (100mm macro lens, warm key light, shallow depth of field) from a text description, waits for that still to finish, then animates it into the cinematic commercial. Use this when the user asks for a jewelry video, a luxury / diamond / ring ad, a high-end jewelry showcase, or wants to turn a jewelry description into a commercial. Phase A renders on nano-banana-2 (text-to-image) and phase B on kling-2.6-pro (image-to-video). Because it renders the still first, this tool BLOCKS for a short while (typically under a minute) before it returns the queued video. That wait is expected and the call is still running. It then returns a uuid and a widget that mounts in the queued state — the widget itself polls fetch_status and updates in place (queued → generating → complete). The widget handles the polling. Arguments: • org_id (required) — the organization id the user selected via select_organization. The same org_id applies for the whole chat. • folder_id (optional) — a folder id the user picked via select_folder, to create the video inside that folder. Omit to create it at the workspace root. Reuse the same folder_id for the whole chat. • jewelry_description (optional) — the jewelry item to feature (e.g. "an emerald-cut diamond pendant on a white gold chain", "a vintage sapphire halo ring"). Defaults to "a delicate rose gold ring with a lotus design and a sparkling diamond". • surface_description (optional) — the surface the jewelry rests on (e.g. "a black marble slab", "folded ivory silk"). Defaults to "a beige surface". • model (optional) — the phase-B video model. One of: "kling-2.6-pro" (default), "veo-3.1", "veo-3.1-fast", "ltx-2.3", "seedance-2.5", "seedance-2.0-fast", "minimax-h3-max", "happy_horse", "seedance-2.0", "wan-2.6", "seedance-1.5-pro", "seedance-pro-fast", "kling-o3", "kling-3.0-pro", "pixverse-v6", "wan-2.2". Pass the model name exactly as written. Omit to use the default. • aspect_ratio (optional) — pass when the user specifies one. Defaults to "1:1" (the skill's square macro framing). Each model has its own allow-list (same lists as generate_video); a value not in the chosen model's list silently falls back to a valid ratio, and the request still succeeds. • duration (optional) — clip length as a string (seconds). Defaults to "5" (the skill's combined macro rotation + facet glide). Each model has its own allow-list (same as generate_video); a value not in the chosen model's list silently falls back to a valid duration. • resolution (optional) — the output resolution. One of: "720p", "1080p" (default), "4k". Pass when the user asks for a specific resolution; omit to use 1080p. An unrecognised value falls back to "1080p".

generate_music

ChatGPT
Generate music using the ImagineArt API. Pass org_id (required) — the organization id the user selected via select_organization. Optionally pass folder_id (a folder the user picked via select_folder) to create the track inside that folder; omit it to use the workspace root. Pass prompt as a string. Duration is optional (default 10, range 1–90); variation is optional (default "music", or "instrumental"). Returns immediately with a uuid and a widget that mounts in the queued state; the widget polls fetch_music_status and updates in place. The widget handles the polling.

generate_video

ChatGPT
Generate a video using the ImagineArt API. Returns immediately with a uuid and a widget that mounts in the queued state — the widget itself polls fetch_status and updates in place as the generation progresses (queued → generating → complete). Arguments: • org_id (required) — the organization id the user selected via select_organization. The same org_id applies for the whole chat. • folder_id (optional) — a folder id the user picked via select_folder, to create the video inside that folder. Omit to create it at the workspace root. Reuse the same folder_id for the whole chat. • prompt (required) — the text prompt. • image_url (optional) — an ARRAY of reference image URLs. For each image, if the user attaches it, first call user_upload and pass the returned url; if the user gives a URL directly, pass it as-is. Omit for plain text-to-video. Behaviour by count: - exactly one image and no video_url/audio_url => image-to-video (animate a single still). - two or more images, or any video_url/audio_url => reference-to-video (see below). Seedance models (seedance-2.5, seedance-2.0, seedance-2.0-fast, seedance-2.0-mini) take reference images as bytedance references: this tool registers each image_url asset with bytedance itself before generating (the same step upload_asset_bytedance performs — do NOT call that tool for this), so for them every image_url MUST be an ImagineArt asset URL: one returned by user_upload, list_assets, or a finished generation. An externally hosted URL fails with an "Unable to" error saying so; upload the image with user_upload and retry with the returned url. • video_url (optional) — an ARRAY of video URLs. Forwarded for reference-to-video, or as the source video for video editing (see below). If the user attaches a video, first call user_upload with it. • audio_url (optional) — an ARRAY of reference audio URLs. Forwarded only for reference-to-video. Reference-to-video is supported only by these models: seedance-2.5, seedance-2.0, seedance-2.0-fast, seedance-2.0-mini, minimax-h3-max, minimax-h3, wan-3, happy_horse, wan-2.6, veo-3.1, google-omni-flash, grok-imagine-video, grok-imagine-1.5. Each accepts a different media set; passing media a model doesn't accept is ignored: - seedance-2.5, seedance-2.0, seedance-2.0-fast, seedance-2.0-mini: image_url, video_url, audio_url (all optional) - minimax-h3-max, minimax-h3, wan-3: image_url, video_url, audio_url (all optional) - happy_horse: image_url (at least one REQUIRED) - wan-2.6: video_url (at least one REQUIRED) - veo-3.1, grok-imagine-video, grok-imagine-1.5: image_url (optional) - google-omni-flash: image_url (at least one REQUIRED) If a model's required reference media is missing the call fails with an "Unable to" error naming what's required; relay it. Sending reference media to any other model falls back to image-to-video (first image) or text-to-video. Video editing (modify an existing video from a prompt, keeping its framing and length) is supported only by kling-o3-edit, kling-o1-edit and google-omni-flash. Pass the source video as the single video_url. kling-o3-edit and kling-o1-edit ONLY edit, so they need a video_url; they also take up to four image_url references. google-omni-flash edits whenever a video_url is passed, and ignores image_url while editing. runway-gen4-turbo only animates an image: it needs exactly one image_url. • model (optional) — one of: "ltx-2.3" (default), "seedance-2.5", "seedance-2.0-fast", "veo-3.1-fast", "minimax-h3-max", "happy_horse", "seedance-2.0", "wan-2.6", "seedance-1.5-pro", "seedance-pro-fast", "kling-2.6-pro", "kling-o3", "kling-3.0-pro", "pixverse-v6", "veo-3.1", "wan-2.2", "minimax-h3", "seedance-2.0-mini", "wan-3", "google-omni-flash", "veo-3.1-lite", "grok-imagine-video", "grok-imagine-1.5", "runway-4.5", "runway-gen4-turbo", "pika-2.2", "luma-ray2", "kling-3.0-turbo-pro", "kling-3.0-turbo-sd", "kling-o3-edit", "kling-o1-edit". Pass the model name exactly as written. Omit unless the user asks for a specific model. • aspect_ratio (optional) — pass when the user specifies one. Defaults to "16:9". Per-model allo…

generate_video_captions

ChatGPT
Burn styled, auto-transcribed captions into an existing video. Returns a uuid immediately and mounts a widget that polls fetch_status itself (queued → generating → complete). Only call this once a style has been chosen — the user named one ("add whisper captions"), or select_caption_preset came back with one. select_caption_preset covers captions requests that name no style ("add captions to this video"). Arguments: • org_id (required) — from select_organization. • asset_id (required) — uuid of a finished video this server hosts. From list_assets, or the last path segment of any asset.imagine.art/processed/<uuid> URL already in the conversation (from user_upload, a listing, or another widget) — that uuid IS the asset id. A link the user pasted from elsewhere cannot be captioned. • preset (required) — an id from list_caption_presets, verbatim: the match is exact. • language (optional) — locale of the spoken audio, region-qualified ("en-US", not "en"); omit to auto-detect. translation_language (optional) — same form, to translate; adds a surcharge. • position (optional) — top | center | bottom. shadow (optional) — none | min | mid | max. • folder_id (optional) — from select_folder; omit to inherit the source video's folder. Cost scales with the source: per started minute, doubled for 2K/4K, doubled again for an animated preset.

generate_youtube_thumbnail

ChatGPT
Generate a high click-through-rate YouTube thumbnail using the ImagineArt API: a striking 16:9 image plus text-overlay guidance. Use this when the user asks for a YouTube thumbnail, a video thumbnail, a "yt thumbnail", or a youtube cover. It expands a video title (and optional channel style / subject) into a prompt tuned for an eye-catching, high-contrast thumbnail with a clear focal subject, an emotional hook, and clean negative space for text, and renders it on the nano-banana-pro model at 16:9. Returns immediately with a uuid and a widget that mounts in the queued state — the widget itself polls fetch_status and updates in place (queued → generating → complete). This recipe has two parts. The image is produced by this tool and shown in the widget — it deliberately contains NO rendered text, because image models render text poorly. The text overlay is guidance in text: this tool expects a text reply alongside the image — 2–3 short overlay options (each 3–5 bold words max, drawn from the title), where to place the text, a couple of bold high-impact font suggestions, and a note to add the text afterward in a tool like Canva or Photoshop. The widget displays the image. Arguments: • org_id (required) — the organization id the user selected via select_organization. The same org_id applies for the whole chat. • folder_id (optional) — a folder id the user picked via select_folder, to create the thumbnail inside that folder. Omit to create it at the workspace root. Reuse the same folder_id for the whole chat. • title (required) — the video topic or title the thumbnail is for, e.g. "I survived 24 hours in the wilderness" or "5 Python tricks every developer should know". • channel_style (optional) — the channel's brand aesthetic, e.g. "minimal dark tech", "playful pastel vlog". Defaults to "bold, high contrast, bright colors". • subject_description (optional) — the person or subject to feature, e.g. "a shocked man pointing at a laptop" or "a close-up of a glowing circuit board".

get_balance

ChatGPT
Get the user's ImagineArt credit balance for an organization and render it in a widget. org_id (required) — the organization the user selected via select_organization; balance is per-organization. The same org_id applies for the whole chat.

get_skill_file

ChatGPT
Use this when loaded skill instructions tell you to read one of their files, such as references/ads-platform-specs.md. A long file first returns its headings; call again with section set to a heading, 'Parent > Heading' when two headings share a name, an entry ID such as A13, or all for the whole file.

get_skill_instructions

ChatGPT
Use this to load a skill from the skill library before doing skill work. Pass the exact slash command the user typed, such as /ads or /ads-create, or a command from the catalog. Call it with no skill to get the catalog of every bundle and command. Returns markdown instructions to follow.

list_aspect_ratios

ChatGPT
List the aspect ratios available for ad generation, each with a note on what platform/use it suits (e.g. 9:16 for Instagram Reels / TikTok / Shorts, 1:1 for feed posts, 16:9 for YouTube). Call this before generate_ad and pass the chosen value as generate_ad's aspect_ratio arg (REQUIRED). Match a user-named value; otherwise present the options and let them choose.

list_assets

ChatGPT
Used internally by the ImagineArt widgets: list the organization's assets (newest first) as an internal listing, e.g. to pass a returned id to another tool. Renders no widget — the show_assets widget drives this. show_assets covers requests to see assets. org_id (required) — the organization the user selected via select_organization. The same org_id applies for the whole chat. service (optional) — comma-separated upstream services to return: "user" for the user's uploads, "image,video" for generations. Omitting it returns every service, which includes uploads, music, and assets belonging to fashion or ad projects. limit (optional) — page size, defaults to 50. from / from_id (optional) — keyset pagination cursor for loading more. Leave both unset for the first call. When more is needed, call again with the same org_id plus the from / from_id values from the previous result's text. Both are required together.

list_camera_angles

ChatGPT
Used internally by the ImagineArt widgets: return the camera-angle catalog (Wide Shot, Close-Up, Extreme Close-Up, Full Body, Low/High Angle, Overhead, FPV Drone Shot, Over The Shoulder, Ground Level). Returns each angle's id, name, and thumbnail. The generation widget renders these as a selectable grid. Pass a chosen camera_angle_id to composite_shoot to frame the composite. camera_angle_id is an internal identifier.

list_camera_movements

ChatGPT
Used internally by the ImagineArt widgets: return the camera-movement catalog (Pan Left/Right, Tilt, Push In, Pull Out, Zoom, Truck, Orbit, Arc, Crane, Dolly Zoom, 360 Rotation, Whip Pan, FPV Drone, …). Returns each movement's id, name, thumbnail, and preview video. The generation widget renders these as a selectable grid. Pass a chosen camera_movement_id to animate_fashion_image (advanced mode, alongside a free-text prompt) to steer the camera.

list_caption_presets

ChatGPT
Used internally by the ImagineArt widgets: return the caption style catalog for generate_video_captions — each preset's id, title, thumbnail, and whether it is animated. The user picks a preset from this catalog before generate_video_captions; preset ids come from here. Takes no arguments. Pass the chosen id verbatim as generate_video_captions' preset argument: the upstream match is exact, so capitalizing or rewording it fails. Animated ("dynamic") presets cost twice as many credits as static ones — say so when the user is choosing.

list_durations

ChatGPT
List the ad durations (in seconds) available for generation, each with a note on length/cost. Call this before generate_ad and pass the chosen value as generate_ad's duration arg (REQUIRED). Match a user-named value; otherwise present the options and let them choose.

list_fashion_generations

ChatGPT
Used internally by the ImagineArt widgets: list a fashion project's generations (newest first) as an internal listing, e.g. to pass a returned id to edit_photo. Renders no widget. Optional service arg is an array filtering which media kinds are returned — any of "image" and "video"; omit for both.

list_fashion_models

ChatGPT
List fashion models. source "all" returns the organization's own saved models plus the built-in presets; "system" returns only the built-in presets; "user" returns only the organization's own saved models.

list_fashion_outfits

ChatGPT
List fashion outfits (tops and bottoms). source "all" returns the organization's own saved outfits plus the built-in presets; "system" returns only the built-in presets; "user" returns only the organization's own saved outfits.

list_fashion_projects

ChatGPT
List the fashion projects in a directory.

list_fashion_shot_settings

ChatGPT
List fashion shot settings — scenes (type "background") and poses (type "pose"). Optional category narrows within a type: "catalog"/"editorial" for scenes, "female"/"male" for poses. source "all" returns the organization's own saved shot settings plus the built-in presets; "system" returns only the built-in presets; "user" returns only the organization's own saved shot settings.

list_fashion_styling

ChatGPT
Used internally by select_fashion_models: return the hairstyle + makeup styling catalog (optional gender "male"/"female" filter; optional category "hairstyle"/"makeup", omit for both). The widget renders these in its restyle picker. restyle_fashion_model applies a chosen hairstyle_id / makeup_id.

list_fashion_utilities

ChatGPT
List the footwear and accessories (shoes, bags, jewelry, hats, belts; called "utilities") a fashion model can wear in a photoshoot. source "all" returns the organization's own saved utilities plus the built-in presets; "system" returns only the built-in presets; "user" returns only the organization's own saved utilities.

list_fashion_video_templates

ChatGPT
Used internally by the ImagineArt widgets: return the Fashion Studio "animate" video-template catalog — editorial and catalog multi-shot campaign presets that turn a finished fashion still into a short reference-to-video clip (the model and wardrobe stay locked to the still; the template drives backgrounds, camera, pacing). Returns each template's id, name, category, and mode (no prompts). The generation widget renders these as a selectable grid; the user picks one and it is applied via animate_fashion_image. Optional argument: • mode — narrow the catalog to one family: "editorial" or "catalog". Omit (or "all") for both.

list_formats

ChatGPT
List the available ad formats as a text catalog of {format_id, name}. Call this when the user names a format (e.g. "UGC") to find the matching entry, then pass that entry's numeric format_id to generate_ad. The format name is not the id: "UGC" is a name; its format_id is a number like 1. This catalog maps one to the other. If you can't match what they asked for, call select_format so the user picks. Format ids are internal identifiers.

list_hooks

ChatGPT
List the available ad hooks as a text catalog of {hook_id, name}. Call this to match a user-named hook to its entry, then pass that entry's numeric hook_id to generate_ad. The hook name is not the id; this catalog maps one to the other. Hooks are OPTIONAL. If you can't match, call select_hook. hook_id is an internal identifier.

list_image_effects

ChatGPT
Used internally by the ImagineArt widgets: return the image-effect catalog — grain / film-stock presets and color-grade presets that re-render an existing image as a finishing pass (film grain, tonality, color grade) while freezing the subject, wardrobe, pose, framing, and background. Returns each effect's id, name, category, and thumbnail (no prompts). The generation widget renders these as a selectable grid; the user picks one and it is applied via apply_image_effect. Optional argument: • kind — narrow the catalog to one family: "grain" or "colorGrade". Omit (or "all") for both.

list_market_projects

ChatGPT
Used internally by the ImagineArt ad-studio widget to resolve the projects inside a folder the user picked. Args: org_id, folder_id. The model should not call this; use select_market_project instead.

list_resolutions

ChatGPT
List the resolutions available for ad generation, each with a short note on quality/cost. Call this before generate_ad, then pass the resolution the user wants verbatim as generate_ad's resolution arg. If the user named one (e.g. "1080p", "HD"), match it to a listed value; otherwise present the options and let them choose.

list_settings

ChatGPT
List the available ad settings as a text catalog of {setting_id, name}. Call this to match a user-named setting to its entry, then pass that entry's numeric setting_id to generate_ad. The setting name is not the id; this catalog maps one to the other. Settings are OPTIONAL. If you can't match, call select_setting. setting_id is an internal identifier.

list_user_creations

ChatGPT
Used internally by the product/avatar/fashion CREATE picker widgets to privately fetch their own candidate list (kind "uploads" or "generations"). show_assets covers requests to see or browse assets ("show my generations", "show my uploads"). Args: org_id, kind, plus optional service ("image", "video", or "image,video" — narrows the media kind within the chosen kind; omit for the default, image), and optional limit / from / from_id for keyset pagination (the previous result's nextFrom / nextFromId load the next page).

list_voices

ChatGPT
List generate_speech's voices: stock voices with preview links, and the user's cloned voices. Share the previews so the user can pick.

open_studio

ChatGPT
Open ImagineArt: one surface where the user creates images, videos and ads, browses their assets and checks their credit balance. It loads everything itself and takes no arguments. Call this when the user asks to open ImagineArt or the studio, or wants to browse and create in one place. For a single generation the user has already described, call the generation tool directly instead.

remove_background

ChatGPT
Remove the background of an image using the ImagineArt API. Pass org_id (required) — the organization id the user selected via select_organization. Optionally pass folder_id (a folder the user picked via select_folder) to create the result inside that folder; omit it to use the workspace root. Pass image_url — if the user selected an existing generation, pass its url; for a non-ImagineArt asset, first call user_upload and pass the resulting url. Returns immediately with a uuid and a widget that mounts in the queued state; the widget polls fetch_status and updates in place. The widget handles the polling.

request_image_upload

ChatGPT
Render an upload widget so the user can attach reference image(s) for generation. This is the upload path for any user-supplied image. Whenever the user wants to provide their own image as a reference (e.g. "use this photo", "make a variation of this", an image edit / img2img request, or they attached a file) and no usable image URL is available. Native client attachments are not handed to this server, so an attached file cannot be read directly, and base64 upload is deprecated. This widget is how a user supplies their own image. Requires org_id, from select_organization. Reuse the same org_id for the whole chat. The user picks/drops image(s) in the widget; each is uploaded to ImagineArt and the resulting asset URL(s) are placed into your context automatically (no chat message). Use those URL(s) as the image_url argument on generation/editing tools (generate_image, enhance_image, remove_background). Treat the URLs. LIKENESS AND CONSENT: only use photographs of the user themselves or of someone who has given the user permission to create AI imagery of them. Do not proceed with a photograph of any other person, and never with a photograph of a minor. If the user has not made that permission clear, ask them to confirm it before calling this tool. Reference photographs are processed by third-party AI model providers. Do not ask for, accept or pass on identity documents, health or medical images, financial or payment card images, or any government identifier.

restyle_fashion_model

ChatGPT
Used internally by the ImagineArt picker widgets. Queues a restyled copy of a fashion model (hairstyle/makeup preset applied to its photo); the model picker widget drives it and finishes with create_fashion_model. LIKENESS AND CONSENT: only use photographs of the user themselves or of someone who has given the user permission to create AI imagery of them. Do not proceed with a photograph of any other person, and never with a photograph of a minor. If the user has not made that permission clear, ask them to confirm it before calling this tool. Reference photographs are processed by third-party AI model providers. Do not ask for, accept or pass on identity documents, health or medical images, financial or payment card images, or any government identifier.

select_avatar

ChatGPT
Present the avatar picker for an ad. In a widget-capable client this renders a picker; the widget lets the user EITHER pick an existing avatar OR add a new one (uploading photos), handling that upload itself via its own back-channels. The widget collects the photo and description itself. The chosen avatar_id — including for an avatar the user CREATES in the widget — is delivered to you on selection to pass to generate_ad (a newly-created avatar will not appear in any earlier list; the delivered id is the current one). This runs on its own: the flow waits for the user to finish here before the next select_* tool, and it comes after the product has been picked. It renders one selection widget per turn. Pass org_id (the organization for this chat, from select_organization) — it is required, exactly like the generation tools. The picker needs it to create a new avatar on the user's behalf. org_id is an internal identifier. In a widget-capable client this renders a picker, which presents the choice to the user directly. In other clients the result is marked NO WIDGET RENDERED and carries the options as structured text.

select_caption_preset

ChatGPT
Use this for any captions request that does not name a style — "add captions to this video", "generate captions for this clip", "subtitle this". The user chooses the caption style, plus language, position and shadow, and the video itself if none was pre-selected. Interactive: the user's choice comes back as a separate message carrying the chosen preset id and the collected settings, for the generate_video_captions call that follows. Where no UI is rendered, the result carries the equivalent details as text. Where the user has already named a style ("add whisper captions"), generate_video_captions takes it directly. Arguments: • org_id (required) — from select_organization. • asset_id (optional) — uuid of a finished video to pre-select, sourced exactly as for generate_video_captions. Omit it and the picker lets the user choose the video too.

select_fashion_background

ChatGPT
Show the user a picker of fashion backgrounds (scenes). Requires shoot_type ("catalogue" or "editorial", the kind the user chose earlier) — it decides which backgrounds are shown. Offer this as a step in the fashion flow (after the wardrobe). The user picks, or may decline in the widget (then proceed without a background id).

select_fashion_models

ChatGPT
Show the user a picker of the organization's fashion models. This is a step in the fashion flow, after the project. The picker lets the user choose an existing model or generate a new one inside its own sub-flow, collecting the photo or description and calling generate_fashion_model_image / create_fashion_model itself. The chosen model_select_id is surfaced back to you to pass to generate_fashion_photoshoot.

select_fashion_pose

ChatGPT
Show the user a picker of fashion poses. Offer this as a step in the fashion flow (after the background) — the last selection before generate_fashion_photoshoot. The user picks, or may decline in the widget (then proceed without a pose id).

select_fashion_project

ChatGPT
Fetch the fashion projects in the selected folder and present them for selection. In a widget-capable client this renders a picker. In other clients the result is marked NO WIDGET RENDERED and carries the list as structured text. A fashion project is the container fashion generations are linked to; its id is threaded as fashion_project_id. Requires org_id from select_organization and directory_id, which is the folder id from select_folder. The user picks a project in the widget (or creates a new one), and the chosen fashion_project_id is delivered to you on selection — including for a project the user just created, which won't be in any earlier list. The delivered id is the current one.

select_fashion_wardrobe

ChatGPT
Show the user a picker of the organization's fashion outfits and utilities — one picker covers both. Offer this as a step in the fashion flow (after the model). The user picks, or may decline in the widget (then proceed without wardrobe ids).

select_folder

ChatGPT
Fetch the folders in the selected organization (across its private and public workspaces) and present them for selection. In a widget-capable client this renders a picker. In other clients the result is marked NO WIDGET RENDERED and carries the list as structured text. Call this when the user wants to organize generated assets into a specific folder/directory. It is OPTIONAL — if the user doesn't pick a folder, generations are created at the workspace root. Requires org_id, from select_organization. The user picks a folder in the widget; their pick is surfaced back into the chat as a message containing the chosen folder_id. Capture that folder_id and pass it as the optional folder_id argument on every subsequent generation tool call (generate_image, generate_video, generate_music, enhance_image, remove_background) for the rest of the chat. The server is stateless and does not retain the selection; the same folder_id is passed on each later call.

select_format

ChatGPT
Render a picker of ad formats. Use this where the user named no format, or where list_formats returned no match for the format they named. Where the user has already named a format (e.g. "UGC", "testimonial", "unboxing"), list_formats resolves it to the numeric format_id that generate_ad takes. The user picks one; the chosen format_id is surfaced back to pass to generate_ad. In a widget-capable client this renders a picker, which presents the choice to the user directly. In other clients the result is marked NO WIDGET RENDERED and carries the options as structured text.

select_hook

ChatGPT
Render a picker of ad hooks. This is a step in the ad flow, after the format. The user picks one, or may decline in the widget (then proceed without a hook_id). The chosen hook_id is surfaced back to you to pass to generate_ad. In a widget-capable client this renders a picker, which presents the choice to the user directly. In other clients the result is marked NO WIDGET RENDERED and carries the options as structured text.

select_market_project

ChatGPT
Fetch the marketing projects in the selected folder and present them for selection. In a widget-capable client this renders a picker. In other clients the result is marked NO WIDGET RENDERED and carries the list as structured text. A marketing project is the campaign container an ad is generated into; its id is forwarded as market_project_id so the generated asset is linked to the campaign. Requires org_id from select_organization and folder_id from select_folder. The user picks a project in the widget (or creates a new one), and the chosen market_project_id is delivered to you on selection — including for a project the user just created, which won't be in any earlier list. It is passed on the ad generation call for the rest of the chat; the delivered id is the current one.

select_organization

ChatGPT
Present the user's ImagineArt organizations so they can choose one. In a widget-capable client this renders a picker. In other clients the result is marked NO WIDGET RENDERED and carries the list as structured text. Do NOT call this routinely at the start of a chat. The server resolves the organization on its own whenever it can — when the account has a single organization, or when the user already chose one in an earlier chat. In those cases a generation tool called with an empty org_id answers with the org_id to use; take it from that message and retry the call. Call this tool only when: a tool reports that no organization is selected and none could be resolved, or the user asks to switch, change, or re-pick their organization. The user picks an organization in the widget; their pick is surfaced back into the chat as a message containing the chosen org_id. Pass that org_id as the org_id argument on every subsequent generation tool call (generate_image, generate_video, generate_music, enhance_image, remove_background) for the rest of the chat — each request is independent, so the argument is always needed. org_id is INTERNAL: never display, repeat, or mention it to the user.

select_product

ChatGPT
Present the product picker for an ad or a product carousel (generate_carousel). This call only lists the organization's saved and preset products and renders the picker; it fetches no URL and uploads nothing. From the picker the user can choose to add a new product, which the widget does through separate calls to upload_market_image and create_product (create_product can import a product page URL). The chosen product_id — including for a product the user CREATES in the widget — is delivered to you on selection to pass to generate_ad, or to generate_carousel where the user asked for a carousel (a newly-created product will not appear in any earlier list; the delivered id is the current one). product_id is an internal identifier. This runs on its own: the flow waits for the user to finish here before the next select_* tool (e.g. select_avatar). It renders one selection widget per turn. Pass org_id (the organization for this chat, from select_organization) — it is required, exactly like the generation tools. The picker needs it to create a new product on the user's behalf. org_id is an internal identifier. In a widget-capable client this renders a picker, which presents the choice to the user directly. In other clients the result is marked NO WIDGET RENDERED and carries the options as structured text.

select_setting

ChatGPT
Render a picker of ad settings. This is a step in the ad flow, after the hook. The user picks one, or may decline in the widget (then proceed without a setting_id). The chosen setting_id is surfaced back to you to pass to generate_ad. In a widget-capable client this renders a picker, which presents the choice to the user directly. In other clients the result is marked NO WIDGET RENDERED and carries the options as structured text.

show_assets

ChatGPT
Display the organization's assets — generations and uploads alike — in a widget that loads them itself. Call this whenever the user wants to see what they've made or uploaded ("show my generations", "what have I generated", "show my uploads"). Where the widget renders, it carries the full result. Arguments: • org_id (required) — the organization the user selected via select_organization. • service (optional) — narrows what the widget loads: "user" for the user's uploads, "image,video" for generations. Omit it to show everything.

show_fashion_generations

ChatGPT
Display a fashion project's generations in a widget that loads them itself and updates in place. Call this when the user wants to see a project's earlier shoots; generate_fashion_photoshoot already shows its own results. Where the widget renders, it carries the full result. Arguments: • org_id (required) — the organization the user selected via select_organization. • fashion_project_id (required) — the numeric project id threaded from select_fashion_project. • shoot_type (optional) — "editorial" (default) or "catalogue"; decides which final editing options show. • service (optional) — array filtering which media kinds the widget loads: any of "image" and "video"; omit for both. Pass ["image"] for an images-only grid, ["video"] for videos only.

update_avatar

ChatGPT
Update a saved market avatar's name, description, gender, or photos. Provide avatar_id (from a prior select_avatar) plus org_id, and any of name / description / gender / photos to change — omitted fields are left as-is. photos are {url, bytedance_id} objects from upload_market_image. The ad-studio widget drives this; the model may also call it when the user explicitly asks to edit an avatar. Returns {id, status}. LIKENESS AND CONSENT: only use photographs of the user themselves or of someone who has given the user permission to create AI imagery of them. Do not proceed with a photograph of any other person, and never with a photograph of a minor. If the user has not made that permission clear, ask them to confirm it before calling this tool. Reference photographs are processed by third-party AI model providers. Do not ask for, accept or pass on identity documents, health or medical images, financial or payment card images, or any government identifier.

update_fashion_model

ChatGPT
Update an organization's saved fashion model. Requires org_id and the model id; only the fields you pass are changed (name, description, age, gender, size, image_urls, metadata, visibility). Only the model's creator may change visibility. LIKENESS AND CONSENT: only use photographs of the user themselves or of someone who has given the user permission to create AI imagery of them. Do not proceed with a photograph of any other person, and never with a photograph of a minor. If the user has not made that permission clear, ask them to confirm it before calling this tool. Reference photographs are processed by third-party AI model providers. Do not ask for, accept or pass on identity documents, health or medical images, financial or payment card images, or any government identifier.

update_fashion_outfit

ChatGPT
Update an organization's saved fashion outfit. Requires org_id and the outfit id; only the fields you pass are changed (title, type, frontal/rear/fabric image_urls, metadata, visibility). Only the outfit's creator may change visibility.

update_fashion_project

ChatGPT
Update a fashion project. Requires org_id and the project uuid; only the fields you pass are changed (name, description, thumbnail, metadata).

update_fashion_shot_setting

ChatGPT
Update an organization's saved fashion shot setting. Requires org_id and the shot setting id; only the fields you pass are changed (title, category, type, image_urls, metadata, visibility). Only the shot setting's creator may change visibility.

update_fashion_utility

ChatGPT
Update a footwear item or accessory (a "utility") saved in the organization's fashion wardrobe. Requires org_id and the utility id; only the fields you pass are changed (title, description, type, image_urls, metadata, visibility). Only the utility's creator may change visibility.

update_product

ChatGPT
Update a saved market product's name, description, or photos. Provide product_id (from a prior select_product) plus org_id, and any of name / description / photos to change — omitted fields are left as-is. photos are {url, bytedance_id} objects from upload_market_image. The ad-studio widget drives this; the model may also call it when the user explicitly asks to edit a product. Returns {id, status}.

upload_asset_bytedance

ChatGPT
Used internally by the ImagineArt picker widgets. Registers an existing asset with ByteDance, a third-party model provider, so the ad-studio widget can use it as a product photo.

upload_market_image

ChatGPT
Used internally by the ImagineArt picker widgets. Uploads one product/avatar photo (or video) for the ad and fashion studio widgets. The upload is also registered with ByteDance, a third-party model provider. LIKENESS AND CONSENT: only use photographs of the user themselves or of someone who has given the user permission to create AI imagery of them. Do not proceed with a photograph of any other person, and never with a photograph of a minor. If the user has not made that permission clear, ask them to confirm it before calling this tool. Reference photographs are processed by third-party AI model providers. Do not ask for, accept or pass on identity documents, health or medical images, financial or payment card images, or any government identifier.

user_upload

ChatGPT
Used internally by the request_image_upload widget. request_image_upload is how a user supplies their own image: native client attachments are not handed to this server, so one cannot be read and passed here as base64. LIKENESS AND CONSENT: only use photographs of the user themselves or of someone who has given the user permission to create AI imagery of them. Do not proceed with a photograph of any other person, and never with a photograph of a minor. If the user has not made that permission clear, ask them to confirm it before calling this tool. Reference photographs are processed by third-party AI model providers. Do not ask for, accept or pass on identity documents, health or medical images, financial or payment card images, or any government identifier.

Capabilities

WritesInteractive

Example Prompts

Click any prompt to copy it.

App Stats

101

Tools

3

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily