Not reviewed
No score, grade or rank. This listing is facts from the official MCP registry and our own checks, and it stays out of the rankings until the panel reviews it.
Real-time collaborative whiteboard — AI agents and humans edit the same board live over MCP.
Facts
- MCP registry
app.cnvs/whiteboard· 1.0.2- Endpoint
https://cnvs.app/mcp- Website
- cnvs.app
- GitHub stars
- 1
- Registry entry
- updated 15 Jun 2026
From the official MCP registry, the package registries and our own checks. JSON · Markdown
Why it's listed
- It's published in the registry under cnvs.app, a namespace the registry only gives to whoever proves they control that domain.
Being indexed says nothing about quality, and nobody can pay for it. Is this yours? Ask for a review.
Tools it lists 25 · about 8,632 tokens of context · checked 4 hours ago
| Tool | What it does | Hint |
|---|---|---|
open_boardOpen Board | ALWAYS call this first when given a board URL or ID. Resolves the canonical board id and auto-creates the board row if it does not exist yet. Returns a summary (item counts, authors). After this, call BOTH `get_preview`… | writes |
create_boardCreate Board | Create a fresh board in ONE call — optionally pre-filled with content, auto-laid-out, and/or PIN-locked at create time. Mirrors the extended `POST /api/boards` REST body exactly (same server-side implementation). With… | writes |
get_boardGet Board | Full structured JSON state of a board: texts (id, x, y, content, color, width, postit, author), strokes (id, points, color, author), images (id, x, y, width, height, dataUrl, thumbDataUrl, author; heavy base64 >8 kB… | writes |
get_previewGet Board Preview | Compact schematic SVG render of the board (typically a few kB even for dense boards). Returns both an image/svg+xml content block (you can SEE it) and the raw SVG text. CALL THIS any time you need to understand where… | read-only |
add_textAdd Text | Create a NEW text node, or update an existing one (pass the same `id` to overwrite content/position in place — preferred over creating a duplicate). Supports cnvs markup (Markdown-ish) and Mermaid diagrams in the… | writes |
add_linkAdd Link | Drop a URL capsule onto the board — rendered as a clickable pill showing the hostname. Use this instead of `add_text` when the node is just a link; the capsule styling signals clickability to humans. Same coordinate… | writes |
add_imageAdd Image | Place a raster or SVG image on the board at (x, y) with explicit width/height in board pixels. `data_url` MUST be a `data:image/(png|jpeg|gif|webp|svg+xml);base64,...` string ≤ ~900 kB; hosted URLs are not accepted.… | writes |
draw_strokeDraw Stroke | Draw a freehand stroke on the board. Use for arrows, underlines, connector lines, annotations, or simple shapes — a straight line needs two points, a rough circle wants ~20. Stroke width is fixed at 3 px; `color` is a… | writes |
moveMove Item | Reposition an existing item to a new (x, y) without retyping its content. Works for every item kind: `text` and `link` set the top-left to (x, y); `line` translates every point so the stroke's bounding box top-left… | writes |
eraseErase Item | Delete a single item by id. `kind` MUST match the item type: 'text' for text nodes, 'line' for freehand strokes, 'image' for images — the wrong kind silently targets the wrong table and is a common mistake. Get the id +… | writes |
wait_for_updateWait for Board Update | Long-poll: blocks until the next edit lands on this board, then returns. WHEN TO CALL THIS: if your MCP client does NOT surface `notifications/resources/updated` events from `resources/subscribe` back to the model (most… | read-only |
set_board_modeSet Board Mode | Choose whether this board is a freeform whiteboard ('draw', the default) or a kanban task board ('todo'). Mode is switchable WHENEVER the board is empty of real content: drawings (text/strokes/images) and tasks. Empty… | writes |
create_columnCreate Column | Add a kanban column (swimlane) to a 'todo' board. Generates and returns a stable column id. `sort` is a float ordering key (ascending); omit to default to 0. `lane` is an integer row index for multi-row layouts… | writes |
update_columnUpdate Column | Rename, reorder, recolor or move an existing kanban column. Requires the column `id` (from `list_tasks`). Pass `title`, `sort`, `lane` and/or `color` to change them. | writes |
delete_columnDelete Column | Delete a kanban column by id. Tasks in the column are removed with it. Get the id from `list_tasks`. | writes |
create_taskCreate Task | Create a task (card) in a column on a 'todo' board. Generates and returns a stable task id. `column_id` must reference an existing column (see `list_tasks`). `description` is free-form prose stored on the card;… | writes |
update_taskUpdate Task | Update an existing task by `id` (from `list_tasks`). Pass only the fields you want to change: `name`, `description`, `due_date`, `priority` ('H'|'M'|'L'), `assignee`, `done` (true once completed), `column_id` (to… | writes |
move_taskMove Task | Move a task to a column at a given sort position — the kanban drag-and-drop primitive. `column_id` is the destination column and `sort` its float order key (ascending) within that column. | writes |
delete_taskDelete Task | Delete a task (card) by id. Get the id from `list_tasks`. | writes |
list_tasksList Tasks | Read the full kanban state of a 'todo' board: `{ mode, columns, tasks }`, both ordered by their `sort` key (ascending). Each task carries its hot fields (name, due_date, priority, assignee, done, column_id, sort) plus… | read-only |
set_laneSet Lane | Set (or clear) the title of a kanban row (lane). Lanes group columns into horizontal swimlanes; a lane is identified by its integer `lane` index (the same index columns carry). Pass a `title` to name the row, or an… | writes |
set_column_widthSet Column Width | Set the shared kanban column width in pixels for a 'todo' board (all columns share one width). Clamped to [200, 480]. Read the current value as `colWidth` from `list_tasks`. | writes |
create_tasksCreate Tasks | Bulk-create multiple task cards in one call — far cheaper than calling `create_task` N times. Pass `tasks`: an array of task objects, each with `column_id` (required) + the same fields `create_task` accepts (`name`,… | writes |
query_tasksQuery Tasks | Read tasks from a 'todo' board with server-side filtering — handy for 'what's overdue?' / 'what's assigned to X?' without pulling the whole board. All filters are optional and AND together: `assignee` (exact match),… | read-only |
export_tasksExport Tasks | Export a 'todo' board's columns + tasks as a single text document. `format` is 'markdown' (a checklist grouped by column, the default) or 'csv' (one row per task with column/name/priority/assignee/due_date/done).… | read-only |
What https://cnvs.app/mcp answered to tools/list, asked without credentials. answered without the initialize handshake. The token figure is the size of the list as sent, divided by four; a model sees about that much before it calls anything. Full definitions, input schemas included, are in the listing's JSON under mcpTools.
How its tools read to an agent 0 errors · 26 warnings · 1 note
- warnTC11add_image9 parameters without a description: author, board_id, data_url, height, id, thumb_data_url and 3 more
- warnTC11add_link5 parameters without a description: author, board_id, url, x, y
- warnTC11add_text5 parameters without a description: board_id, content, postit, x, y
- warnTC11create_column2 parameters without a description: board_id, title
- warnTC11create_task5 parameters without a description: assignee, board_id, column_id, description, name
- warnTC11create_tasks1 parameter without a description: board_id
- warnTC11delete_column2 parameters without a description: board_id, id
- warnTC11delete_task2 parameters without a description: board_id, id
- warnTC11draw_stroke4 parameters without a description: author, board_id, color, id
- warnTC11erase3 parameters without a description: board_id, id, kind
- warnTC11export_tasks1 parameter without a description: board_id
- warnTC11get_board1 parameter without a description: board_id
- warnTC11get_preview1 parameter without a description: board_id
- warnTC11list_tasks1 parameter without a description: board_id
- warnTC11move4 parameters without a description: board_id, id, x, y
- warnTC11move_task4 parameters without a description: board_id, column_id, id, sort
- warnTC11query_tasks3 parameters without a description: board_id, done, priority
- warnTC11set_board_mode1 parameter without a description: board_id
- warnTC11set_column_width1 parameter without a description: board_id
- warnTC11set_lane1 parameter without a description: board_id
- warnTC11update_column3 parameters without a description: board_id, id, title
- warnTC11update_task8 parameters without a description: assignee, board_id, column_id, description, id, name and 2 more
- warnTC11wait_for_update2 parameters without a description: board_id, timeout_ms
- warnTC12draw_strokeno type for points
The first 24 of 27; every finding is in the listing's JSON under mcpTools.check.
The checks from /check and anchor check, run each day on the list above: about 8,632 tokens of definitions. Not part of the score yet. Check your own server.