The design system as typed tools.
A Model Context Protocol server exposes this system as seven verifiable tools, so any MCP-capable agent reads tokens, checks contrast, and lints CSS as first-class calls — no scraping HTML, no fetching files, no invented values. Stateless, read-only, no auth.
claude mcp add --transport http ramoslabs-ds https://design.ramoslabs.com/mcpOne endpoint, seven tools
The Model Context Protocol is an open standard for connecting an AI agent to external tools. This server runs on the same Worker that serves the docs, overStreamable HTTP at POST /mcp. It is stateless, read-only, and needs no auth — connect it and the agent gets the tools below.
Connect your client
claude mcp add --transport http \ ramoslabs-ds https://design.ramoslabs.com/mcp
{ "mcpServers": { "ramoslabs-ds": { "url": "https://design.ramoslabs.com/mcp", "transport": "http" } } }
Then the agent has search_tokens, check_contrast,lint_css, and the rest as first-class tools.
Seven, all read-only
| Tool | Arguments | Purpose |
|---|---|---|
search_tokens | query, limit? | Find tokens by name or value substring. |
get_token | name | Exact token value plus the var(--…) to use. Errors if it does not exist, so an agent never invents one. |
check_contrast | foreground, background | WCAG ratio plus AA/AAA verdicts for normal text, large text, and UI. |
list_docs | — | Every documentation page title (foundations and patterns). |
get_doc | title | The full distilled doctrine for one page. Read it before implementing a pattern. |
lint_css | code | Flag a raw hex, rgb, px, or rem that should be a token, and suggest the matching token. |
get_agents_guide | — | The full AGENTS.md agent guide. |
These tools verify. They don't just install.
Most component MCP servers exist to discover and install code. This one exists so an agent gets the system right: contrast checked, CSS linted against the token contract, and token values returned exact and never invented. The agent builds against a contract it cannot get wrong, instead of interpreting rendered output.
get_token('color-primary') returns the value and thevar(--color-primary) to use — and errors on an unknown name, so an invented token fails loudly instead of shipping.
Confirm it live
List the tools, then check the accent on white — indigo 600 returns roughly 6.3:1, which passes AA.
# list the seven tools curl -s -X POST https://design.ramoslabs.com/mcp \ -H 'Content-Type: application/json' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' # check_contrast: indigo 600 on white → ~6.3, AA curl -s -X POST https://design.ramoslabs.com/mcp \ -H 'Content-Type: application/json' \ -d '{"jsonrpc":"2.0","id":2,"method":"tools/call", "params":{"name":"check_contrast", "arguments":{"foreground":"#4f46e5","background":"#ffffff"}}}'
Prefer the branded design.ramoslabs.com/mcp. If a cloud-hosted client is ever blocked, the same server answers atramoslabs-ds.edwardramosp.workers.dev/mcp, which is never bot-gated.