designesy
Score a site

Integration surface

MCP server

Designesy design intelligence over the Model Context Protocol: seventeen tools, one endpoint, one MCP App, no wrapper.

The Designesy MCP server runs natively on the same Vercel project as this site. It speaks the 2026-07-28 Streamable HTTP spec: stateless, no sessions, no handshake. Any MCP-compatible client can connect.

Endpoint

https://www.designesy.org/api/mcp

Transport

Streamable HTTP · POST · JSON or SSE response · stateless

Registry

io.github.LE-VAI/designesy-org on registry.modelcontextprotocol.io

Published on the MCP Registry

Discoverable by any MCP-compatible client. Search designesy on the registry or connect directly.

View registry entry →

Conformance

WCAG 2.2 AA

0 violations

axe-core 4.12.1, automated rules for WCAG 2.0 and 2.1 at A and AA, and 2.2 at AA · 70 pages, light and dark · measured 2026-10-11

DTCG 2025.10

100 A

/export/dtcg · 9 of 10 checks pass, 1 does not apply (t07: no custom types) · designesy_tokens_score, 2026-10-11

Contract score

100 A

45-check engine 1.3.0 · 38 PASS / 0 FAIL / 3 WARN / 0 SKIP / 4 MANUAL · scored 2026-10-12

Tools

Seven read-only tools fetch public machine exports from designesy.org. Nine executable tools run live verification: the 45-check score engine, DTCG token validation, Lottie motion validation, drift scoring, AI-readiness scoring, guardrails generation, monitor scoring, design-system comparison, and the composite report. One accessibility framework provides the WCAG 2.2 Playwright + axe-core script template. All tools return JSON.

01designesy_catalogRead-onlyThe full package catalog: 24 published packages (contracts, kits, labs, reviews, tools) with versions, URLs, statuses, standing rules, and machine exports.argsnonesource/open.json
02designesy_contractRead-onlyThe design-system contract v0.4.6: tokens, motion, acoustic, takt, cadence, typography, components, verification, open tensions. The full contract is the largest of the published documents the server returns; pass sections, a list of top-level keys, to get only those parts. An unknown key returns the list of valid keys.argssections?: string[], section?: string (older single-key form)source/contracts/design-system.json
03designesy_design_reviewRead-onlyThe Design Review rubric as reference data: 8 dimensions, output format, verification checklist, anti-patterns. Pass artifact, purpose, context or rules to have them recorded beside the rubric. The copy-ready prompt from the kit stays on the kit page, and the result links to it.argsartifact?, purpose?, context?, rules?source/kits/design-review.json
04designesy_skill_mdRead-onlyThe SKILL.md agent-skill export of the contract (behavioral rules, tokens, anti-patterns, verification) as reference data, with the markdown in content, ready to save into .agents/skills/.argsnonesource/contracts/skill
05designesy_agent_jsonRead-onlyThe /.well-known/agent.json discovery document as reference data: identity, authority, discovery endpoints, packages, machine exports, permission policy, cite templates. The ingest steps written for agents are left out and named; the published file keeps them.argsnonesource/.well-known/agent.json
06designesy_llms_txtRead-onlyThe short brief as reference data: canonical links, topics, package list, machine exports, standing rules, contact. The ingest steps written for agents are left out and named; the published file keeps them.argsnonesource/llms.txt
07designesy_llms_full_txtRead-onlyThe full brief as reference data: authority, discovery endpoints, all packages, standing rules, anti-patterns. The ingest protocol and the paste-ready agent prompt are left out and named; both stay in the published file.argsnonesource/llms-full.txt
08designesy_scoreExecutableThe 45-check verification engine. Fetches the page HTML, extracts all CSS, parses :root custom properties, and runs 45 automated checks with provenance back to contract tokens. Returns overall score, letter grade, and per-check breakdown. Browser-only checks (Core Web Vitals, viewport overflow, sound toggle) return MANUAL; run the full audit (/api/score/audit) to resolve them. Checks that are not applicable to the site (no tokens, no buttons, no DESIGN.md) return SKIP (N/A).argsurl?: string (defaults to designesy.org), format?: designesy, canonical, review or google, scope?: contract or universalsource/api/score
09designesy_tokens_scoreExecutableValidate a design token file against W3C DTCG 2025.10 format. Fetches from a URL or accepts raw JSON. Runs 10 conformance checks (t01-t10): $schema, token groups, $type, $value, structured color format, standard types, custom extensions, dimension units, naming hierarchy, deprecated patterns. Returns score, grade, and per-check breakdown. A check that cannot apply returns SKIP and is left out of the score.argsurl?: string, dtcg_file?: stringsource/contracts/tokens.json
10designesy_a11y_scoreFrameworkAccessibility verification framework for WCAG 2.2 AA via axe-core 4.13.0. Returns 11 conformance checks (a01-a11) + a Playwright script template (axe-core needs a real DOM, cannot run server-side). The agent runs the script locally with @axe-core/playwright. Optional config JSON enables brand customization via axe.configure().argsurl: string, ruleset?: string, config?: stringsource/contracts/a11y.json
11designesy_motion_scoreExecutableValidate a Lottie animation file against the motion contract: its ten checks (m01-m10), drawn from Lottie spec v1.0.1 and Designesy section 16 Ten Non-Negotiable Motion Standards, each under its own name. Fetches from a URL or accepts raw JSON. The checks: the schema's top-level animation object, required fields, no deprecated 4.x version, a markers array, a meta object, a reduced-motion path, keyframe easing, duration within 300 ms, and two that concern the embedding page (layout-property animation, keyboard-initiated motion), which return SKIP for a file.argsurl?: string, lottie_file?: stringsource/contracts/motion.json
12designesy_drift_scoreExecutableScore a live URL for AI-generated UI drift. Its 12 checks look for four drift patterns the drift contract names: token fabrication (var() references with no fallback to custom properties declared nowhere: not in a stylesheet, a <style> block or a style attribute), within-session drift (spacing/color/radius value variance), between-session amnesia (inconsistent font stacks, shadows, transitions), and silent breaking changes (z-index chaos, alias chains that end in an undeclared property). Fetches the URL, extracts all CSS, parses custom property declarations and var() references.argsurl?: string (defaults to designesy.org)source/api/drift
13designesy_readiness_scoreExecutableScore a URL for design-system AI readiness, the 6th maturity axis (zeroheight 2026). 10 checks probe the target origin for machine-readable artifacts: DTCG token files, llms.txt, agent.json, MCP endpoint (tools/list), DESIGN.md, token $description, component schemas, sitemap.xml, robots.txt, and Open Graph/Twitter meta.argsurl?: string (defaults to designesy.org)source/api/readiness
14designesy_guardrailsExecutableGenerate a frozen build-contract bundle for AI coding agents from any design system URL (the product layer). Ingests a site, extracts its :root tokens, and emits 6 outputs: DTCG-format token file, Stylelint config, AGENTS.md rules, component contract, anti-pattern documentation, and DESIGN.md (Google open spec). 6 emission checks verify bundle completeness. The full bundle grows with the site's token count, from about 7 KB to about 530 KB of JSON; pass parts to get only the files you need.argsurl?: string (defaults to designesy.org), parts?: string[] (tokens, lintConfig, agentRules, componentContract, antiPatterns, designMd)source/api/guardrails
15designesy_monitor_scoreExecutableScore a URL for continuous design-drift governance, the temporal layer over the drift radar. Re-runs the 12 drift checks and computes 10 monitor checks: schedule registered, last run fresh, drift delta vs baseline, trend slope, new violations, resolved since last run, score degradation threshold, token-set mutation, contract version drift, and alert delivered. When alerts fire and an email is provided, sends an HTML drift-alert email via Resend. Pass a history array of prior snapshots to compute deltas.argsurl?: string, email?: string (for drift alerts), history?: Snapshot[] (omit for first-run baseline)source/api/monitor
16designesy_compareExecutableDiff two design systems from live URLs, token by token. Fetches both URLs in parallel, extracts their :root custom properties, and produces a structured diff across 8 dimensions: tokens added, removed, renamed (Levenshtein ≤ 2), value-changed, scale-stop-changed, contrast-drift-per-pair (WCAG ratio), structure-delta (token count + category distribution), and score-delta (runs /score on both URLs). Use this to answer "what actually changed between two design systems" or "how does our design system differ from a reference".argsurlA: string (first URL), urlB: string (second URL)source/api/compare
17designesy_reportExecutable · MCP AppGenerate a unified design-intelligence report for a single URL, the synthesis capstone. Fires /score (45-check audit), /drift (12-check drift radar), and /readiness (10-check AI readiness) in parallel, then computes a weighted composite: score × 0.5 + drift × 0.3 + readiness × 0.2. One input, one output, one composite grade. Use this when you need a single holistic assessment instead of three separate scans, or when sharing a design-intelligence verdict. MCP App: hosts that support io.modelcontextprotocol/ui (Claude Desktop, Cursor v2.6+, VS Code, Goose) render an interactive dashboard inline: composite dial, sub-engine cards, tabbed check breakdown. Legacy clients get the JSON payload plus an appUrl link to the standalone dashboard. The full payload runs to about 75 to 100 KB of JSON; detail "summary" keeps the composite, each engine's score and grade, the totals and only the checks that did not PASS.argsurl: string, detail?: "summary" | "full" (default "full")source/api/report + /api/report/app

Client configuration

Copy-paste the config for your client. Most modern clients support Streamable HTTP natively: just point them at the endpoint. For stdio-only clients, use the mcp-remote bridge.

Claude Code (CLI)

  • .mcp.json (project root, shared)
  • ~/.claude.json (your own; claude mcp add writes here for this project, add --scope user for every project)
{
  "mcpServers": {
    "designesy": {
      "type": "http",
      "url": "https://www.designesy.org/api/mcp"
    }
  }
}

Claude Code (the CLI agent) supports Streamable HTTP natively via type: "http". Or skip the JSON: claude mcp add --transport http designesy https://www.designesy.org/api/mcp. This is separate from Claude Desktop (below).

Cursor

  • .cursor/mcp.json (project) or ~/.cursor/mcp.json (global)
{
  "mcpServers": {
    "designesy": {
      "url": "https://www.designesy.org/api/mcp"
    }
  }
}

Cursor supports Streamable HTTP directly: just provide url. It auto-detects HTTP vs SSE. No type field needed.

ZCode

  • .zcode MCP config (User or Workspace scope)
{
  "mcpServers": {
    "designesy": {
      "url": "https://www.designesy.org/api/mcp"
    }
  }
}

ZCode supports HTTP, SSE, and stdio. Add via Settings → MCP Servers (type: HTTP), or paste this JSON in full config mode.

VS Code + Copilot

  • .vscode/mcp.json
{
  "servers": {
    "designesy": {
      "type": "http",
      "url": "https://www.designesy.org/api/mcp"
    }
  }
}

VS Code with GitHub Copilot supports HTTP MCP servers. Note: key is "servers", not "mcpServers". VS Code tries HTTP Stream first, falls back to SSE.

Claude Desktop (stdio-only; needs the mcp-remote bridge)

  • ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
  • %APPDATA%\Claude\claude_desktop_config.json (Windows)
{
  "mcpServers": {
    "designesy": {
      "command": "npx",
      "args": ["mcp-remote@latest", "https://www.designesy.org/api/mcp"]
    }
  }
}

Claude Desktop's JSON config is stdio-only: a url field silently deletes the entire mcpServers block (bug #37286). Use the mcp-remote npm package as a stdio bridge. Alternatively, add the server via Settings → Connectors → Add custom connector (no JSON editing, supports public HTTPS directly).

How it works

Runtime

Vercel Node.js serverless · mcp-handler 2.x (Vercel's official MCP adapter) · @modelcontextprotocol/server (SDK v2) · Zod 4 · stateless 2026-07-28 spec native · 300-second max duration (Pro Plan)

Caching

5-minute in-memory cache on read-only tools. Vercel Fluid Compute reuses warm instances, so cache hits are common. The tools that score a URL (designesy_score, drift, readiness, guardrails, monitor, compare and report) call the site's own engines, which cache each result for 24 hours per URL. A designesy_score receipt carries retrieved_at, the time the page was read.

No Python

The server is native TypeScript. It runs in the same Vercel runtime as this site, with no child processes, no mcp-proxy bridge, and no external dependencies beyond the MCP SDK.

The seven read-only tools fetch the same public machine exports that any HTTP client can fetch directly. The MCP server adds structured tool schemas, Zod validation, and a single public endpoint with no key or sign-in, useful for agents that prefer the MCP protocol over raw HTTP.

Quick test

Verify the endpoint is live with a single curl:

curl -X POST https://www.designesy.org/api/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

The response is one server-sent event carrying a JSON-RPC 2.0 result that lists all seventeen tools with their schemas. The Accept header must name both types; without it the endpoint answers HTTP 406.

Related

The MCP server is a native integration surface: no wrapper, no proxy, no Python. It is the same design intelligence, available to any agent that speaks the protocol.