eds-mcp-server
Auto-syncs token and component changes to Storybook documentation, ensuring design system docs stay up-to-date without manual rebuilding.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@eds-mcp-serverlist color tokens"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
eds-mcp — the Edwson Design System over MCP + HTTP
Your design-system token + component contract, served three ways from one engine — to AI agents (Model Context Protocol), to any app (a zero-dependency HTTP REST API with an OpenAPI spec), and to Node code (import the pure library). Not just to read, but to scaffold correct code, lint a proposed usage, discover components by the regulation they serve, and export the theme — one source of truth, auto-synced across the org, with your AI-token bill going down instead of up.
This is the runnable backbone behind the "AI-Native Development" section of the design system showcase.
MCP: 29 tools · 5 resources · 3 prompts HTTP: 29 REST endpoints · OpenAPI 3.1 Library: createCore()
65 institutional contracts across 14 domains **+ the Consumer Design System pack: 118 B2C categories across 11 domains** · reads + code-generation + linting + accessibility & compliance audits + flow composition + theme export + a machine-carried agent protocol👉 Fastest way to see what this is for:
npm run example. One plain-English requirement → a shipped, compliant, tested feature, in one command — eds-mcp drives the design-system spine of the whole intake → planning → PRD → R&D → QA → launch lifecycle and writes real artifacts at every stage. Walkthrough + a committed sample run:examples/lifecycle/.
Use it in one line
① As an MCP server — for AI agents (Claude Desktop / Code, Cursor, Codex). No install, no clone:
{ "mcpServers": { "eds": { "command": "npx", "args": ["-y", "github:Edwson/eds-mcp"] } } }Drop that into your MCP client config and the agent gains all 29 tools. (Once it's on npm:
"args": ["-y", "eds-mcp-server"].)
② As an HTTP REST API — for any language, any tool, curl, a browser. Runs with zero dependencies:
npx -y --package=github:Edwson/eds-mcp eds-mcp-http # or: git clone … && node http.js (no npm install needed)
curl localhost:8787/v1/theme/css # the dual-theme token CSS
curl localhost:8787/v1/regulation/FINRA%202111 # components that satisfy a rule
curl -X POST localhost:8787/v1/scaffold -d '{"component":"OrderTicket"}' # a method-compliant skeletonGET / lists every endpoint; GET /openapi.json is a full OpenAPI 3.1 spec you can load into Swagger or
Postman. Deploy it anywhere — or docker build -t eds-mcp . && docker run -p 8787:8787 eds-mcp.
③ As a library — in Node code. The pure engine, importable directly:
import { createCore } from 'eds-mcp-server'; // server, http, library: all the same core.jsRelated MCP server: ds-mcp
Why an enterprise adopts this (and doesn't leave)
1 · It cuts your AI-token spend. The expensive way teams use AI for UI today: paste a 6–15 KB CSS/theme file plus a screenshot into the agent every turn, let it regenerate full hex/CSS, and correct it 2–3 times. This server serves targeted, reference-based, cache-friendly slices — and goes further by generating the structure so the agent never invents it:
Mechanism | Effect on tokens |
Targeted retrieval — | a colour slice is ~78% smaller than the full token file |
Reference output — agent emits | output tokens drop sharply |
Generation — | the agent completes, it doesn't architect from scratch |
Contract correctness — | correction loops (the real cost driver) collapse toward 1 |
2 · It auto-syncs across the org. build-manifest.js hashes every contract file into
manifest.json (version + per-file SHA-256). Consumers compare their cached manifest and pull only
the changed files (diff_since). A token change propagates everywhere — apps, Storybook, agents —
without a rebuild, because everything references tokens, never literals.
3 · It enforces consistency + compliance. One signed manifest = one source of truth; checksums
prevent drift; SemVer gates breaking changes. Regulated components carry their rule in the contract;
lint_usage rejects hardcoded colours and non-canonical states before they ship; find_by_regulation
makes "which component satisfies FINRA 2111?" a one-call question.
Tools (29)
Every tool returns a text block and structuredContent (the same object, machine-parseable);
failures set isError: true instead of masquerading as data.
Tokens & theme
Tool | Returns |
| group names only (cheapest orientation) |
| only the requested token group |
| resolve one token by name + its canonical CSS var (theme-aware) |
| the whole token set as css · json · scss · tailwind (dual-theme) |
Component discovery
Tool | Returns |
| every id + purpose + domain + regulatory flags |
| one component's full contract |
| data shape + required render states |
| the four-cell register (when / when-not / a11y / regulatory) |
| ranked keyword search (id > domain/regulatory > purpose) |
| every component that serves a rule, e.g. |
| NL use case → ranked picks, each with its |
| resolve |
Generation & checks
Tool | Returns |
| a paste-ready skeleton: |
| issues by severity: unknown tokens, non-canonical states, hardcoded colours, inline styles |
| a dependency-free, runnable conformance test (tokens resolve · states canonical · anchors intact · a11y passes · CSS tokens-only) |
Accessibility, compliance & composition
Tool | Returns |
| static a11y audit against the contract (a11y text, error state, dual-theme lock-step, reduced-motion, anchor) + per-token contrast in both themes |
| the WCAG 2.1 contrast ladder for the token set, both themes, with AA / AA-large / AAA + a failures list |
| a jurisdiction ( |
| a dependency-resolved multi-component flow with a per-step decision register + the union of tokens + anchors |
Meta
Tool | Returns |
| version + per-file checksums |
| changed files since a version (auto-sync delta) |
| the nine non-negotiables + verification gates — the Ed-agent operating contract |
| version, component + domain counts, regulatory coverage, token count |
Consumer Design System pack (the second system, same engine)
The server also carries a bundled snapshot of the author's Consumer Design System
— 118 B2C component categories across 11 domains (commerce, social, media, onboarding, growth, trust & safety, and a
22-entry AI & Agents domain), each anchored to a public platform guideline (Apple HIG, Material 3, WCAG 2.2,
App Store / Play policy, GDPR, COPPA, FTC). The live contracts at edwson.com/cds/ are canonical; the snapshot makes
them deterministic offline.
Tool | Returns |
| the B2C catalogue — id, name, domain, anchor, canonical URL |
| one entry with its bundle obligations attached (paywall arrives owing a cancellation flow) |
| keyword search across names, summaries, domains, anchors |
| regulation-first discovery: "COPPA" → the entries + hard rules that answer to it |
| bundled-by-contract pairs — dependencies as data, not tribal knowledge |
| the machine-carried reading logic: seven-step read path + blockable hard rules |
Resources (5, whole-file)
eds://tokens · eds://components · eds://manifest · eds://method · eds://regulatory
(the last maps every regulation to the components that serve it).
Prompts (3, contract-grounded)
build-regulated-component {id} · compliance-review {regulation} · accessibility-audit {id} —
reusable workflows that wire the tools together the right way.
Integrations · The Agency (agency-agents)
eds-mcp ships a drop-in specialist for
The Agency — Matt Sitarzewski's open-source
(MIT) collection of AI agent personas. The Agency gives an agent a personality and a workflow;
eds-mcp gives it the design-system backend to build regulated UI and prove it. See
integrations/agency-agents/ for the
Regulated-Finance Design-System Engineer persona (authored in The Agency's open format) plus an
example MCP config. This is interoperability with attribution — no upstream files are copied or
redistributed; please support the upstream project.
HTTP REST API (for everyone who isn't an MCP client)
The same engine, over plain HTTP + JSON, zero dependencies (Node built-ins only — runs straight from
a clone with no npm install). CORS is open; every bad input returns { error } with a 4xx.
Method & path | Equivalent of |
| liveness · counts · the operating contract |
| token groups · a group · one token |
|
|
|
|
|
|
|
|
|
|
|
|
| self-describing index · OpenAPI 3.1 spec |
node http.js # serve on $PORT (default 8787) — no install required
npm run serve # same, via the package script
curl localhost:8787/v1/components?domain=payments
curl -s -X POST localhost:8787/v1/lint -d '{"tokens":["accent","nope"],"css":"a{color:#fff}"}'The killer move: scaffold_component
Ask for a component and get correct structure back, not a guess:
// scaffold_component { "id": "OrderTicket" } →
{
"prefix": "ot", "sectionId": "sec-order-ticket",
"tokensUsed": ["accent2","green","red","radius.md","space.4"],
"files": {
"html": "<section class=\"ds-section\" id=\"sec-order-ticket\">…four-cell register…</section>",
"css": ".ot-wrap{font-family:var(--type-font);color:var(--text1)} …tokens only, dual-theme…",
"js": "(function(){ var root=document.getElementById('ot-root'); … delegated, render-once … })();"
}
}The CSS it emits is guaranteed tokens-only (the test asserts zero hardcoded hex), the HTML carries the four-cell decision register, and the JS is a delegated, render-once, reduced-motion-safe stub — the Edwson method baked into the output.
Use it as a library (not only as an MCP server)
The logic lives in a pure, dependency-free core.js. Import it directly:
import { createCore } from 'eds-mcp-server'; // or './core.js'
import tokens from './tokens.json' assert { type: 'json' };
import components from './components.json' assert { type: 'json' };
const eds = createCore({ tokens, components });
eds.exportTheme('tailwind'); // → tailwind.config theme.extend
eds.scaffoldComponent('SuitabilityGate'); // → { files: { html, css, js } }
eds.lintUsage({ css: '.x{color:#f00}' }); // → { ok:false, issues:[{code:'hardcoded-color'…}] }
eds.findByRegulation('SEC 17a-4'); // → components with WORM-retention anchorsserver.js is a thin MCP adapter over the same core.js, so the MCP tools and the library API can
never drift apart.
Run from source
git clone https://github.com/Edwson/eds-mcp && cd eds-mcp
node http.js # HTTP REST API on :8787 — runs with NO npm install (zero deps)
npm install # only the MCP server (the SDK/zod) + the test suites need this
npm start # MCP server over stdio
npm run serve # HTTP API (same as node http.js)
npm run build:manifest # regenerate manifest.json after any token/component changeRegister the local MCP server with a client (mcp.json):
{ "mcpServers": { "eds": { "command": "node", "args": ["server.js"], "cwd": "./eds-mcp" } } }Requires Node 18+. The contract lives in tokens.json + components.json; edit those, re-run
build:manifest, and every consumer picks up the delta.
65 component contracts span fourteen domains — trading, compliance, payments, lending, wealth, identity, ai, ml,
ai-cost, data-eng, ai-infra, b2b, a11y, platform.
Quality & CI
Every push runs CI on Node 18 / 20 / 22: syntax check, ESLint, a manifest-drift check
(build-manifest must produce no diff), and three test suites — the dependency-free contract test
(npm test), the end-to-end MCP integration test that boots the real server over stdio and exercises
tools / resources / prompts through the SDK client (npm run test:mcp), and the HTTP API integration
test that boots the real REST server and hits every endpoint (npm run test:http).
npm run validate # everything CI runs, locally: build:manifest + lint + test + test:mcp + test:httpTyped (core.d.ts), MIT-licensed, SemVer-versioned (CHANGELOG). See
CONTRIBUTING, SECURITY, and runnable examples/.
Files
core.js pure engine — all logic, dependency-free, importable as a library + test-covered
core.d.ts TypeScript declarations for the library API
loadCore.js builds a ready core from the bundled JSON (shared by server, http, tests)
server.js thin MCP adapter — 29 tools + 5 resources + 3 prompts over stdio
http.js zero-dependency HTTP REST API — 29 endpoints + OpenAPI 3.1 (node http.js)
build-manifest.js auto-sync engine — hashes contracts -> manifest.json
tokens.json token contract (color light/dark, space, radius, type, density)
components.json component contracts (purpose, when-to-use/not, props, a11y, regulatory, dataContract)
consumer.json the Consumer Design System pack — 118 B2C entries + agentProtocol + bundles + hardRules
test.js dependency-free test — contract shape + manifest sync + full engine behaviour
test-mcp.js end-to-end integration test — boots the real MCP server, exercises it via the SDK client
test-http.js end-to-end integration test — boots the real HTTP API, hits every endpoint
manifest.json generated — version + SHA-256 per file
Dockerfile zero-dependency image for the HTTP API
.github/ CI workflow (Node 18/20/22), issue + PR templates, dependabot
examples/ library usage + an MCP client configAvailable Tools
29 toolsaudit_accessibilityAudit accessibilityC
Static accessibility audit of a component against its contract: a11y contract present, error state declared (status in words not colour alone), every colour token defined for both themes in lock-step, reduced-motion guard, regulatory anchor — plus a per-token contrast read in both themes. Verifies the contract, not a running DOM.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description partially discloses behavior by stating it's static and verifies a contract, not a live DOM. However, it omits side effects, permissions, or return format, leaving gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and somewhat verbose, packing many details into two sentences. It is structured but could be more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and lack of output schema, the description is incomplete. It explains what it checks but not the required input, output format, or usage steps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 1 parameter (id) with 0% description coverage. The description does not mention the parameter or its meaning, failing to add value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs a static accessibility audit of a component against its contract, listing specific verifications like a11y contract, error state, color tokens, reduced motion, and contrast. This distinguishes it from sibling tools such as contrast_report or compliance_check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool vs. alternatives. It implies usage for static contract verification but lacks exclusions or context for selecting it over other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bundle_componentsBundle componentsC
Resolve requires transitively and return a dependency-ordered set (deps first) plus the union of tokens + regulatory anchors. For composing a surface.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions resolving requires transitively but does not disclose whether this is a read operation, what happens to the input, or any side effects. No safety/permission info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action. Could be slightly improved by integrating the last fragment, but overall concise and structured well.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacking essential parameter explanation and safety/usage context. For a tool with one parameter, no output schema, and no annotations, the description does not sufficiently fill gaps for an AI agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the only parameter 'ids' is not explained in the description. The description implies these are component identifiers but gives no details on format, constraints, or behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it resolves transitive dependencies and returns a dependency-ordered set plus tokens and regulatory anchors. It distinguishes from sibling tools like list_components or get_tokens by focusing on bundled resolution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only says 'For composing a surface,' which is vague. No explicit context for when to use this tool vs alternatives like list_components or get_consumer_bundles. No exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compliance_checkCompliance coverage checkC
Map a jurisdiction (us | eu | uk | au | sg | jp | global) and optional feature keywords to the regulatory anchors and guardrail components PRESENT in this design system. A coverage map for design, not legal advice.
| Name | Required | Description | Default |
|---|---|---|---|
| feature | No | ||
| jurisdiction | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses it is a mapping tool for design coverage and not legal advice, but does not state whether it performs reads or writes, what happens to data, or any authentication requirements. The behavioral context is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, concise, and front-loaded with the verb 'Map' and the resource. Every word serves a purpose without redundancy or fluff. It is well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 parameters, no output schema, and no annotations, the description is insufficient. It does not explain what the output looks like (e.g., list, map, status), nor does it define 'regulatory anchors' or 'guardrail components'. The agent lacks enough context to fully understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning by listing the jurisdiction enum values and describing 'feature' as 'optional feature keywords'. However, it does not detail the expected format or allowed values for 'feature', and the jurisdiction enum values are already in the schema. The description adds some value but not fully comprehensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool maps jurisdictions and feature keywords to regulatory anchors and guardrail components. It enumerates jurisdiction values (us, eu, etc.) and specifies the scope ('in this design system'). However, it does not explicitly differentiate from sibling tools like 'find_by_regulation' or 'recommend_component', so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives. It only states the tool produces a coverage map for design and is not legal advice, but lacks explicit when-to-use or when-not-to-use context. Sibling tools like 'find_by_regulation' or 'recommend_component' are not mentioned as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_flowCompose a flowA
Assemble a multi-component flow from a list of ids: dependency-resolved order (deps first), per-step decision register, and the union of tokens + regulatory anchors across the flow. For building a KYC / order / onboarding surface end to end.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | ||
| name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It discloses behavioral traits: dependency order resolution, per-step decision register assembly, and merging of tokens and regulatory anchors. This adds meaningful context beyond a simple 'compose flow' label. However, it does not explicitly state whether the operation is read-only or has side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first details the core logic, the second provides a use case. The description is efficient and front-loaded with key functionality. It could be slightly more structured (e.g., separate parameter guidance) but is not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description adequately conveys what the tool returns (dependency order, decision register, token/anchor union). It is sufficiently complete for a flow composition tool, though parameter 'name' lacks explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the 'ids' parameter as a 'list of ids' for component assembly. However, it does not address the 'name' parameter, and schema description coverage is 0%. The description adds some meaning beyond the schema but is incomplete for all parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'assemble' and resource 'multi-component flow'. It specifies key operations: dependency-resolved order, per-step decision register, and union of tokens + regulatory anchors. The use case 'building a KYC / order / onboarding surface end to end' distinguishes it from sibling tools like list_components or get_component.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for assembling a flow from component IDs, with a concrete use case. However, it does not provide explicit guidance on when to use this tool versus alternatives, nor does it list exclusions or prerequisites. The context is clear but lacks proactive direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contrast_reportContrast reportA
The WCAG 2.1 contrast ladder for the token set in both themes (or one): foreground tokens over backgrounds with AA / AA-large / AAA classification and a failures list. The machine version of the Accessibility Lab contrast checker.
| Name | Required | Description | Default |
|---|---|---|---|
| theme | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool produces a contrast ladder with classifications and failures, indicating a read-only compute report. However, it does not explicitly state it is non-destructive or describe any side effects. The context is sufficient for a report tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences; the first is dense and informative, while the second ('machine version...') adds context but is somewhat vague. It is reasonably concise but could be tightened to remove minor redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input (one optional enum) and no output schema, the description sufficiently explains the output: a contrast ladder with AAA/AA/AA-large classification and failures. It does not specify the output format (e.g., JSON, text), but for a report tool this is acceptable. Overall, it provides complete context for the tool's functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. The description mentions 'both themes (or one),' which partially explains the optional parameter. However, it does not explicitly state the effect of omitting the parameter (e.g., defaults to both) or describe the enum values. The compensation is adequate but not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a WCAG 2.1 contrast ladder for tokens, with classification and a failures list. It uses specific verbs and resources ('contrast ladder') and distinguishes itself from sibling tools like 'audit_accessibility' or 'get_tokens' by focusing specifically on contrast ratios.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking token contrast compliance and mentions being the 'machine version of the Accessibility Lab contrast checker,' but it does not explicitly state when to use this tool versus alternatives like 'audit_accessibility' or 'compliance_check.' No when-not or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diff_sinceDiff since versionB
Given a consumer version, report whether a newer contract exists so it pulls only the delta. Auto-sync primitive.
| Name | Required | Description | Default |
|---|---|---|---|
| version | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must reveal behavioral traits. It mentions 'report' and 'pulls', but does not clarify if the tool is read-only or has side effects (e.g., modifying state). No information on authentication, rate limits, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. Front-loaded with the action and context. Every sentence contributes to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite low complexity (1 param), the description lacks details on return values, error cases, and side effects. It does not guide when to use this vs. sibling tools like get_consumer_component. The 'auto-sync primitive' hint is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'version' is explained as a 'consumer version', which adds some meaning beyond the schema's bare type string. However, no format, constraints, or examples are given. Schema coverage is 0%, but description only minimally compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks for a newer contract given a consumer version and pulls only the delta. It uses specific verbs and identifies the resource (contract version) and action (diff). This distinguishes it from siblings like get_data_contract which fetch full contracts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for synchronization with the phrase 'Auto-sync primitive', but it does not explicitly state when to use this tool versus alternatives. No exclusions or when-not guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_themeExport themeA
Emit the whole token set as ready-to-use css | json | scss | tailwind. Dual-theme, self-consistent with scaffold_component variable names.
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It mentions the output is 'dual-theme' and 'self-consistent with scaffold_component variable names,' which adds useful context. However, it does not mention whether the operation is read-only, any auth requirements, or what happens on failure. The description partially reveals the tool's nature but lacks completeness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and resource, then efficiently adds key context about themes and consistency. Every word adds value, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple export tool with one parameter and no output schema, the description covers the purpose, formats, and thematic consistency. However, it does not specify the exact return type (e.g., string, file) or behavior in edge cases, which an agent might need. The absence of output schema increases the need for such details, but the description is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a single required parameter 'format' with an enum, but its description coverage is 0%. The description compensates by listing the formats ('css | json | scss | tailwind') and adding meaning with 'ready-to-use' and 'dual-theme, self-consistent.' This provides context beyond the raw enum values, though it could clarify the specific output for each format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Emit'), the resource ('the whole token set'), and the target formats ('css | json | scss | tailwind'). It also mentions dual-theme and consistency with scaffold_component, which distinguishes it from sibling tools like get_tokens or list_token_groups that focus on inspection rather than export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to export the entire token set in a specified format), but it does not explicitly state when not to use it or suggest alternatives. Sibling tools like get_token or list_token_groups provide context for alternative use cases, but no direct guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_by_regulationFind by regulationA
Find every component that serves a given rule (e.g. "FINRA 2111", "NACHA", "SEC 17a-4"). Compliance-driven discovery.
| Name | Required | Description | Default |
|---|---|---|---|
| rule | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full burden. It only states it finds components without disclosing side effects, read-only nature, or performance characteristics. The noun 'find' hints at read-only, but it's not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose with examples, second adds contextual note. No fluff, every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter search tool without output schema, the description covers the core functionality. However, it lacks details on return structure, pagination, or any edge cases, making it only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'rule' is a string with no description in schema (0% coverage). The description adds concrete examples (FINRA 2111, NACHA, SEC 17a-4) which help clarify expected values, but does not specify format or constraints beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds components that serve a given rule, with specific examples of regulations (FINRA 2111, NACHA, SEC 17a-4). This differentiates it from siblings like search_components, which are more generic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context ('Compliance-driven discovery') implying when to use it, but does not explicitly state when not to use it or compare to alternatives like search_components. This is adequate but not thorough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_consumer_by_anchorFind consumer components by anchorB
Regulation-first discovery over the consumer catalogue: "COPPA" / "GDPR Art 7" / "FTC" / "WCAG" / "EU AI Act" returns the entries (and hard rules) that answer to it. Start from the rule, not the widget.
| Name | Required | Description | Default |
|---|---|---|---|
| rule | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions returning 'entries (and hard rules)' but does not disclose behavioral traits such as read-only nature, authentication needs, error handling, or what happens if the rule is not found. This is insufficient for a tool with no other behavioral hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences, with no wasted words. The first sentence states the purpose, and the second provides usage guidance. It is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter, no output schema, and no annotations, the description provides basic context but lacks details on return value structure, error scenarios, and explicit differentiation from similar tools. It is adequate for a simple lookup but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'rule' has no description in the schema (0% coverage), but the tool description provides example values ('COPPA', 'GDPR Art 7') that add meaning beyond the raw string type. However, it lacks details on format, case sensitivity, or allowed values, so it earns a baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs regulation-first discovery over the consumer catalogue, using examples like 'COPPA' and 'GDPR Art 7'. It distinguishes from generic search tools by emphasizing starting from the rule. However, the term 'anchor' in the name is not explicitly defined, causing slight ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need to find consumer components by a regulation (e.g., 'Start from the rule, not the widget'), but it does not explicitly state when not to use it or provide alternatives. Given siblings like search_components and find_by_regulation, there is overlap with no clear differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agent_protocolGet the agent protocolB
The consumer system's machine-carried reading logic: the seven-step read path (discover → fetch index → select → read register → resolve bundles & hard rules → build from tokens → gate to a human) plus the hard rules that can BLOCK a build.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only describes the content returned. It does not disclose whether the tool has side effects, requires authentication, or is safe to call repeatedly. The mention of 'reading logic' hints at idempotency but is not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the main purpose. It is concise but uses jargon ('gate to a human'), which slightly reduces clarity. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description adequately conveys what the protocol includes (steps and rules) but lacks details on output format, representation, or meaning of terms like 'hard rules'. It is minimally complete for a no-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so baseline score is 4 per instructions. There is no parameter information to add, and the schema coverage is 100% by definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it returns the consumer system's read protocol, including a 7-step read path and hard rules. It clearly identifies what the tool retrieves, distinguishing it from sibling tools that deal with tokens, components, or bundles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as when to retrieve token groups or components instead. The description lacks context for appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_componentGet component contractC
Full contract: purpose, props, whenToUse/whenNot, a11y, regulatory anchors, tokens, dataContract.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It lists what the contract includes but omits behavioral traits (e.g., read-only, performance, permissions, error handling). Minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core concept ('Full contract') and itemizes contents. Slightly better structure could improve readability, but it is efficient without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 29 siblings, no output schema, and 0% schema coverage, the description is insufficient. It lacks format details, error behavior, and any guidance on how to interpret the contract. Missing key completeness for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description adds no meaning to the sole parameter 'id' – it does not explain what 'id' refers to (presumably component ID). Parameter semantics are entirely absent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Full contract' and lists specific content areas (purpose, props, whenToUse/whenNot, a11y, regulatory anchors, tokens, dataContract). This distinguishes it from siblings like get_tokens or get_data_contract which are more narrow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. It mentions 'whenToUse/whenNot' as part of the returned content, but gives no explicit usage advice for the tool itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_consumer_bundlesGet consumer bundlesC
Bundled-by-contract pairs (paywall→cancellation, UGC→report & block, checkout→order tracking, agent-confirm→agent-trace). All of them, or the obligations of one id — include them unprompted.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose whether the operation is read-only, requires authentication, or has side effects. The description only hints at return data but lacks behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise but dense with examples in parentheses, which may hinder clarity. The second sentence 'include them unprompted' is unclear. Not every word adds value for an AI.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description should provide a complete picture. It lacks information about return format, pagination, error handling, and required permissions, leaving significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'id' has no schema description. The description adds minimal semantics by mentioning 'obligations of one id', but does not clarify the type or purpose of the id (e.g., contract ID, bundle ID).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that the tool returns 'bundled-by-contract pairs' with examples, which gives a specific resource. However, the phrasing is cryptic and may confuse an AI agent about the exact nature of 'consumer bundles'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus siblings like list_consumer_components or get_consumer_component. The mention of 'one id' is implicit but lacks comparative context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_consumer_componentGet a consumer componentC
One consumer entry with its bundle obligations attached (what it requires, what requires it). The when-not-to cell of the register at url is binding.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It indicates read-like behavior (get) but does not disclose side effects, permissions, or error conditions. The cryptic second sentence adds ambiguity rather than clarity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences total; the first is functional but the second is cryptic and not self-explanatory. Could be more concise by removing the confusing register reference.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description only vaguely mentions 'bundle obligations attached'. Missing details on response format, pagination, error handling, or what 'binding' means. Incomplete for a tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention the 'id' parameter at all, providing no additional meaning beyond the bare schema definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves a single consumer entry with bundle obligations, distinguishing it from sibling tools like 'get_component' and 'list_consumer_components'. However, the second sentence about 'when-not-to cell' is confusing and partially obscures purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as 'list_consumer_components' or 'get_consumer_bundles'. Missing when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_data_contractGet data contractC
The data shape + required render states (loading / empty / error / stale) for a component.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden. It mentions the return type (data shape + render states) but does not disclose side effects, permissions, rate limits, or other behavioral traits. For a read operation, basic transparency is lacking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—a single sentence fragment—but it sacrifices completeness for brevity. It is not verbose, but the conciseness does not aid understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description should provide richer context. It does not explain what a 'data contract' is, the format of the response, or how render states are represented. The tool has only one parameter, so more detail is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 0% and the description provides no explanation of the 'id' parameter. The agent has no clue what the ID refers to (e.g., component ID, element ID). The description fails to add any value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly indicates the tool returns the data shape and required render states for a component. Although it lacks a verb, the tool name 'get_data_contract' implies retrieval. It distinguishes itself from siblings like 'get_component' by focusing on the contract rather than the component itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'get_component' or 'list_components'. There is no context on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_decision_registerGet decision registerD
The four-cell register (when to use / when not & instead / behaviour & a11y / regulatory) — the line between a kit and a system.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as read-only or destructive nature. It fails to add value beyond the minimal schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short but at the expense of essential information. It under-specifies the tool's purpose and usage, making it insufficient rather than concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no description of return values or behavior, the tool definition is completely inadequate for proper invocation by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the 'id' parameter's purpose or format. It adds no meaning beyond the type definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description mentions a 'four-cell register' and 'the line between a kit and a system,' giving a vague sense of the resource but not clearly stating the action (get) or what the tool returns. It is not a tautology but lacks specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus its many siblings (e.g., get_tokens, get_component). The description does not provide any context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_manifestGet manifestA
Version + per-file SHA-256 checksums for sync verification.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, but description fully explains what the tool does: returns version and checksums for verification. It is transparent about its read-only nature and output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, concise sentence front-loads key information (version + checksums) and purpose, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description provides adequate context by stating return content and purpose. Slightly more detail on output format could improve, but sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100%. The description adds value by explaining the return value context, meeting the baseline for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool returns version and per-file SHA-256 checksums for sync verification, specifying both the content and purpose. It distinguishes from siblings which deal with tokens, components, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for sync verification, providing clear context. No explicit when-not or alternatives, but the purpose is specific enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_methodGet the methodB
The Edwson operating contract — the nine non-negotiables + verification gates that every component and scaffold satisfies. The Ed-agent in machine-readable form.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for behavioral disclosure. It does not mention whether the tool is read-only, whether it has side effects, or what authentication is required. As a getter with zero parameters, the risk is low, but the description omits any safety or behavior cues beyond the content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is efficient. However, it is somewhat poetic ('the nine non-negotiables + verification gates') and could be more direct. It front-loads 'the method' but the phrasing may confuse an AI agent expecting a straightforward action verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does not clarify the return format beyond 'machine-readable form'. For a tool with no parameters, it still lacks information about what the agent will receive (e.g., JSON, string, structured object). This leaves the agent uncertain about how to process the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so schema coverage is 100% by default. The description adds no parameter details because none exist, which is acceptable. The baseline for no parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states what the tool retrieves by naming it as 'the method' and elaborating on its content (Edwson operating contract, nine non-negotiables, verification gates). This distinguishes it from sibling tools like get_component or get_data_contract, as it points to a unique core document. However, it does not explicitly use a verb like 'get' or 'retrieve', relying on the tool name for that.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. With 29 sibling tools, it would be helpful to explain that this tool returns the foundational method contract, while tools like get_data_contract or get_component return other artifacts. The description gives no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statsGet system statsA
System overview: version, component + domain counts, regulatory-framework coverage, token count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It implies a read-only operation (get) and lists return items, but does not explicitly state safety or side effects. Adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is concise and front-loaded with the key term 'System overview'. No unnecessary words, but could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and no annotations, the description adequately covers the tool's behavior by listing the information it returns. However, it could explicitly state that the tool returns data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has zero parameters, and schema description coverage is 100% (trivially). Baseline score of 4 applies as there are no parameters to describe.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool returns a system overview including version, component and domain counts, regulatory coverage, and token count. This distinguishes it from sibling tools that focus on specific resources or entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining a broad system summary, but does not explicitly specify when to use this over alternatives or provide exclusions. No guidance on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tokenGet one tokenA
Resolve a single token by name (e.g. "accent2", "space.4", "radius.md") to its value(s) + canonical CSS var, theme-aware for color.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| theme | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Describes read operation and return format, but lacks disclosure of auth requirements, error handling, or what happens if token not found. Adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with purpose, no wasted words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers inputs and outputs for a simple lookup tool. No output schema but describes return format. Could be more complete about multi-value response if no theme specified, but sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, description compensates by explaining name parameter with examples and theme parameter with enum values. Adds meaning beyond schema, though could clarify optionality of theme.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'resolve' with resource 'single token' and specific outputs (value(s) + canonical CSS var, theme-aware). Distinguishes from siblings like get_tokens (plural) and list_token_groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied use for individual token lookup by name, but no explicit when-to-use, when-not-to-use, or alternatives mentioned. Context from sibling names helps but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tokensGet tokensA
Return only the requested token group (and theme for color). Avoids shipping the whole system.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | color | space | radius | type | density | |
| theme | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must cover behavior. It describes the return as a token group with optional theme for color. It does not mention side effects, errors, or permissions. Adequate for a simple read operation but could be more explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, directly front-loaded with purpose. No fluff. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter tool without output schema or annotations, the description covers core functionality and usage context. Lacks details on response format or error cases, but adequate given simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (group has description, theme has enum only). The description mentions 'theme for color' adding context for the theme parameter, but does not elaborate on group values. Baseline 3 with modest additional value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a specific token group and optionally a theme for color tokens. It distinguishes itself from siblings like list_token_groups by focusing on a single group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when needing a specific token group, mentioning efficiency ('avoids shipping the whole system'). It does not explicitly state when not to use or list alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lint_usageLint a usageA
Validate a proposed usage against the system: token names must resolve, render states must be canonical, and CSS must be tokens-only (no hardcoded hex/rgb, no inline styles). Returns issues by severity.
| Name | Required | Description | Default |
|---|---|---|---|
| css | No | ||
| states | No | ||
| tokens | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description covers validation rules and return format ('issues by severity'), but lacks operational details like side effects, auth, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that front-loads purpose and efficiently lists validation criteria with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately covers validation logic and output for a straightforward tool; could mention prerequisites or concurrency but not essential given simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% coverage; description adds meaning for all three parameters (css, states, tokens) by explaining validation rules, significantly improving understanding beyond raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool validates a usage and lists specific checks (token resolution, canonical render states, tokens-only CSS), distinguishing it from siblings which are other design system tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage from description (validate proposed usage), but no explicit when/when-not or alternatives among siblings like compliance_check or audit_accessibility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_componentsList componentsB
Every component id + purpose + domain + regulatory flags, optionally filtered by domain.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses the returned fields and optional filter, but lacks details on pagination, ordering, safety (though read-only is implied), rate limits, or any constraints. Minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence (15 words) that is front-loaded with key output fields and the filter option. Every word contributes; no redundant or vague phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool, the description covers purpose and filter but omits pagination, default ordering, or behavior when no domain specified. Given no output schema, it could be more informative, but remains adequate for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It adds context that the domain parameter is an optional filter. However, no details on allowed values (e.g., enumeration examples) or format. Adequate but not rich.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns component id, purpose, domain, and regulatory flags for every component, with optional domain filtering. This is a specific verb (list) and resource (components) distinction from siblings like get_component (single) or search_components (different filtering).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like search_components or find_by_regulation. The description only mentions optional domain filtering but does not state when it is appropriate or when to avoid it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_consumer_componentsList consumer componentsA
The Consumer Design System (B2C sibling, 118 categories / 11 domains incl. a 22-entry AI & Agents domain). List entries — id, name, domain, platform anchor, canonical URL — optionally filtered by domain (e.g. "ai", "commerce", "growth").
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description indicates a read operation (listing), which is safe, but does not disclose additional behavioral traits such as pagination, authentication, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading important system context (118 categories, 11 domains) followed by the tool's function, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description covers returned fields and filter capability. It lacks pagination details but is otherwise adequate given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds value by explaining the domain parameter is optional and giving concrete examples (e.g., 'ai', 'commerce', 'growth'), partially compensating for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the tool lists entries from the Consumer Design System (B2C sibling), enumerates returned fields (id, name, domain, platform anchor, canonical URL), and mentions optional domain filtering, distinguishing it from siblings like list_components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it's for B2C components and provides domain filter examples, but does not explicitly state when to use this tool over alternatives like search_consumer_components or list_components, nor does it mention exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_token_groupsList token groupsA
Token group names only — the cheapest way to orient before fetching values.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description itself must disclose behavior. It transparently notes that only token group names are returned and hints at low cost. For a simple, read-only listing tool, this is sufficient; no destructive behavior or authentication needs to be stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately communicates the tool's output and purpose. Every word adds value, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description covers all essential information: what it returns (names only) and its intended use case (low-cost orientation). It is fully sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the description is not required to add parameter meaning. The baseline of 4 applies because the description correctly conveys that no inputs are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns 'token group names only' and frames it as 'the cheapest way to orient before fetching values.' This specific verb-resource combination and the hint about cost/scope effectively distinguish it from sibling tools like get_tokens or get_token, which likely fetch full values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'cheapest way to orient before fetching values' implies using this tool as a lightweight first step before more expensive operations. It provides context for optimal usage, though it does not explicitly state when not to use it or name specific alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_componentRecommend a componentA
Describe a use case in natural language; get ranked component recommendations, each with its whenNot warning so the agent avoids misuse.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| useCase | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that output includes whenNot warnings for misuse avoidance, which adds behavioral context. However, it lacks information on authorization needs, whether it mutates data, or any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. Every part adds value: action, input, output, and benefit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and a limited description, the tool could benefit from more details about the output format (e.g., structure of recommendations) and explicit parameter coverage. The tool has many siblings with similar names; more context would help differentiate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the tool description only alludes to the useCase parameter ('Describe a use case in natural language'). The limit parameter is not mentioned, and no additional semantics are provided for how to use or format parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it takes a natural language use case and returns ranked component recommendations with whenNot warnings. It distinguishes from siblings like list_components (just lists) and search_components (query-based search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear use context (describing a use case to get recommendations) but does not explicitly state when not to use it or contrast with alternative tools like search_components or list_components. The mention of 'so the agent avoids misuse' implies guidance but is not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scaffold_componentScaffold a componentA
Generate a paste-ready, method-compliant skeleton (ds-section HTML + scoped tokens-only CSS + delegated reduced-motion-safe JS + the four-cell register) from a component contract. The killer tool: the agent gets correct structure, not invented structure.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It lists generated artifacts but does not disclose side effects (e.g., file creation), permissions needed, or behavior if the contract is invalid. Some context is added but insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, the first dense with essential info, the second promotional but brief. No wasted words, though the promotional tone slightly reduces clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex scaffold generator without output schema, the description omits return format, prerequisites, error handling, and explanations of jargon like 'four-cell register'. Incomplete for an autonomous agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single 'id' parameter. The description mentions 'from a component contract' implying id refers to the contract, but does not explicitly define the parameter, leaving ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Generate' and details the exact output: 'paste-ready, method-compliant skeleton' listing HTML, CSS, JS, and register. It clearly distinguishes from siblings like get_component (retrieve) and scaffold_test (test scaffold).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used to avoid 'invented structure', but does not explicitly state when not to use it or compare with alternatives like get_component for existing components.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scaffold_testScaffold a conformance testC
Generate a dependency-free, runnable contract-conformance smoke test for a component (tokens resolve, states canonical, regulatory anchors intact, a11y contract passes, scaffold CSS tokens-only). Ships the test discipline with the component.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It mentions the test is dependency-free and runnable, but does not detail side effects, file creation, permissions, or output format. The phrase 'ships the test discipline' is vague.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundant wording. The action is upfront, and the list of checks is concise. Could be slightly more front-loaded but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter and no output schema, the description should clarify return values and side effects. It does not mention whether the test is written to disk, returned as a string, or how to invoke it afterwards.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description only adds that the test is 'for a component', implying the 'id' is a component identifier. However, it does not explain what form the ID takes (path, name, UUID?) or any constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a dependency-free, runnable contract-conformance smoke test for a component, listing specific checks. It distinguishes from 'scaffold_component' but not from other testing siblings like 'audit_accessibility'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like 'audit_accessibility' or 'compliance_check'. No prerequisites or when-not-to-use are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_componentsSearch componentsA
Ranked keyword search across id, domain, regulatory, purpose, whenToUse. Returns ids + purpose + score.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It states the tool is a 'ranked' search and lists return fields, but does not explicitly confirm it is read-only, mention authorization needs, rate limits, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the key action ('Ranked keyword search'), and includes return fields. Every sentence is informative with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter search tool with no output schema, the description covers purpose, search scope, and return format. It is mostly complete, though it could mention whether results are paginated or limited.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the single parameter 'query'. The description adds value by specifying the parameter is used for 'keyword search across id, domain, regulatory, purpose, whenToUse', which goes beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a 'ranked keyword search' across specific fields (id, domain, regulatory, purpose, whenToUse) and returns ids, purpose, and score. This distinguishes it from sibling tools like list_components (lists all) and get_component (fetches by ID).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for keyword searches but does not explicitly state when to use this tool versus alternatives like list_components or other search tools (e.g., find_by_regulation). No exclusion criteria or alternative names are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_consumer_componentsSearch consumer componentsB
Keyword search across consumer names, summaries, domains and anchors, e.g. "paywall", "child", "cancel".
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It identifies the tool as a keyword search but does not explain case sensitivity, pagination, result format, or whether it is read-only. The description is insufficient for an agent to understand all behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with examples, containing no filler. Every word adds value, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one simple parameter and no output schema, the description is adequate but lacks details on return type, sorting, or limits. It meets the minimum viable threshold but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides example queries ('paywall', 'child', 'cancel'), which adds meaning beyond the schema's bare type definition. However, it does not describe the expected format, supported operators, or required syntax, and schema coverage is 0%, so the description partially compensates but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'keyword search across consumer names, summaries, domains and anchors' with concrete examples, making the tool's purpose specific. However, it does not explicitly state that it returns a list of matching consumer components, leaving slight ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like search_components or find_consumer_by_anchor. It only implies usage via the search functionality, but lacks explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
29 tool updates
v1.17.0- First observed
audit_accessibility - First observed
bundle_components - First observed
compliance_check - First observed
compose_flow - First observed
contrast_report - First observed
diff_since - First observed
export_theme - First observed
find_by_regulation - First observed
find_consumer_by_anchor - First observed
get_agent_protocol - First observed
get_component - First observed
get_consumer_bundles - First observed
get_consumer_component - First observed
get_data_contract - First observed
get_decision_register - First observed
get_manifest - First observed
get_method - First observed
get_stats - First observed
get_token - First observed
get_tokens - First observed
lint_usage - First observed
list_components - First observed
list_consumer_components - First observed
list_token_groups - First observed
recommend_component - First observed
scaffold_component - First observed
scaffold_test - First observed
search_components - First observed
search_consumer_components
TDQS
Each tool targets a distinct resource or action: tokens, components, consumers, compliance, accessibility, scaffolding, etc. Even similar tools like 'search_components' and 'recommend_component' serve different query methods (keyword vs. natural language), eliminating ambiguity.
All 29 tools follow a consistent verb_noun pattern in snake_case (e.g., list_token_groups, get_component, bundle_components, scaffold_component). There are no deviations or mixed conventions.
29 tools is above the typical well-scoped range (3-15) and falls into the 'heavy' category (16-25+). While each tool serves a specific purpose, the count is borderline and could benefit from consolidation in some areas (e.g., multiple search/find tools).
The tool surface covers the full design system lifecycle: discovery (list, search, recommend), retrieval (get, find), validation (lint, audit, contrast), scaffolding, compliance, and versioning. No obvious gaps for an agent working with the system.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Governed app access for AI agents: 1,000+ apps & 12,000+ tools via Code Mode MCP.
Build and manage your design system with AI: tokens, themes, components, icons, Figma and code.
Access and maintain design system docs, tokens, components, skills, and contexts across any project.
Agent Token Budget MCP — hard per-session token + spend cap with signed budget-exhausted
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server that exposes your design system components and tokens to AI agents, preventing duplicate component creation and hardcoded token values.189MIT
- AlicenseNot gradedqualityAmaintenanceA read-only MCP server that provides AI coding agents with a queryable contract for design system tokens, components, patterns, and anti-patterns.201Apache 2.0
- AlicenseNot gradedqualityBmaintenanceAn MCP server that gives AI assistants structured access to a design system's tokens, components, guidelines, and patterns, enabling them to read, lint, and author design system data.1MIT
- FlicenseNot gradedqualityBmaintenanceThe Wellx Design System MCP enables AI agents to access the single source of truth for Wellx design, including tokens, component specs, rules, and search, ensuring consistent design implementation across surfaces.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Edwson/eds-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server