← WebMCP Directory

agentdraw.app

agentdraw.app

live Unverified (seed import) Productivity & Business 8 tools imperative implementation

Excalidraw with WebMCP: a local-first whiteboard that an AI agent in ChatGPT or Codex can read and draw on. No install, no server.

First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com

Answer 2 · Act 6 · Transact 0 · Score: Not yet scored

Tool inspector

apply_patch

act imperative

Atomically create, update, delete, move, duplicate, or restyle up to 50 elements per call: rectangles, ellipses, diamonds, text, arrows and lines, frames, embeddable web pages, and images from a base64 dataUrl. An embeddable takes either link (a web page) or html (your own page, rendered live in a sandboxed frame; update it with html again). Place a new element without coordinates with at: { relativeTo, side, gap?, align? } and it lands beside that element, joining its frame. move shifts ids by dx/dy with their labels and frame children; duplicate copies ids (labels, children, and the arrows between them included) offset by dx/dy and reports each copy with its sourceId; style restyles ids in one go. Labels are measured automatically; update a shape or arrow with label: { text } to rename it (label: null removes it), and resizing re-centres the label. Text and labels take fontSize, fontFamily (hand, normal, code, display), textAlign, and verticalAlign, on create and on update. Arrows with start/end { id } are anchored to those shapes’ edges and re-routed, labels included, when you move or resize the shapes. Moving a frame moves its children and labels. Operations may reference elements created anywhere in the same patch (an arrow before its shapes, a child before its frame); they are applied in dependency order. Requires the epoch and revision from your latest inspect_canvas or apply_patch; a stale revision is rejected whole with revision_conflict, and every invalid operation is listed in error.details.errors. Returns a patchId for revert_patch, created ids with bounds and boundTextId, the ids you updated, the ids touched as side effects, and the ids removed.

Input schema

PropertyTypeRequiredDescription
epoch string yes —
baseRevision integer yes —
operations array yes —
Raw JSON schema
{
  "type": "object",
  "properties": {
    "epoch": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "baseRevision": {
      "type": "integer",
      "minimum": 0
    },
    "operations": {
      "type": "array",
      "minItems": 1,
      "maxItems": 50,
      "items": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "op": {
                "const": "create"
              },
              "id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,119}$"
              },
              "type": {
                "enum": [
                  "rectangle",
                  "ellipse",
                  "diamond",
                  "text",
                  "arrow",
                  "line",
                  "frame",
                  "embeddable",
                  "image"
                ]
              },
              "x": {
                "type": "number",
                "minimum": -1000000,
                "maximum": 1000000
              },
              "y": {
                "type": "number",
                "minimum": -1000000,
                "maximum": 1000000
              },
              "width": {
                "type": "number",
                "minimum": 1,
                "maximum": 20000
              },
              "height": {
                "type": "number",
                "minimum": 1,
                "maximum": 20000
              },
              "angle": {
                "type": "number"
              },
              "frameId": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,119}$"
              },
              "locked": {
                "type": "boolean"
              },
              "link": {
                "type": "string",
                "maxLength": 2048
              },
              "customData": {
                "type": "object"
              },
              "strokeColor": {
                "type": "string",
                "pattern": "^(transparent|#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8}))$"
              },
              "backgroundColor": {
                "type": "string",
                "pattern": "^(transparent|#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8}))$"
              },
              "fillStyle": {
                "enum": [
                  "hachure",
                  "cross-hatch",
                  "solid",
                  "zigzag"
                ]
              },
              "strokeWidth": {
                "type": "number",
                "minimum": 0.5,
                "maximum": 8
              },
              "strokeStyle": {
                "enum": [
                  "solid",
                  "dashed",
                  "dotted"
                ]
              },
              "roughness": {
                "type": "number",
                "minimum": 0,
                "maximum": 2
              },
              "opacity": {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              },
              "roundness": {
                "enum": [
                  "round",
                  "sharp"
                ]
              },
              "text": {
                "type": "string",
                "maxLength": 4000
              },
              "fontSize": {
                "type": "number",
                "minimum": 8,
                "maximum": 200
              },
              "fontFamily": {
                "enum": [
                  "hand",
                  "normal",
                  "code",
                  "display"
                ]
              },
              "textAlign": {
                "enum": [
                  "left",
                  "center",
                  "right"
                ]
              },
              "verticalAlign": {
                "enum": [
                  "top",
                  "middle",
                  "bottom"
                ]
              },
              "label": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string",
                    "maxLength": 4000
                  },
                  "fontSize": {
                    "type": "number",
                    "minimum": 8,
                    "maximum": 200
                  },
                  "fontFamily": {
                    "enum": [
                      "hand",
                      "normal",
                      "code",
                      "display"
                    ]
                  },
                  "textAlign": {
                    "enum": [
                      "left",
                      "center",
                      "right"
                    ]
                  },
                  "verticalAlign": {
                    "enum": [
                      "top",
                      "middle",
                      "bottom"
                    ]
                  }
                },
                "required": [
                  "text"
                ],
                "additionalProperties": false
              },
              "name": {
                "type": "string",
                "maxLength": 200
              },
              "points": {
                "type": "array",
                "minItems": 2,
                "maxItems": 500,
                "items": {
                  "type": "array",
                  "items": {
                    "type": "number"
                  },
                  "minItems": 2,
                  "maxItems": 2
                }
              },
              "start": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,119}$"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "x": {
                        "type": "number",
                        "minimum": -1000000,
                        "maximum": 1000000
                      },
                      "y": {
                        "type": "number",
                        "minimum": -1000000,
                        "maximum": 1000000
                      }
                    },
                    "required": [
                      "x",
                      "y"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "end": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,119}$"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "x": {
                        "type": "number",
                        "minimum": -1000000,
                        "maximum": 1000000
                      },
                      "y": {
                        "type": "number",
                        "minimum": -1000000,
                        "maximum": 1000000
                      }
                    },
                    "required": [
                      "x",
                      "y"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "startArrowhead": {
                "enum": [
                  "arrow",
                  "bar",
                  "dot",
                  "triangle",
                  "none"
                ]
              },
              "endArrowhead": {
                "enum": [
                  "arrow",
                  "bar",
                  "dot",
                  "triangle",
                  "none"
                ]
              },
              "at": {
                "type": "object",
                "properties": {
                  "relativeTo": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,119}$"
                  },
                  "side": {
                    "enum": [
                      "right",
                      "left",
                      "below",
                      "above"
                    ]
                  },
                  "gap": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 5000
                  },
                  "align": {
                    "enum": [
                      "start",
                      "center",
                      "end"
                    ]
                  }
                },
                "required": [
                  "relativeTo",
                  "side"
                ],
                "additionalProperties": false
              },
              "dataUrl": {
                "type": "string",
                "maxLength": 1500000
              },
              "html": {
                "type": "string",
                "maxLength": 200000
              }
            },
            "required": [
              "op",
              "type"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "op": {
                "const": "update"
              },
              "id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,119}$"
              },
              "x": {
                "type": "number",
                "minimum": -1000000,
                "maximum": 1000000
              },
              "y": {
                "type": "number",
                "minimum": -1000000,
                "maximum": 1000000
              },
              "width": {
                "type": "number",
                "minimum": 1,
                "maximum": 20000
              },
              "height": {
                "type": "number",
                "minimum": 1,
                "maximum": 20000
              },
              "angle": {
                "type": "number"
              },
              "frameId": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,119}$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "label": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "text": {
                        "type": "string",
                        "maxLength": 4000
                      },
                      "fontSize": {
                        "type": "number",
                        "minimum": 8,
                        "maximum": 200
                      },
                      "fontFamily": {
                        "enum": [
                          "hand",
                          "normal",
                          "code",
                          "display"
                        ]
                      },
                      "textAlign": {
                        "enum": [
                          "left",
                          "center",
                          "right"
                        ]
                      },
                      "verticalAlign": {
                        "enum": [
                          "top",
                          "middle",
                          "bottom"
                        ]
                      }
                    },
                    "required": [
                      "text"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "locked": {
                "type": "boolean"
              },
              "link": {
                "anyOf": [
                  {
                    "type": "string",
                    "maxLength": 2048
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "customData": {
                "anyOf": [
                  {
                    "type": "object"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "strokeColor": {
                "type": "string",
                "pattern": "^(transparent|#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8}))$"
              },
              "backgroundColor": {
                "type": "string",
                "pattern": "^(transparent|#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8}))$"
              },
              "fillStyle": {
                "enum": [
                  "hachure",
                  "cross-hatch",
                  "solid",
                  "zigzag"
                ]
              },
              "strokeWidth": {
                "type": "number",
                "minimum": 0.5,
                "maximum": 8
              },
              "strokeStyle": {
                "enum": [
                  "solid",
                  "dashed",
                  "dotted"
                ]
              },
              "roughness": {
                "type": "number",
                "minimum": 0,
                "maximum": 2
              },
              "opacity": {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              },
              "roundness": {
                "enum": [
                  "round",
                  "sharp"
                ]
              },
              "text": {
                "type": "string",
                "maxLength": 4000
              },
              "fontSize": {
                "type": "number",
                "minimum": 8,
                "maximum": 200
              },
              "fontFamily": {
                "enum": [
                  "hand",
                  "normal",
                  "code",
                  "display"
                ]
              },
              "textAlign": {
                "enum": [
                  "left",
                  "center",
                  "right"
                ]
              },
              "verticalAlign": {
                "enum": [
                  "top",
                  "middle",
                  "bottom"
                ]
              },
              "name": {
                "type": "string",
                "maxLength": 200
              },
              "html": {
                "type": "string",
                "maxLength": 200000
              }
            },
            "required": [
              "op",
              "id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "op": {
                "const": "delete"
              },
              "id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,119}$"
              }
            },
            "required": [
              "op",
              "id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "op": {
                "const": "move"
              },
              "ids": {
                "type": "array",
                "minItems": 1,
                "maxItems": 50,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,119}$"
                }
              },
              "dx": {
                "type": "number",
                "minimum": -1000000,
                "maximum": 1000000
              },
              "dy": {
                "type": "number",
                "minimum": -1000000,
                "maximum": 1000000
              }
            },
            "required": [
              "op",
              "ids"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "op": {
                "const": "duplicate"
              },
              "ids": {
                "type": "array",
                "minItems": 1,
                "maxItems": 50,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,119}$"
                }
              },
              "dx": {
                "type": "number",
                "minimum": -1000000,
                "maximum": 1000000
              },
              "dy": {
                "type": "number",
                "minimum": -1000000,
                "maximum": 1000000
              }
            },
            "required": [
              "op",
              "ids"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "op": {
                "const": "style"
              },
              "ids": {
                "type": "array",
                "minItems": 1,
                "maxItems": 50,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,119}$"
                }
              },
              "strokeColor": {
                "type": "string",
                "pattern": "^(transparent|#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8}))$"
              },
              "backgroundColor": {
                "type": "string",
                "pattern": "^(transparent|#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8}))$"
              },
              "fillStyle": {
                "enum": [
                  "hachure",
                  "cross-hatch",
                  "solid",
                  "zigzag"
                ]
              },
              "strokeWidth": {
                "type": "number",
                "minimum": 0.5,
                "maximum": 8
              },
              "strokeStyle": {
                "enum": [
                  "solid",
                  "dashed",
                  "dotted"
                ]
              },
              "roughness": {
                "type": "number",
                "minimum": 0,
                "maximum": 2
              },
              "opacity": {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              },
              "roundness": {
                "enum": [
                  "round",
                  "sharp"
                ]
              }
            },
            "required": [
              "op",
              "ids"
            ],
            "additionalProperties": false
          }
        ]
      }
    }
  },
  "required": [
    "epoch",
    "baseRevision",
    "operations"
  ],
  "additionalProperties": false
}

Similar websites

econsor.de

econsor.de

German digital agency building portals, e-commerce sites and online marketing, combining strategy, design and AI to grow clients' visibility and customer base.

live Unverified Productivity & Business Transact tools
143 tools A0 / Act142 / T1 Not yet scored Seen 2026-11-05
econsor_click_search econsor_click_image econsor_click_menu econsor_click_burger_menu_icon econsor_click_previous_button
Inspect tools
inkframe-eta.vercel.app

inkframe-eta.vercel.app

Browser-native Elah video editor for 9:16 and 16:9 exports

live Unverified Productivity & Business Transact tools
87 tools A12 / Act71 / T4 Not yet scored Seen 2026-11-05
get_capabilities list_templates navigate_workspace open_template editor_inspect_video_moments
Inspect tools
agentdesk-demo.vercel.app

agentdesk-demo.vercel.app

Meridian Ops

live Unverified Productivity & Business Transact tools
83 tools A43 / Act24 / T16 Not yet scored Seen 2026-11-05
find_capabilities invoke_capability get_context get_action_status search_customers
Inspect tools
eworker.ca

eworker.ca

E-Worker is business infrastructure powered by AI, with focused apps and connected business work.

live Unverified Productivity & Business
73 tools A10 / Act63 / T0 Not yet scored Seen 2026-11-05
eworker_site_status eworker_list_apps eworker_resolve_app eworker_open_app ewdoc_status
Inspect tools

Related on Influzer