Local-first personal whiteboard workspace for developers and AI agents with Model Context Protocol (MCP) support for autonomous diagramming and canvas manipulation
OpenBoard provides 17 well-named tools with consistent verb_noun patterns (list_, create_, get_, update_, delete_, etc.). All tools have descriptions (avg ~150 chars, within baseline 194). Input schemas are present with type definitions. However, critical gaps exist: (1) parameter descriptions are sparse or missing for many tools (e.g., create_shapes 'shapes' array lacks element schema documentation); (2) output schemas are not documented, LLMs cannot predict response structure for chaining; (3) error handling is absent, no recovery guidance or actionable error messages; (4) some parameters accept aliases (board_id/boardId, shape_ids/shapeIds) without clear mutual-exclusivity documentation; (5) no pagination support on list_boards despite potentially large result sets. Tool naming is strong (get_canvas_state, create_arrow, group_shapes are unambiguous), but parameter design needs refinement for LLM clarity.
Create a directional arrow connector between two shapes on a board, with optional label text.
Create a new whiteboard board in OpenBoard. Returns the newly created board metadata and unique board_id, ready for adding shapes.
Create one or more shapes on a specified OpenBoard board. Supports geometric shapes (rectangle, ellipse, triangle, diamond, cloud, star), notes, text, frames, and arrows (with optional "from" and "to" shape ID connections). Works whether or not the board is open in a browser.
Delete a whiteboard board by ID (moves to Trash). Can be restored with restore_board.
Delete one or more shapes from a board by their shape IDs.
Duplicate an existing whiteboard board with a new unique ID and identical canvas contents.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nested objects) for downstream tool chaining. E.g., create_board returns 'newly created board metadata' but no schema is visible.
Parameter aliases (board_id/boardId, shape_ids/shapeIds) lack mutual-exclusivity documentation. LLMs may pass both, causing ambiguous or failing calls. No guidance on which to prefer.
create_shapes and update_shapes lack detailed parameter documentation. 'shapes' array and 'updates' array have no element schema, property descriptions, or examples. LLMs cannot infer valid shape object structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Export the full serialized tldraw JSON schema for a board for version control, backup, or CI/CD pipelines.
Set or toggle the favorite bookmark status for a whiteboard board.
Retrieve metadata and high-level summary of a specific whiteboard board by Board ID. Note: to inspect shapes, coordinates, and relationships on the canvas, use get_canvas_state instead.
Capture a headless visual inspection screenshot of a whiteboard board as an SVG vector image (and base64 image block). Frames content automatically with padding, handles empty boards cleanly, and works without a running browser.
Inspect the semantic canvas state of a whiteboard board, returning shapes, geometries, text labels, coordinates, dimensions, bounds, and arrow relationship bindings (from/to connected shapes).
Group multiple shapes into a visual container frame with an optional title label.
Import a tldraw JSON schema into a new or existing board, replacing or merging canvas contents.
Discover and list whiteboard boards available in OpenBoard. Filter by favorites, recent, or trash, or search by title/description. Returns concise board summaries with IDs for subsequent operations.
Rename an existing whiteboard board.
Restore a deleted whiteboard board from Trash back to active workspace.
Update one or more existing shapes on a board by ID. Modify coordinates, dimensions, colors, text labels, rotation, opacity, or other visual properties.
No error handling or recovery guidance. Tools lack descriptions of failure modes, retryability, or actionable error messages. E.g., 'board not found' should suggest search_boards or list available boards.
list_boards lacks pagination support (no limit, offset, or cursor parameters). Large result sets risk context window exhaustion. Baseline pattern requires pagination for discovery tools.