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
  • read_excalidraw_format
  • 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.

If the user asks for a presentation, slide deck, keynote, pitch deck, or slides, use native frame elements and treat each frame as one slide.

For presentations:

  • default slide size is 854x480
  • place slides left-to-right with about 350 spacing
  • assign all slide content a frameId
  • use absolute canvas coordinates for framed content; frameId assigns membership only and does not offset child x/y values
  • keep content inside a slide safe area, usually at least 48-64 px from the frame's top/left and 48 px from the right/bottom edges
  • check framed element bounds before writing: x >= frame.x, y >= frame.y, x + width <= frame.x + frame.width, and y + height <= frame.y + frame.height
  • prefer standalone text for titles and body copy
  • use rectangles/cards for structured content
  • use \n for intentional standalone text line breaks; do not use narrow manual width/height values to force wrapping
  • make standalone text bounds generous because bounds control visible text; if double-click reveals more text than normal rendering, the bounds are too small
  • prefer 3-6 slides unless the user asks for a specific count
  • avoid freeform poster layouts when slides were requested
  • avoid multiline text inside circles or decorative shapes

For example, if a frame starts at x: 100, a title with a 64px inset starts at x: 164, not x: 64.

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.

read_excalidraw_format returns the Excalidraw element-format reference used by the ergonomic editing flow. It includes MCP payload rules plus agent-facing diagram guidance for layouts, visual patterns, labels, slides, and technical evidence artifacts.

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

Collections

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

Workspace

  • get_workspace
  • update_workspace

Users

  • list_workspace_users
  • get_workspace_user
  • update_workspace_user
  • remove_workspace_user

Invites

  • list_invites
  • create_invite
  • get_invite
  • update_invite
  • delete_invite

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