Categories › Media & Design › Design tools (Figma, Canva...)
Real-time collaborative whiteboard — AI agents and humans edit the same board live over MCP.
Remote server: your requests and data go to cnvs.app. Claude Code: claude mcp add --transport http cnvs-app https://cnvs.app/mcp · Claude app: Settings → Connectors → Add custom connector.
The tools this server listed when we connected to it, in its own words.
open_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 yetcreate_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 extendedget_board — Full structured JSON state of a board: texts (id, x, y, content, color, width, postit, author), strokes (id, points, color, author), images get_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 Sadd_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 dupadd_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 add_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|gidraw_stroke — Draw a freehand stroke on the board. Use for arrows, underlines, connector lines, annotations, or simple shapes — a straight line needs two move — 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 (erase — Delete a single item by id. `kind` MUST match the item type: 'text' for text nodes, 'line' for freehand strokes, 'image' for images — the wrwait_for_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 `notificatioset_board_mode — Choose whether this board is a freeform whiteboard ('draw', the default) or a kanban task board ('todo'). Mode is switchable WHENEVER the bocreate_column — Add a kanban column (swimlane) to a 'todo' board. Generates and returns a stable column id. `sort` is a float ordering key (ascending); omitupdate_column — Rename, reorder, recolor or move an existing kanban column. Requires the column `id` (from `list_tasks`). Pass `title`, `sort`, `lane` and/odelete_column — Delete a kanban column by id. Tasks in the column are removed with it. Get the id from `list_tasks`.create_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 (supdate_task — Update an existing task by `id` (from `list_tasks`). Pass only the fields you want to change: `name`, `description`, `due_date`, `priority` move_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 delete_task — Delete a task (card) by id. Get the id from `list_tasks`.list_tasks — Read the full kanban state of a 'todo' board: `{ mode, columns, tasks }`, both ordered by their `sort` key (ascending). Each task carries itset_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` iset_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 valuerename_board — Set the shared board name shown to every collaborator (rail label, tab title, export filenames). Works in draw and todo mode. Whitespace is create_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 wquery_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 export_tasks — Export a 'todo' board's columns + tasks as a single text document. `format` is 'markdown' (a checklist grouped by column, the default) or 'cNot tested by KitScout yet. When our harness runs it, pros, cons and the tasks we tried appear here, with the date and evidence.