← WebMCP Directory

Tool tree

easel-design.vercel.app

Productivity & BusinessTools verified
Website
Easel
Explore capabilities
    inspect_documentAnswer

    Read a compact, filterable, paginated summary of the active Easel File, its Canvas, Frames, Layers, bindings, assets, and selection.

    View tool JSON
    {
      "name": "inspect_document",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read a compact, filterable, paginated summary of the active Easel File, its Canvas, Frames, Layers, bindings, assets, and selection.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "fileId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "fileName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "scope": {
            "type": "string",
            "enum": [
              "file",
              "frame",
              "selection",
              "annotations",
              "history"
            ]
          },
          "frameId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "frameName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "nodeIds": {
            "type": "array",
            "maxItems": 20,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            }
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "type": {
            "type": "string",
            "enum": [
              "frame",
              "text",
              "rectangle",
              "ellipse",
              "line",
              "arrow",
              "polygon",
              "image"
            ]
          },
          "content": {
            "type": "string",
            "maxLength": 6000
          },
          "bindingKey": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "maxFrames": {
            "type": "integer",
            "minimum": 1,
            "maximum": 8
          },
          "maxLayers": {
            "type": "integer",
            "minimum": 1,
            "maximum": 80
          },
          "maxTextChars": {
            "type": "integer",
            "minimum": 20,
            "maximum": 600
          },
          "offset": {
            "type": "integer",
            "minimum": 0
          },
          "detail": {
            "type": "string",
            "enum": [
              "compact",
              "full"
            ]
          },
          "includeResolved": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    }
    open_fileAction

    Switch to one saved Easel File by exact ID or exact name and return its active summary.

    View tool JSON
    {
      "name": "open_file",
      "kind": "act",
      "impl": "imperative",
      "description": "Switch to one saved Easel File by exact ID or exact name and return its active summary.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "fileId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "fileName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          }
        },
        "oneOf": [
          {
            "required": [
              "fileId"
            ]
          },
          {
            "required": [
              "fileName"
            ]
          }
        ],
        "additionalProperties": false
      }
    }
    inspect_assetsAnswer

    Read compact asset names, sources, types, dimensions, and stable asset IDs with exact filters and pagination.

    View tool JSON
    {
      "name": "inspect_assets",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read compact asset names, sources, types, dimensions, and stable asset IDs with exact filters and pagination.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "fileId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "fileName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 160
          },
          "source": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "type": {
            "type": "string",
            "enum": [
              "image"
            ]
          },
          "assetId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "maxAssets": {
            "type": "integer",
            "minimum": 1,
            "maximum": 40
          },
          "offset": {
            "type": "integer",
            "minimum": 0
          }
        },
        "additionalProperties": false
      }
    }
    focus_for_inspectionAction

    Center requested Layers or Frames for visual inspection and temporarily hide side panels.

    View tool JSON
    {
      "name": "focus_for_inspection",
      "kind": "act",
      "impl": "imperative",
      "description": "Center requested Layers or Frames for visual inspection and temporarily hide side panels.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            }
          }
        },
        "required": [
          "ids"
        ],
        "additionalProperties": false
      }
    }
    capture_frameAction

    Render one Frame as a visible PNG preview at 1x or 2x and return bounded snapshot metadata.

    View tool JSON
    {
      "name": "capture_frame",
      "kind": "act",
      "impl": "imperative",
      "description": "Render one Frame as a visible PNG preview at 1x or 2x and return bounded snapshot metadata.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "frameId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "scale": {
            "type": "integer",
            "enum": [
              1,
              2
            ]
          }
        },
        "required": [
          "frameId"
        ],
        "additionalProperties": false
      }
    }
    create_frameAction

    Create a named Website, Graphic, or custom-size Frame on the active Canvas.

    View tool JSON
    {
      "name": "create_frame",
      "kind": "act",
      "impl": "imperative",
      "description": "Create a named Website, Graphic, or custom-size Frame on the active Canvas.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "width": {
            "type": "number",
            "minimum": 1,
            "maximum": 20000
          },
          "height": {
            "type": "number",
            "minimum": 1,
            "maximum": 20000
          },
          "preset": {
            "type": "string",
            "enum": [
              "website",
              "website-mobile",
              "graphic"
            ]
          },
          "position": {
            "type": "object",
            "properties": {
              "x": {
                "type": "number",
                "minimum": -20000,
                "maximum": 20000
              },
              "y": {
                "type": "number",
                "minimum": -20000,
                "maximum": 20000
              }
            },
            "required": [
              "x",
              "y"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      }
    }
    write_frameAction

    Append or explicitly replace a Frame child tree using at most 100 editable structured Layers.

    View tool JSON
    {
      "name": "write_frame",
      "kind": "act",
      "impl": "imperative",
      "description": "Append or explicitly replace a Frame child tree using at most 100 editable structured Layers.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "frameId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "mode": {
            "type": "string",
            "enum": [
              "append",
              "replace"
            ]
          },
          "elements": {
            "type": "array",
            "minItems": 1,
            "maxItems": 100,
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "enum": [
                    "frame",
                    "text",
                    "rectangle",
                    "ellipse",
                    "line",
                    "arrow",
                    "polygon",
                    "image"
                  ]
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                },
                "x": {
                  "type": "number",
                  "minimum": -20000,
                  "maximum": 20000
                },
                "y": {
                  "type": "number",
                  "minimum": -20000,
                  "maximum": 20000
                },
                "width": {
                  "type": "number",
                  "minimum": 1,
                  "maximum": 20000
                },
                "height": {
                  "type": "number",
                  "minimum": 1,
                  "maximum": 20000
                },
                "rotation": {
                  "type": "number",
                  "minimum": -360,
                  "maximum": 360
                },
                "sizing": {
                  "type": "object",
                  "properties": {
                    "width": {
                      "type": "string",
                      "enum": [
                        "fixed",
                        "hug",
                        "fill"
                      ]
                    },
                    "height": {
                      "type": "string",
                      "enum": [
                        "fixed",
                        "hug",
                        "fill"
                      ]
                    }
                  },
                  "required": [
                    "width",
                    "height"
                  ],
                  "additionalProperties": false
                },
                "content": {
                  "type": "string",
                  "maxLength": 6000
                },
                "style": {
                  "type": "object",
                  "properties": {
                    "fill": {
                      "type": "string",
                      "maxLength": 80
                    },
                    "opacity": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    },
                    "borderColor": {
                      "type": "string",
                      "maxLength": 80
                    },
                    "borderWidth": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 100
                    },
                    "borderStyle": {
                      "type": "string",
                      "enum": [
                        "solid",
                        "dashed",
                        "dotted"
                      ]
                    },
                    "borderRadius": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 20000
                    },
                    "color": {
                      "type": "string",
                      "maxLength": 80
                    },
                    "fontFamily": {
                      "type": "string",
                      "maxLength": 160
                    },
                    "fontSize": {
                      "type": "number",
                      "minimum": 1,
                      "maximum": 400
                    },
                    "fontWeight": {
                      "type": "number",
                      "enum": [
                        400,
                        500,
                        600,
                        700
                      ]
                    },
                    "lineHeight": {
                      "type": "number",
                      "minimum": 0.5,
                      "maximum": 4
                    },
                    "letterSpacing": {
                      "type": "number",
                      "minimum": -40,
                      "maximum": 80
                    },
                    "textAlign": {
                      "type": "string",
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "layout": {
                  "type": "object",
                  "properties": {
                    "mode": {
                      "type": "string",
                      "enum": [
                        "free",
                        "flex-row",
                        "flex-column"
                      ]
                    },
                    "gap": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1000
                    },
                    "padding": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1000
                    },
                    "alignItems": {
                      "type": "string",
                      "enum": [
                        "start",
                        "center",
                        "end",
                        "stretch"
                      ]
                    },
                    "justifyContent": {
                      "type": "string",
                      "enum": [
                        "start",
                        "center",
                        "end",
                        "space-between"
                      ]
                    },
                    "clipContent": {
                      "type": "boolean"
                    },
                    "wrap": {
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": false
                },
                "shape": {
                  "type": "object",
                  "properties": {
                    "sides": {
                      "type": "integer",
                      "minimum": 3,
                      "maximum": 12
                    }
                  },
                  "additionalProperties": false
                },
                "image": {
                  "type": "object",
                  "properties": {
                    "assetId": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 120
                    },
                    "role": {
                      "type": "string",
                      "enum": [
                        "reference",
                        "content"
                      ]
                    },
                    "label": {
                      "type": "string",
                      "maxLength": 160
                    },
                    "alt": {
                      "type": "string",
                      "maxLength": 240
                    }
                  },
                  "required": [
                    "assetId"
                  ],
                  "additionalProperties": false
                },
                "hidden": {
                  "type": "boolean"
                },
                "locked": {
                  "type": "boolean"
                },
                "binding": {
                  "type": "object",
                  "properties": {
                    "key": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 80
                    },
                    "sourceLabel": {
                      "type": "string",
                      "maxLength": 120
                    }
                  },
                  "required": [
                    "key"
                  ],
                  "additionalProperties": false
                },
                "children": {
                  "type": "array",
                  "maxItems": 100,
                  "items": {}
                }
              },
              "required": [
                "type",
                "width",
                "height"
              ],
              "additionalProperties": false
            }
          },
          "force": {
            "type": "boolean",
            "description": "Deliberately include locked content in a replace."
          }
        },
        "required": [
          "frameId",
          "mode",
          "elements"
        ],
        "additionalProperties": false
      }
    }
    insert_elementsAction

    Insert a bounded editable Layer tree into one exact Frame using the shared action layer.

    View tool JSON
    {
      "name": "insert_elements",
      "kind": "act",
      "impl": "imperative",
      "description": "Insert a bounded editable Layer tree into one exact Frame using the shared action layer.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "frameId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "parentId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "elements": {
            "type": "array",
            "minItems": 1,
            "maxItems": 100,
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "enum": [
                    "frame",
                    "text",
                    "rectangle",
                    "ellipse",
                    "line",
                    "arrow",
                    "polygon",
                    "image"
                  ]
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                },
                "x": {
                  "type": "number",
                  "minimum": -20000,
                  "maximum": 20000
                },
                "y": {
                  "type": "number",
                  "minimum": -20000,
                  "maximum": 20000
                },
                "width": {
                  "type": "number",
                  "minimum": 1,
                  "maximum": 20000
                },
                "height": {
                  "type": "number",
                  "minimum": 1,
                  "maximum": 20000
                },
                "rotation": {
                  "type": "number",
                  "minimum": -360,
                  "maximum": 360
                },
                "sizing": {
                  "type": "object",
                  "properties": {
                    "width": {
                      "type": "string",
                      "enum": [
                        "fixed",
                        "hug",
                        "fill"
                      ]
                    },
                    "height": {
                      "type": "string",
                      "enum": [
                        "fixed",
                        "hug",
                        "fill"
                      ]
                    }
                  },
                  "required": [
                    "width",
                    "height"
                  ],
                  "additionalProperties": false
                },
                "content": {
                  "type": "string",
                  "maxLength": 6000
                },
                "style": {
                  "type": "object",
                  "properties": {
                    "fill": {
                      "type": "string",
                      "maxLength": 80
                    },
                    "opacity": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    },
                    "borderColor": {
                      "type": "string",
                      "maxLength": 80
                    },
                    "borderWidth": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 100
                    },
                    "borderStyle": {
                      "type": "string",
                      "enum": [
                        "solid",
                        "dashed",
                        "dotted"
                      ]
                    },
                    "borderRadius": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 20000
                    },
                    "color": {
                      "type": "string",
                      "maxLength": 80
                    },
                    "fontFamily": {
                      "type": "string",
                      "maxLength": 160
                    },
                    "fontSize": {
                      "type": "number",
                      "minimum": 1,
                      "maximum": 400
                    },
                    "fontWeight": {
                      "type": "number",
                      "enum": [
                        400,
                        500,
                        600,
                        700
                      ]
                    },
                    "lineHeight": {
                      "type": "number",
                      "minimum": 0.5,
                      "maximum": 4
                    },
                    "letterSpacing": {
                      "type": "number",
                      "minimum": -40,
                      "maximum": 80
                    },
                    "textAlign": {
                      "type": "string",
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "layout": {
                  "type": "object",
                  "properties": {
                    "mode": {
                      "type": "string",
                      "enum": [
                        "free",
                        "flex-row",
                        "flex-column"
                      ]
                    },
                    "gap": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1000
                    },
                    "padding": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1000
                    },
                    "alignItems": {
                      "type": "string",
                      "enum": [
                        "start",
                        "center",
                        "end",
                        "stretch"
                      ]
                    },
                    "justifyContent": {
                      "type": "string",
                      "enum": [
                        "start",
                        "center",
                        "end",
                        "space-between"
                      ]
                    },
                    "clipContent": {
                      "type": "boolean"
                    },
                    "wrap": {
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": false
                },
                "shape": {
                  "type": "object",
                  "properties": {
                    "sides": {
                      "type": "integer",
                      "minimum": 3,
                      "maximum": 12
                    }
                  },
                  "additionalProperties": false
                },
                "image": {
                  "type": "object",
                  "properties": {
                    "assetId": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 120
                    },
                    "role": {
                      "type": "string",
                      "enum": [
                        "reference",
                        "content"
                      ]
                    },
                    "label": {
                      "type": "string",
                      "maxLength": 160
                    },
                    "alt": {
                      "type": "string",
                      "maxLength": 240
                    }
                  },
                  "required": [
                    "assetId"
                  ],
                  "additionalProperties": false
                },
                "hidden": {
                  "type": "boolean"
                },
                "locked": {
                  "type": "boolean"
                },
                "binding": {
                  "type": "object",
                  "properties": {
                    "key": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 80
                    },
                    "sourceLabel": {
                      "type": "string",
                      "maxLength": 120
                    }
                  },
                  "required": [
                    "key"
                  ],
                  "additionalProperties": false
                },
                "children": {
                  "type": "array",
                  "maxItems": 100,
                  "items": {}
                }
              },
              "required": [
                "type",
                "width",
                "height"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "elements"
        ],
        "oneOf": [
          {
            "required": [
              "frameId"
            ]
          },
          {
            "required": [
              "parentId"
            ]
          }
        ],
        "additionalProperties": false
      }
    }
    update_elementsAction

    Update Website mock-up Layers or use the explicit history branch to undo or redo the active File. When an edit addresses a visible review note, include that note ID in annotationIds on the same update; a successful update removes only those addressed notes in the same undoable transaction.

    View tool JSON
    {
      "name": "update_elements",
      "kind": "act",
      "impl": "imperative",
      "description": "Update Website mock-up Layers or use the explicit history branch to undo or redo the active File. When an edit addresses a visible review note, include that note ID in annotationIds on the same update; a successful update removes only those addressed notes in the same undoable transaction.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "updates": {
            "type": "array",
            "minItems": 1,
            "maxItems": 50,
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                },
                "target": {
                  "type": "object",
                  "properties": {
                    "selection": {
                      "type": "boolean",
                      "const": true
                    },
                    "fileId": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 120
                    },
                    "fileName": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 120
                    },
                    "frameId": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 120
                    },
                    "frameName": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 120
                    },
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 120
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "frame",
                        "text",
                        "rectangle",
                        "ellipse",
                        "line",
                        "arrow",
                        "polygon",
                        "image"
                      ]
                    },
                    "content": {
                      "type": "string",
                      "maxLength": 6000
                    },
                    "bindingKey": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 80
                    }
                  },
                  "additionalProperties": false
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                },
                "x": {
                  "type": "number",
                  "minimum": -20000,
                  "maximum": 20000
                },
                "y": {
                  "type": "number",
                  "minimum": -20000,
                  "maximum": 20000
                },
                "width": {
                  "type": "number",
                  "minimum": 1,
                  "maximum": 20000
                },
                "height": {
                  "type": "number",
                  "minimum": 1,
                  "maximum": 20000
                },
                "rotation": {
                  "type": "number",
                  "minimum": -360,
                  "maximum": 360
                },
                "annotationIds": {
                  "type": "array",
                  "maxItems": 20,
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120
                  },
                  "description": "Review note IDs explicitly addressed by this update; successful updates remove only these notes."
                },
                "sizing": {
                  "type": "object",
                  "properties": {
                    "width": {
                      "type": "string",
                      "enum": [
                        "fixed",
                        "hug",
                        "fill"
                      ]
                    },
                    "height": {
                      "type": "string",
                      "enum": [
                        "fixed",
                        "hug",
                        "fill"
                      ]
                    }
                  },
                  "minProperties": 1,
                  "additionalProperties": false
                },
                "content": {
                  "type": "string",
                  "maxLength": 6000
                },
                "style": {
                  "type": "object",
                  "properties": {
                    "fill": {
                      "type": "string",
                      "maxLength": 80
                    },
                    "opacity": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    },
                    "borderColor": {
                      "type": "string",
                      "maxLength": 80
                    },
                    "borderWidth": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 100
                    },
                    "borderStyle": {
                      "type": "string",
                      "enum": [
                        "solid",
                        "dashed",
                        "dotted"
                      ]
                    },
                    "borderRadius": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 20000
                    },
                    "color": {
                      "type": "string",
                      "maxLength": 80
                    },
                    "fontFamily": {
                      "type": "string",
                      "maxLength": 160
                    },
                    "fontSize": {
                      "type": "number",
                      "minimum": 1,
                      "maximum": 400
                    },
                    "fontWeight": {
                      "type": "number",
                      "enum": [
                        400,
                        500,
                        600,
                        700
                      ]
                    },
                    "lineHeight": {
                      "type": "number",
                      "minimum": 0.5,
                      "maximum": 4
                    },
                    "letterSpacing": {
                      "type": "number",
                      "minimum": -40,
                      "maximum": 80
                    },
                    "textAlign": {
                      "type": "string",
                      "enum": [
                        "left",
                        "center",
                        "right"
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                "layout": {
                  "type": "object",
                  "properties": {
                    "mode": {
                      "type": "string",
                      "enum": [
                        "free",
                        "flex-row",
                        "flex-column"
                      ]
                    },
                    "gap": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1000
                    },
                    "padding": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1000
                    },
                    "alignItems": {
                      "type": "string",
                      "enum": [
                        "start",
                        "center",
                        "end",
                        "stretch"
                      ]
                    },
                    "justifyContent": {
                      "type": "string",
                      "enum": [
                        "start",
                        "center",
                        "end",
                        "space-between"
                      ]
                    },
                    "clipContent": {
                      "type": "boolean"
                    },
                    "wrap": {
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": false
                },
                "shape": {
                  "type": "object",
                  "properties": {
                    "sides": {
                      "type": "integer",
                      "minimum": 3,
                      "maximum": 12
                    }
                  },
                  "additionalProperties": false
                },
                "image": {
                  "type": "object",
                  "properties": {
                    "assetId": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 120
                    },
                    "role": {
                      "type": "string",
                      "enum": [
                        "reference",
                        "content"
                      ]
                    },
                    "label": {
                      "type": "string",
                      "maxLength": 160
                    },
                    "alt": {
                      "type": "string",
                      "maxLength": 240
                    }
                  },
                  "additionalProperties": false
                },
                "parentId": {
                  "anyOf": [
                    {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 120
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "hidden": {
                  "type": "boolean"
                },
                "locked": {
                  "type": "boolean"
                }
              },
              "oneOf": [
                {
                  "required": [
                    "id"
                  ],
                  "not": {
                    "required": [
                      "target"
                    ]
                  }
                },
                {
                  "required": [
                    "target"
                  ],
                  "not": {
                    "required": [
                      "id"
                    ]
                  }
                }
              ],
              "additionalProperties": false
            }
          },
          "history": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "enum": [
                  "undo",
                  "redo"
                ]
              },
              "steps": {
                "type": "integer",
                "minimum": 1,
                "maximum": 20
              }
            },
            "required": [
              "action",
              "steps"
            ],
            "additionalProperties": false
          },
          "force": {
            "type": "boolean",
            "description": "Deliberately allow writes to locked Layers."
          }
        },
        "oneOf": [
          {
            "required": [
              "updates"
            ],
            "not": {
              "required": [
                "history"
              ]
            }
          },
          {
            "required": [
              "history"
            ],
            "not": {
              "required": [
                "updates"
              ]
            }
          }
        ],
        "additionalProperties": false
      }
    }
    annotate_elementsAction

    Add, update, or delete a review note on one exact Website mock-up Layer, Frame, or current selection.

    View tool JSON
    {
      "name": "annotate_elements",
      "kind": "act",
      "impl": "imperative",
      "description": "Add, update, or delete a review note on one exact Website mock-up Layer, Frame, or current selection.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "nodeId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "target": {
            "type": "object",
            "properties": {
              "selection": {
                "type": "boolean",
                "const": true
              },
              "fileId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "fileName": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "frameId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "frameName": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "type": {
                "type": "string",
                "enum": [
                  "frame",
                  "text",
                  "rectangle",
                  "ellipse",
                  "line",
                  "arrow",
                  "polygon",
                  "image"
                ]
              },
              "content": {
                "type": "string",
                "maxLength": 6000
              },
              "bindingKey": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              }
            },
            "additionalProperties": false
          },
          "action": {
            "type": "string",
            "enum": [
              "add",
              "update",
              "delete"
            ]
          },
          "annotationId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "text": {
            "type": "string",
            "maxLength": 6000
          },
          "resolved": {
            "type": "boolean"
          }
        },
        "required": [
          "action"
        ],
        "oneOf": [
          {
            "required": [
              "nodeId"
            ],
            "not": {
              "required": [
                "target"
              ]
            }
          },
          {
            "required": [
              "target"
            ],
            "not": {
              "required": [
                "nodeId"
              ]
            }
          }
        ],
        "allOf": [
          {
            "oneOf": [
              {
                "required": [
                  "text"
                ],
                "properties": {
                  "action": {
                    "const": "add"
                  }
                }
              },
              {
                "required": [
                  "annotationId"
                ],
                "properties": {
                  "action": {
                    "const": "update"
                  }
                }
              },
              {
                "required": [
                  "annotationId"
                ],
                "properties": {
                  "action": {
                    "const": "delete"
                  }
                }
              }
            ]
          }
        ],
        "additionalProperties": false
      }
    }
    duplicate_elementsAction

    Deep-clone explicit Layers or Frames, preserving hierarchy and returning stable mappings.

    View tool JSON
    {
      "name": "duplicate_elements",
      "kind": "act",
      "impl": "imperative",
      "description": "Deep-clone explicit Layers or Frames, preserving hierarchy and returning stable mappings.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 20,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            }
          },
          "offset": {
            "type": "object",
            "properties": {
              "x": {
                "type": "number",
                "minimum": -20000,
                "maximum": 20000
              },
              "y": {
                "type": "number",
                "minimum": -20000,
                "maximum": 20000
              }
            },
            "required": [
              "x",
              "y"
            ],
            "additionalProperties": false
          },
          "force": {
            "type": "boolean",
            "description": "Deliberately include locked roots."
          }
        },
        "required": [
          "ids"
        ],
        "additionalProperties": false
      }
    }
    delete_elementsSensitive Action

    Delete explicit Layers or Frames with predictable cascading children.

    View tool JSON
    {
      "name": "delete_elements",
      "kind": "transact",
      "impl": "imperative",
      "description": "Delete explicit Layers or Frames with predictable cascading children.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 20,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            }
          },
          "force": {
            "type": "boolean",
            "description": "Deliberately delete locked content."
          }
        },
        "required": [
          "ids"
        ],
        "additionalProperties": false
      }
    }
    bind_context_fieldsAction

    Attach one semantic context key such as event.title to exact text or image Layers.

    View tool JSON
    {
      "name": "bind_context_fields",
      "kind": "act",
      "impl": "imperative",
      "description": "Attach one semantic context key such as event.title to exact text or image Layers.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "bindings": {
            "type": "array",
            "minItems": 1,
            "maxItems": 50,
            "items": {
              "type": "object",
              "properties": {
                "nodeId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                },
                "target": {
                  "type": "object",
                  "properties": {
                    "selection": {
                      "type": "boolean",
                      "const": true
                    },
                    "fileId": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 120
                    },
                    "fileName": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 120
                    },
                    "frameId": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 120
                    },
                    "frameName": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 120
                    },
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 120
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "frame",
                        "text",
                        "rectangle",
                        "ellipse",
                        "line",
                        "arrow",
                        "polygon",
                        "image"
                      ]
                    },
                    "content": {
                      "type": "string",
                      "maxLength": 6000
                    },
                    "bindingKey": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 80
                    }
                  },
                  "additionalProperties": false
                },
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 80
                },
                "sourceLabel": {
                  "type": "string",
                  "maxLength": 120
                }
              },
              "required": [
                "key"
              ],
              "oneOf": [
                {
                  "required": [
                    "nodeId"
                  ]
                },
                {
                  "required": [
                    "target"
                  ]
                }
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "bindings"
        ],
        "additionalProperties": false
      }
    }
    apply_context_valuesAction

    Apply semantic values across all bound unlocked text or image Layers without changing their styling or layout.

    View tool JSON
    {
      "name": "apply_context_values",
      "kind": "act",
      "impl": "imperative",
      "description": "Apply semantic values across all bound unlocked text or image Layers without changing their styling or layout.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "values": {
            "type": "array",
            "minItems": 1,
            "maxItems": 30,
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 80
                },
                "value": {
                  "anyOf": [
                    {
                      "type": "string",
                      "maxLength": 6000
                    },
                    {
                      "type": "object",
                      "properties": {
                        "assetId": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 120
                        },
                        "label": {
                          "type": "string",
                          "maxLength": 160
                        },
                        "alt": {
                          "type": "string",
                          "maxLength": 240
                        }
                      },
                      "required": [
                        "assetId"
                      ],
                      "additionalProperties": false
                    }
                  ]
                }
              },
              "required": [
                "key",
                "value"
              ],
              "additionalProperties": false
            }
          },
          "force": {
            "type": "boolean",
            "description": "Deliberately apply values to locked Layers."
          }
        },
        "required": [
          "values"
        ],
        "additionalProperties": false
      }
    }
    import_and_place_assetAction

    Create or deduplicate one small image Asset and place it inside a Frame. A placement landing in a named Image Area, Image Box, or Image Placeholder replaces that target at its exact bounds with a centered, aspect-ratio-preserving cover crop.

    View tool JSON
    {
      "name": "import_and_place_asset",
      "kind": "act",
      "impl": "imperative",
      "description": "Create or deduplicate one small image Asset and place it inside a Frame. A placement landing in a named Image Area, Image Box, or Image Placeholder replaces that target at its exact bounds with a centered, aspect-ratio-preserving cover crop.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1500000
          },
          "filename": {
            "type": "string",
            "minLength": 1,
            "maxLength": 160
          },
          "mimeType": {
            "type": "string",
            "enum": [
              "image/png",
              "image/jpeg",
              "image/webp",
              "image/gif",
              "image/svg+xml"
            ]
          },
          "source": {
            "type": "string",
            "maxLength": 40
          },
          "target": {
            "type": "object",
            "properties": {
              "fileId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "fileName": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "frameId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "frameName": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              }
            },
            "oneOf": [
              {
                "required": [
                  "frameId"
                ]
              },
              {
                "required": [
                  "frameName"
                ]
              }
            ],
            "additionalProperties": false
          },
          "position": {
            "type": "object",
            "properties": {
              "x": {
                "type": "number",
                "minimum": -20000,
                "maximum": 20000
              },
              "y": {
                "type": "number",
                "minimum": -20000,
                "maximum": 20000
              }
            },
            "required": [
              "x",
              "y"
            ],
            "additionalProperties": false
          },
          "width": {
            "type": "number",
            "minimum": 1,
            "maximum": 12000
          },
          "height": {
            "type": "number",
            "minimum": 1,
            "maximum": 12000
          },
          "name": {
            "type": "string",
            "maxLength": 120
          },
          "alt": {
            "type": "string",
            "maxLength": 240
          }
        },
        "required": [
          "data",
          "filename",
          "mimeType",
          "target",
          "position"
        ],
        "additionalProperties": false
      }
    }
    validate_documentAction

    Check Frames and Layers for overflow, images, empty text, dimensions, binding consistency, locks, hidden critical content, and export blockers.

    View tool JSON
    {
      "name": "validate_document",
      "kind": "act",
      "impl": "imperative",
      "description": "Check Frames and Layers for overflow, images, empty text, dimensions, binding consistency, locks, hidden critical content, and export blockers.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "frameIds": {
            "type": "array",
            "maxItems": 16,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            }
          }
        },
        "additionalProperties": false
      }
    }
    export_framesAction

    Prepare explicit Frames as PNG, SVG, static HTML/CSS, or File JSON and return actual file metadata.

    View tool JSON
    {
      "name": "export_frames",
      "kind": "act",
      "impl": "imperative",
      "description": "Prepare explicit Frames as PNG, SVG, static HTML/CSS, or File JSON and return actual file metadata.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "frameIds": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            }
          },
          "format": {
            "type": "string",
            "enum": [
              "png",
              "svg",
              "html",
              "json"
            ]
          },
          "scale": {
            "type": "integer",
            "enum": [
              1,
              2
            ]
          }
        },
        "required": [
          "frameIds",
          "format"
        ],
        "additionalProperties": false
      }
    }