Apply an ordered list of the individually exposed design tools to one design, updating state between edits and rendering one final preview. The tools[].tool enum lists every supported native name; each schema branch identifies its standalone counterpart and exact compatibility aliases. Operations are text/image addition, text edits, move/resize/rotate/align/duplicate/delete, crop, background removal, flip, original/background restoration, artwork generation and photoshoot. Use explicit elementId/areaId and native text/asset/placement/options objects; standalone workflow shorthand is not normalized inside a batch. May overwrite or delete content. Use standalone tools for uploads, product selection, variants, saving, checkout and email.
View input schema
{
"type": "object",
"properties": {
"subject": {
"type": "string",
"description": "The exact subject returned by start_design_session."
},
"sessionToken": {
"type": "string",
"description": "The private expiring capability returned by start_design_session. Do not publish it."
},
"requestId": {
"type": "string",
"format": "uuid",
"description": "Generate a UUID for a new action. Reuse it only for retrying/polling that same action and payload. A new user edit needs a new UUID."
},
"options": {
"type": "object",
"additionalProperties": true,
"properties": {
"instruction": {
"type": "string"
},
"areaId": {
"type": "string",
"enum": [
"front",
"back",
"left",
"right"
]
},
"elementId": {
"type": "string"
},
"elementIds": {
"type": "array",
"items": {
"type": "string"
}
},
"renderPreview": {
"type": "boolean"
},
"stopOnError": {
"type": "boolean"
},
"tools": {
"type": "array",
"maxItems": 100,
"description": "Ordered native edits with tool, areaId/elementId and text/asset/placement/options objects. Flip uses item.options.direction; generate_artwork uses item.options.prompt (or value), plus optional singleResult/imageCount there. Updated design feeds the next item; one final preview. Use standalone tools for workflow shortcuts such as widthCm, uploads, variants, saving or checkout.",
"items": {
"type": "object",
"additionalProperties": true,
"properties": {
"areaId": {
"type": "string",
"enum": [
"front",
"back",
"left",
"right"
]
},
"elementId": {
"type": "string"
},
"text": {
"type": "object",
"additionalProperties": true,
"properties": {
"text": {
"type": "string"
},
"fontFamily": {
"type": "string",
"description": "Use current designOptions fonts."
},
"fontSize": {
"type": "number"
},
"fill": {
"type": "string"
},
"align": {
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"rotation": {
"type": "number"
},
"coordinateSpace": {
"type": "string",
"enum": [
"stage",
"print_area"
]
}
},
"description": "Native text object, e.g. {text:'Hello',fontFamily:'...',fontSize:40,fill:'#ffffff'}. Use the standalone add_text/update_text tool for string shorthand."
},
"asset": {
"description": "Preserve the complete uploaded asset object returned by the tool."
},
"placement": {
"type": "object",
"additionalProperties": true,
"properties": {
"coordinateSpace": {
"type": "string",
"enum": [
"stage",
"print_area"
]
},
"placementReference": {
"type": "string",
"enum": [
"stage",
"print_area"
]
},
"dimensionSpace": {
"type": "string",
"enum": [
"stage",
"print_area"
]
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"rotation": {
"type": "number"
}
},
"description": "x/y are normalized centres. coordinateSpace=print_area uses garment print bounds; otherwise stage. width/height use stage unless dimensionSpace=print_area."
},
"options": {
"type": "object",
"additionalProperties": true,
"properties": {
"direction": {
"type": "string",
"examples": [
"horizontal",
"vertical"
]
},
"prompt": {
"type": "string"
},
"mode": {
"type": "string"
},
"singleResult": {
"type": "boolean"
},
"imageCount": {
"type": "integer"
},
"count": {
"type": "integer"
},
"filename": {
"type": "string"
},
"fileType": {
"type": "string"
}
},
"description": "Native image options: flip direction=horizontal|vertical; native generation prompt, mode, singleResult, imageCount. This object is public options.options."
},
"crop": {
"type": "object",
"additionalProperties": true,
"properties": {
"left": {
"type": "number"
},
"top": {
"type": "number"
},
"right": {
"type": "number"
},
"bottom": {
"type": "number"
}
},
"description": "Fractions removed from each image edge; omitted sides remain zero."
},
"instruction": {
"type": "string"
},
"value": {
"type": "string"
},
"element": {
"type": "object",
"additionalProperties": true,
"description": "Existing AgenticDesignToolRequest.element patch for the selected element, including text/style, image source and placement fields. Preserve unrelated returned element fields."
},
"tool": {
"type": "string",
"enum": [
"add_text",
"update_text",
"add_image",
"add_asset",
"move_element",
"update_element",
"resize_element",
"rotate_element",
"align_element",
"duplicate_element",
"delete_element",
"crop_image",
"crop_edge_lines",
"crop_edge_borders",
"remove_letterbox_bars",
"crop_letterbox_bars",
"trim_letterbox_bars",
"trim_image_edge_lines",
"trim_image_edge_borders",
"remove_background",
"remove_background_content_aware",
"remove_background_ai",
"content_aware_background",
"remove_background_preserve_box",
"preserve_image_box",
"remove_background_preserve_image_box",
"remove_background_by_colour",
"remove_background_by_color",
"remove_background_colour_key",
"remove_background_color_key",
"remove_background_colour_key_centre_protected",
"remove_background_color_key_center_protected",
"colour_key_centre_protect",
"color_key_center_protect",
"remove_solid_background",
"remove_shirt_colour_background",
"remove_shirt_color_background",
"colour_key_background",
"color_key_background",
"flip_image",
"flip_horizontal",
"flip_vertical",
"restore_original_image",
"restore_background",
"generate_artwork",
"ai_photoshoot",
"live_ai_photoshoot"
],
"description": "Select one of these finite native operations or compatibility names. Every operation has an independently exposed tool identified in its schema branch. Checkout, designkey, load and select_product do not run in this batch."
}
},
"required": [
"tool"
],
"anyOf": [
{
"title": "add_text",
"description": "Standalone tool: add_text. Add a new text object using native text options.",
"properties": {
"tool": {
"type": "string",
"enum": [
"add_text"
]
}
},
"required": [
"tool"
]
},
{
"title": "update_text",
"description": "Standalone tool: update_text. Edit the selected text object using native text or element fields.",
"properties": {
"tool": {
"type": "string",
"enum": [
"update_text"
]
}
},
"required": [
"tool"
]
},
{
"title": "add_image",
"description": "Standalone tool: add_image. Add artwork; add_asset is the existing name for the same native operation.",
"properties": {
"tool": {
"type": "string",
"enum": [
"add_image",
"add_asset"
]
}
},
"required": [
"tool"
]
},
{
"title": "move_element",
"description": "Standalone tool: move_element. Edit the selected element's placement or supplied element/text/asset properties. update_element uses exactly the same native editor as move_element, resize_element, rotate_element and align_element.",
"properties": {
"tool": {
"type": "string",
"enum": [
"move_element",
"update_element"
]
}
},
"required": [
"tool"
]
},
{
"title": "resize_element",
"description": "Standalone tool: resize_element. Change the selected element's dimensions with native placement or element fields.",
"properties": {
"tool": {
"type": "string",
"enum": [
"resize_element"
]
}
},
"required": [
"tool"
]
},
{
"title": "rotate_element",
"description": "Standalone tool: rotate_element. Change the selected element's rotation with native placement or element fields.",
"properties": {
"tool": {
"type": "string",
"enum": [
"rotate_element"
]
}
},
"required": [
"tool"
]
},
{
"title": "align_element",
"description": "Standalone tool: align_element. Change the selected element's position with explicit native placement coordinates.",
"properties": {
"tool": {
"type": "string",
"enum": [
"align_element"
]
}
},
"required": [
"tool"
]
},
{
"title": "duplicate_element",
"description": "Standalone tool: duplicate_element. Duplicate the selected element.",
"properties": {
"tool": {
"type": "string",
"enum": [
"duplicate_element"
]
}
},
"required": [
"tool"
]
},
{
"title": "delete_element",
"description": "Standalone tool: delete_element. Delete the selected element.",
"properties": {
"tool": {
"type": "string",
"enum": [
"delete_element"
]
}
},
"required": [
"tool"
]
},
{
"title": "crop_image",
"description": "Standalone tool: crop_image. Crop the selected image. These compatibility names all use the native crop operation and its supplied crop fractions.",
"properties": {
"tool": {
"type": "string",
"enum": [
"crop_image",
"crop_edge_lines",
"crop_edge_borders",
"remove_letterbox_bars",
"crop_letterbox_bars",
"trim_letterbox_bars",
"trim_image_edge_lines",
"trim_image_edge_borders"
]
}
},
"required": [
"tool"
]
},
{
"title": "remove_background",
"description": "Standalone tool: remove_background. Remove an image background. Preserve-box names set preserveImageBox/preserveReplacementBox/fitInsidePreviousBox. Colour-key/solid/shirt-colour names apply an already processed options.replacementUrl; the standalone remove_background tool also supports the colour_key method. These are background-removal modes, not additional unrelated operations.",
"properties": {
"tool": {
"type": "string",
"enum": [
"remove_background",
"remove_background_content_aware",
"remove_background_ai",
"content_aware_background",
"remove_background_preserve_box",
"preserve_image_box",
"remove_background_preserve_image_box",
"remove_background_by_colour",
"remove_background_by_color",
"remove_background_colour_key",
"remove_background_color_key",
"remove_background_colour_key_centre_protected",
"remove_background_color_key_center_protected",
"colour_key_centre_protect",
"color_key_center_protect",
"remove_solid_background",
"remove_shirt_colour_background",
"remove_shirt_color_background",
"colour_key_background",
"color_key_background"
]
}
},
"required": [
"tool"
]
},
{
"title": "flip_image",
"description": "Standalone tool: flip_image. Flip the selected image. flip_image uses options.direction; horizontal/vertical compatibility names select that direction.",
"properties": {
"tool": {
"type": "string",
"enum": [
"flip_image",
"flip_horizontal",
"flip_vertical"
]
}
},
"required": [
"tool"
]
},
{
"title": "restore_original_image",
"description": "Standalone tool: restore_original_image. Recover the retained original upload for the exact element while preserving valid crop/flip modifiers and placement.",
"properties": {
"tool": {
"type": "string",
"enum": [
"restore_original_image"
]
}
},
"required": [
"tool"
]
},
{
"title": "restore_background",
"description": "Standalone tool: restore_background. Restore the current original image source, disable background removal and clear image modifiers while preserving placement.",
"properties": {
"tool": {
"type": "string",
"enum": [
"restore_background"
]
}
},
"required": [
"tool"
]
},
{
"title": "generate_artwork",
"description": "Standalone tool: generate_artwork. Generate artwork from options.prompt or value, using the existing allowance.",
"properties": {
"tool": {
"type": "string",
"enum": [
"generate_artwork"
]
}
},
"required": [
"tool"
]
},
{
"title": "ai_photoshoot",
"description": "Standalone tool: ai_photoshoot. Create an illustrative AI photoshoot; live_ai_photoshoot names the same native operation.",
"properties": {
"tool": {
"type": "string",
"enum": [
"ai_photoshoot",
"live_ai_photoshoot"
]
}
},
"required": [
"tool"
]
}
]
}
}
},
"description": "Existing arguments; advanced fields/aliases remain accepted. Supplied design patches can overwrite session content; preview/rendering can fetch public image URLs in those designs. Catalogue/session results include the full designArgumentSchema."
}
},
"required": [
"subject",
"sessionToken",
"requestId"
],
"additionalProperties": false
}