Atlas / MCP servers / le-vai / designesy-org

designesy-orgCAUTION

mcp/le-vai/designesy-org

Scores any URL against a 44-check design contract (A-F grade), validates DTCG tokens, and checks drift and AI readiness.

Verdict
CAUTION
Grade
F
Trust score
57 /100
Exposed tools
18 18r · 0w · 0d
Transport
stdio · streamable-http
License
MIT
Stars
0
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://pypi.org/project/designesy-mcp/) [](https://www.npmjs.com/package/@designesy/score) [](https://registry.modelcontextprotocol.io/v0.1/servers?search=designesy) [](https://smithery.ai/servers/le-vai/designesy) [](https://glama.ai/mcp/servers/LE-VAI/designesy-org) [](LICENSE)

A 12-second loop, recorded from the homepage. It plays once and rests on the verdict, and shows a still frame if you prefer reduced motion. Watch it run on designesy.org.

Design quality gate for AI-generated UI: score any URL on 44 deterministic checks, A–F grade. Live at designesy.org.

Quick Start

Score any URL in 5 seconds — no install:

npx @designesy/score@latest https://your-site.com

Add to Claude Desktop, Cursor, or any MCP client:

# Remote (zero install, no auth):
claude mcp add designesy --transport http https://www.designesy.org/api/mcp

# Or local stdio via PyPI:
pip install designesy-mcp && designesy-mcp

Clone this repo? The `.mcp

Read from source at commit 186395b2060eOBSERVED · 2026-10-12
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (pypi)
claude mcp add designesy-mcp -- uvx designesy-mcp==1.13.8
03

Exposed tools (18)

18 read · 0 write · 0 destructive.

ToolRiskDescription
designesy_a11y_scoreread
designesy_agent_jsonread
designesy_catalogread
designesy_compareread
designesy_contractread
designesy_design_reviewread
designesy_drift_scoreread
designesy_guardrailsread
designesy_llms_full_txtread
designesy_llms_txtread
designesy_monitor_scoreread
designesy_motion_scoreread
designesy_readiness_scoreread
designesy_reportread
designesy_scoreread
designesy_skill_mdread
designesy_tokens_scoreread
nameread
04

Trust audit

CAUTIONgrade F · trust 57/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (2 observation(s))
Shell
declared (1 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
packages/designesy-mcp/designesy_mcp_server.py:526
"    

   "
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
packages/score/scripts/export-offline-golden.mjs:141
['tokens-whitespace-trim', HTML_WITH_FIELD, ':root { --paper: #ffffff; --ink: #111111; }'],
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
apps/site/app/lib/design-system-contract.ts:483
token: '--surface-card-gradient',
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
apps/site/app/lib/design-system-contract.ts:586
token: '--glass-filter-regular',
LOWInventory / provenance · inv.binary · CWE-1104
apps/site/public/audio/open/acoustic-tokens.opus
acoustic-tokens.opus
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
apps/site/public/audio/open/acoustics.opus
acoustics.opus
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
apps/site/public/audio/open/cadence.opus
cadence.opus
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
apps/site/public/audio/open/design-review.opus
design-review.opus
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
apps/site/public/audio/open/designesy.a11y.opus
designesy.a11y.opus
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.hidden_file · CWE-1104
.lychee.toml
.lychee.toml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
apps/site/app/lib/usage.ts:37
exec(): Promise<unknown>;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
apps/site/scripts/check-audit-rescore.mjs:77
return new Function(`${outputText}\nreturn { ${names.join(', ')} };`)();
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
apps/site/scripts/check-contract-lock.js:187
new Function('exports', 'require', 'module', out.outputText)(mod.exports, req, mod);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
apps/site/scripts/check-mcp-accuracy.js:516
const grade = (passCount, failCount) => new Function('passCount', 'failCount', `${m[1]}\nreturn { score, grade };`)(passCount, failCount);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
apps/site/scripts/check-results-language.mjs:71
return new Function(`${outputText}\nreturn { ${names.join(', ')} };`)();
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
apps/site/scripts/check-audit-ssrf.js:446
return require('node:crypto').createHash('sha1').update(`${key}258EAFA5-E914-47DA-95CA-C5AB0DC85B11`).digest('base64');
LOWInformation disclosure · disclose.log_secret · CWE-209, CWE-532
apps/site/scripts/check-badge-grade-tokens.js:384
console.log(`  ${r.ground.padEnd(6)}  ${r.name.padEnd(12)}  ${r.colour}  ${r.token.padEnd(21)}  ${r.onGround.toFixed(2)}`);
LOWInformation disclosure · disclose.log_secret · CWE-209, CWE-532
apps/site/scripts/check-badge-grade-tokens.js:389
console.log(`  ${r.grade}      ${String(r.colour).padEnd(12)}  ${String(r.token ?? '-').padEnd(14)}  ${String(r.text ?? '-').padEnd(7)}  ${r.textOnColour == null ? '-' : r.textOnColour.toFixed(2)}`);
LOWInformation disclosure · disclose.log_secret · CWE-209, CWE-532
apps/site/scripts/check-mcp-tool-parity.js:1308
console.log(`mcp-tool-parity: OK — the hosted token checks match the shared golden on ${tokens.compared} token file(s), and the generated fixtures are current`);
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/site/app/.well-known/agent.json/route.ts:1
import { openIndex } from '../../lib/open-index';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/site/app/.well-known/ai-catalog.json/route.ts:5
import { AI_CATALOG_MEDIA_TYPE, buildAiCatalog, discoveryHeaders } from '../../lib/mcp-server-card';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/site/app/.well-known/mcp/server-card.json/route.ts:11
import { MCP_SERVER_VERSION } from '../../../lib/mcp-version';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/site/app/.well-known/mcp/server-card.json/route.ts:12
import { buildServerCard, discoveryHeaders } from '../../../lib/mcp-server-card';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/site/app/api/admin/usage/route.ts:13
import { readUsage } from '../../../lib/usage';
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
CHANGELOG.md:1083
`http://169.254.169.254/` (AWS IMDS) and the engine would follow it. The
Why it matters. cloud metadata endpoint: the classic SSRF credential grab

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 186395b2060efull audit observations/trust-audit/mcp-server/le-vai__designesy-org.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-12186395b2060eCAUTIONF57first audit
06

Questions

What is the designesy-org MCP server?

Scores any URL against a 44-check design contract (A-F grade), validates DTCG tokens, and checks drift and AI readiness.

What tools does designesy-org expose?

18 in total: 18 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is designesy-org safe to connect to an agent?

With care. The audit graded it F (57/100) and found 25 things worth knowing before you trust this server, listed below with the exact line each was found on.

What credentials does designesy-org need?

It reads CRON_SECRET, GITHUB_TOKEN, PSI_API_KEY, RESEND_API_KEY and UPSTASH_REDIS_REST_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does designesy-org run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @vai/motion at 0.1.0.

How current is this page?

The grade is for one exact copy of the source (186395b2060e), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement