The most comprehensive MCP server for tldraw — programmatic canvas toolkit for AI agents
20 tools with complete schemas and descriptions. Naming is verb-first and clear (create_element, update_element, delete_element, etc.). Descriptions are present and actionable (avg ~120 chars), exceeding the 10-char minimum. All parameters have type definitions and descriptions. However, descriptions lack LLM-optimized guidance on WHEN to use each tool vs. alternatives, and error recovery paths are not documented in tool descriptions. Output schemas are not explicitly documented in the tool definitions themselves, only inferred from implementation. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are visible in the schema. Batch tools (batch_create_elements, batch_update_elements) are well-designed for composition. Export tools (export_png, export_svg, export_pdf, export_jpg) lack detail on output format and size constraints.
Create multiple elements in one atomic operation. Assign custom `id` to shapes so arrows can reference them via startElementId/endElementId. Much more efficient than multiple create_element calls.
Update multiple elements in one atomic operation. More efficient than multiple update_element calls.
Delete all elements from the canvas. This is irreversible.
Create a new tldraw shape/text/arrow on the canvas. For arrows use startElementId/endElementId to bind to shapes. Call read_diagram_guide first for color names and best practices.
Save a named snapshot of the current canvas state.
Delete a canvas element by ID.
Delete a named snapshot.
Output schemas not documented in tool definitions. LLMs cannot plan downstream calls or extract required fields without explicit return type documentation.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are missing from all tool definitions. Agents cannot distinguish safe reads from destructive writes without explicit hints.
Export tools (export_png, export_svg, export_pdf, export_jpg) lack output format details: base64 encoding, max size, MIME type, and when to use each format. Descriptions are generic (60 chars avg).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Export canvas as JPEG image (base64-encoded). Works without a browser open.
Export canvas as PDF. Supports multiple paper sizes and orientations.
Export canvas as PNG image (base64-encoded). Works without a browser open.
Export canvas as SVG (base64-encoded).
Get a single canvas element by ID.
Group multiple elements together. Groups can be nested.
Automatically arrange elements using a layout algorithm (dagre, force, or grid). Returns new positions for each element.
List all saved snapshots.
List/filter canvas elements. Supports type filter and bounding box. Returns all elements when called with no arguments.
Get a comprehensive guide to tldraw shapes, colors, and best practices for creating diagrams.
Restore the canvas to a previously saved snapshot.
Ungroup a group element, promoting its children to the top level.
Update properties of an existing element (partial update — only provided fields change).
Error handling and recovery guidance absent from tool descriptions. No mention of what happens on invalid element IDs, circular group references, or snapshot conflicts.
Descriptions lack WHEN-to-use guidance. No distinction between batch_create_elements vs. create_element, or when layout_elements should be called. LLMs must infer intent from names alone.