Tools

Available MCP tool groups

The MCP server exposes both public-API-backed tools and MCP-only adapter tools.

Scenes

  • list_scenes
  • create_scene
  • get_scene
  • update_scene
  • delete_scene
  • search_scene_content
  • get_scene_content
  • edit_scene_content

search_scene_content is the recommended read tool when an agent only needs to locate shapes, labels, or text without loading the entire scene payload. It returns full matching Excalidraw element nodes.

Its default contains mode is case-insensitive and ignores common separators such as spaces, hyphens, underscores, dots, commas, colons, semicolons, slashes, and backslashes. For example, Auth Flow, auth-flow, auth_flow, and authflow will all match each other.

Use glob only when you intentionally want wildcard matching with * and ?.

Use get_scene_content only when you need the full scene payload instead of just the matching nodes.

edit_scene_content is the higher-level MCP write tool for add, update, and delete operations, including label expansion and bound-text handling.

Prefer label over standalone text when the text belongs to a shape. Use standalone text only for titles, subtitles, paragraphs, and intentionally separate annotations. For buttons, badges, cards, and boxed callouts, prefer rectangle label text instead of overlaying standalone text.

Use \n for intentional standalone text wrapping, and give text elements extra width and height. Avoid exact or tight text bounds; clipping means the bounds are too small, not that the text value is missing.

Prefer rectangles/cards for text-bearing content blocks. Use diamonds mainly for decision nodes in diagrams, not for dense or multiline content.

For add, send a JSON array string of new element skeletons and do not include id. The server generates persisted IDs for newly added elements.

Use tempId only for same-request references between newly added elements, such as frameId, containerId, startBinding.elementId, and endBinding.elementId.

Use real persisted IDs for update, delete, or when referencing elements that already exist in the scene.

Arrows that point at shapes must include startBinding and/or endBinding. Arrow geometry alone is decorative and will not stay attached. For same-request shape-to-shape arrows, add tempId to both target shapes and reference those tempIds from startBinding.elementId and endBinding.elementId. Use fixed points such as right [1, 0.5], left [0, 0.5], top [0.5, 0], and bottom [0.5, 1]. Same-request tempId arrow bindings are supported; the MCP adapter keeps target shape boundElements in sync, so agents do not need a separate call just to get real IDs.

For label updates, always send label as an object such as { "text": "New Label" }, not as a plain string.

edit_scene_content applies operations in this order: delete, then update, then add.

The low-level REST scene-content write endpoints still exist in the public API, but they are intentionally not exposed as MCP tools. Use edit_scene_content for MCP writes.

For element and scene-content reference, see Scene Content Schema.

Format guides

  • read_diagram_format
  • read_presentation_format
  • read_freeform_format

Call the guide matching the task before the first related scene write in a session. Diagram and presentation guides describe their specialized workflows; the freeform guide covers annotations, sticky notes, moodboards, wireframes, charts, and other custom compositions. These tools replace the former monolithic format guide.

Diagrams

  • create_diagram

create_diagram builds editable diagrams from semantic nodes, edges, and optional groups. It measures labels, lays out the graph, routes bound elbow arrows, and reserves room for edge labels. Use DOWN for workflows and flowcharts or RIGHT for architecture maps and pipelines. Use edit_scene_content for follow-up visual tweaks or layouts such as swimlanes and timelines that require custom positioning.

Presentations

  • create_slide
  • update_slide
  • list_slides

Use one frame per slide. create_slide positions and orders the frame and returns its ID, bounds, safe area, and suggested layout regions. Fill that frame with edit_scene_content, setting every child element's frameId and using absolute canvas coordinates inside the returned safe area. Use update_slide for titles, presenter notes, and slide order so frame metadata is merged safely. Use list_slides to review ordered slides, bounds, safe areas, notes, and element counts.

Images and verification

  • add_image
  • take_screenshot

add_image accepts one public URL or base64 data URL, supports PNG, JPEG, GIF, WebP, and SVG, and can place the resulting editable image inside a slide frame. It detects natural dimensions and preserves the aspect ratio when only one render dimension is supplied.

take_screenshot renders the full scene or one frame as PNG. Use it after substantial scene writes to inspect visual correctness and fix clipping, overlaps, routing, or spacing problems.

Collections

  • list_collections
  • create_collection
  • get_collection
  • update_collection
  • delete_collection
  • list_collection_scenes
  • create_collection_scene

Personal MCP/API keys can use private as the collection ID to list, create, and move scenes in the key owner's virtual private collection. Workspace keys cannot access it. The private collection already exists virtually and cannot be created, renamed, or deleted; create_collection always creates a regular shared collection.

Workspace

  • get_workspace
  • update_workspace

Users

  • list_workspace_users
  • get_workspace_user
  • update_workspace_user
  • remove_workspace_user

Invites

  • list_invites
  • create_email_invite
  • create_invite_link
  • get_invite
  • update_invite
  • delete_invite

Use create_email_invite for a specific recipient. Use create_invite_link for a reusable link with optional usage and domain restrictions.

Logs

  • list_logs

Your MCP client may show fewer tools than listed above if your API key does not include permissions for the underlying routes. MCP-only tools still follow the same route permission checks.

Last updated on

On this page