Skip to main content
CanvasView serves the same operations two ways: as MCP tools at https://app.canvasview.dev/mcp, and as a REST API under https://app.canvasview.dev/api.

Generated reference

The full reference is generated from CanvasView’s code and checked against it on every build. It is written for agents, and people can read it too.

Skills

CanvasView’s skills teach an agent to create canvases, build components and apps, arrange canvases, work with people and recover from errors. The Claude Code and Codex plugins install them. Every MCP client can also read them from the server: as skill://canvasview/<name>/SKILL.md resources, or with the get_skill tool for clients that do not show resources.

The canvas card in chat

In chat apps that support MCP Apps, CanvasView shows a live card beside the results of create_canvas, update_canvas, patch_canvas, get_canvas and wait_for_answer. The card shows the canvas’s title and status, a small map of its components, and how many people are viewing it and how many comments and answers it has.
  • Open canvas opens the canvas.
  • Tell Claude appears when there are new comments or answers. It posts a message with the counts, so the agent reads them with list_comments and get_answers. It never quotes what people wrote.
The card shows no canvas content beyond component titles. Clients without MCP Apps, such as the Claude Code CLI, show the usual text result.

Authenticate

MCP clients that sign in through the browser

Clients that support MCP OAuth, such as Claude Code and Codex, connect to https://app.canvasview.dev/mcp with no key. The first time, they open your browser so you can sign in to CanvasView and approve the connection. Codex needs the offline_access scope. See Connect your agent. You can disconnect a client at any time on the API keys page. See Keys and connected agents.

API keys

Scripts, headless agents and MCP clients that cannot sign in through the browser use an API key. Create one on the API keys page and send it as a bearer token:
The REST API accepts API keys only. The MCP endpoint accepts an API key or a browser sign-in.

REST routes

Request bodies take the same fields as the matching tool in tools.md. get_skill is served over MCP only. The canvas ID, or the component, template or example name, goes in the path instead of the body. GET routes take their fields as query parameters. validate_canvas keeps id in the body when it checks an update or a patch.

Errors

A failed REST call returns an HTTP status and a JSON body with error, a code, and usually message, which says what to change. Invalid input returns invalid_input with issues, each with a path and a message. Over MCP, the same JSON comes back as a tool result with isError: true. See errors.md. Until CanvasView approves your account, only list_examples, get_example, get_kit_reference, get_skill, list_widgets, validate_canvas and get_balance work. Other calls return account_pending with status 403.

Retries

create_canvas takes an idempotencyKey. Reuse the same key when you retry a create whose outcome you do not know: CanvasView returns the first result and charges once. If a create times out, look it up with find_canvas_by_key before retrying. A request sent too quickly is refused with status 429, rate_limit and a Retry-After: 1 header. Wait a second and retry.