Short definitions of the terms used across cnvs.app documentation. Each term has a stable #anchor for citation.
MCP (Model Context Protocol)
An open protocol from Anthropic that lets AI assistants talk to external tools and data sources via JSON-RPC. cnvs.app's MCP endpoint is at https://cnvs.app/mcp — any MCP-capable client (Claude Desktop, Claude Code, Cline, Goose, custom agent) can connect to read and edit boards.
SSE (Server-Sent Events)
Browser standard for a server to push events to a client over a long-lived HTTP connection. cnvs.app uses SSE to deliver MCP notifications/resources/updated events.
PWA (Progressive Web App)
A web app that can be installed to a device and runs with native-like behaviour, including offline support via a service worker. cnvs.app installs as a PWA with offline read-only access to cached boards. See PWA & offline.
Durable Object
A Cloudflare Workers primitive: a single-writer object with persistent storage and a hibernating WebSocket API. cnvs.app uses one Durable Object per board to serialise mutations and broadcast them to all connected browsers.
Infinite canvas
A drawing surface with no fixed page size — pan and zoom anywhere. cnvs.app's coordinate space is unbounded in CSS pixels, origin (0,0) at top-left, +y going DOWN (standard SVG / web, not mathematical).
Board ID
A URL-safe identifier (max 64 chars, [A-Za-z0-9-]) uniquely identifying a board. The browser-facing URL is https://cnvs.app/#<board-id> — the # fragment is client-side routing only, the server never sees it.
Sticky note
Any text node on cnvs.app can be toggled to sticky-note style (right-click on the node, or press Y while hovering). It's a visual mode — the underlying entity is still a text node, addressed via POST /api/boards/<id>/texts.
Mermaid
A plain-text diagram language. cnvs.app renders Mermaid blocks inside text nodes live — flowcharts, sequence, class, state, ER, Gantt, mindmaps, C4 and more. See Mermaid diagrams.
ETag
An HTTP header carrying a content fingerprint. cnvs.app's /json/<id> endpoint returns a weak ETag; clients can send it back via If-None-Match to get a 304 response (zero body) when the board hasn't changed — saves bandwidth and doesn't burn rate limit.
Long-poll
An HTTP pattern where the server holds the request open until something happens (or a timeout fires). cnvs.app's GET /api/boards/<id>/wait?timeout_ms=25000 long-polls for the next edit; MCP's wait_for_update tool is the same idea.
Author tag
Every mutation records an author. Humans get user:<uuid> (per-device, stable, in localStorage). AI gets ai:<label> (default ai:claude for MCP, ai:rest for REST). Charset [A-Za-z0-9:_\-.], max 80 chars. Immutable after creation — subsequent moves and edits never relabel the original creator.
Agent Skill
Claude Code's mechanism for shipping a folder of instructions + scripts the model loads on demand. cnvs.app publishes two: cnvs-whiteboard (full collaborator playbook) and mcp-listen (generic push-to-model pump for any MCP server). Install both for the hybrid loop.
Hybrid loop
The recommended pattern for AI agents collaborating live on a cnvs.app board: subscribe via MCP for push notifications (no polling), but write via REST (universal, simpler, no SDK). See the MCP deep dive.
Quota
Per-board limits enforced identically on browser, REST and MCP: 500 text nodes, 50 images (≤ ~900 kB each, total ≤ 10 MB), 2000 strokes. Live machine-readable values at /quotas.json.
Tombstone
When you delete a board, its ID is reserved for 30 days (a "tombstone") so stale links show an "erased" overlay instead of silently creating a new board with the same ID. After 30 days the tombstone is purged and the ID is released back into the pool.