Whiteboard

47 tools. 34 can modify or destroy data without limits.

8 destructive tools with no built-in limits. Policy required.

Last updated:

34 can modify or destroy data
13 read-only
47 tools total

Community server · catalogue entry verified 29/06/2026

How to control Whiteboard ↓

What Whiteboard exposes to your agents

Read (13) Write / Execute (26) Destructive / Financial (8)
Critical Risk

The most dangerous Whiteboard tools

34 of Whiteboard's 47 tools can modify, destroy, or commit something on every call — and an agent calls them with no built-in limits.

How to control Whiteboard

PolicyLayer is an MCP gateway — it sits between your AI agents and Whiteboard, and nothing reaches the server without passing your rules. These are the rules we recommend:

Deny destructive operations
{
  "canvas_clear": {
    "deny_if": [
      {
        "conditions": [],
        "on_deny": "Blocked by default. Requires approval."
      }
    ]
  }
}

Destructive tools should never be available to autonomous agents without human approval.

Rate limit write operations
{
  "align_elements": {
    "limits": [
      {
        "counter": "align_elements_per_hour",
        "window": "hour",
        "max": 30,
        "scope": "grant"
      }
    ]
  }
}

Prevents bulk unintended modifications from agents caught in loops.

Cap read operations
{
  "canvas_export_json": {
    "limits": [
      {
        "counter": "canvas_export_json_per_minute",
        "window": "minute",
        "max": 60,
        "scope": "grant"
      }
    ]
  }
}

Controls API costs and prevents retry loops from exhausting upstream rate limits.

  1. Create a free account and register Whiteboard — nothing to install.
  2. Add these rules — paste them, or build them visually. Tune the limits to your setup.
  3. Point your MCP client (Claude, Cursor, anything) at your gateway URL.
ENFORCE POLICY ON WHITEBOARD →

Instant setup, no code required.

All 47 Whiteboard tools

WRITE 24 tools
Write align_elements Align multiple elements to a shared edge or centre. left / right / center act on x; top / bottom / middle act Write annotate Add annotation (arrow, text, rectangle, highlight, box_with_label) to the whiteboard canvas. box_with_label is Write annotate_batch Add multiple annotations in one request (single snapshot fetch, single commit, single broadcast). Supports opt Write assign_to_group Add elements to a logical group by appending a groupId to their Write canvas_auto_layout Re-layout the canvas as a hierarchical directed graph. Rectangles become nodes, arrows become edges, and posit Write canvas_create Create a new whiteboard canvas Write create_embed Embed a web page or media URL into the canvas as an Excalidraw embeddable element. Use for annotating live web Write create_frame Create an Excalidraw frame element. A frame groups child elements visually and moves them together. Pass Write distribute_elements Distribute multiple elements with even spacing along an axis. Sorts by the chosen axis, keeps the leading and Write library_insert_batch Insert multiple items from the same Excalidraw library onto a canvas in one snapshot/update cycle. Source is o Write library_insert_item Insert a specific item from an Excalidraw library onto the canvas. Source is one of: libraryUrl / libraryPath Write library_install Register a library URL at the session level. The URL is persisted to disk so the browser auto-restores it on r Write load_image Load an image file onto the whiteboard canvas Write move_elements Translate multiple elements by the same (dx, dy). All-or-nothing: if any id is missing, nothing is moved. Write optimize_canvases Compact Loro op-log history (shallow-snapshot) on one canvas (slug given) or every canvas in the current works Write palette_set Merge entries into the workspace color palette and return the resulting palette. Write reorder_elements Change z-order (layer) of elements. Write template_insert Insert a built-in or file-based template onto a canvas. Templates are resolved into annotate_batch annotations Write update_element Patch fields of an existing element in-place (e.g., change text, strokeColor, x/y/width/height). Any Excalidra Write update_frame_members Add/remove elements from an existing frame without recreating it (frameId stays stable so export_png({frameId} Write user_library_metadata_set Merge aliases / notes / scales into a user-level library metadata manifest. Requires the current revision and Write user_library_save Save a user-level library to ~/.excalidraw/.user-libraries/{name}.excalidrawlib. Provide EITHER fromUrl (fetch Write version_restore Restore a saved version. Default = in-place reconcile against the source canvas. Pass targetSlug to instead wr Write version_save Save a labeled version of the canvas state. Returns versionId for later restore. Versions are slug-scoped (can
READ 13 tools
Read canvas_export_json Export the canvas as a standard Excalidraw JSON (.excalidraw) file that can be opened in the Excalidraw deskto Read canvas_inspect Inspect the current state of a whiteboard canvas. Returns elementCount (raw Excalidraw node count — composite Read canvas_list List whiteboard canvases. Optional filters narrow the output when multiple workspaces / canvases pile up. Read export_png Export the whiteboard canvas as a PNG file Read library_catalog_list Search the official Excalidraw library catalog (libraries.excalidraw.com/libraries.json). Use this to discover Read library_list_installed List library URLs that have been installed to this session (via library_install or the browser library dialog) Read library_list_items List items in an Excalidraw library. Source is one of: libraryUrl (HTTPS, e.g. libraries.excalidraw.com), libr Read list_groups List all logical groups on the canvas and their member element ids (tombstoned members excluded). Read-only. Read palette_get Get the workspace color palette used by annotate / annotate_batch semantic tokens. Read template_list List built-in whiteboard templates/components that can be inserted with template_insert. Templates are lightwe Read user_library_list List user-level libraries saved in ~/.excalidraw/.user-libraries/. Returns { name, path, itemCount } for each. Read user_library_metadata_get Load user-level library metadata from ~/.excalidraw/.user-libraries/{name}.meta.json. Returns an empty manifes Read version_list List saved versions for a canvas (most recent first). Combine with version_restore to replay a specific labele

Related servers

Other MCP servers with similar tools — same risk classification, starter policies for each.

Questions about Whiteboard

Can an AI agent delete data through the Whiteboard MCP server? +

Yes. The Whiteboard server exposes 8 destructive tools including canvas_clear, delete_element, delete_elements. These permanently remove resources with no undo. PolicyLayer blocks destructive tools by default so they never reach the upstream server.

How do I prevent bulk modifications through Whiteboard? +

The Whiteboard server has 24 write tools including align_elements, annotate, annotate_batch. Set a rate limit in your policy -- for example, 10 calls per hour prevents an agent from making more than 10 modifications per hour. PolicyLayer enforces this at the gateway, before calls reach Whiteboard.

How many tools does the Whiteboard MCP server expose? +

47 tools across 3 categories: Destructive, Read, Write. 13 are read-only. 34 can modify, create, or delete data.

How do I enforce a policy on Whiteboard? +

Register the Whiteboard MCP server in PolicyLayer, apply the suggested rules above (adjust the limits to your use case), and point your AI client at the PolicyLayer proxy URL instead of the server directly. Your agents keep the same tools; PolicyLayer evaluates every call against policy before it executes. Nothing to install, live in minutes.

Enforce policy on every Whiteboard tool call.

Deterministic rules across all 47 Whiteboard tools. Per-identity grants. Full audit log. Live in minutes. Nothing to install.

Instant setup, no code required.

47 Whiteboard tools catalogued and risk-classified — across an index of 43,000+ MCP servers.

// GET IN TOUCH

Have a question or want to learn more? Send us a message.

Message sent.

We'll get back to you soon.