Skip to main content
Glama
mrasadi

Design-Code Registry MCP

by mrasadi

Design-Code Registry MCP

一个确定性的、与项目无关的 MCP 服务器,将设计组件、令牌和模式映射到它们的代码实现——适用于任何设计工具和任何框架。

它是 Figma Code Connect 的一个轻量级、对 git 友好的替代方案,作为一个通用知识层构建,任何兼容 MCP 的 AI 编码代理(Claude Code、Cursor、Codex、OpenCode 等)都可以查询它。

Figma Design  ↕  Design Component / Token / Pattern  ↕  Code Implementation

为什么存在

AI 编码代理擅长编写代码,但不擅长知道"这个项目是否已经有 Button 组件,如果有,它叫什么名字、在哪里?"如今,这些知识要么存在于代理的模糊推断中(不可靠),要么与某个特定设计工具 + 框架的组合紧密耦合(Figma Code Connect,仅支持 React/Figma)。

核心原则:精确的注册表数据胜过 AI 推断。 如果注册表中有明确的映射,代理就不应该需要猜测。如果没有,代理应该被告知"未解析",而不是凭空编造。

这个项目是:

  • 不是 AI 模型。 它是一个通过 MCP 工具暴露的结构化知识层。

  • 不是向量数据库 / RAG。 解析仅限精确匹配(id、设计引用、规范名称、别名)——绝不用嵌入或模糊相似度。

  • 不绑定任何框架或设计工具。 React、Vue、Svelte、SwiftUI、Flutter、HTML——以及 Figma、Sketch、Penpot 或任何其他工具——在模式中都只是字符串,而不是代码中的特例。

Related MCP server: Component MCP Server

架构

                    AI Agent (Claude Code, Cursor, ...)
                             │
                             ↓
                       MCP Protocol (stdio)
                             │
                             ↓
                Design-Code Registry MCP  (this package — the generic engine)
                             │
                     FileRegistryProvider
                             │
              ┌──────────────┼──────────────┬─────────────┐
              ↓              ↓              ↓             ↓
         components.json  tokens.json  patterns.json  rules.json
                             │
                    .design/registry/   (your project — the data)

服务器(这个 npm 包)是通用的,可以在完全不同的项目中复用。注册表(你项目中的 .design/registry/)存放所有项目特定的事实,以纯 JSON 文件形式存在,在 git 中可读、可 diff、可合并。

注册表概念

概念

文件

捕获的内容

清单

manifest.json

模式版本、项目信息、主要设计工具。

组件

components.json

一个设计组件(例如 Button)→ 一个或多个代码实现,跨语言/框架。

令牌

tokens.json

一个设计令牌(颜色、间距、排版等),具有稳定的 id 和值。

模式

patterns.json

组件的更高级组合(例如"空状态"= message + Button)。

规则

rules.json

代理必须遵守的结构化项目决策(例如"复用 Button,不要创建新的")。

一个组件可以有多个实现——同一个设计概念同时映射到 React、Vue、SwiftUI 和 Flutter,如果你的项目需要的话:

{
  "id": "button",
  "name": "Button",
  "implementations": [
    { "language": "typescript", "framework": "react", "component": "Button", "sourcePath": "src/components/Button.tsx" },
    { "language": "dart", "framework": "flutter", "component": "AppButton", "sourcePath": "lib/widgets/app_button.dart" }
  ]
}

设计引用也是通用的——tool 是一个开放字符串,而不是枚举,因此为新的设计工具添加支持永远不需要模式迁移:

{ "tool": "figma", "fileId": "abc123", "nodeId": "12:340", "url": "https://figma.com/file/abc123?node-id=12-340" }

参见 src/schema/ 获取完整、带注释的模式(Zod),以及 examples/fictional-project/ 获取完整的示例。

确定性解析

registry_find_by_design_reference 和底层解析器从不猜测。它们按以下固定顺序尝试,并在第一个产生匹配的策略处停止:

  1. 精确设计引用(tool + node/file/url/name)

  2. 精确注册表 id

  3. 精确规范名称

  4. 显式别名

  5. 否则:unresolved

如果某个策略匹配到多个组件,解析在该处停止并报告 ambiguous,同时列出所有候选——它从不静默地选一个:

// unresolved
{ "status": "unresolved" }

// ambiguous
{ "status": "ambiguous", "strategy": "alias", "candidates": [ /* ... */ ] }

// resolved
{ "status": "resolved", "strategy": "design-reference", "component": { "id": "button", /* ... */ } }

MCP 工具

读取

工具

用途

registry_get_manifest

获取注册表元数据(模式版本、项目、设计工具)。

registry_list_components

列出组件,可选地按状态/标签过滤。

registry_get_component

按精确 id 获取一个组件。

registry_find_component

在 id/名称/别名/标签中进行确定性子字符串搜索。

registry_find_by_design_reference

将设计工具引用解析为组件(见上文)。

registry_list_tokens

列出令牌,可选地按类别过滤。

registry_get_token

按精确 id 获取一个令牌。

registry_list_patterns

列出 UI 模式。

registry_get_pattern

按精确 id 获取一个模式。

registry_get_rules

获取完整的结构化规则文档。

registry_validate

运行完整的注册表验证(见下文)。

写入

工具

用途

registry_init

创建新的入门注册表。如果已存在则失败(除非使用 force)。

registry_create_component

创建组件。如果 id 重复则失败。

registry_update_component

修补现有组件。如果 id 不存在则失败。

registry_deprecate_component

将组件标记为已弃用(不存在破坏性删除)。

registry_create_token / registry_update_token

相同的创建/更新契约,用于令牌。

registry_create_pattern / registry_update_pattern

相同的创建/更新契约,用于模式。

registry_update_rules

替换完整的规则文档(发送完整的期望列表)。

变更安全性: 创建已存在的 id 是错误(请使用 update);更新不存在的 id 是错误(请使用 create);组件没有破坏性删除——请使用 registry_deprecate_component,以便历史记录在 git 中保留。

验证

registry_validate(以及 CLI 中的 design-code-registry validate)检查整个注册表:

  • 组件/令牌/模式/规则内的重复 id

  • 重复的设计引用(两个组件声称拥有同一个 Figma 节点)

  • 损坏的引用(模式指向不存在的组件、弃用的 replacedBy 指向空、规则的 appliesTo.id 指向空)

  • 循环模式引用(模式 A → 相关模式 B → 相关模式 A)

  • 已批准组件缺少实现(警告,不是错误)

{
  "valid": false,
  "errorCount": 1,
  "warningCount": 0,
  "issues": [
    { "severity": "error", "code": "BROKEN_REFERENCE", "message": "Pattern \"empty-state\" references component \"buton\", which does not exist.", "location": "pattern:empty-state" }
  ]
}

CLI

面向人类的界面,使用与 MCP 工具相同的 RegistryService——两者之间的行为永远不会漂移。

npx design-code-registry-mcp init --name "My Project" --design-tool figma

design-code-registry validate
design-code-registry list components --status approved
design-code-registry list tokens --category color
design-code-registry list patterns

design-code-registry add component --id button --name Button
design-code-registry add token --id color-primary --name "Primary" --category color --value "#3B5BFF"
design-code-registry add pattern --id empty-state --name "Empty State" --components button

每个命令都接受 -p, --path <path> 来指向特定注册表,或读取 DESIGN_REGISTRY_PATH。

安装

npm install -g design-code-registry-mcp
# or, without installing:
npx design-code-registry-mcp init

Claude Code 设置

将服务器添加到你的 Claude Code MCP 配置中(项目根目录的 .mcp.json,或通过 claude mcp add):

{
  "mcpServers": {
    "design-code-registry": {
      "command": "npx",
      "args": ["-y", "design-code-registry-mcp"]
    }
  }
}

或者,使用显式注册表路径(在 monorepo 中很有用):

{
  "mcpServers": {
    "design-code-registry": {
      "command": "npx",
      "args": ["-y", "design-code-registry-mcp", "--registry-path=./packages/design-system/.design/registry"]
    }
  }
}

服务器通过 stdio 与任何兼容 MCP 的客户端一起工作——Claude Code 只是众多客户端之一,而不是服务器本身的依赖。

Figma MCP 集成

这个服务器不与 Figma API 通信,也不检查 Figma 文件——那是 Figma 自己的 MCP 服务器 的工作。两者被设计为互补的:

Figma MCP  →  design context (fileKey, nodeId, ...)  →  Design-Code Registry MCP  →  explicit mapping  →  AI agent  →  code

典型的代理工作流程:

  1. 代理向 Figma MCP 请求所选节点的 fileKey/nodeId。

  2. 代理使用这些标识符在此服务器上调用 registry_find_by_design_reference。

  3. 如果 resolved,代理复用返回的实现。如果 unresolved,代理可以(根据你项目的规则)提议新组件,并使用 registry_create_component 注册它。

多框架示例

单个注册表可以描述完全不同的代码库中的实现:

Button (design concept)
 ├── React        → src/components/Button.tsx
 ├── Vue          → src/components/Button.vue
 ├── SwiftUI      → Sources/Button.swift
 └── Flutter      → lib/widgets/app_button.dart

服务器不会因为你的项目使用其中哪一个而改变——模式将 language 和 framework 视为开放字符串。

示例项目

examples/fictional-project/ 包含一个完整、经过验证的示例注册表(Button、Input、Card、Modal、两个模式、七个令牌、五条规则),用于一个虚构的"Aurora Design System"。从那里复制 .design/registry/ 作为起点,或运行:

cp -r examples/fictional-project/.design .

AI 代理使用契约

连接到这个服务器的代理应该:

  1. 在创建任何可复用的 UI 组件之前查询注册表。

  2. 首先解析精确映射——永远不要猜测可能存在的映射。

  3. 复用现有的已注册实现,而不是重复它们。

  4. 在生成样式/布局之前读取相关令牌和模式。

  5. 诚实地报告 unresolved,而不是编造映射。

  6. 当 registry_find_component / registry_find_by_design_reference 显示等效组件已存在时,永远不要创建新的规范组件。

  7. 仅在没有合适的现有组件时才提议新组件。

  8. 将所有注册表变更视为明确、有意的操作——而不是偶然的副作用。

  9. 将注册表视为项目特定 Design ↔ Code 事实的权威来源。

同时,注册表并不拥有良好的工程判断力:当它不完整或明显有更可维护的方法时,代理应该说出来——区分已验证的注册表事实、推断的信息和建议——而不是机械地服从一个不完整的注册表。

开发

npm install
npm run build      # compile TypeScript → dist/
npm test           # build + run the full vitest suite (56 tests, including a real stdio subprocess e2e test)
npm run lint
npm run typecheck

在提交 PR 之前,请参阅 CONTRIBUTING.md 了解项目的设计原则。

限制与未来改进

  • 目前只提供本地、基于文件的注册表提供程序。RegistryService 层与提供程序无关,因此远程/API 支持的提供程序是可能的,无需触及 MCP 工具逻辑——只是尚未实现。

  • 还没有可选的 HTTP/SSE 传输(仅 stdio),遵循"不要过度设计第一版"的原则。

  • registry_find_component 是确定性子字符串搜索,不是排名/模糊搜索——这是有意为之,但意味着非常宽松的查询可能返回空结果,而人类会期望近似匹配。

  • 没有内置的 Figma/Sketch/Penpot API 客户端——这个服务器有意保持在 Figma MCP 等工具的下游,而不是重复它们的工作。

许可证

MIT

Available Tools

20 tools
registry_create_componentCreate a new componentA

Register a brand-new design component. Fails with DUPLICATE_ID if the id already exists — use registry_update_component instead. Only propose a new component when registry_find_component / registry_find_by_design_reference confirm no equivalent component exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameYes
tagsNo
rulesNo
designNo
statesNo
statusNo
aliasesNo
variantsNo
propertiesNo
descriptionNo
accessibilityNo
implementationsNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses a specific failure mode ('Fails with DUPLICATE_ID if the id already exists') and implies a persistent write operation. However, with no annotations provided, it does not disclose side effects, permissions, reversibility, or response behavior, leaving a meaningful transparency gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. Critical information is front-loaded: the action, the duplicate-failure condition, the alternative tool, and the required pre-check. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the tool's 13 parameters, heavy nesting, and no output schema, the description only covers duplicate handling and pre-checks. It omits basic guidance on required fields beyond id/name, the meaning of nested structures, and what a successful or failed response contains. For a tool this complex, the description is not complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 compensate for the 13 parameters. It only implicitly clarifies that 'id' must be unique and new; it provides no guidance on name, tags, rules, design, implementations, or other complex nested fields. The schema provides names and types, but the description adds almost no semantic value for the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Register a brand-new design component.' It clearly distinguishes itself from registry_update_component by stating the id-exists condition and naming the alternative tool, so an agent can select correctly without inspecting all siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage guidance: use registry_update_component when the id already exists, and only create when registry_find_component and registry_find_by_design_reference confirm no equivalent component exists. This is strong when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registry_create_patternCreate a new UI patternC

Register a brand-new higher-level UI pattern composed of one or more components.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameYes
tagsNo
designNo
statusNo
componentsNo
descriptionNo
layoutRulesNo
relatedPatternsNo
compositionRulesNo
usageConstraintsNo
responsiveBehaviorNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It does not mention what happens on duplicate ids, whether components must already exist, whether the operation is idempotent, or what validation is performed. For a write operation, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler or repeated schema details. It is concise, though its brevity contributes to the lack of behavioral and parameter context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A 12-parameter mutation tool with no annotations and no output schema needs substantially more context. The description omits return behavior, required fields, validation, uniqueness semantics, and relationships between parameters, leaving the agent under-equipped to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description only vaguely maps to the 'components' field by saying patterns are composed of components. It gives no guidance on required id/name constraints, status enum values, design structure, or the meaning of fields like layoutRules and compositionRules.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb, 'Register', and a clear resource, 'brand-new higher-level UI pattern composed of one or more components.' This distinguishes it from sibling create tools for components and tokens by emphasizing the pattern-level scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance about when to use this tool versus alternatives like registry_update_pattern or registry_create_component. It explains what the tool does but not the conditions or exclusions that should drive selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registry_create_tokenCreate a new design tokenA

Register a brand-new design token. Fails with DUPLICATE_ID if the id already exists — use registry_update_token instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameYes
typeNo
usageNo
valueYes
sourceNo
aliasesNo
categoryYes
descriptionNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description must carry behavioral transparency. It discloses that the tool fails with DUPLICATE_ID on conflicts and implies a persistent write operation. However, it does not mention auth requirements, response behavior, or any other side effects beyond the duplicate failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense sentence that front-loads the core action, then states the failure mode and the alternate tool. Every word contributes meaningful routing or behavioral information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and zero schema descriptions, the definition leaves important gaps. It covers the create-vs-update decision and the duplicate behavior, but it does not explain required parameter semantics or what happens on success, making it incomplete for an agent constructing a valid call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description adds no parameter-level meaning. It only indirectly references id uniqueness. For 9 parameters including ambiguous ones like type, usage, source, and aliases, the description fails to compensate for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a create action on a specific resource: 'Register a brand-new design token.' It also distinguishes itself from the sibling registry_update_token by explicitly framing the duplicate-id case, so an agent can tell them apart without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use this tool: for a brand-new token. It also names the alternative for existing ids: 'use registry_update_token instead.' This is clear routing guidance with no inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registry_deprecate_componentDeprecate a componentA

Mark a component as deprecated instead of deleting it. There is no destructive delete operation for components by design — history stays in git and agents can still see what a component used to map to.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
reasonNo
replacedByNoThe id of the component that should be used instead, if any.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains that deprecation is non-destructive, history remains in git, and agents can still see past component mappings. This is meaningful behavioral context beyond the tool name. It does not mention whether deprecated components are hidden from default listing or whether the operation is reversible via update, but the core behavior is well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with no filler. The key action is stated first, and the second sentence adds important design context about why there is no delete. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with three parameters and no output schema, the description plus schema is mostly adequate. It explains the operation's purpose and its non-destructive nature. The main gap is the lack of parameter semantics for 'reason', and there is no mention of what the response contains, but for a non-destructive marking operation this is a minor omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, and the description adds no parameter-level meaning. The 'id', 'reason', and 'replacedBy' parameters are left mostly to inference; only 'replacedBy' has an inline schema description. The description does not compensate for the low schema coverage, so an agent may not know the purpose of 'reason' or how 'replacedBy' relates to deprecation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Mark') and resource ('a component'), and clearly distinguishes this operation from deletion: 'There is no destructive delete operation for components by design.' It is immediately obvious what the tool does and how it differs from sibling tools like registry_update_component or registry_create_component.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent when to use this tool: when the intent is to deprecate rather than delete, and it notes that deletion is not available at all. It does not explicitly list alternative tools for other operations, but the 'instead of deleting it' framing gives clear contextual guidance for the primary decision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registry_find_by_design_referenceResolve a design reference to a componentA

Deterministically resolve a design-tool reference (e.g. a Figma fileKey/nodeId pair) to a registered component. Returns status 'resolved' with exactly one component, 'ambiguous' with all matching candidates, or 'unresolved' if nothing matches. Never guesses — if you get 'unresolved', treat the mapping as genuinely absent rather than inferring one.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoDeep link to the design node, if that's what you have.
nameNoThe component's name as it appears in the design tool.
toolYesDesign tool identifier, e.g. 'figma'.
fileIdNoDesign file/document identifier (e.g. Figma fileKey).
nodeIdNoDesign node/component identifier (e.g. Figma nodeId).

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility, and it delivers: it discloses determinism, the three possible return statuses, what each status contains, and the critical 'never guesses' rule. This adds real behavioral context beyond the tool name and schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with distinct jobs: scoping the operation, specifying return outcomes, and adding a behavioral caveat. No filler, no repetition of schema details, and the most important distinguishing facts are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains return statuses well despite the lack of an output schema, but it leaves input-contract gaps: with five optional-looking params and no annotation, an agent isn't told which combinations are valid or what error behavior looks like. Strong on outcomes, weaker on operational prerequisites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description only adds the fileKey/nodeId pair example and does not clarify valid parameter combinations or precedence among url, fileId/nodeId, and name, but the schema already documents each parameter individually.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb ('resolve') and resource ('design-tool reference to a registered component'), with concrete examples like Figma fileKey/nodeId. The determinism and status vocabulary further distinguish it from generic sibling search tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies the right context: use when you have a design-tool reference and need the matching registered component. However, it never contrasts with siblings like registry_find_component or registry_get_component, so the agent gets no explicit when-not-to-use or alternative-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registry_find_componentSearch componentsA

Deterministic substring search across component id, name, aliases, tags, and description. NOT semantic/AI search — use registry_get_component or registry_find_by_design_reference when you already know an exact identifier.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesFree-text query, matched as a case-insensitive substring.

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden, and it does well by disclosing that the search is deterministic and non-semantic, which prevents misuse. It also clarifies the search scope across multiple fields, though it could mention that it returns multiple matches or how results are ordered, a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste: the first defines scope and behavior, the second immediately routes to alternatives. Critically, the negative constraint ('NOT semantic/AI search') is front-loaded, which is exactly what an agent needs to see first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description is complete for invocation and selection purposes. It covers scope, behavior, limitations, and alternatives, leaving no obvious gap that would cause mis-invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers the single parameter fully (free-text, case-insensitive substring), and the description reinforces that the query is a plain substring match, not AI-based. This adds meaningful context beyond the schema, especially the negation of semantic behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Deterministic substring search') and a clear resource ('component id, name, aliases, tags, and description'), immediately distinguishing it from semantic search. It explicitly names the siblings it is not, which clarifies its unique role in the registry toolset.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use this tool (when you have a partial query) and when not to use it (when you already know an exact identifier), and names the two alternatives: registry_get_component and registry_find_by_design_reference. This leaves no ambiguity about tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registry_get_componentGet component by idA

Fetch a single component by its exact stable registry id. Returns an error if no such component exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe component's stable registry id.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the burden of behavioral disclosure. It transparently states that missing IDs produce an error and that matching is exact, which is useful and sufficient for a simple read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence conveys the core action, the identifying key, and the failure behavior with no wasted words. Every clause adds meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read operation with no output schema, the description covers the essential behavior: what it fetches, how to identify the item, and what happens when it is absent. It stops short of describing the returned component shape, but that is acceptable given the simple, single-entity scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents the id parameter thoroughly, including its pattern and 'stable registry id' meaning. The description adds only the 'exact' qualifier and error behavior, which is marginal value beyond the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('fetch'), a specific resource ('a single component'), and the lookup key ('its exact stable registry id'). It differentiates itself from sibling tools like registry_list_components and registry_find_component by emphasizing exact-id retrieval of one component.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the usage context clear: use this when you have the exact stable registry id for one component. It implies that fuzzy or partial lookup belongs elsewhere (e.g., registry_find_component), but it does not explicitly name alternatives or state 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.

registry_get_manifestGet registry manifestA

Return the registry's manifest: schema version, registry version, project info, and configured design tool(s). Use this first to confirm a registry exists and understand what project it describes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the tool returns a manifest and lists its contents, which suggests a read-only operation, but it does not disclose behavior when the registry does not exist or whether any side effects occur. This is acceptable but not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences provide the resource, the returned fields, and the intended usage without wasted words. The key purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only metadata retrieval tool, the description covers what it returns and how it should be used. No output schema exists, but the listed manifest fields give sufficient expectation of the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so schema coverage is trivially complete. The description adds contextual meaning by explaining what the manifest contains, but parameter-specific semantics are not needed here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Return') and a specific resource ('the registry's manifest'), and enumerates its contents: schema version, registry version, project info, and configured design tool(s). This distinguishes it from sibling tools like registry_get_component or registry_validate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'Use this first to confirm a registry exists and understand what project it describes,' giving clear contextual when-to-use guidance. It does not mention alternatives or exclusions, so it stops short of a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registry_get_patternGet pattern by idA

Fetch a single UI pattern by its exact stable registry id, including the components it composes.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. 'Fetch' implies a read operation and the description states what is included in the result. However, it does not disclose error behavior for missing ids, return shape structure, or whether composed components are full objects or references. The description adds some context but not comprehensive detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused sentence that front-loads the verb and resource, states the key constraint, and notes what is included in the result. There is no wasted wording or redundant repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter getter with no output schema, the description covers the essential facts: what to fetch, by what id, and what the result includes. It is complete enough for an agent to invoke the tool correctly, though a note on not-found behavior would make it fully robust.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides no description for the 'id' parameter (0% coverage), so the description must compensate. The phrase 'exact stable registry id' adds semantic meaning beyond the raw schema, indicating the id must be an exact, stable identifier rather than a search term. Still, it does not explain id formatting, examples, or how the id relates to pattern versions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Fetch'), the resource ('a single UI pattern'), and the lookup mechanism ('exact stable registry id'). It also adds a meaningful detail about the response ('including the components it composes'). It does not explicitly distinguish itself from sibling tools like registry_get_component or registry_get_token, but the resource type makes the distinction reasonably clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by its exact stable registry id' provides clear context: use this tool when you already have the precise, stable id of a pattern. It does not mention alternatives or exclusions, but for a simple get-by-id operation the usage context is adequately implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registry_get_rulesGet project rulesA

Return the full set of structured design/engineering rules (e.g. 'prefer existing Button component', 'do not use arbitrary colors'). Read this before generating UI code to respect project-specific constraints.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and conveys that this is a read-only retrieval by using 'Return' and by framing it as a preliminary read. It also adds detail about 'full set' and gives illustrative rule examples, but it stops short of describing output format or failure modes, which are minor for a parameterless getter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff, with the core behavior first and the usage context second. The examples earn their place by making the rule type concrete, and every clause adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema read tool, the description adequately covers what it returns and when to call it. It could be more explicit about the returned data shape or how to handle an uninitialized registry, but the current guidance is sufficient for correct invocation in the stated workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so there is no param semantics for the description to add. The description usefully explains what the returned rules will contain, which is the relevant information an agent needs for this no-input tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Return') and resource ('full set of structured design/engineering rules') with concrete examples, which clearly differentiates it from sibling tools like registry_update_rules or registry_get_manifest. The title 'Get project rules' is also reinforced by a substantive description rather than repeated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to read this before generating UI code, giving clear situational guidance. It does not name sibling tools or state when not to use it, but the intended context is clear enough for a getter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registry_get_tokenGet token by idA

Fetch a single design token by its exact stable registry id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it does well by indicating a read-only fetch operation and exact-match behavior. It doesn't disclose edge-case behavior like not-found handling or return format, but for a straightforward single-item getter this is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one tightly packed sentence with no filler. The core action and object are front-loaded, and every word adds clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter getter, the description is sufficient to invoke the tool: the agent knows what to pass and what kind of result to expect. It omits return details and error behavior, but there is no output schema and the tool's simplicity lowers the burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description adds meaningful semantics to the sole 'id' parameter by labeling it a 'stable registry id' that must match exactly. This helps the agent understand the id's role beyond the raw schema pattern, though it doesn't elaborate on the allowed format beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Fetch') and a specific resource ('a single design token'), and clarifies the lookup mode ('by its exact stable registry id'). This distinguishes it from sibling tools like registry_list_tokens or registry_find_component without needing to inspect their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies the tool is for direct retrieval when the caller already knows the exact stable registry id, not for searching or listing. It doesn't explicitly name alternatives, but the 'exact stable registry id' precondition gives clear context for when to choose this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registry_initInitialize a new registryA

Create a complete starter registry (.design/registry/{manifest,components,tokens,patterns,rules}.json + README) at the resolved registry path. Fails if a registry already exists there unless force=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoOverwrite an existing registry at this path. Use with caution.
designToolNoPrimary design tool, e.g. 'figma'. Informational only.
projectNameYes
projectDescriptionNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries behavioral disclosure itself. It discloses that the tool creates files, that it fails on an existing registry, and that force=true is the escape hatch; combined with the force parameter description ('Overwrite an existing registry'), an agent understands the destructive potential.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence conveys action, artifact layout, and failure/force behavior with zero filler. Every clause adds decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an initialization tool, it covers the main deliverables and the key failure mode, and the sibling list shows this is the creation entry point. It is missing how 'resolved registry path' is derived and what a successful response looks like, but those are secondary to safe usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not explain any parameter semantics; only force and designTool have schema descriptions. The required projectName and the projectDescription param are left undocumented in both the schema and description, weakening the agent's ability to fill them correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('Create a complete starter registry') with a precise resource path and file list (.design/registry/{manifest,components,tokens,patterns,rules}.json + README). The failure condition also separates it from sibling tools that read or modify an existing registry.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly implies the intended context: call when a new registry needs to be initialized at the resolved path. It also gives a key usage condition ('Fails if a registry already exists there unless force=true') that tells an agent when a parameter is needed, though it does not explicitly name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registry_list_componentsList componentsA

List all design components in the registry, optionally filtered by lifecycle status or tag. Use this to browse what already exists before proposing a new component.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoFilter to components carrying this tag.
statusNoFilter by lifecycle status.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It conveys a read-only browsing purpose through words like 'List' and 'browse', but does not mention result format, pagination, default status behavior, or whether filters can be combined. This is acceptable for a simple list tool but leaves some behavior unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: the first states action and filters, the second provides the practical use case. No wasted words, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple—two optional parameters, full schema coverage, no nested objects. The description covers what is listed, the filters, and the intended workflow. Minor omissions like output shape or ordering do not significantly hinder use, but the lack of annotation support means a small gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters fully. The description only restates that filtering by lifecycle status or tag is possible, adding no deeper semantic meaning such as matching rules or filter combination behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('List all design components in the registry') and clearly identifies the resource and available filters. It distinguishes itself from sibling get/find tools by emphasizing the broad, all-items browsing behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit practical guidance: 'Use this to browse what already exists before proposing a new component.' It does not explicitly name alternatives or exclusion cases, but the intended context is clear enough for an agent to select it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registry_list_patternsList UI patternsA

List all higher-level UI patterns (e.g. empty state, search toolbar) registered in the project.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It communicates a read-only enumeration ('List all') and the project scope, but it does not disclose ordering, pagination, or output behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the core action and resource, with examples that add clarity without unnecessary length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter listing tool, the description is mostly complete: it states the action, resource, and scope. It does not specify the return format, which is a minor gap given the low complexity and absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero properties, so there are no parameters requiring explanation. The baseline for a zero-parameter tool is 4, and the description does not need to add parameter detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('List') and a concrete resource ('higher-level UI patterns'), with examples such as empty state and search toolbar that distinguish patterns from components or tokens. The 'registered in the project' scope further clarifies what is being listed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It does not mention that registry_get_pattern should be used for a single pattern, or that registry_list_components is for component-level listings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registry_list_tokensList design tokensA

List all design tokens, optionally filtered by category (color, spacing, typography, ...).

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden; it clearly identifies the operation as non-mutating ('List'), but it does not mention pagination, response size, or return shape. This is acceptable for a simple read-only listing tool, though it adds minimal beyond the core action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence and 13 words; the action and optional filter are front-loaded. There is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one optional parameter and no output schema, the description plus the enum schema is sufficient for an agent to invoke it correctly. It lacks only nonessential details such as response format and relationship to registry_get_token.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description partly compensates by stating the category filter is optional and giving examples. However the examples duplicate the enum values, and the description does not explain how filtering behaves beyond the parameter name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('design tokens'), and clarifies it returns the full collection ('all') with an optional category filter. It is distinguishable from siblings like registry_get_token and registry_create_token, though it does not explicitly call out any alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied by the list semantics and the optional category filter, but there is no explicit guidance on when to use this tool instead of registry_get_token or when a create/update operation would be appropriate. No exclusions or alternative routing are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registry_update_componentUpdate an existing componentA

Patch an existing component by id. Only provided fields are changed; omitted fields are left as-is. Fails with NOT_FOUND if the id doesn't exist yet — use registry_create_component instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
tagsNo
rulesNo
designNo
statesNo
statusNo
aliasesNo
variantsNo
propertiesNo
descriptionNo
accessibilityNo
implementationsNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral disclosure burden. It clearly states partial-update semantics, so an agent knows omitted fields are preserved, and it exposes the NOT_FOUND failure mode for missing ids. It does not describe return values, auth, or validation effects, but the core PATCH contract is sufficiently transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The operation and target are front-loaded, the patch semantics follow immediately, and the error behavior plus alternative tool are condensed into the final clause. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating tool with no annotations, no output schema, and a large nested input schema, the description supplies the key facts needed for selection and invocation: it is a partial update, id is required, and missing ids are an error with a known alternative. It could be more complete by mentioning relationships to registry_update_rules or registry_deprecate_component, but the current description plus rich schema is enough for an agent to call it correctly in the common case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero description coverage and 13 parameters, so the description must compensate. It adds the most important parameter-level semantic: only provided fields are changed, and omitted fields are left untouched. This generalizes across all 12 optional parameters. It does not explain nested partial-object behavior, such as partially specifying the rules object, but the schema still provides types, required fields, and defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence, 'Patch an existing component by id', gives a specific verb, resource, and selection mechanism in one line. The closing clause explicitly distinguishes it from registry_create_component, so an agent can immediately separate update from create without deeper inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a concrete routing rule: if the id does not exist, the call will fail with NOT_FOUND and the agent should use registry_create_component instead. It does not address every sibling overlap, such as when to use registry_update_rules or registry_deprecate_component for component subfields, but the main create-vs-update decision is clearly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registry_update_patternUpdate an existing UI patternA

Patch an existing pattern by id. Fails with NOT_FOUND if the id doesn't exist yet.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
tagsNo
designNo
statusNo
componentsNo
descriptionNo
layoutRulesNo
relatedPatternsNo
compositionRulesNo
usageConstraintsNo
responsiveBehaviorNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description itself must disclose behavior; it does add the specific NOT_FOUND error condition, which is useful and non-obvious. It does not disclose whether PATCH means merge or replace, what happens to omitted optional fields, or what is returned, leaving significant behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two terse sentences with no filler; the primary action and resource are front-loaded, and the error behavior is placed second. Each word earns its place, making it highly scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter update tool with no annotations and no output schema, the description leaves out critical context such as partial update semantics, response content, and the meaning of the many optional fields. The single NOT_FOUND detail is helpful but far from sufficient for safe invocation without other sources.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description only clarifies the role of the required 'id' parameter. The other 11 parameters (design, layoutRules, usageConstraints, etc.) receive no explanation beyond their names in the schema, so the description fails to compensate for the low coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the operation as 'Patch an existing pattern by id,' with a specific verb and target resource, and implicitly distinguishes itself from siblings like registry_create_pattern (which creates) and registry_get_pattern (which reads). It is unambiguous and immediately scopes the tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'existing pattern' and the NOT_FOUND failure mode tell an agent this tool should only be applied to already-created ids, but no explicit alternative is named. The description does not say 'use create_pattern for new ids' or otherwise state exclusions, so guidance relies on inference from the word 'existing.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registry_update_rulesReplace the project's rulesA

Replace the full set of structured design/engineering rules. This is a full-document replace (send the complete desired rule list, not a delta) so the rules file stays deterministic and diff-friendly.

ParametersJSON Schema
NameRequiredDescriptionDefault
rulesYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It clearly states the destructive, whole-document nature of the operation and the rationale ('deterministic and diff-friendly'), which is valuable behavioral context beyond the schema. It does not disclose validation behavior or side effects on dependent entities, but the core overwrite semantics are well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, each earning its place. The first states the operation, the second explains the required payload semantics and the reason behind the design. It is front-loaded and contains no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a single parameter and a detailed input schema, the description is largely complete: an agent knows what action is performed and exactly how the rules list should be supplied. The absence of an output schema means the agent does not know the result format, but that is not essential for correctly invoking the operation. Minor gaps include error/validation behavior and how to retrieve current rules first, but these do not block correct use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides structure for the single 'rules' parameter but no prose descriptions (0% coverage). The description compensates by explaining the critical semantic: the array must contain the complete desired rule set, not a partial update. This is essential meaning beyond the schema, though it leaves the subfields of individual rules to the schema, which already defines them reasonably well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Replace the full set of structured design/engineering rules.' It also makes the key distinguishing property explicit — this is a full-document replace, not a delta — which separates it from read-only getter tools and from component/token/pattern updaters in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear, actionable usage guidance: when replacing the rules, send the complete desired rule list, not a delta. This makes the invocation pattern obvious and excludes incremental updates. It does not explicitly name alternatives, but the full-document replace instruction effectively prevents an agent from treating this as a merge operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registry_update_tokenUpdate an existing design tokenC

Patch an existing token by id. Fails with NOT_FOUND if the id doesn't exist yet.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
typeNo
usageNo
valueNo
sourceNo
aliasesNo
categoryNo
deprecatedNo
deprecationNo
descriptionNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses one useful failure behavior: it fails with NOT_FOUND if the id does not exist. However, there are no annotations, so the description carries the full burden; it does not mention side effects, partial vs. full update semantics, immutability of fields, permissions, or return value behavior. This is minimal coverage for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tight and front-loaded: two sentences, no filler. The core requirement and a key failure mode are stated efficiently. It is concise, though it sacrifices substantive guidance that would be more valuable than additional prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (11 parameters, nested objects, no annotations, no output schema), this description is incomplete. An agent has no way to understand how to populate most fields, what the update response looks like, or what constraints apply beyond the id. It covers only the most basic invocation scenario.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the tool has 11 parameters, yet the description only references the id parameter. None of the other fields (name, type, usage, value, aliases, category, deprecated, deprecation, description) are explained, and the nested deprecation object and heterogeneous value type remain entirely undocumented in both the schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the operation: 'Patch an existing token by id.' This identifies the verb, resource, and scope, and distinguishes it from create/get operations by the word 'existing.' It does not explicitly name sibling alternatives, but the meaning is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: use this tool to modify an existing token by id, rather than to create or read a token. However, there is no explicit guidance about when to choose this over registry_create_token or registry_get_token, and no mention of whether this is the only way to update token metadata.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

registry_validateValidate the registryA

Run comprehensive validation across the whole registry: duplicate ids, duplicate design references, broken cross-references (patterns/rules pointing at nonexistent components/tokens/patterns), circular pattern references, and other integrity issues. Returns valid=false with a list of issues if anything is wrong.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the behavioral disclosure burden. It states that if anything is wrong, it returns valid=false with a list of issues, which is useful and specific. It does not explicitly state that the operation makes no changes to the registry, but 'validate' strongly implies a read-only check, and the failure-output behavior is well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded: it states the main action and scope first, then enumerates validation categories, then gives the return behavior. Every sentence earns its place without unnecessary filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description provides enough context to call it correctly and interpret a failure result. It does not describe the exact structure of the issue list or explicitly state the success return shape (valid=true), but these are minor gaps given the simplicity and purpose of the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there are no parameter semantics to document. The baseline of 4 applies because the description still clarifies that validation covers the whole registry, eliminating any ambiguity about scope even though the input schema is empty.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a comprehensive validation operation over the entire registry, listing specific validation checks like duplicate ids, broken cross-references, and circular references. This is distinct from the sibling CRUD and retrieval tools, so an agent can immediately understand what the tool is for.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the use case clear: run validation across the whole registry when integrity issues need to be checked. It does not explicitly mention when not to use it or point to alternatives, but the sibling tools are all get/list/create/update operations, so the contrast is obvious. A brief note about running after mutations would be a minor improvement.

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.

  1. 20 tool updatesv0.1.0
    • First observedregistry_create_component
    • First observedregistry_create_pattern
    • First observedregistry_create_token
    • First observedregistry_deprecate_component
    • First observedregistry_find_by_design_reference
    • First observedregistry_find_component
    • First observedregistry_get_component
    • First observedregistry_get_manifest
    • First observedregistry_get_pattern
    • First observedregistry_get_rules
    • First observedregistry_get_token
    • First observedregistry_init
    • First observedregistry_list_components
    • First observedregistry_list_patterns
    • First observedregistry_list_tokens
    • First observedregistry_update_component
    • First observedregistry_update_pattern
    • First observedregistry_update_rules
    • First observedregistry_update_token
    • First observedregistry_validate

TDQS

A3.8/5.0

Scored across 20 tools

Disambiguation5/5

Each tool targets a distinct resource and action: list/get/find are clearly separated, and registry_find_by_design_reference explicitly distinguishes itself from substring search. Even similar-looking component tools have descriptions that remove ambiguity about exact id vs deterministic search vs design reference resolution.

Naming Consistency5/5

All tools follow the consistent registry_<verb>_<resource> convention, with clear verbs like list, get, find, create, update, deprecate, and validate. The few verb-only names like registry_init and registry_validate are still recognizable and fit the registry_ prefix pattern.

Tool Count4/5

At 20 tools, this is on the heavier side, but the registry domain genuinely spans components, tokens, patterns, rules, manifest, and validation. Every tool has a distinct purpose, making the count feel more well-scoped than bloated.

Completeness4/5

Core lifecycle operations exist for components, tokens, and patterns, with rules and manifest covered as full documents. Minor gaps include no deprecate/remove flow for tokens or patterns and no way to update the manifest after initialization, but agents can still complete primary workflows.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers