cnvs.app by cnvs.app

MCP server · indexed, not reviewed

Hostedvendor's own

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.

How the index works

Real-time collaborative whiteboard — AI agents and humans edit the same board live over MCP.

What the official MCP registry says

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

ToolWhat it doesHint
open_boardOpen BoardALWAYS 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 BoardCreate 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 BoardFull 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 PreviewCompact 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 TextCreate 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 LinkDrop 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 ImagePlace 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 StrokeDraw 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 ItemReposition 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 ItemDelete 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 UpdateLong-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 ModeChoose 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 ColumnAdd 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 ColumnRename, 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 ColumnDelete a kanban column by id. Tasks in the column are removed with it. Get the id from `list_tasks`.writes
create_taskCreate TaskCreate 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 TaskUpdate 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 TaskMove 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 TaskDelete a task (card) by id. Get the id from `list_tasks`.writes
list_tasksList TasksRead 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 LaneSet (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 WidthSet 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 TasksBulk-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 TasksRead 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 TasksExport 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.

For companies

Do agents find, use and choose your tools?

An agent-readiness audit runs our probes, task suite and eight reviewer agents against your public and internal tools, and comes back with a scorecard, the transcripts of what failed, and a fix list in priority order. From $2,500, re-run included. We never take payment to move a rank. We do help companies earn one.