Tools
Available MCP tool groups
The MCP server exposes both public-API-backed tools and MCP-only adapter tools.
Scenes
list_scenescreate_sceneget_sceneupdate_scenedelete_scenesearch_scene_contentget_scene_contentedit_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_formatread_presentation_formatread_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_slideupdate_slidelist_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_imagetake_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_collectionscreate_collectionget_collectionupdate_collectiondelete_collectionlist_collection_scenescreate_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_workspaceupdate_workspace
Users
list_workspace_usersget_workspace_userupdate_workspace_userremove_workspace_user
Invites
list_invitescreate_email_invitecreate_invite_linkget_inviteupdate_invitedelete_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