The reconciliation layer for agentic design systems. Sits above Figma, your codebase, and Storybook — resolves conflicts, exposes a single source of truth via MCP.
Primitiv demonstrates solid definition quality across 7 tools. All tools have explicit names, descriptions, and input schemas with type definitions. Naming is strong (verb_noun pattern: get_, list_). Descriptions are well-crafted (average ~120 chars, contextual). Parameters are typed with descriptions. However, output schemas are not explicitly documented in the source code (only inferred from implementation logic), which prevents a higher score. Error handling strategy is not visible in the provided code excerpt. Tools follow single-responsibility principle well. No security concerns with parameter exposure (all READ_ONLY, no secrets). Pagination parameters present on list tools with reasonable defaults (limit=50, max=200). Tool composition is excellent, each tool serves one purpose and output from discovery tools (list_*) chains naturally into detail tools (get_*).
Retrieve a single component by name, optionally scoped by source. Returns the component definition across all sources, prop definitions, demonstrated stories, usage statistics, and rationale.
List all conflicts discovered during reconciliation, with optional filtering by type, scope, or name pattern. Returns paginated results with evidence for each conflict.
Get a high-level summary of the reconciled design system: token counts by category, component counts, source status, conflicts, and key guidance.
Retrieve a single token by name, optionally scoped by category or mode. Returns the token definition, all available modes, usage statistics, and rationale.
List all token misuse violations (hardcoded literals that bypass the design system). Returns file location, suggested token, and context for each violation.
List all components with optional filtering by source, kind, or name pattern. Returns paginated results with implementation counts.
Output schemas not documented in visible code. While tools clearly return structured data (tokens, components, conflicts), the response schema is not explicitly defined in tool registration or as a formal JSON Schema. This forces LLMs to infer structure from description text alone.
Error handling and recovery guidance not visible in source code excerpt. No explicit error responses, categorization, or actionable recovery hints (e.g., 'if token not found, call list_tokens() to discover available tokens'). This limits LLM ability to self-correct on failures.
Pagination limit on list tools capped at 200, but no explicit guidance on when to use pagination vs increasing limit. Tools with large result sets (e.g., list_tokens with many token categories) should emphasize that pagination prevents context window exhaustion.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 74 | 2026-07-28+ | v2 |
List all tokens by category, with optional filtering by category, mode, or name pattern. Returns paginated results with counts.
No idempotency declarations or confirmation patterns visible. These are READ_ONLY tools, so no risk, but if future versions add write operations (create_token, update_component), must implement dry-run or explicit confirmation to prevent accidental design system mutations.