# moodspec > A workspace for your design decisions — fonts, colours, logos, references and voice — served to Claude Code, Cursor, Codex, Lovable and Replit over MCP. moodspec is the layer before a design system: the decisions a design system would encode, written down early enough that a coding agent can build with them. It is not a component library, and it does not write code — it answers the questions an agent asks while it writes code. ## Pricing ### Free — $0 forever Enough to find out whether writing your taste down changes how you build. - 1 canvas, stored in this browser - Unlimited assets, zones and personas - URL unpacking — fonts, colours, logos, articles - Export as JSON or Markdown ### Pro — $10 / month Unlimited canvases, backed up, and readable by every agent you use. - Unlimited canvases — one per product or client - A private MCP endpoint per canvas - Cloud backup and cross-device sync - Live connectors — Figma, Canva, Framer - Version history, 30 days ### Business — $24 / editor One shared canvas your whole team — and every repo — builds against. - Shared workspace with roles and permissions - A locked brand canvas only owners can change - Comments and approvals on every card - Scoped tokens — one per repo, revocable - Google Workspace SSO and invoicing ### Enterprise — Custom For design systems that legal, security and procurement all have opinions about. - SAML SSO and SCIM provisioning - Self-hosted or private region - Audit log export and IP allowlists - 99.9% uptime SLA, named contact - Onboarding: we import your design system ### Plan comparison **THE CANVAS** - Canvases — Free: 1; Pro: Unlimited; Business: Unlimited; Enterprise: Unlimited - Assets per canvas (Fonts, colours, logos, articles, personas, motion) — Free: Unlimited; Pro: Unlimited; Business: Unlimited; Enterprise: Unlimited - URL unpacking (Paste a link — fonts, palette and full text extracted) — Free: yes; Pro: yes; Business: yes; Enterprise: yes - Live connectors — Figma, Canva, Framer — Free: no; Pro: yes; Business: yes; Enterprise: yes - Where it lives — Free: This browser; Pro: Cloud; Business: Cloud; Enterprise: Cloud or your own infra - Version history — Free: no; Pro: 30 days; Business: Unlimited; Enterprise: Unlimited + export - Export as JSON / Markdown — Free: yes; Pro: yes; Business: yes; Enterprise: yes **AGENT CONNECTION** - MCP endpoints — Free: no; Pro: 1 per canvas; Business: 1 per canvas; Enterprise: 1 per canvas - Claude Code, Codex, Cursor, Lovable, Replit — Free: no; Pro: yes; Business: yes; Enterprise: yes - Tokens — Free: no; Pro: 1; Business: Per repo, per editor; Enterprise: Per repo, rotation policy - Revoke a token instantly — Free: no; Pro: yes; Business: yes; Enterprise: yes - Which repo read what (Read log per canvas) — Free: no; Pro: no; Business: yes; Enterprise: yes **WORKING TOGETHER** - Editors — Free: 1; Pro: 1; Business: 3 or more; Enterprise: Unlimited - Shared workspace — Free: no; Pro: no; Business: yes; Enterprise: yes - Roles and permissions — Free: no; Pro: no; Business: Owner, editor, viewer; Enterprise: Custom roles - Locked brand canvas (Only owners can change type, colour or logo) — Free: no; Pro: no; Business: yes; Enterprise: yes - Comments and approvals — Free: no; Pro: no; Business: yes; Enterprise: yes - Share a read-only link — Free: no; Pro: yes; Business: yes; Enterprise: yes **SECURITY AND ADMIN** - Sign in — Free: no; Pro: Email code or Google; Business: Google Workspace SSO; Enterprise: SAML SSO + SCIM - Never trained on (Your canvas is never used to train a model) — Free: yes; Pro: yes; Business: yes; Enterprise: yes - Audit log — Free: no; Pro: no; Business: 90 days; Enterprise: Unlimited + export - IP allowlist — Free: no; Pro: no; Business: no; Enterprise: yes - DPA, security review, custom terms — Free: no; Pro: no; Business: DPA on request; Enterprise: yes - Billing — Free: no; Pro: Card; Business: Card or invoice; Enterprise: Invoice, PO, procurement **SUPPORT** - Support — Free: Docs and community; Pro: Email, 2 business days; Business: Priority email, 1 business day; Enterprise: Named contact + shared Slack - Uptime SLA — Free: no; Pro: no; Business: no; Enterprise: 99.9% - Onboarding — Free: no; Pro: no; Business: Setup call; Enterprise: We import your design system ## The MCP endpoint Endpoint: https://mcp.moodspec.app/c/{canvas-slug} Transport: Streamable HTTP (JSON-RPC 2.0 over POST). Stateless — no session id. Auth: Authorization: Bearer msk_live_… The token decides which canvas is served; the slug in the URL is display only, and a mismatch is a 403. ### Tools - `get_canvas(canvas_id?)` [read] — The whole canvas as structured data — type stack, palette with usage rules, marks, references, personas and voice. Most agents call this once per session. - `get_typography(canvas_id?, format?)` [read] — Families, weights, the size scale and the pairing rules, with the CSS or @font-face the project should use. - `get_palette(canvas_id?, space?)` [read] — Colours with roles attached — which is a surface, which is an accent, which one is only ever a button. - `get_voice(canvas_id?)` [read] — Tone rules, who you are writing for, phrases to avoid, and required legal copy where a market needs it. - `get_history(canvas_id?, limit?)` [read] — The most recent changes to this canvas, with who made each and why — useful before proposing to change a rule. - `propose_change(zone, title, reason, card_id?, patch?)` [write] — Suggest an edit to a card. This is the only way an agent can change anything: the proposal enters the approval queue and nothing moves until an owner approves it. ### Response shape ```json { "canvas": "brand soul", "version": 41, "typography": { "heading": { "family": "Newsreader", "weight": 600, "tracking": "-0.03em" }, "body": { "family": "Inter", "size": 16, "leading": 1.65 } }, "palette": [ { "hex": "#101010", "role": "ink" }, { "hex": "#E8511E", "role": "accent", "rule": "buttons and links only" } ], "voice": { "avoid": ["Oops", "Uh oh"], "person": "second" }, "never": ["gradient heroes", "drop shadows on cards"] } ``` ### Scopes - `canvas:read` (Pro) — Read every zone on the canvas. - `canvas:write` (Business) — Submit proposals. Never writes directly — proposals go to an owner. - `history:read` (Business) — Read the change log and who approved what. ### Rate limits - Pro: 600 / hour. Per token. - Business: 5,000 / hour. Per token. - Enterprise: Agreed. Set per deployment. ### Errors - 401 revoked — The token was revoked or has expired. Issue a new one in canvas settings. - 403 locked — The token is for a different canvas, or the scope does not cover that tool. - 429 slow_down — Over the hourly limit. Retry-After says when the window resets. ## Integrations ### Claude Code (MCP) Add moodspec as an MCP server and Claude reads your canvas before it writes a line of UI. Config file: ~/.claude/settings.json ``` { "mcpServers": { "moodspec": { "type": "http", "url": "https://mcp.moodspec.app/c/brand-soul", "headers": { "Authorization": "Bearer msk_live_••••" } } } } ``` 1. Get your endpoint — On your canvas, press Connect agent. Pro generates a private MCP URL for that canvas. 2. Add the server — Run claude mcp add --transport http moodspec , or paste the JSON below into your settings file. 3. Restart Claude Code — Run /mcp to confirm moodspec is listed and connected. 4. Reference it in prompts — Say "follow the moodspec canvas" once — Claude keeps it in context for the session. ### Cursor (MCP) Project-level MCP config so every teammate opening the repo inherits the same taste. Config file: .cursor/mcp.json ``` { "mcpServers": { "moodspec": { "url": "https://mcp.moodspec.app/c/brand-soul", "headers": { "Authorization": "Bearer msk_live_••••" } } } } ``` 1. Copy your endpoint — Connect agent on the canvas, then copy the MCP URL. 2. Create .cursor/mcp.json — Add the block below at the repo root, or use Settings → MCP → Add new server. 3. Enable the server — Cursor lists moodspec under available tools; toggle it on for Composer and Chat. 4. Prompt normally — Cursor pulls the canvas when a request touches UI, copy or brand. ### Codex (MCP) Register moodspec in your Codex config so CLI and cloud runs share one source of taste. Config file: ~/.codex/config.toml ``` [mcp_servers.moodspec] command = "npx" args = ["-y", "mcp-remote", "https://mcp.moodspec.app/c/brand-soul"] env = { MOODSPEC_TOKEN = "msk_live_••••" } ``` 1. Copy your endpoint — Connect agent on the canvas and copy the URL and token. 2. Edit config.toml — Add the mcp_servers block below. 3. Verify — Run codex mcp list — moodspec should report connected. 4. Use it — Mention the canvas in your task description; Codex queries it for design decisions. ### Lovable (MCP) Point Lovable at your canvas so generated apps arrive already on-brand. Config file: Lovable → Settings → Integrations → MCP ``` Server name moodspec URL https://mcp.moodspec.app/c/brand-soul Auth header Authorization: Bearer msk_live_•••• ``` 1. Open project settings — In your Lovable project, go to Settings → Integrations → MCP. 2. Add a custom server — Paste your moodspec URL and bearer token. 3. Enable for the project — Toggle moodspec on. It applies to every chat in that project. 4. Prompt with intent — Reference "our canvas" and Lovable will pull fonts, palette and ICP notes. ### Replit (MCP) Give Replit Agent the same design context your local tools have: fonts, palette, marks and voice, read from one canvas. Config file: .replit ``` [agent] mcp_servers = ["moodspec"] [agent.mcp.moodspec] url = "https://mcp.moodspec.app/c/brand-soul" token = "$MOODSPEC_TOKEN" ``` 1. Add the secret — In Secrets, add MOODSPEC_TOKEN with the bearer token from Connect agent. 2. Edit .replit — Add the agent MCP block below. 3. Restart the Agent — Replit Agent reloads MCP servers on restart. 4. Build — Ask for a screen and it arrives using your canvas, not the default theme. ### Claude design (IMPORT) Bring designs you made with Claude straight onto a canvas — fonts, palette and components extracted. Config file: Two ways in ``` 1 Paste the share link of a Claude design into the canvas bar 2 Or drag the exported .html file onto the canvas moodspec extracts: typefaces · colour roles · radius & spacing logomarks · copy voice sample ``` 1. Copy the design link — From Claude, share the design and copy its link — or export the HTML file. 2. Paste it on a canvas — Drop it into the paste bar. We fetch and parse it in a couple of seconds. 3. Review what came in — Fonts, colours and marks land in their zones, each tagged "from Claude design". 4. Keep what you like — Remove the rest with one click. Nothing is imported silently. ## Frequently asked questions **Is this a design system tool?** No. A design system is code — components, tokens, tested and versioned. moodspec is the layer before that: the decisions a design system would encode, written down early enough that an agent can build with them. If you already have a real design system, point your agent at that; use moodspec for the parts it does not cover, like tone of voice, who you build for, and how motion should feel. **So it is a prompt library?** No. A prompt library stores instructions you send. A canvas stores facts your agent reads on its own, every time, without you remembering to attach anything. **What stops me from just keeping a markdown file in the repo?** Nothing — and that is the honest alternative. A file works until you have four repos, two clients and a font you swapped last week. moodspec is the same idea with one copy, live everywhere, and with the tedious parts (pulling fonts and palettes off a URL) done for you. **Does it write code?** No. It answers questions your agent asks while it writes code. **Which agents can read a canvas?** Anything that speaks MCP — Claude Code, Codex, Cursor, Lovable, Replit today, and whatever ships next month without us doing anything. **Do I have to say "use the canvas" in every prompt?** Once per session in most clients; some pull it automatically when a request touches UI or copy. If the agent ignores it, that is a client behaviour, not a moodspec one — the setup guides note which is which. **Will the agent obey it?** It follows the canvas the way it follows any instruction: usually, not religiously. What changes is the baseline — you stop starting from a purple gradient and start from your own type. **Does reading the canvas cost tokens?** A little. A typical canvas serialises to under two thousand tokens, and only the parts relevant to the request are pulled. **Can it write back to my canvas?** Not directly, on any plan. On Business an agent can file a proposal — a suggested change with a before, an after and a reason — which sits in an approval queue until an owner accepts it. Nothing an agent does changes a canvas on its own. **Can I self-host the MCP server?** Not on Free, Pro or Business — every plan connects to our hosted endpoint over Streamable HTTP. Enterprise can run it in a private cloud or on-prem; ask on the enterprise page. **What happens if a token leaks?** Whoever holds it can read that one canvas, nothing more — no other canvases, and no ability to change anything. Reads are rate-limited per token, and you can revoke it instantly from the canvas settings. **Where does my canvas live if I never sign in?** In this browser, in local storage. Clear the browser and it is gone — no copy exists anywhere else. That also means it cannot be connected over MCP. **Do you train on my content?** No. Never, on any plan. Your canvas is stored to serve it back to you and your agents. **Who can read my MCP endpoint?** Whoever holds the token. Endpoints are private per canvas, revocable, and on Business scoped per repo so a leak costs you one project, not the whole workspace. **I pasted a competitor URL. Did they get notified?** No. We fetch the page the way any browser does, once, from our servers. **Can I export everything and leave?** Yes — JSON and Markdown, on every plan including free. The Markdown is what your agent sees, so it is readable to you too. **Why is there a free plan at all?** Because the argument only lands once you have used it. One canvas, no account, no card — if it does not change your next build, nothing was lost. **What counts as an editor on Business?** Anyone who can change a canvas. Viewers are free, and agents reading over MCP never count as seats. **What happens to my canvases if I stop paying?** They stay readable and exportable. You drop back to one live canvas; the rest go read-only rather than being deleted. **Can we buy this through procurement?** Business takes invoices; Enterprise takes purchase orders, security reviews, a DPA and whatever else your legal team needs. **Is this not just a moodboard with extra steps?** A moodboard is for humans to feel something. A canvas is for a machine to act on. Same inputs, different output — one ends in a conversation, the other ends in a pricing page that already looks like you. **What if my taste is bad?** Then at least it will be consistently bad, which is the first thing you need in order to notice and change it. **Who is this not for?** Anyone with a mature design system and a codebase full of components. Your agent should read your code. Come back when you start something new. ## Articles ### How to teach a coding agent your design taste Working with agents · 2026-07-28 · https://moodspec.app/blog/teach-taste Agents do not lack skill — they lack a source of truth about what you find beautiful. Here is how to write one down. ### Why every vibe-coded app looks the same Opinion · 2026-07-21 · https://moodspec.app/blog/same-app The sameness is not a model limitation. It is what happens when nobody supplies a point of view. ### Choosing type pairings for product UI Craft · 2026-07-14 · https://moodspec.app/blog/type-pairing A practical way to pick two typefaces that hold up across a landing page, an app and an email. ### Building a colour palette you can defend Craft · 2026-07-07 · https://moodspec.app/blog/palette Neutrals do the work, one accent does the pointing, and every colour needs a job description. ### Write your UI copy for one named customer Craft · 2026-06-30 · https://moodspec.app/blog/copy-for-one The fastest way to stop sounding like every other SaaS is to stop writing for "users". ### MCP for designers: what it actually is Working with agents · 2026-06-23 · https://moodspec.app/blog/mcp-for-designers A plain explanation of the protocol that lets your agent read your tools — and why design context belongs in it.