Components and design tokens for the canvas you share with Claude Code, Codex and any MCP agent. Change one and every frame updates, then hand the system to React, shadcn/ui and Tailwind.
Named colours, spacing, radii and type every frame and agent uses as var(--name).
Reine RorbuLofoten · Sleeps 2
Guest favourite 
A restored 1920s fishing boathouse on the water, ten minutes from the ferry. Northern lights from the deck most clear nights.

Hamnøy Shore House
Nusfjord Rorbu
Pine Hollow
Select any block and make it a component. Props carry the text, photos and variants that change from copy to copy, and every instance on every frame follows the main.
Every component on the canvas, with a live preview and its props. People drag one in; agents place it with a single <doop-use> line over MCP, so a design never drifts from the system.
Nusfjord RorbuLofoten · Sleeps 2
Hosted by IngridSuperhostTokens hold the values your frames share. A gap is space-gap, not 16 typed forty times, so one change lands everywhere. Give a token a dark value and the same frame renders in both themes.
Ferry in the morning, the rorbu by mid-afternoon and the sauna once the light goes. Ingrid shared this plan with you.
Claude Code, Codex, Cursor and the Doop Agent read your components and tokens through the Doop MCP server. They place a ListingCard in one line instead of redrawing it, so what they make is on brand the first time.
Handing the system to code takes one step. Tokens export as Tailwind, CSS or JSON. Components point at the React or shadcn/ui file that builds them, so Claude Code ships your real components, not a lookalike.
@/components/ui/button@/components/ui/switchsrc/ui/listing-card.tsxsrc/ui/date-range.tsx@/components/ui/sonner<Button>, not a new div.Everything you expect from components and tokens in a design tool, built so people and agents can use it the same way.
Text, image and enum props on one main. A size or a state is a setting, not another component.
Leave a hole in a component and fill it per instance: the actions of a dialog, the body of a card.
Change one instance and keep the change through every later edit to the main. No detaching.
Publish a library once and use it on every canvas in your workspace. Canvases pull updates when you say so.
Give a token a value per theme. One frame renders both, and you can flip between them on the canvas.
Point a component at its file and export, so the agent that builds the screen reaches for your real component.
Components, tokens and MCP on Doop, and how it compares with Claude Design and Paper.
Yes. Claude Design is Anthropic’s design tool inside claude.ai. Doop is an open-source, multiplayer design canvas that Claude Code, Codex, Cursor and any other MCP agent design on, next to your team. Components and tokens live on the canvas, so every agent and every person works from the same system, and you can self-host it.
The Doop MCP server gives agents the same library you see. They list your components, place one with a single <doop-use component="ListingCard"> line, and change every instance with update_component. Tokens come back from get_tokens, and agents write var(--name) instead of a raw hex.
Not yet. As of November 2026, Paper’s public roadmap lists components with props and slots as coming soon, and themes and tokens as in progress. Doop ships both today, with props, slots, variants, overrides and themes, so it works as a Paper alternative if your team needs a design system now.
Yes. Tokens export as a Tailwind v4 @theme block, CSS variables per theme, or JSON. Each component can point at its React file and export, including shadcn/ui components, so a coding agent builds the screen with your real components. Every frame is plain HTML and CSS you can copy.
Give any token a value per theme, like light and dark. One frame renders in every theme, and you can switch between them on the canvas or from an agent.
Yes, in every plan, Free included. Doop is open source under AGPL-3.0, so you can also run it on your own servers.