Skip to main content
Glama

Edit Design

perform-editing-operations

Apply one or more draft changes to the content or layout of an existing Canva design within an active editing transaction.

Use to revise, rewrite, or translate text; replace, insert, position, or resize images and videos on a page; remove page elements; edit text formatting; update a design title; or label fixed-page elements.

Not for changing a design's page structure or order.

Changes are temporary until saved. Show the user a preview of their changes and obtain explicit approval before saving changes.

Returns the updated page state for further changes, previewing, saving, or discarding.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pagesNoThe list of all pages in the design. This must be the `pages` array returned by the last call to `perform-editing-operations` or if this is the first call the `start-editing-transaction` tool. Used to determine which pages are responsive and editable.
operationsYesThe editing operations to perform on the design in this editing transaction. Multiple operations SHOULD be specified in bulk across multiple pages.
page_indexYesRequired page index of the first page that is going to be updated as part of this update. Multiple operations SHOULD be specified in bulk across multiple pages, this just needs to specify the first page in the set of pages to be updated. Pages are indexed using one-based numbering, so the first page in a design has the index value `1`.
user_intentNoMandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended).
transaction_idYesThe editing transaction ID. This must be the exact `transaction_id` value returned in the `start-editing-transaction` tool response for the editing transaction to perform editing operations on.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / operations / items / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "title": {
      -        "description": "The new title for the design",
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "update_title",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "title"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "element_id": {
      -        "description": "The ID of the element to replace the text of.",
      -        "type": "string"
      -      },
      -      "text": {
      -        "description": "The new text to replace the existing text with.",
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "replace_text",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "element_id",
      -      "text"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "alt_text": {
      -        "description": "The alternate text of the new asset",
      -        "type": "string"
      -      },
      -      "asset_id": {
      -        "description": "ID of the asset",
      -        "maxLength": 50,
      -        "minLength": 1,
      -        "pattern": "^[a-zA-Z0-9_-]+$",
      -        "type": "string"
      -      },
      -      "asset_type": {
      -        "description": "The type of the new asset",
      -        "enum": [
      -          "image",
      -          "video"
      -        ],
      -        "type": "string"
      -      },
      -      "element_id": {
      -        "description": "The ID of the element to replace the text of.",
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "update_fill",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "element_id",
      -      "asset_type",
      -      "asset_id",
      -      "alt_text"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "alt_text": {
      -        "description": "The alternate text of the asset",
      -        "type": "string"
      -      },
      -      "asset_id": {
      -        "description": "ID of the asset",
      -        "maxLength": 50,
      -        "minLength": 1,
      -        "pattern": "^[a-zA-Z0-9_-]+$",
      -        "type": "string"
      -      },
      -      "asset_type": {
      -        "description": "The type of the asset to insert",
      -        "enum": [
      -          "image",
      -          "video"
      -        ],
      -        "type": "string"
      -      },
      -      "height": {
      -        "description": "Height in pixels. Must be > 0. If not specified, a default height will be used",
      -        "exclusiveMinimum": 0,
      -        "type": "number"
      -      },
      -      "left": {
      -        "description": "Left position in pixels. If not specified, a default position will be used",
      -        "type": "number"
      -      },
      -      "opacity": {
      -        "description": "Opacity value. Range: [0, 1], default: 1",
      -        "maximum": 1,
      -        "minimum": 0,
      -        "type": "number"
      -      },
      -      "page_id": {
      -        "description": "The ID of the page to insert the fill into",
      -        "type": "string"
      -      },
      -      "rotation": {
      -        "description": "Rotation in degrees. Range: [-180.0, 180.0], default: 0",
      -        "maximum": 180,
      -        "minimum": -180,
      -        "type": "number"
      -      },
      -      "top": {
      -        "description": "Top position in pixels. If not specified, a default position will be used",
      -        "type": "number"
      -      },
      -      "type": {
      -        "const": "insert_fill",
      -        "type": "string"
      -      },
      -      "width": {
      -        "description": "Width in pixels. Must be > 0. If not specified, a default width will be used",
      -        "exclusiveMinimum": 0,
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "page_id",
      -      "asset_type",
      -      "asset_id",
      -      "alt_text"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "element_id": {
      -        "description": "The ID of the element to delete.",
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "delete_element",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "element_id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "element_id": {
      -        "description": "The ID of the element to find and replace the text in.",
      -        "type": "string"
      -      },
      -      "find_text": {
      -        "description": "The text that is needs to be found to be replaced.",
      -        "type": "string"
      -      },
      -      "replace_text": {
      -        "description": "The new text to replace the existing text with.",
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "find_and_replace_text",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "element_id",
      -      "find_text",
      -      "replace_text"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "element_id": {
      -        "description": "The ID of the element to reposition.",
      -        "type": "string"
      -      },
      -      "left": {
      -        "description": "Left position in pixels (relative to page).",
      -        "type": "number"
      -      },
      -      "top": {
      -        "description": "Top position in pixels (relative to page).",
      -        "type": "number"
      -      },
      -      "type": {
      -        "const": "position_element",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "element_id",
      -      "top",
      -      "left"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "Resizes an existing element (image, video, text, etc.) to a new size on the page. IMPORTANT: For TEXT elements, only specify width (height is auto-calculated). For IMAGE/VIDEO elements: if preserve_aspect_ratio=true, specify ONLY width OR height (the other is calculated); if preserve_aspect_ratio=false, specify both width and height.",
      -    "properties": {
      -      "element_id": {
      -        "description": "The ID of the element to resize.",
      -        "type": "string"
      -      },
      -      "height": {
      -        "description": "The height in pixels of the element. For TEXT elements: do NOT provide height - it will be automatically calculated. For other elements: if preserve_aspect_ratio is true, provide either width OR height (not both) - the other dimension will be calculated. If preserve_aspect_ratio is false, provide both width and height.",
      -        "type": "number"
      -      },
      -      "preserve_aspect_ratio": {
      -        "default": false,
      -        "description": "Whether to preserve the aspect ratio of the element. If true, provide only ONE dimension (width or height) - the other will be calculated automatically. If false, provide both dimensions.",
      -        "type": "boolean"
      -      },
      -      "type": {
      -        "const": "resize_element",
      -        "type": "string"
      -      },
      -      "width": {
      -        "description": "The width in pixels of the element. Required unless preserve_aspect_ratio is true and height is provided.",
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "element_id"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "element_id": {
      -        "description": "The ID of the text element to format.",
      -        "type": "string"
      -      },
      -      "formatting": {
      -        "additionalProperties": false,
      -        "description": "The formatting options to apply to the text",
      -        "properties": {
      -          "color": {
      -            "description": "Text color in hex format",
      -            "pattern": "^#[0-9A-Fa-f]{6}$",
      -            "type": "string"
      -          },
      -          "decoration": {
      -            "description": "Text decoration: none or underline",
      -            "enum": [
      -              "none",
      -              "underline"
      -            ],
      -            "type": "string"
      -          },
      -          "font_size": {
      -            "description": "The size of text in pixels. Must be between 1 and 800",
      -            "maximum": 800,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "font_style": {
      -            "description": "Font style: normal or italic",
      -            "enum": [
      -              "normal",
      -              "italic"
      -            ],
      -            "type": "string"
      -          },
      -          "font_weight": {
      -            "description": "Font weight: normal or bold",
      -            "enum": [
      -              "normal",
      -              "bold"
      -            ],
      -            "type": "string"
      -          },
      -          "line_height": {
      -            "description": "Line height multiplier. Range: [0.5, 2.5]",
      -            "maximum": 2.5,
      -            "minimum": 0.5,
      -            "type": "number"
      -          },
      -          "link": {
      -            "anyOf": [
      -              {
      -                "const": "",
      -                "type": "string"
      -              },
      -              {
      -                "format": "uri",
      -                "type": "string"
      -              }
      -            ],
      -            "description": "URL string. Setting to empty string removes any existing link"
      -          },
      -          "list_level": {
      -            "description": "List nesting level. 0 removes list formatting (not a list item). 1 is the outermost level, with higher values (e.g., 2, 3, etc.) increasing the nesting depth.",
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "list_marker": {
      -            "description": "List marker style (only applies when list_level > 0): none, disc, circle, square, decimal, lower-alpha, or lower-roman",
      -            "enum": [
      -              "none",
      -              "disc",
      -              "circle",
      -              "square",
      -              "decimal",
      -              "lower-alpha",
      -              "lower-roman"
      -            ],
      -            "type": "string"
      -          },
      -          "strikethrough": {
      -            "description": "Strikethrough style: none or strikethrough",
      -            "enum": [
      -              "none",
      -              "strikethrough"
      -            ],
      -            "type": "string"
      -          },
      -          "text_align": {
      -            "description": "Text alignment: start, center, or end",
      -            "enum": [
      -              "start",
      -              "center",
      -              "end"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "type": {
      -        "const": "format_text",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "element_id",
      -      "formatting"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "Connects or removes an autofill field label on a text or image element. This is only supported on fixed-page designs.",
      -    "properties": {
      -      "autofill_field_label": {
      -        "description": "The autofill field label to connect to the element. Omit this property to remove an existing autofill field mapping.",
      -        "type": "string"
      -      },
      -      "element_id": {
      -        "description": "The ID of the text or image element to connect to an autofill field.",
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "update_autofill_field",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "element_id"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "title": {
      +        "description": "The new title for the design",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "update_title",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "title"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "element_id": {
      +        "description": "The ID of the element to replace the text of.",
      +        "type": "string"
      +      },
      +      "text": {
      +        "description": "The new text to replace the existing text with.",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "replace_text",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "element_id",
      +      "text"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "alt_text": {
      +        "description": "The alternate text of the new asset",
      +        "type": "string"
      +      },
      +      "asset_id": {
      +        "description": "ID of the asset",
      +        "maxLength": 50,
      +        "minLength": 1,
      +        "pattern": "^[a-zA-Z0-9_-]+$",
      +        "type": "string"
      +      },
      +      "asset_type": {
      +        "description": "The type of the new asset",
      +        "enum": [
      +          "image",
      +          "video"
      +        ],
      +        "type": "string"
      +      },
      +      "element_id": {
      +        "description": "The ID of the image or video element whose fill should be replaced.",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "update_fill",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "element_id",
      +      "asset_type",
      +      "asset_id",
      +      "alt_text"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "alt_text": {
      +        "description": "The alternate text of the asset",
      +        "type": "string"
      +      },
      +      "asset_id": {
      +        "description": "ID of the asset",
      +        "maxLength": 50,
      +        "minLength": 1,
      +        "pattern": "^[a-zA-Z0-9_-]+$",
      +        "type": "string"
      +      },
      +      "asset_type": {
      +        "description": "The type of the asset to insert",
      +        "enum": [
      +          "image",
      +          "video"
      +        ],
      +        "type": "string"
      +      },
      +      "height": {
      +        "description": "Height in pixels. Must be > 0. If not specified, a default height will be used",
      +        "exclusiveMinimum": 0,
      +        "type": "number"
      +      },
      +      "left": {
      +        "description": "Left position in pixels. If not specified, a default position will be used",
      +        "type": "number"
      +      },
      +      "opacity": {
      +        "description": "Opacity value. Range: [0, 1], default: 1",
      +        "maximum": 1,
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "page_id": {
      +        "description": "The ID of the page to insert the fill into",
      +        "type": "string"
      +      },
      +      "rotation": {
      +        "description": "Rotation in degrees. Range: [-180.0, 180.0], default: 0",
      +        "maximum": 180,
      +        "minimum": -180,
      +        "type": "number"
      +      },
      +      "top": {
      +        "description": "Top position in pixels. If not specified, a default position will be used",
      +        "type": "number"
      +      },
      +      "type": {
      +        "const": "insert_fill",
      +        "type": "string"
      +      },
      +      "width": {
      +        "description": "Width in pixels. Must be > 0. If not specified, a default width will be used",
      +        "exclusiveMinimum": 0,
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "page_id",
      +      "asset_type",
      +      "asset_id",
      +      "alt_text"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "element_id": {
      +        "description": "The ID of the element to delete.",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "delete_element",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "element_id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "element_id": {
      +        "description": "The ID of the element to find and replace the text in.",
      +        "type": "string"
      +      },
      +      "find_text": {
      +        "description": "The text that is needs to be found to be replaced.",
      +        "type": "string"
      +      },
      +      "replace_text": {
      +        "description": "The new text to replace the existing text with.",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "find_and_replace_text",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "element_id",
      +      "find_text",
      +      "replace_text"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "element_id": {
      +        "description": "The ID of the element to reposition.",
      +        "type": "string"
      +      },
      +      "left": {
      +        "description": "Left position in pixels (relative to page).",
      +        "type": "number"
      +      },
      +      "top": {
      +        "description": "Top position in pixels (relative to page).",
      +        "type": "number"
      +      },
      +      "type": {
      +        "const": "position_element",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "element_id",
      +      "top",
      +      "left"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "Resizes an existing element (image, video, text, etc.) to a new size on the page. IMPORTANT: For TEXT elements, only specify width (height is auto-calculated). For IMAGE/VIDEO elements: if preserve_aspect_ratio=true, specify ONLY width OR height (the other is calculated); if preserve_aspect_ratio=false, specify both width and height.",
      +    "properties": {
      +      "element_id": {
      +        "description": "The ID of the element to resize.",
      +        "type": "string"
      +      },
      +      "height": {
      +        "description": "The height in pixels of the element. For TEXT elements: do NOT provide height - it will be automatically calculated. For other elements: if preserve_aspect_ratio is true, provide either width OR height (not both) - the other dimension will be calculated. If preserve_aspect_ratio is false, provide both width and height.",
      +        "type": "number"
      +      },
      +      "preserve_aspect_ratio": {
      +        "default": false,
      +        "description": "Whether to preserve the aspect ratio of the element. If true, provide only ONE dimension (width or height) - the other will be calculated automatically. If false, provide both dimensions.",
      +        "type": "boolean"
      +      },
      +      "type": {
      +        "const": "resize_element",
      +        "type": "string"
      +      },
      +      "width": {
      +        "description": "The width in pixels of the element. Required unless preserve_aspect_ratio is true and height is provided.",
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "element_id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "element_id": {
      +        "description": "The ID of the text element to format.",
      +        "type": "string"
      +      },
      +      "formatting": {
      +        "additionalProperties": false,
      +        "description": "The formatting options to apply to the text",
      +        "properties": {
      +          "color": {
      +            "description": "Text color in hex format",
      +            "pattern": "^#[0-9A-Fa-f]{6}$",
      +            "type": "string"
      +          },
      +          "decoration": {
      +            "description": "Text decoration: none or underline",
      +            "enum": [
      +              "none",
      +              "underline"
      +            ],
      +            "type": "string"
      +          },
      +          "font_size": {
      +            "description": "The size of text in pixels. Must be between 1 and 800",
      +            "maximum": 800,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "font_style": {
      +            "description": "Font style: normal or italic",
      +            "enum": [
      +              "normal",
      +              "italic"
      +            ],
      +            "type": "string"
      +          },
      +          "font_weight": {
      +            "description": "Font weight: normal or bold",
      +            "enum": [
      +              "normal",
      +              "bold"
      +            ],
      +            "type": "string"
      +          },
      +          "line_height": {
      +            "description": "Line height multiplier. Range: [0.5, 2.5]",
      +            "maximum": 2.5,
      +            "minimum": 0.5,
      +            "type": "number"
      +          },
      +          "link": {
      +            "anyOf": [
      +              {
      +                "const": "",
      +                "type": "string"
      +              },
      +              {
      +                "format": "uri",
      +                "type": "string"
      +              }
      +            ],
      +            "description": "URL string. Setting to empty string removes any existing link"
      +          },
      +          "list_level": {
      +            "description": "List nesting level. 0 removes list formatting (not a list item). 1 is the outermost level, with higher values (e.g., 2, 3, etc.) increasing the nesting depth.",
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "list_marker": {
      +            "description": "List marker style (only applies when list_level > 0): none, disc, circle, square, decimal, lower-alpha, or lower-roman",
      +            "enum": [
      +              "none",
      +              "disc",
      +              "circle",
      +              "square",
      +              "decimal",
      +              "lower-alpha",
      +              "lower-roman"
      +            ],
      +            "type": "string"
      +          },
      +          "strikethrough": {
      +            "description": "Strikethrough style: none or strikethrough",
      +            "enum": [
      +              "none",
      +              "strikethrough"
      +            ],
      +            "type": "string"
      +          },
      +          "text_align": {
      +            "description": "Text alignment: start, center, or end",
      +            "enum": [
      +              "start",
      +              "center",
      +              "end"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": {
      +        "const": "format_text",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "element_id",
      +      "formatting"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "Connects or removes an autofill field label on a text or image element. This is only supported on fixed-page designs.",
      +    "properties": {
      +      "autofill_field_label": {
      +        "description": "The autofill field label to connect to the element. Omit this property to remove an existing autofill field mapping.",
      +        "type": "string"
      +      },
      +      "element_id": {
      +        "description": "The ID of the text or image element to connect to an autofill field.",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "update_autofill_field",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "element_id"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. First observed

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only mark the tool as read-write and non-destructive; the description adds crucial workflow semantics: changes are draft and temporary, explicit user approval is required before saving, and the response returns updated page state. This meaningfully extends beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is five short sentences with the core action front-loaded, a compact use-case list, an explicit exclusion, and workflow reminders about preview and approval. Every sentence earns its place with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex multi-operation mutation tool with no output schema, the description gives the essential workflow context: active transaction, temporary unsaved changes, preview/approval requirement, and the returned updated page state. It appropriately relies on the fully covered input schema for parameter details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all parameters. The description adds high-level operation categories but does not provide additional meaning for specific parameters beyond the schema, which is acceptable given full coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names the verb ('apply'), the resource ('existing Canva design'), and the scope ('within an active editing transaction'). The list of concrete uses and the 'Not for changing a design's page structure or order' negative make it easy to distinguish from related transaction tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool with 'Use to revise, rewrite, or translate text...' and clearly excludes page-structure changes. It also gives workflow guidance about previewing and obtaining approval before saving, though it does not name a specific alternative tool for the excluded cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources