Skip to main content
Glama

Mimic AI

The design system copilot that builds Figma screens from HTML, and gets better every time you use it.

Give Mimic any HTML. It builds the equivalent in Figma using your actual design system:

  • Real components, not approximations

  • Real tokens, not hardcoded values

  • Real text styles, not manual overrides

  • Auto-layout everywhere, not fixed frames

It doesn't just build once. Every output improves the next, learning your system, your conventions, and your decisions over time.

After every build, it tells you what your design system is missing.


License: MIT Node.js: v20.6+ Platform: macOS / Windows Glama Install in VS Code Install in VS Code Insiders

Open-source MCP server. Runs locally. Your design data never leaves your machine.



The problem

You built a design system. Every token, every component, every variable. Intentional.

Then someone needs a screen and builds it from scratch.

Your system sits in the library panel. Unused.

AI tools make it worse. They generate screens that look right but break on inspection: no components, no tokens, no structure.

The cleanup takes as long as building it yourself.

Mimic fixes that.


Related MCP server: Figma MCP

It learns and compounds

The first build scans your design system.

By the third, patterns start to verify. By the tenth, most decisions are instant.

Mimic doesn't just execute builds. It builds knowledge.

Correct it once Tell Mimic: "That's not the right Badge. Use Tag/Neutral."

That decision becomes permanent. Every future build uses it.

Your design system evolves. Mimic keeps up. New components, renamed tokens, updated variants. Mimic detects changes at the start of every build and adapts automatically.

Every build is a review After each build, Mimic tells you:

  • What components were used

  • What was built from primitives and why

  • What patterns it learned

  • What your design system is missing

Recommendations come as questions, backed by evidence: "Should your design system include a Status Badge? Used 31 times as primitives."


What changes after 10 builds

  • You stop rebuilding screens by hand

  • Your team uses the same component patterns automatically

  • Design system gaps become visible, with evidence

  • New team members produce consistent output from day one

Mimic becomes the system that remembers how your team builds.


No HTML? Start from intent

Describe a screen:

"Dashboard with metrics, activity table, and status overview"

Mimic builds it using your design system: components, tokens, and layout included.

Same system. Same rules. Same output quality.


Make your design system AI-ready

Tools like Figma Make, Stitch, and generative UI depend on one thing:

Well-structured design systems.

Clear component roles. Consistent tokens. Meaningful descriptions.

Most design systems aren't there yet.

Mimic helps you get there as a side effect of using it.

Component descriptions from usage Mimic observes how components are used across builds and suggests real descriptions based on actual patterns.

DESIGN.md generation Generate a structured file describing your design system, readable by AI tools and frameworks.

Better structure → better output across every AI tool you use.


What other tools get wrong

Other tools

Mimic

Components

Draws rectangles that look like buttons

Uses your real components

Colors

Hardcoded hex values

Bound to your variables

Typography

Manual font styling

Uses your text styles

Spacing

Raw pixel values

Uses your spacing tokens

Layout

Fixed frames

Auto-layout everywhere

Output

Needs cleanup

Ready to use

Screenshot tools capture pixels. Mimic captures structure.


Works with any design system

Design system type

What Mimic does

Team library (components + tokens)

Full usage: components, variables, text styles

Team library (components only)

Uses components, flags missing tokens

Community libraries

Full support out of the box


Get started

Node.js v20.6+, Figma desktop, Professional plan or above.

1. Install

bash <(curl -fsSL https://raw.githubusercontent.com/miapre/mimic-ai/main/install.sh)

2. Add the Figma plugin

Plugins → Development → Import plugin from manifest → select ~/mimic-ai/plugin/manifest.json

3. Connect (each session)

Terminal:

cd ~/mimic-ai && npm run bridge

Figma: Plugins → Development → Mimic AI → Run

4. Enable your design system

Assets panel → Team library icon → toggle on. Once per file. Community libraries work out of the box.

5. Build

"Build this HTML in Figma using my design system."


What gets checked automatically

Every build enforces 49 quality rules. You don't configure them. They just run.

  • Text uses your text styles, not raw font properties

  • Colors bound to your variables, not hardcoded

  • Spacing bound to your tokens where available

  • Every frame uses auto-layout, resizable, not static

  • Content matches the source exactly, nothing invented

  • Your components used wherever a match exists

  • Charts built with real data and auto-layout

  • Build report with learning summary and DS gap recommendations

The result is what you'd build manually, without the time cost.

Full specification: GOLDEN_RULES.md


MCP client setup

Works with any MCP client. Optimized for Claude Code.

{
  "mcpServers": {
    "mimic-ai": {
      "command": "npx",
      "args": ["-y", "@miapre/mimic-ai"]
    }
  }
}

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "mimic-ai": {
      "command": "npx",
      "args": ["-y", "@miapre/mimic-ai"]
    }
  }
}

Click the install badge above, or add to settings:

{
  "mcp": {
    "servers": {
      "mimic-ai": {
        "command": "npx",
        "args": ["-y", "@miapre/mimic-ai"]
        }
    }
  }
}

Windsurf: ~/.codeium/windsurf/mcp_config.json JetBrains: Settings → Tools → AI Assistant → MCP Servers

{
  "mcpServers": {
    "mimic-ai": {
      "command": "npx",
      "args": ["-y", "@miapre/mimic-ai"]
    }
  }
}

All clients need the bridge running and the Figma plugin active.


Your AI assistant talks to Mimic. Mimic talks to Figma. Everything happens locally.

  • Building is unlimited. Frames, components, and token bindings have no rate limit.

  • Inspecting is limited. Reading your library uses Figma's daily quota. Mimic caches aggressively to stay well under.

  • Token bindings are real. Update a variable in your DS, re-publish, and every node updates automatically.

  • Auto-layout everywhere. Every frame resizes correctly. Nothing is manually positioned.

Status & learning: mimic_status, mimic_discover_ds, mimic_ai_knowledge_read, mimic_ai_knowledge_write

DS setup: figma_preload_styles, figma_preload_variables, figma_discover_library_styles, figma_discover_library_variables, figma_set_session_defaults, figma_list_text_styles, figma_read_variable_values

Build: figma_create_frame, figma_create_text, figma_create_rectangle, figma_create_ellipse, figma_create_chart, figma_insert_component, figma_batch

Edit: figma_set_component_text, figma_set_text, figma_set_node_fill, figma_set_layout_sizing, figma_set_variant, figma_set_visibility, figma_swap_main_component, figma_replace_component, figma_restyle_artboard, figma_move_node, figma_delete_node

Inspect & QA: figma_get_node_props, figma_get_node_children, figma_get_node_parent, figma_get_text_info, figma_get_component_variants, figma_get_selection, figma_select_node, figma_get_page_nodes, figma_get_pages, figma_change_page, figma_validate_ds_compliance, figma_tag_raw_exception

Rendering: mimic_pipeline_resolve, mimic_render_url, mimic_generate_build_report, mimic_generate_design_md

Desktop app required. Browser Figma won't work. Download

Personal Access Token. Figma → Profile → Settings → Personal access tokens → Generate. Read access. Copy immediately.

Publish your DS. Components and tokens in a separate file, published as a team library. Re-publish after changes.

Professional plan or above. Free plan can't publish libraries.


Cost and efficiency

Mimic gets cheaper over time.

Build

Tool calls

Why

1st (cold)

~140

Full DS discovery, no cache, every pattern new

5th (warm)

~80

Most patterns cached, discovery skipped for known components

10th+ (hot)

~55

Nearly everything cached, decisions instant

What drives cost down:

  • Cache: every pattern Mimic learns skips a DS search next time

  • DS components: inserting a component = ~3 calls. Building the same thing from primitives = ~10-15 calls

  • DS gap recommendations: when Mimic suggests a component, it's also telling you how to make future builds cheaper

Every build report includes tool call counts and efficiency savings.


Privacy

Everything runs locally.

No design data leaves your machine. No telemetry. No tracking.

The only outbound call is to the Figma REST API for published component keys.


Constraints

  • Figma Professional plan required. Free plan can't publish libraries.

  • First-build font caching. Text styles may need a second build to render correctly.

  • npx mode. Doesn't set FIGMA_ACCESS_TOKEN. Use the full installer for team library support.

  • Claude-optimized. The 46-rule governance and learning reports work best with Claude Code. Other MCP clients get the tools but may not follow the full protocol.


License

MIT

Available Tools

18 tools
figma_component_textA
Idempotent

Overrides text on a component instance in one call — pass an overrides array (a single override is just a one-item array). Each override sets one text node via textNodeName (matches by name — use for most cases) or textNodeId (exact match — use when configurationHints.textNodes gave you IDs, e.g. components with repeated node names). Use after figma_insert_component; configurationHints.textNodes lists every node that needs overriding. Saves N-1 tool calls vs. one call per node. Requires Phase 2.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesComponent instance node ID.
overridesYesArray of text overrides to apply. Each item needs textNodeName or textNodeId, plus content.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark the tool as idempotent and non-destructive. The description adds context about batch processing ('saves N-1 tool calls'), precedence of textNodeId over textNodeName, and the requirement for Phase 2, providing useful behavioral clues beyond the annotations.

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 highly concise, packing purpose, usage, and parameter details into a few sentences. It is front-loaded with the core action and efficiently adds context without redundancy.

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?

Given the tool's simplicity and the presence of detailed schema annotations, the description covers essential aspects: usage flow, parameter selection, and efficiency benefits. It could mention error handling or limits, but the provided context is sufficient for an AI agent to use the tool correctly.

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?

Schema coverage is 100%, and the description enriches understanding by explaining the overrides array structure, the distinction between textNodeName (by name) and textNodeId (exact match), and the role of configurationHints.textNodes. This adds significant value beyond the raw schema.

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 it overrides text on a component instance, with specific details on usage after figma_insert_component and differentiation between textNodeName and textNodeId. It distinguishes itself from sibling tools like figma_update_node by focusing on text overrides in bulk.

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 clear guidance on when to use the tool (after figma_insert_component, leveraging configurationHints.textNodes) and how to choose between textNodeName and textNodeId. It does not explicitly exclude other scenarios but offers sufficient context for appropriate use.

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

figma_create_frameA

Creates an auto-layout container frame (layout primitive) — the fallback when NO DS component exists for a section or layout. Every fill/padding/gap/radius binds to DS variables; component-like names are gated (pass confirmedNoComponent + primitiveOverrideReason for confirmed gaps). Name frames after their HTML role ("Header Section", "Card: Revenue"). Key params: parentId (omit for page-level artboard), direction, layoutSizing*, *Variable bindings, GRID mode. Check mimic_map_components FIRST. Phase 2+.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoX position in pixels. Required for page-level artboards. Use rightmost existing artboard x + width + 80.
yNoY position in pixels. Defaults to 0 for artboards.
gapNoRaw item spacing in pixels. Use gapVariable when DS has spacing variables.
fillNoRaw hex color for background fill (e.g. "#ffffff"). Fallback when no DS styles/variables.
nameYesSemantic name describing the HTML role (e.g., "Header Section", "Metrics Row", "Card: Revenue"). Never use generic names like "Frame".
widthNoFixed width in pixels.
heightNoFixed height in pixels.
strokeNoRaw hex color for stroke (e.g. "#e4e6ee"). Fallback when no DS stroke variables.
paddingNoRaw uniform padding in pixels. Use paddingVariable when DS has spacing variables.
maxWidthNoMax width constraint.
parentIdNoParent node ID. Omit for page-level.
directionNoAuto-layout direction. Prefer HORIZONTAL or VERTICAL — NONE breaks portability. Use layoutPositioning ABSOLUTE for overlay children instead.
gridRowGapNoRaw row gap in pixels. Only used when layoutMode is GRID.
layoutModeNoSet to GRID to use CSS-grid-style layout (Grid automation, May 2026) instead of auto-layout. Requires gridRowCount/gridColumnCount. Errors clearly on Figma versions that do not support GRID layoutMode — fall back to direction HORIZONTAL/VERTICAL in that case.
paddingTopNoRaw top padding in pixels.
fillStyleIdNoDS fill style key for background (from figma_list_ds (kind: "fill_styles")). Preferred over fillVariable when DS has fill styles but no variables.
gapVariableNoDS variable path for item spacing.
gridRowSpanNoWhen this frame is a child of a GRID-layoutMode parent, how many rows it should span.
paddingLeftNoRaw left padding in pixels.
clipsContentNoClip content to frame bounds.
cornerRadiusNoRaw corner radius in pixels. Use cornerRadiusVariable when DS has radius variables.
fillVariableNoDS variable path for background fill.
gridRowCountNoNumber of grid rows. Only used when layoutMode is GRID.
paddingRightNoRaw right padding in pixels.
strokeWeightNoStroke weight in pixels.
gridColumnGapNoRaw column gap in pixels. Only used when layoutMode is GRID.
paddingBottomNoRaw bottom padding in pixels.
gridColumnSpanNoWhen this frame is a child of a GRID-layoutMode parent, how many columns it should span.
strokeVariableNoDS variable path for stroke color.
gridColumnCountNoNumber of grid columns. Only used when layoutMode is GRID.
paddingVariableNoDS variable path for uniform padding.
layoutPositioningNoSet to ABSOLUTE to position this frame as an overlay inside an auto-layout parent (out of flow but still contained). Use for grid lines, positioned labels, etc.
gridRowGapVariableNoDS spacing variable path for GRID row gap.
paddingTopVariableNoDS variable path for top padding.
paddingLeftVariableNoDS variable path for left padding.
confirmedNoComponentNoSet true only after DS/library search confirms no component exists for this role.
cornerRadiusVariableNoDS variable path for corner radius.
layoutSizingVerticalNoVertical sizing mode.
paddingRightVariableNoDS variable path for right padding.
counterAxisAlignItemsNoCounter axis alignment.
gridColumnGapVariableNoDS spacing variable path for GRID column gap.
paddingBottomVariableNoDS variable path for bottom padding.
primaryAxisAlignItemsNoPrimary axis alignment.
layoutSizingHorizontalNoHorizontal sizing mode.
primitiveOverrideReasonNoRequired with confirmedNoComponent for component-like primitives. Explain why this frame must be custom.

TDQS

A4.8/5.0
Behavior5/5

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

The description details behavioral traits: binds to DS variables, gates component-like names with confirmedNoComponent and primitiveOverrideReason, mentions GRID mode and its error behavior on unsupported Figma versions. Annotations are minimal, so description carries burden and does so effectively.

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 fairly dense but front-loads the main purpose. It lists key points without excessive verbosity. Could be slightly trimmed but overall efficient.

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?

Given the tool's complexity (45 parameters, no output schema), the description covers high-level usage, constraints, and ties to other tools. Missing details about return value are acceptable without an output schema. Provides adequate context.

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?

Schema coverage is 100%, but description adds significant value by highlighting key parameters (parentId, direction, layoutSizing, variable bindings, GRID mode), explaining naming conventions, and clarifying the gating mechanism. Goes well beyond the schema.

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 tool creates an auto-layout container frame as a fallback when no DS component exists. It distinguishes from siblings by emphasizing it is a layout primitive and mentions checking mimic_map_components first.

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?

Explicitly says to use this tool when no DS component exists, and to check mimic_map_components first. Also implies not to use when a component is available, and references phase 2+ for additional context.

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

figma_create_svgA

Creates a node from an SVG string in Figma. Useful for icons and custom graphics. Returns unboundChildren — a list of child nodes that need DS variable bindings. You MUST apply figma_update_node (op: "fill") to every unbound vector and figma_update_node (op: "text_style" then op: "fill") to every unbound text. Leaving unbound children breaks DS compliance and light/dark mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNode name.
parentIdYesParent node ID.
svgStringYesSVG markup string.
fillVariableNoDS variable path for fill override (applied to ALL child vectors uniformly).
strokeVariableNoDS variable path for stroke override.
layoutSizingVerticalNoVertical sizing mode.
layoutSizingHorizontalNoHorizontal sizing mode. Use FILL for charts inside auto-layout containers so they stretch to the container width.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations are minimal (none set to true), but the description adds crucial behavioral details: the return includes unboundChildren requiring immediate follow-up, and failure to process them breaks DS compliance and light/dark mode. This goes beyond annotations and gives clear transparency.

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 (four sentences) and well-structured: purpose, use case, return behavior, required follow-up actions. Every sentence adds necessary information without redundancy.

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?

Despite having no output schema, the description explains the output format (unboundChildren list). It covers required parameters, optional params with hints, and post-call steps. The DS compliance context is crucial for correct usage, making the description complete for the tool's complexity.

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 100%, so baseline is 3. The description adds minimal extra param meaning beyond the schema, except for layoutSizingHorizontal where it provides a usage hint ('Use FILL for charts inside auto-layout containers'). This slight added value keeps the score at 3.

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 tool creates a node from an SVG string in Figma, specifies it is useful for icons and custom graphics, and naturally distinguishes it from sibling tools like figma_create_frame or figma_create_text which handle different input types.

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 strong post-call instructions (must apply figma_update_node to unbound children for DS compliance), which guides the agent on proper usage. It does not explicitly contrast with alternatives but implies when this tool is appropriate via the use case mention.

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

figma_create_textA

Creates a standalone text node bound to a DS text style (textStyleId — accepts style name or key) and DS color variable (fillVariable) — both are mandatory when the DS has them. Use for text OUTSIDE components; text inside a component instance uses figma_component_text instead. Strips hardcoded line breaks (container width controls wrapping). Name nodes after their HTML role ("Page Title", "Card: Revenue Label"). Params: parentId + content required. Phase 2+.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSemantic name describing the HTML element role (e.g., "Page Title", "Card: Revenue Label", "Subtitle"). Never use generic names like "Text".
widthNoFixed width for the text node.
contentYesText content.
parentIdYesParent node ID.
fillStyleIdNoDS fill style key for text color (from figma_list_ds (kind: "fill_styles")). Preferred over fillVariable when DS has fill styles but no variables.
textStyleIdNoDS text style — accepts style name (e.g. "Text sm/Semibold") or style key. Names are resolved to keys automatically.
fillVariableNoDS variable path for text color.
fontSizeVariableNoDS variable path for font size (if no text style).
layoutPositioningNoSet to ABSOLUTE to overlay this text inside an auto-layout parent.
lineHeightVariableNoDS variable path for line height.
textAlignHorizontalNoText alignment.
layoutSizingHorizontalNoHorizontal sizing mode.

TDQS

A4.5/5.0
Behavior4/5

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

The description discloses that it strips hardcoded line breaks (container width controls wrapping) and that nodes should be named after HTML roles. Annotations provide no behavioral info (all false), so the description adds these details. No contradictions.

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 concise (three sentences) and front-loaded with the core purpose. However, it mixes purpose, usage guidelines, and behavior in a single paragraph; a clearer structure could improve readability slightly.

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?

Given the complexity (12 parameters, no output schema), the description provides sufficient context about what the tool does and its constraints. It does not explain return values, but that is acceptable since no output schema exists.

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 100% with descriptions, but the description adds context beyond the schema, such as mandatory conditions for textStyleId and fillVariable, and the naming convention. This adds value for parameter understanding.

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 it creates a standalone text node bound to a DS text style and color variable. It specifies the verb 'creates' and the resource 'text node', and distinguishes it from the sibling tool figma_component_text.

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?

Explicitly states when to use this tool ('Use for text OUTSIDE components') and when not to ('text inside a component instance uses figma_component_text instead'). Also notes that textStyleId and fillVariable are mandatory when the DS has them.

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

figma_delete_nodeA
Destructive

Deletes a node from the Figma document. NEVER deletes artboards (top-level frames) — only child nodes within an artboard. To rebuild a screen, create a NEW artboard alongside the existing one. Destructive and irreversible via the API — verify the nodeId with figma_inspect first if unsure.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesNode ID to delete. Must NOT be a top-level artboard.

TDQS

A4.9/5.0
Behavior5/5

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

Beyond annotations, adds that deletion is irreversible and never targets artboards, with verification guidance. No contradiction.

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 focused sentences: action, constraint, guidance. No wasted words; well 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?

Complete for a single-param destructive tool: purpose, constraints, usage guidelines, behavioral traits covered. Output schema absent but irreversibility and verification suffice.

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 100%; description adds valuable constraint 'Must NOT be a top-level artboard' not present in schema description.

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?

Clearly states 'Deletes a node from the Figma document.' Distinguishes from siblings by explicitly excluding artboards and suggesting alternative.

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?

Provides explicit when-not-to-use (artboards), alternative action (create new artboard), and safety advice (verify with figma_inspect).

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

figma_inspectA
Read-onlyIdempotent

Reads Figma document state — node properties, children, parent, text detail, pages, top-level page nodes, selection, component variants, or a build-manifest section lookup. Read-only, never blocked by phase gates. Use to verify state before/after edits, discover node IDs, or check what a component set supports. Params: target (required: "node"|"children"|"parent"|"text"|"pages"|"page"|"selection"|"variants"|"section") selects the read; nodeId (node/children/parent/text), depth (children, default 1), componentSetKey (variants), sectionName (section — HTML section name from the last build).

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoHow many levels deep to traverse. Only used with target="children". Default 1.
nodeIdNoNode ID to inspect. Required for target: node, children, parent, text.
targetYes"node"=full node props, "children"=child nodes, "parent"=parent node, "text"=text node detail, "pages"=all pages in the file, "page"=top-level nodes on the current page, "selection"=currently selected nodes, "variants"=all variants for a component set, "section"=find a node by its HTML section name from the last build.
sectionNameNoThe HTML section to find (e.g., "header", "metrics row", "table"). Required for target="section".
componentSetKeyNoComponent set key. Required for target="variants".

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true. The description adds the behavioral trait 'never blocked by phase gates,' which provides useful context beyond annotations. It also clarifies that parameters are conditional on the selected target. No contradictions.

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 dense but well-structured: it states purpose, key traits, usage guidance, then a parameter mapping. All sentences are relevant. It could be slightly more concise by separating the parameter listing, but overall it is efficient for the amount of information.

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?

Despite having 5 parameters and 100% schema coverage, the description does not explain the return format or structure for each target (e.g., what fields are returned for 'node' vs 'children'). With no output schema, the description should clarify what the caller can expect. The tool is complex (9 targets), so some gaps remain.

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 100%, so baseline is 3. The description adds value by explicitly mapping each target value to its required parameters (e.g., 'nodeId (node/children/parent/text)', 'componentSetKey (variants)', 'sectionName (section)'). This helps the agent understand parameter dependencies beyond the enum labels.

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 'Reads Figma document state' and enumerates nine specific read targets (node, children, parent, etc.). The title annotation 'Inspect Figma document state' reinforces a specific verb+resource. This differentiates from sibling mutation tools like figma_create_frame or figma_update_node.

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 advises using the tool 'to verify state before/after edits, discover node IDs, or check what a component set supports.' It also notes 'Read-only, never blocked by phase gates,' which clarifies when it is safe to call. It does not explicitly mention when not to use it, but the read-only nature and sibling list imply it is not for modifications.

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

figma_list_dsA
Read-onlyIdempotent

Lists cached DS assets from the local cache — text styles, fill (color) styles, or variables. Use to browse what mimic_discover_ds already cached before binding: find a textStyleId for figma_create_text, a fillStyleId for figma_create_shape, or a variable path for figma_update_node. Params: kind ("text_styles"|"fill_styles"|"variables", required), filter (keyword, fill_styles only), category (text|background|border|foreground|spacing|radius, variables only). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesWhich cache to list.
filterNoOptional keyword filter on the style name. Only used with kind="fill_styles" (e.g. "Blue", "Gray", "Red").
categoryNoOptional category filter. Only used with kind="variables" (text, background, border, foreground, spacing, radius). Omit for all.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true; the description adds 'Read-only' and clarifies it reads from a local cache. No contradictions, and the description supplements annotations appropriately.

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 well-structured: main purpose first, then usage guidance, then parameter details. It is slightly verbose but every sentence serves a purpose. Could be tightened, but overall effective.

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?

Given no output schema, the description implicitly explains return values through examples (textStyleId, fillStyleId, variable path). It covers what an agent needs to know for selection and invocation.

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 100% and descriptions are already present, but the description adds value by explaining the context for each parameter (e.g., filter works only with fill_styles, category only with variables). This helps an agent understand conditional usage.

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 tool lists cached DS assets (text styles, fill styles, variables), with a specific verb ('Lists') and resource. It distinguishes from siblings like mimic_discover_ds and the figma_* tools that use these assets.

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 explicit context: 'Use to browse what mimic_discover_ds already cached before binding' and gives concrete examples of finding IDs for other tools. It lacks explicit 'when not to use' but the guidance is clear.

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

figma_manage_slotA

Fills or resets a SLOT-type component property on an existing instance (Figma Slots, GA June 2026). action="fill" inserts a DS component instance into the slot (use configurationHints.slotProperties from figma_insert_component to find slotName). action="reset" restores the slot's default content. Params: nodeId (required), slotName (required), action ("fill"|"reset", default "fill"), componentKey (required for action="fill"). Requires Phase 2. Slot fills are recorded for build-report visibility only — never auto-replayed.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNo"fill" inserts a component into the slot (default). "reset" restores default content.
nodeIdYesInstance node ID that owns the slot.
slotNameYesSLOT property name from configurationHints.slotProperties.
componentKeyNoDS component key to insert into the slot. Required for action="fill".

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate non-read-only, non-idempotent, non-destructive. The description adds that Phase 2 is required, and that fills are only for build-report visibility and never auto-replayed. No contradictions with annotations.

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

Conciseness3/5

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

The description is concise but packs multiple pieces of information without clear structural separation. It is efficient but could be more readable with bullet points or clearer grouping.

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?

No output schema is present, but the description does not explain return values or error conditions. For a mutation tool, this is a gap. However, annotations cover some safety aspects, and the description includes important constraints (Phase 2, non-auto-replay).

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 100%, so baseline is 3. The description adds value by explaining the action-dependent requirement for componentKey and referencing external tool for slotName. This extra context justifies a 4.

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 tool fills or resets a SLOT-type component property on an existing instance, with two specific actions. It references Figma Slots and distinguishes from siblings by mentioning configurationHints.slotProperties from figma_insert_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?

Provides explicit guidance on when to use fill vs reset, including the prerequisite to find slotName via figma_insert_component. Also notes that slot fills are recorded but never auto-replayed. However, it does not explicitly compare to other sibling tools or state when not to use this tool.

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

figma_update_nodeA

Mutates an existing Figma node or the editor's UI focus, dispatched by op. Ops: "text" (set text content), "text_style" (apply DS text style), "fill" (fillStyleId/fillVariable/raw fill), "layout" (sizing, padding, gap, alignment), "visibility" (show/hide), "position" (absolute x/y), "restyle" (artboard/frame fill+radius+stroke+padding+gap in one call), "move" (reparent via parentId+index), "select" (select+scroll into view), "page" (switch page by name/id). All ops except "select"/"page" require Phase 2 (DS discovered) and validate any *Variable path against the cached DS before sending. Use figma_delete_node (separate, destructive tool) to remove a node instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoAbsolute x position. op="position".
yNoAbsolute y position. op="position".
opYesWhich mutation to perform.
fillNoRaw color as hex string ("#3b36f2") or RGB object. op="fill" fallback when no DS styles/variables available.
indexNoInsert index within the new parent. op="move". Omit for end.
widthNoFixed width. op="layout".
heightNoFixed height. op="layout".
nodeIdNoTarget node ID. Required for every op except "page".
pageIdNoPage ID to switch to. op="page". Takes precedence over pageName.
contentNoNew text content. op="text".
visibleNoTrue to show, false to hide. op="visibility".
maxWidthNoMax width constraint. op="layout".
pageNameNoPage name to switch to. op="page".
parentIdNoNew parent node ID. op="move".
fillStyleIdNoDS fill style key (from figma_list_ds). op="fill". Priority: fillStyleId → fillVariable → fill.
gapVariableNoDS variable for item spacing. op="layout" or "restyle".
textStyleIdNoDS text style key. op="text_style".
fillVariableNoDS variable path for fill color. op="fill" or "restyle".
strokeWeightNoStroke weight. op="restyle".
strokeVariableNoDS variable for stroke color. op="restyle".
paddingVariableNoDS variable for uniform padding. op="layout" or "restyle".
paddingTopVariableNoop="layout".
paddingLeftVariableNoop="layout".
cornerRadiusVariableNoDS variable for corner radius. op="restyle".
layoutSizingVerticalNoop="layout".
paddingRightVariableNoop="layout".
counterAxisAlignItemsNoop="layout".
paddingBottomVariableNoop="layout".
primaryAxisAlignItemsNoop="layout".
layoutSizingHorizontalNoop="layout".

TDQS

A4.8/5.0
Behavior5/5

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

The description states the mutation nature (consistent with readOnlyHint=false) and specifies prerequisites like Phase 2 and DS validation for variable paths. It also notes that fill has fallback logic. No annotation contradiction; annotations are supported by the description.

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 well-structured: main purpose first, then ops in parentheses, then conditions via semicolons. It's moderately long but justified by the tool's complexity (30 params, 10 ops). No redundancy; each sentence adds value.

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?

Given the high complexity of the tool, the description is remarkably complete. It covers all operations, prerequisites, fallbacks, and even mentions the sibling tool for deletion. No output schema is present, so return values are not expected. The description leaves no critical gaps.

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?

All 30 parameters are already documented in the input schema (100% coverage), so the description's added value is primarily in grouping params by op and explaining their contextual use. This extra organization is helpful but not essential given the schema's quality.

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 it mutates a Figma node or editor focus via an 'op' parameter. It enumerates all 10 operations with brief explanations, distinguishing this tool from sibling 'figma_delete_node' which is for removal. The verb 'mutates' and resource 'Figma node or UI focus' are specific and accurate.

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?

Explicit guidance is provided: which ops require Phase 2, which do not (select/page), and when to use alternative tool 'figma_delete_node' for removal. It also explains fallback behavior for fill operations. This helps the agent select the correct operation and avoid misuse.

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

figma_validate_ds_complianceA
Read-onlyIdempotent

Recursively checks a node (and its children) against the current DS enforcement profile — flags hardcoded colors/fonts instead of variables/styles, missing text style bindings, and other DS violations. Use during Phase 3/4 QA, especially at the 20-op build checkpoint, before generating the report. Params: nodeId (required, typically the artboard root).

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe Figma node ID to validate.

Output Schema

ParametersJSON Schema
NameRequiredDescription
summaryNo
violationsNoPer-node compliance violations found.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already indicate readOnlyHint and idempotentHint. The description adds valuable behavioral detail: the recursion, the types of violations checked (hardcoded colors/fonts, missing text style bindings), and that it runs against the current DS enforcement profile. No contradiction with annotations.

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: first states purpose and scope, second gives usage timing and parameter hint. No wasted words.

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 compliance validation tool with an output schema (present but not shown), the description covers purpose, usage context, and parameter. It is complete enough for an agent to select and invoke correctly.

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?

Schema coverage is 100% with nodeId description. The description adds context: 'nodeId (required, typically the artboard root),' which aids correct parameter usage.

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 it recursively checks a node and children against DS enforcement profile, flagging specific violations (hardcoded colors/fonts, missing text style bindings). It distinguishes itself from siblings like figma_inspect or figma_list_ds by focusing on compliance validation.

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?

Provides clear guidance on when to use: 'during Phase 3/4 QA, especially at the 20-op build checkpoint, before generating the report.' However, it does not explicitly state when not to use or mention alternative tools.

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

figma_variable_modesA
Idempotent

Sets the variable mode (e.g. light/dark) on a node — required on every new artboard, or DS variables render as black. By default sets the mode on ALL variable collections at once (pass modeIndex only). Pass collectionName to target a single collection instead. Params: nodeId (required, typically the artboard), modeIndex (required, 0=default/light, 1=dark), collectionName (optional). Requires Phase 2.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesNode ID (typically the artboard).
modeIndexYesMode index. 0 = default/light, 1 = dark (if available).
collectionNameNoOptional — variable collection name. Omit to set the mode on ALL collections at once (recommended).

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses that the tool modifies the node (consistent with readOnlyHint=false) and explains the mode-setting behavior for multiple collections. Annotations already provide idempotentHint=true and destructiveHint=false, which are not contradicted. The description adds context about the necessity and scope of changes.

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 very concise: three sentences followed by a param list. Every sentence adds essential information: purpose, necessity, default behavior, and parameter details. No redundant phrasing.

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 setter with no output schema, the description adequately covers the operation, necessity, and parameter logic. It could mention return value or confirmation, but the context is sufficient for an agent to use correctly.

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?

With 100% schema coverage, the description adds value by clarifying typical usage for nodeId ('typically the artboard'), explicit values for modeIndex (0=light, 1=dark), and the effect of omitting collectionName. This exceeds the schema descriptions.

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 verb 'Sets' and the resource 'variable mode on a node', with a specific use case ('required on every new artboard'). This distinguishes it from sibling tools like figma_update_node or figma_create_frame.

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 explains when to use ('required on every new artboard') and what happens if not used ('DS variables render as black'). It also covers the default behavior (all collections) and how to target a single collection. It does not explicitly list when not to use or 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.

mimic_ai_knowledge_readA
Read-onlyIdempotent

Loads the knowledge store: learned component recipes, layout/pattern data, DS gaps, user-defined rules, and meta stats (build counts, replay savings). Call at the start of a session to see what Mimic has already learned about this DS. Params: format ("json" default — structured data; "design_md" — renders the current DS + recipes as a DESIGN.md-style markdown string for documentation/handoff).

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo"json" (default) returns structured store contents. "design_md" returns a rendered DESIGN.md markdown string instead.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and idempotentHint. Description adds detail on exactly what the knowledge store contains and how the format parameter affects output ('structured data' vs 'DESIGN.md markdown string'). No contradictions with annotations.

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 front-loading the main purpose, followed by parameter detail. No unnecessary words; every sentence is informative.

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?

Given no output schema, the description fully explains return contents (named categories) and the alternative format outcome. Tool is simple (1 optional param), so description is complete.

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 100%, baseline 3. Description adds value by explaining the purpose of each enum value: 'json' returns structured data, 'design_md' returns a markdown string for documentation/handoff. This goes beyond the schema description.

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 tool loads the knowledge store and enumerates its contents (component recipes, layout data, DS gaps, rules, meta stats). It distinguishes from sibling tools like mimic_ai_knowledge_write and provides a usage recommendation ('Call at the start of a session').

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?

Explicitly advises when to call ('at the start of a session') and why (to see what has been learned). Does not list exclusions or alternatives, but the sibling context (e.g., write tool) implies 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.

mimic_ai_knowledge_writeA
Idempotent

Saves a component recipe, layout pattern, DS gap, or user-defined design rule to the persistent knowledge store — the mechanism that lets Mimic learn across builds. Use "rule" when the user corrects build behavior in a generalizable way (e.g. "cards always have a header + content frame"); other types are usually written automatically by the build pipeline. Params: type ("component"|"pattern"|"gap"|"rule", required), id (unique key, required), data (entry payload, required).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUnique identifier for the entry.
dataYesThe entry data to store.
typeYesType of knowledge entry to save. Use "rule" for user-defined design rules that should be followed on every build (e.g., color semantics, card structure, component usage patterns).

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already indicate idempotentHint=true and destructiveHint=false. The description adds that the tool lets Mimic learn across builds, but does not disclose potential failures, permissions, or side effects beyond what annotations cover. With annotations providing the safety profile, the description adds moderate context.

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 with two sentences and a brief params summary. It front-loads the purpose and usage guidance without redundancy. Every sentence adds value.

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?

Given there is no output schema, the description is complete. It explains the tool's purpose, usage guidelines, and parameter details. Annotations provide idempotence and non-destructive hints, making the description sufficient for an agent to invoke the tool correctly.

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 100% with descriptions for all parameters. The description adds extra meaning for the 'type' parameter by providing use cases and examples (e.g., 'rule' for design rules), which goes beyond the schema enum list. The 'id' and 'data' parameters are clear from schema but not further elaborated.

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 that the tool saves knowledge entries (component recipe, layout pattern, DS gap, or design rule) to a persistent store. It uses a specific verb (saves) and resource (knowledge store), and distinguishes itself from the sibling mimic_ai_knowledge_read tool.

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 explicit guidance on when to use the 'rule' type (user correcting build behavior in a generalizable way) and notes that other types are usually written automatically. It does not explicitly state when not to use the tool, but the guidance is clear enough.

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

mimic_build_chartA

Bulk chart builder — creates an entire chart in ONE call: container, visualization (native rectangles or stroke-free SVG), axis labels, grid lines, and legend, all bound to DS variables and text styles. Use for ANY HTML chart instead of hand-building; reduces 30-50 tool calls to 1. chartType: bar, line, donut, radar. Key params: parentId, chartType, title, data, dimensions, colors (neutral DS data palette — never Brand/Success/Warning/Error). Use mimic_compute_chart for geometry-only. Phase 2+.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesChart data points. Bar: [{label, value}]. Donut: [{label, value}]. Line: [{label, value}] or [{x, y}]. Radar: [{label, value}] or [{label, values: [v1, v2]}] for multi-series.
titleYesChart card title text.
colorsNoDS color variable paths for data elements. Falls back to DS cache palette or default.
parentIdYesParent node ID to insert the chart into.
chartTypeYesThe type of chart to build.
gridColorNoDS variable path for grid lines. Falls back to DS cache border/secondary match.
dimensionsYesChart dimensions. Bar: {chartHeight, chartWidth?}. Donut: {outerRadius, innerRadius}. Line: {plotWidth, plotHeight}. Radar: {radius}. Optional for bar/line: yPrefix, ySuffix.
labelColorNoDS variable path for axis label text color. Falls back to DS cache text/tertiary match.
labelStyleNoDS text style name for axis labels. Falls back to smallest text style in DS cache.
titleColorNoDS variable path for title text color. Falls back to DS cache text/primary match.
titleStyleNoDS text style name for chart title. Falls back to DS cache sm/Semibold match.
seriesNamesNoLegend labels for multi-series charts (e.g. ["Current", "Target"]). For donut charts, legend is auto-generated from data labels.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations provide readOnlyHint=false, idempotentHint=false, destructiveHint=false. Description clarifies it creates new nodes, but doesn't specify if it overwrites or what happens on conflict. It also adds useful restrictions like color palette: 'never Brand/Success/Warning/Error'. No contradictions.

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?

Description is front-loaded with purpose and benefits. It is fairly concise, though includes a slightly cryptic 'Phase 2+' at the end. Overall efficient.

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?

Given no output schema, description does not mention what the tool returns (e.g., node ID). The 'Phase 2+' note is confusing. For a complex tool with 12 parameters, it mostly covers inputs but lacks return behavior.

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 100%, so baseline 3. Description adds value by specifying data shapes per chart type (e.g., bar: [{label, value}]) and color restrictions beyond schema. Justifies a 4.

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 it builds an entire chart in one call, enumerating components (container, visualization, labels, grid, legend) and chart types (bar, line, donut, radar). It distinguishes itself from hand-building and from the sibling tool mimic_compute_chart.

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?

Explicit usage guidance: 'Use for ANY HTML chart instead of hand-building; reduces 30-50 tool calls to 1.' Also tells when to use an alternative: 'Use mimic_compute_chart for geometry-only.'

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

mimic_build_tableA

Bulk table builder — creates an entire data table in ONE call: column frames, DS Table header cell + Table cell components, variants (cellVariants for per-value badge colors), text, and consistent row height. Use for ANY HTML data table instead of cell-by-cell insertion; reduces 200+ tool calls to 1. Requires table cell components in the DS (returns creation guidance if missing). Key params: parentId, columns (header/style/cellVariants), rows ("text|supporting" syntax), cellHeight. Phase 2+.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsYesRow data as arrays of strings. Each inner array has one value per column. Use "|" to separate text and supporting text (e.g. "Sarah Chen|sarah@company.com"). Array length must match columns length.
columnsYesColumn definitions. Each column becomes a vertical frame with a header cell + data cells.
parentIdYesParent node ID to insert the table body into.
cellHeightNoFixed height for ALL data cells in pixels. Ensures row alignment across columns. Common values: 44, 56, 64, 72. If omitted, cells use HUG (may cause misalignment).
dataCellKeyNoComponent key for Table cell. If omitted, auto-resolved from DS cache/knowledge store.
headerCellKeyNoComponent key for Table header cell. If omitted, auto-resolved from DS cache/knowledge store.
headerVariantNoVariant overrides for all header cells (e.g. {"Checkbox": "False"}). Applied to every header.
firstColumnPaddingLeftNoDS spacing variable path for extra left padding on header cells and data cells of the FIRST column. Use when the table is inside a card to create visual inset (e.g., 24px/spacing-3xl). Applied via paddingLeftVariable on cells.
lastColumnPaddingRightNoDS spacing variable path for extra right padding on header cells and data cells of the LAST column. Use when the table is inside a card to create visual inset (e.g., 24px/spacing-3xl). Applied via paddingRightVariable on cells.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only set readOnlyHint=false, so the description carries the burden of behavioral disclosure. It explains the bulk creation nature and mentions a prerequisite check. It could further detail side effects (e.g., whether existing nodes are modified), but the provided context is solid and does not contradict annotations.

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 paragraph but front-loads the main idea and key benefits. It is appropriately sized given the complexity, though structured bullet points could improve scanability. Every sentence adds value, with no wasted words.

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?

Considering the tool's complexity (9 parameters, nested objects, no output schema), the description covers the purpose, key parameters, and a prerequisite. It mentions returning creation guidance if DS components are missing. It lacks a description of the return value, but given the complexity, the description is quite complete overall.

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 100% with detailed descriptions for all 9 parameters. The description adds value by explaining key usage patterns (e.g., 'text|supporting' syntax for rows, cellHeight for alignment) and providing examples (cellVariants for badge colors). This goes beyond the schema, justifying a 4.

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 it is a 'Bulk table builder' that creates an entire data table in one call, listing specific components (column frames, DS Table header cell, Table cell, variants, text, row height). It explicitly distinguishes from cell-by-cell insertion, making the purpose unambiguous and distinct from sibling tools.

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 provides explicit when-to-use guidance ('Use for ANY HTML data table instead of cell-by-cell insertion') and highlights a key prerequisite ('Requires table cell components in the DS'). It also notes the benefit of reducing tool calls from 200+ to 1, giving clear context for selection.

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

mimic_discover_dsA

Complete DS discovery in two steps. Step 1: call with fileKey — discovers variables, text styles, components via plugin API, caches everything, stays at Phase 1. Step 2: call again with communitySearchResults (library names from Figma MCP search_design_system) — verifies no community libraries were missed, then advances to Phase 2 (build-ready). Build tools are BLOCKED until Step 2 completes. If a community library's variables are not discoverable via the plugin API (communityVariablesRequired response), fetch them via Figma MCP search_design_system and pass as externalVariables.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileKeyYesFigma file key to discover DS from.
libraryKeyNoLibrary key to use when multiple DS libraries are available. Returned from a previous call that detected multiple libraries.
skipRestApiNoSkip REST API component discovery (e.g. for community libraries where the file key is unavailable). Discovery proceeds with plugin-only data; use Figma MCP search_design_system + mimic_map_components to find components.
libraryFileKeyNoLibrary file key (alphanumeric string from the Figma URL of the library file). Prompted once per library, cached permanently.
externalVariablesNoVariables fetched via Figma MCP search_design_system for community libraries whose variables are not discoverable via the plugin API. Pass after receiving a communityVariablesRequired response.
identityDriftChoiceNoAnswer to a library-identity-drift prompt (name-keyed community library where most previously-known components vanished). "same" keeps learning under the existing history; "different" starts a fresh bucket for this library.
communitySearchResultsNoUnique library names found via Figma MCP search_design_system (query "color", includeVariables: true). Required after initial discovery to verify no community libraries were missed. Pass only non-null libraryName values.
communitySearchVariableKeysNoMap of libraryName → one sample variable key from search results. Used to validate which libraries are actually enabled in the file. Extract one key per library from the color search results.

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
phaseNo
_stopBuildNoTrue when the build must not proceed until the returned instructions are followed.
phaseLabelNo
_userPromptNoPresent this to the user verbatim when a decision is required.
enforcementNo
completenessWarningsNo
communityLibraryCheckRequiredNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations provide minimal info, but the description adds extensive behavioral context: two-step process, caching, verification, blocking, community library handling, phases, and response types (communityVariablesRequired). No contradictions with annotations.

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

Conciseness3/5

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

The description is a single dense paragraph that could benefit from structuring (e.g., steps, bullet points). It front-loads the purpose but is longer than necessary. Adequate but not optimal.

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?

Given the tool's complexity (8 parameters, nested objects, two-step process, output schema exists), the description is fairly complete. It explains phases, blocking, community handling, and caching. The output schema covers return values, so missing details are acceptable.

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 100% (baseline 3). The description adds value by explaining parameter usage context (e.g., communitySearchResults required after initial discovery, externalVariables when communityVariablesRequired). This slightly exceeds baseline.

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 'Complete DS discovery in two steps' and explains the entire process, including phases and blocking. It distinguishes from sibling tools like mimic_map_components and build tools by specifying this discovers the design system and blocks build tools until completion.

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?

Explicit instructions on when to call (step 1 with fileKey, step 2 with communitySearchResults). Provides conditional guidance (e.g., for communityVariablesRequired, fetch via Figma MCP and pass as externalVariables). Also clarifies that build tools are blocked until step 2 completes.

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

mimic_map_componentsA

Maps HTML element types (button, input, badge, table, tab, avatar, dropdown, textarea, header, footer, sidebar, ...) to DS component keys for the current build. Call once after mimic_discover_ds with all section-level + control element types. With FIGMA_TOKEN configured, one call is enough — all library components are pre-cached and missing types are confirmed gaps. Without a token, call again with librarySearchResults (from Figma MCP search_design_system) to close the loop. Workflow position: Phase 1-2, right after DS discovery, before figma_insert_component.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementTypesYesList of HTML element types to map (e.g. ["button", "input", "badge", "table", "tab", "avatar", "dropdown", "textarea"]).
librarySearchResultsNoComponent search results from Figma MCP search_design_system. Pass ALL results from your searches (any library — they will be filtered). This completes the search loop: matched components get cached, unmatched types get confirmed as "no component exists".

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
mappedNo
missingNo
notFoundNo
componentsNo
searchCompleteNo
selectedLibraryNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only provide readOnlyHint=false and idempotentHint=false. The description adds significant behavioral context: caching mechanism, gap confirmation, and the search loop completion behavior. No contradiction with annotations.

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 around 100 words, front-loads the core purpose, and is divided into clear sentences. Every sentence adds value, and there is no redundancy or unnecessary 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?

Given the tool's complexity (2 params, output schema exists), the description covers purpose, workflow position, caching behavior, and conditional usage. It does not cover error handling, but with the existing output schema, the description is sufficiently complete for an AI agent.

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 100%, so baseline is 3. The description adds valuable semantic guidance for both parameters: for elementTypes it specifies 'all section-level + control element types', and for librarySearchResults it explains the search loop and filtering behavior, going beyond the schema's type descriptions.

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 tool maps HTML element types to DS component keys, providing specific examples (button, input, etc.) and distinguishes itself from sibling tools like mimic_discover_ds by specifying its workflow position.

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 guidance on when to call (after mimic_discover_ds, before figma_insert_component) and how to use it differently depending on FIGMA_TOKEN presence. It does not list alternatives or when not to use, but the conditional instructions are very clear.

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

mimic_statusA
Read-onlyIdempotent

START EVERY SESSION HERE. Returns Figma plugin connection status, the current build phase (0=idle through 5=report), enforcement profile, cached DS counts, knowledge store summary (learned components/patterns/gaps/rules), and a contextual hint telling you exactly what to call next. Also clears build-interrupt state after a plugin reconnect and warns if a completed build is missing its mandatory report. No params — call with no arguments.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintYesWhat to call next.
phaseYes0=idle, 1=discovery, 2=inventory, 3=build, 4=qa, 5=report.
dsCacheNo
cacheHitsNo
knowledgeNo
phaseLabelNo
toolCallCountNo
pluginConnectedYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations indicate readOnlyHint=true and idempotentHint=true. The description adds behavioral context beyond annotations: it clears build-interrupt state after a plugin reconnect and warns if a completed build is missing its mandatory report. These side effects are disclosed and consistent with annotations.

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 dense but well-structured, starting with the imperative instruction and listing all return fields and side effects. Every sentence adds value. Slightly verbose but justified by the complexity of the status tool.

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?

Given the tool returns a complex status and a hint for next steps, and that an output schema exists (context signals indicate true), the description covers purpose, usage, side effects, and parameter constraints completely. No gaps remain for agent invocation.

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 (schema coverage 100%). The description explicitly states 'No params — call with no arguments,' adding clarity beyond the empty schema. Baseline is 4 for no-parameter tools, and this description fully compensates.

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 the tool returns Figma plugin connection status, build phase, enforcement profile, cached DS counts, knowledge store summary, and a contextual hint for next call. It distinguishes itself from siblings by explicitly instructing to start every session here, making purpose and scope clear.

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 'START EVERY SESSION HERE,' providing clear when-to-use guidance. It also explains that the tool returns a hint telling the agent what to call next, guiding sequential behavior. No exclusions needed given its role as the first tool.

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.

  1. 55 tool updatesv3.0.0
    • Removedfigma_batch
    • Removedfigma_change_page
    • Addedfigma_component_text
    • Removedfigma_create_chart
    • Removedfigma_create_ellipse
    • Changedfigma_create_frame61 fields changed
      • addedInput schema / properties / clipsContent / description
        Added value: +"Clip content to frame bounds."
      • addedInput schema / properties / confirmedNoComponent
        Added value: +{
        +  "description": "Set true only after DS/library search confirms no component exists for this role.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / cornerRadius / description
        Previous value: -"Corner radius. DS variable path (e.g., \"radius-xl\") preferred. Raw px allowed in permissive mode only."New value: +"Raw corner radius in pixels. Use cornerRadiusVariable when DS has radius variables."
      • changedInput schema / properties / cornerRadius / type
        Previous value: -[
        -  "number",
        -  "string"
        -]New value: +"number"
      • changedInput schema / properties / cornerRadiusVariable / description
        Previous value: -"DS radius variable path (e.g., \"Radius/radius-xl\"). Bound via setBoundVariable. Preferred over raw cornerRadius number."New value: +"DS variable path for corner radius."
      • addedInput schema / properties / counterAxisAlignItems / description
        Added value: +"Counter axis alignment."
      • removedInput schema / properties / counterAxisSizingMode
        Removed value: -{
        -  "description": "AUTO = hug contents along counter axis.",
        -  "enum": [
        -    "FIXED",
        -    "AUTO"
        -  ],
        -  "type": "string"
        -}
      • changedInput schema / properties / direction / description
        Previous value: -"Auto-layout direction. NONE = no auto-layout."New value: +"Auto-layout direction. Prefer HORIZONTAL or VERTICAL — NONE breaks portability. Use layoutPositioning ABSOLUTE for overlay children instead."
      • addedInput schema / properties / fill
        Added value: +{
        +  "description": "Raw hex color for background fill (e.g. \"#ffffff\"). Fallback when no DS styles/variables.",
        +  "type": "string"
        +}
      • removedInput schema / properties / fillHex
        Removed value: -{
        -  "description": "Fallback hex color if fillVariable is not available.",
        -  "type": "string"
        -}
      • removedInput schema / properties / fillNone
        Removed value: -{
        -  "description": "Set true for no fill (transparent).",
        -  "type": "boolean"
        -}
      • addedInput schema / properties / fillStyleId
        Added value: +{
        +  "description": "DS fill style key for background (from figma_list_ds (kind: \"fill_styles\")). Preferred over fillVariable when DS has fill styles but no variables.",
        +  "type": "string"
        +}
      • changedInput schema / properties / fillVariable / description
        Previous value: -"Design token variable path for background fill, e.g. \"Colors/Background/bg-primary\"."New value: +"DS variable path for background fill."
      • changedInput schema / properties / gap / description
        Previous value: -"Gap between children. DS variable path (e.g., \"spacing-3xl\") preferred. Raw px number allowed in permissive mode only."New value: +"Raw item spacing in pixels. Use gapVariable when DS has spacing variables."
      • changedInput schema / properties / gap / type
        Previous value: -[
        -  "number",
        -  "string"
        -]New value: +"number"
      • changedInput schema / properties / gapVariable / description
        Previous value: -"DS spacing variable path for gap (e.g., \"Spacing/spacing-3xl\"). Bound via setBoundVariable. Preferred over raw gap number."New value: +"DS variable path for item spacing."
      • addedInput schema / properties / gridColumnCount
        Added value: +{
        +  "description": "Number of grid columns. Only used when layoutMode is GRID.",
        +  "type": "number"
        +}
      • addedInput schema / properties / gridColumnGap
        Added value: +{
        +  "description": "Raw column gap in pixels. Only used when layoutMode is GRID.",
        +  "type": "number"
        +}
      • addedInput schema / properties / gridColumnGapVariable
        Added value: +{
        +  "description": "DS spacing variable path for GRID column gap.",
        +  "type": "string"
        +}
      • addedInput schema / properties / gridColumnSpan
        Added value: +{
        +  "description": "When this frame is a child of a GRID-layoutMode parent, how many columns it should span.",
        +  "type": "number"
        +}
      • addedInput schema / properties / gridRowCount
        Added value: +{
        +  "description": "Number of grid rows. Only used when layoutMode is GRID.",
        +  "type": "number"
        +}
      • addedInput schema / properties / gridRowGap
        Added value: +{
        +  "description": "Raw row gap in pixels. Only used when layoutMode is GRID.",
        +  "type": "number"
        +}
      • addedInput schema / properties / gridRowGapVariable
        Added value: +{
        +  "description": "DS spacing variable path for GRID row gap.",
        +  "type": "string"
        +}
      • addedInput schema / properties / gridRowSpan
        Added value: +{
        +  "description": "When this frame is a child of a GRID-layoutMode parent, how many rows it should span.",
        +  "type": "number"
        +}
      • addedInput schema / properties / height / description
        Added value: +"Fixed height in pixels."
      • removedInput schema / properties / layoutAlign
        Removed value: -{
        -  "enum": [
        -    "MIN",
        -    "CENTER",
        -    "MAX",
        -    "STRETCH",
        -    "INHERIT"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / layoutGrow
        Removed value: -{
        -  "description": "1 = fill remaining space in parent.",
        -  "type": "number"
        -}
      • addedInput schema / properties / layoutMode
        Added value: +{
        +  "description": "Set to GRID to use CSS-grid-style layout (Grid automation, May 2026) instead of auto-layout. Requires gridRowCount/gridColumnCount. Errors clearly on Figma versions that do not support GRID layoutMode — fall back to direction HORIZONTAL/VERTICAL in that case.",
        +  "enum": [
        +    "GRID"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / layoutPositioning
        Added value: +{
        +  "description": "Set to ABSOLUTE to position this frame as an overlay inside an auto-layout parent (out of flow but still contained). Use for grid lines, positioned labels, etc.",
        +  "enum": [
        +    "AUTO",
        +    "ABSOLUTE"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / layoutSizingHorizontal
        Added value: +{
        +  "description": "Horizontal sizing mode.",
        +  "enum": [
        +    "FIXED",
        +    "HUG",
        +    "FILL"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / layoutSizingVertical
        Added value: +{
        +  "description": "Vertical sizing mode.",
        +  "enum": [
        +    "FIXED",
        +    "HUG",
        +    "FILL"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / maxWidth
        Added value: +{
        +  "description": "Max width constraint.",
        +  "type": "number"
        +}
      • changedInput schema / properties / name / description
        Previous value: -"Layer name"New value: +"Semantic name describing the HTML role (e.g., \"Header Section\", \"Metrics Row\", \"Card: Revenue\"). Never use generic names like \"Frame\"."
      • changedInput schema / properties / padding / description
        Previous value: -"Uniform padding. DS variable path preferred. Raw px allowed in permissive mode only."New value: +"Raw uniform padding in pixels. Use paddingVariable when DS has spacing variables."
      • changedInput schema / properties / padding / type
        Previous value: -[
        -  "number",
        -  "string"
        -]New value: +"number"
      • addedInput schema / properties / paddingBottom / description
        Added value: +"Raw bottom padding in pixels."
      • changedInput schema / properties / paddingBottom / type
        Previous value: -[
        -  "number",
        -  "string"
        -]New value: +"number"
      • addedInput schema / properties / paddingBottomVariable
        Added value: +{
        +  "description": "DS variable path for bottom padding.",
        +  "type": "string"
        +}
      • addedInput schema / properties / paddingLeft / description
        Added value: +"Raw left padding in pixels."
      • changedInput schema / properties / paddingLeft / type
        Previous value: -[
        -  "number",
        -  "string"
        -]New value: +"number"
      • addedInput schema / properties / paddingLeftVariable
        Added value: +{
        +  "description": "DS variable path for left padding.",
        +  "type": "string"
        +}
      • addedInput schema / properties / paddingRight / description
        Added value: +"Raw right padding in pixels."
      • changedInput schema / properties / paddingRight / type
        Previous value: -[
        -  "number",
        -  "string"
        -]New value: +"number"
      • addedInput schema / properties / paddingRightVariable
        Added value: +{
        +  "description": "DS variable path for right padding.",
        +  "type": "string"
        +}
      • addedInput schema / properties / paddingTop / description
        Added value: +"Raw top padding in pixels."
      • changedInput schema / properties / paddingTop / type
        Previous value: -[
        -  "number",
        -  "string"
        -]New value: +"number"
      • addedInput schema / properties / paddingTopVariable
        Added value: +{
        +  "description": "DS variable path for top padding.",
        +  "type": "string"
        +}
      • changedInput schema / properties / paddingVariable / description
        Previous value: -"DS spacing variable path for uniform padding. Bound to all 4 sides via setBoundVariable."New value: +"DS variable path for uniform padding."
      • addedInput schema / properties / parentId
        Added value: +{
        +  "description": "Parent node ID. Omit for page-level.",
        +  "type": "string"
        +}
      • removedInput schema / properties / parentNodeId
        Removed value: -{
        -  "description": "Append to this parent. Omit to place on current page.",
        -  "type": "string"
        -}
      • addedInput schema / properties / primaryAxisAlignItems / description
        Added value: +"Primary axis alignment."
      • removedInput schema / properties / primaryAxisSizingMode
        Removed value: -{
        -  "description": "AUTO = hug contents along primary axis. Defaults to FIXED when width+height are set.",
        -  "enum": [
        -    "FIXED",
        -    "AUTO"
        -  ],
        -  "type": "string"
        -}
      • addedInput schema / properties / primitiveOverrideReason
        Added value: +{
        +  "description": "Required with confirmedNoComponent for component-like primitives. Explain why this frame must be custom.",
        +  "type": "string"
        +}
      • addedInput schema / properties / stroke
        Added value: +{
        +  "description": "Raw hex color for stroke (e.g. \"#e4e6ee\"). Fallback when no DS stroke variables.",
        +  "type": "string"
        +}
      • removedInput schema / properties / strokeHex
        Removed value: -{
        -  "description": "Fallback hex for border color.",
        -  "type": "string"
        -}
      • changedInput schema / properties / strokeVariable / description
        Previous value: -"Variable path for border color."New value: +"DS variable path for stroke color."
      • addedInput schema / properties / strokeWeight
        Added value: +{
        +  "description": "Stroke weight in pixels.",
        +  "type": "number"
        +}
      • removedInput schema / properties / strokeWidth
        Removed value: -{
        -  "description": "Border width in px.",
        -  "type": "number"
        -}
      • addedInput schema / properties / width / description
        Added value: +"Fixed width in pixels."
      • addedInput schema / properties / x / description
        Added value: +"X position in pixels. Required for page-level artboards. Use rightmost existing artboard x + width + 80."
      • addedInput schema / properties / y / description
        Added value: +"Y position in pixels. Defaults to 0 for artboards."
    • Removedfigma_create_rectangle
    • Addedfigma_create_svg
    • Changedfigma_create_text24 fields changed
      • addedInput schema / properties / content
        Added value: +{
        +  "description": "Text content.",
        +  "type": "string"
        +}
      • removedInput schema / properties / fillHex
        Removed value: -{
        -  "description": "Fallback hex color.",
        -  "type": "string"
        -}
      • addedInput schema / properties / fillStyleId
        Added value: +{
        +  "description": "DS fill style key for text color (from figma_list_ds (kind: \"fill_styles\")). Preferred over fillVariable when DS has fill styles but no variables.",
        +  "type": "string"
        +}
      • changedInput schema / properties / fillVariable / description
        Previous value: -"Color token path, e.g. \"Colors/Text/text-primary\"."New value: +"DS variable path for text color."
      • removedInput schema / properties / fontSize
        Removed value: -{
        -  "description": "Fallback — prefer textStyleId.",
        -  "type": "number"
        -}
      • addedInput schema / properties / fontSizeVariable
        Added value: +{
        +  "description": "DS variable path for font size (if no text style).",
        +  "type": "string"
        +}
      • removedInput schema / properties / fontWeight
        Removed value: -{
        -  "description": "Fallback — prefer textStyleId.",
        -  "enum": [
        -    400,
        -    500,
        -    600,
        -    700
        -  ],
        -  "type": "number"
        -}
      • removedInput schema / properties / layoutAlign
        Removed value: -{
        -  "enum": [
        -    "MIN",
        -    "CENTER",
        -    "MAX",
        -    "STRETCH",
        -    "INHERIT"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / layoutGrow
        Removed value: -{
        -  "type": "number"
        -}
      • addedInput schema / properties / layoutPositioning
        Added value: +{
        +  "description": "Set to ABSOLUTE to overlay this text inside an auto-layout parent.",
        +  "enum": [
        +    "AUTO",
        +    "ABSOLUTE"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / layoutSizingHorizontal
        Added value: +{
        +  "description": "Horizontal sizing mode.",
        +  "enum": [
        +    "FIXED",
        +    "HUG",
        +    "FILL"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / lineHeight
        Removed value: -{
        -  "description": "Line height in px. Fallback — prefer textStyleId.",
        -  "type": "number"
        -}
      • addedInput schema / properties / lineHeightVariable
        Added value: +{
        +  "description": "DS variable path for line height.",
        +  "type": "string"
        +}
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "Semantic name describing the HTML element role (e.g., \"Page Title\", \"Card: Revenue Label\", \"Subtitle\"). Never use generic names like \"Text\".",
        +  "type": "string"
        +}
      • addedInput schema / properties / parentId
        Added value: +{
        +  "description": "Parent node ID.",
        +  "type": "string"
        +}
      • removedInput schema / properties / parentNodeId
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / text
        Removed value: -{
        -  "description": "Text content.",
        -  "type": "string"
        -}
      • addedInput schema / properties / textAlignHorizontal / description
        Added value: +"Text alignment."
      • changedInput schema / properties / textAlignHorizontal / enum
        Previous value: -[
        -  "LEFT",
        -  "CENTER",
        -  "RIGHT"
        -]New value: +[
        +  "LEFT",
        +  "CENTER",
        +  "RIGHT",
        +  "JUSTIFIED"
        +]
      • changedInput schema / properties / textStyleId / description
        Previous value: -"DS text style ID (e.g. \"S:abc123,7649:603\"). Use figma_list_text_styles to discover IDs."New value: +"DS text style — accepts style name (e.g. \"Text sm/Semibold\") or style key. Names are resolved to keys automatically."
      • changedInput schema / properties / width / description
        Previous value: -"Fixed width — text wraps at this width."New value: +"Fixed width for the text node."
      • removedInput schema / properties / x
        Removed value: -{
        -  "type": "number"
        -}
      • removedInput schema / properties / y
        Removed value: -{
        -  "type": "number"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "text"
        -]New value: +[
        +  "parentId",
        +  "content"
        +]
    • Changedfigma_delete_node1 field changed
      • addedInput schema / properties / nodeId / description
        Added value: +"Node ID to delete. Must NOT be a top-level artboard."
    • Removedfigma_discover_library_styles
    • Removedfigma_discover_library_variables
    • Removedfigma_get_component_variants
    • Removedfigma_get_node_children
    • Removedfigma_get_node_parent
    • Removedfigma_get_node_props
    • Removedfigma_get_page_nodes
    • Removedfigma_get_pages
    • Removedfigma_get_selection
    • Removedfigma_get_text_info
    • Removedfigma_insert_component
    • Addedfigma_inspect
    • Addedfigma_list_ds
    • Removedfigma_list_text_styles
    • Addedfigma_manage_slot
    • Removedfigma_move_node
    • Removedfigma_preload_styles
    • Removedfigma_preload_variables
    • Removedfigma_read_variable_values
    • Removedfigma_replace_component
    • Removedfigma_restyle_artboard
    • Removedfigma_select_node
    • Removedfigma_set_component_text
    • Removedfigma_set_layout_sizing
    • Removedfigma_set_node_fill
    • Removedfigma_set_session_defaults
    • Removedfigma_set_text
    • Removedfigma_set_variant
    • Removedfigma_set_visibility
    • Removedfigma_swap_main_component
    • Removedfigma_tag_raw_exception
    • Addedfigma_update_node
    • Changedfigma_validate_ds_compliance2 fields changed
      • changedInput schema / properties / nodeId / description
        Previous value: -"Root node ID to validate (typically the artboard)."New value: +"The Figma node ID to validate."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "summary": {
        +      "properties": {
        +        "compliant": {
        +          "type": "number"
        +        },
        +        "totalNodes": {
        +          "type": "number"
        +        },
        +        "violations": {
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "violations": {
        +      "description": "Per-node compliance violations found.",
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedfigma_variable_modes
    • Changedmimic_ai_knowledge_read3 fields changed
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "\"json\" (default) returns structured store contents. \"design_md\" returns a rendered DESIGN.md markdown string instead.",
        +  "enum": [
        +    "json",
        +    "design_md"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / pattern_key
        Removed value: -{
        -  "description": "Optional. Return only the entry matching this pattern key (e.g. \"metric/kpi\"). Omit to return all entries.",
        -  "type": "string"
        -}
      • addedInput schema / required
        Added value: +[]
    • Changedmimic_ai_knowledge_write7 fields changed
      • addedInput schema / properties / data
        Added value: +{
        +  "description": "The entry data to store.",
        +  "type": "object"
        +}
      • addedInput schema / properties / id
        Added value: +{
        +  "description": "Unique identifier for the entry.",
        +  "type": "string"
        +}
      • removedInput schema / properties / reset_gap_seen_counts
        Removed value: -{
        -  "description": "Set true when the user signals their design system was updated. Resets seen_count to 0 on ALL gap-type rules, causing Mimic AI to re-run DS search for those patterns on the next run and discover any newly added components.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / rule_updates
        Removed value: -{
        -  "description": "Array of explicit DS rule updates: gaps (no component exists), substitutions (use this instead), or conventions (DS usage rules).",
        -  "items": {
        -    "properties": {
        -      "dismissed": {
        -        "description": "Set true to permanently suppress this gap from DS recommendations. Use when the user acknowledges the gap and decides not to add the component.",
        -        "type": "boolean"
        -      },
        -      "increment_seen": {
        -        "description": "Set true to increment seen_count by 1. Use for gap/substitution rules — not for conventions.",
        -        "type": "boolean"
        -      },
        -      "notes": {
        -        "description": "Optional context about this rule.",
        -        "type": "string"
        -      },
        -      "reason": {
        -        "description": "Why this rule exists.",
        -        "type": "string"
        -      },
        -      "reset_seen_count": {
        -        "description": "Set true to reset seen_count to 0. Use when a correction is made (paired with increment_correction on the pattern update) or when demoting a stale rule.",
        -        "type": "boolean"
        -      },
        -      "rule_key": {
        -        "description": "Required. Pattern key this rule applies to (e.g. \"label/chip\"). Must match the Pattern Key Taxonomy.",
        -        "type": "string"
        -      },
        -      "state": {
        -        "description": "Set \"resolved\" when a previously missing DS component now exists. Removes the rule from future recommendations and re-enables DS search.",
        -        "enum": [
        -          "active",
        -          "resolved"
        -        ],
        -        "type": "string"
        -      },
        -      "substitution_key": {
        -        "description": "Component key to use as fallback when pattern has no direct DS match.",
        -        "type": "string"
        -      },
        -      "substitution_name": {
        -        "description": "Human-readable name of the substitution component.",
        -        "type": "string"
        -      },
        -      "type": {
        -        "description": "gap = no DS component; substitution = use substitution_key instead; convention = DS usage rule.",
        -        "enum": [
        -          "gap",
        -          "substitution",
        -          "convention"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "rule_key"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • addedInput schema / properties / type
        Added value: +{
        +  "description": "Type of knowledge entry to save. Use \"rule\" for user-defined design rules that should be followed on every build (e.g., color semantics, card structure, component usage patterns).",
        +  "enum": [
        +    "component",
        +    "pattern",
        +    "gap",
        +    "rule"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / updates
        Removed value: -{
        -  "description": "Array of pattern entry updates to apply.",
        -  "items": {
        -    "properties": {
        -      "component_key": {
        -        "description": "Figma component key hash for the mapped DS component.",
        -        "type": "string"
        -      },
        -      "component_name": {
        -        "description": "Human-readable component name.",
        -        "type": "string"
        -      },
        -      "dismissed_conflicts": {
        -        "description": "Component keys to suppress in future DS evolution conflict scans.",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "increment_correction": {
        -        "description": "Set true when the user corrected this mapping. Increments correction_count and demotes VERIFIED→CANDIDATE. Also write a rule_update with reset_seen_count=true for any associated rule.",
        -        "type": "boolean"
        -      },
        -      "increment_use": {
        -        "description": "Set true to increment use_count by 1 for an existing entry.",
        -        "type": "boolean"
        -      },
        -      "library_key": {
        -        "description": "Library key from Figma search. Tracks which DS library this component belongs to.",
        -        "type": "string"
        -      },
        -      "library_name": {
        -        "description": "Human-readable library name (e.g., \"My Team Library\").",
        -        "type": "string"
        -      },
        -      "notes": {
        -        "description": "Optional context note.",
        -        "type": "string"
        -      },
        -      "pattern_key": {
        -        "description": "Required. Canonical taxonomy key (e.g. \"metric/kpi\", \"label/chip\"). Must match the Pattern Key Taxonomy.",
        -        "type": "string"
        -      },
        -      "state": {
        -        "description": "Explicit state override. Omit to let promotion logic handle CANDIDATE→VERIFIED automatically.",
        -        "enum": [
        -          "CANDIDATE",
        -          "VERIFIED",
        -          "REJECTED",
        -          "EXPIRED"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "pattern_key"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "updates"
        -]New value: +[
        +  "type",
        +  "id",
        +  "data"
        +]
    • Addedmimic_build_chart
    • Addedmimic_build_table
    • Changedmimic_discover_ds9 fields changed
      • addedInput schema / properties / communitySearchResults
        Added value: +{
        +  "description": "Unique library names found via Figma MCP search_design_system (query \"color\", includeVariables: true). Required after initial discovery to verify no community libraries were missed. Pass only non-null libraryName values.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / communitySearchVariableKeys
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "Map of libraryName → one sample variable key from search results. Used to validate which libraries are actually enabled in the file. Extract one key per library from the color search results.",
        +  "type": "object"
        +}
      • addedInput schema / properties / externalVariables
        Added value: +{
        +  "description": "Variables fetched via Figma MCP search_design_system for community libraries whose variables are not discoverable via the plugin API. Pass after receiving a communityVariablesRequired response.",
        +  "items": {
        +    "properties": {
        +      "collection": {
        +        "description": "Collection name (e.g. \"palette\", \"spacing\").",
        +        "type": "string"
        +      },
        +      "key": {
        +        "description": "Variable key from Figma MCP search results.",
        +        "type": "string"
        +      },
        +      "libraryName": {
        +        "description": "Library name the variable belongs to.",
        +        "type": "string"
        +      },
        +      "name": {
        +        "description": "Variable name/path (e.g. \"colors/content/content1\").",
        +        "type": "string"
        +      },
        +      "resolvedType": {
        +        "description": "Variable type: COLOR, FLOAT, STRING, BOOLEAN.",
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / fileKey / description
        Previous value: -"Figma file key for the DS library file."New value: +"Figma file key to discover DS from."
      • addedInput schema / properties / identityDriftChoice
        Added value: +{
        +  "description": "Answer to a library-identity-drift prompt (name-keyed community library where most previously-known components vanished). \"same\" keeps learning under the existing history; \"different\" starts a fresh bucket for this library.",
        +  "enum": [
        +    "same",
        +    "different"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / libraryFileKey
        Added value: +{
        +  "description": "Library file key (alphanumeric string from the Figma URL of the library file). Prompted once per library, cached permanently.",
        +  "type": "string"
        +}
      • addedInput schema / properties / libraryKey
        Added value: +{
        +  "description": "Library key to use when multiple DS libraries are available. Returned from a previous call that detected multiple libraries.",
        +  "type": "string"
        +}
      • addedInput schema / properties / skipRestApi
        Added value: +{
        +  "description": "Skip REST API component discovery (e.g. for community libraries where the file key is unavailable). Discovery proceeds with plugin-only data; use Figma MCP search_design_system + mimic_map_components to find components.",
        +  "type": "boolean"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "_stopBuild": {
        +      "description": "True when the build must not proceed until the returned instructions are followed.",
        +      "type": "boolean"
        +    },
        +    "_userPrompt": {
        +      "description": "Present this to the user verbatim when a decision is required.",
        +      "type": "string"
        +    },
        +    "communityLibraryCheckRequired": {
        +      "type": "boolean"
        +    },
        +    "completenessWarnings": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "enforcement": {
        +      "type": "object"
        +    },
        +    "hint": {
        +      "type": "string"
        +    },
        +    "phase": {
        +      "type": "number"
        +    },
        +    "phaseLabel": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Removedmimic_generate_build_report
    • Removedmimic_generate_design_md
    • Addedmimic_map_components
    • Removedmimic_pipeline_resolve
    • Removedmimic_render_url
    • Changedmimic_status2 fields changed
      • addedInput schema / required
        Added value: +[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "cacheHits": {
        +      "type": "number"
        +    },
        +    "dsCache": {
        +      "properties": {
        +        "components": {
        +          "type": "number"
        +        },
        +        "failedKeys": {
        +          "type": "number"
        +        },
        +        "textStyles": {
        +          "type": "number"
        +        },
        +        "variables": {
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "hint": {
        +      "description": "What to call next.",
        +      "type": "string"
        +    },
        +    "knowledge": {
        +      "properties": {
        +        "buildCount": {
        +          "type": "number"
        +        },
        +        "components": {
        +          "type": "number"
        +        },
        +        "gaps": {
        +          "type": "number"
        +        },
        +        "patterns": {
        +          "type": "number"
        +        },
        +        "rules": {
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "phase": {
        +      "description": "0=idle, 1=discovery, 2=inventory, 3=build, 4=qa, 5=report.",
        +      "type": "number"
        +    },
        +    "phaseLabel": {
        +      "type": "string"
        +    },
        +    "pluginConnected": {
        +      "type": "boolean"
        +    },
        +    "toolCallCount": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "pluginConnected",
        +    "phase",
        +    "hint"
        +  ],
        +  "type": "object"
        +}
  2. 45 tool updatesv1.4.0
    • First observedfigma_batch
    • First observedfigma_change_page
    • First observedfigma_create_chart
    • First observedfigma_create_ellipse
    • First observedfigma_create_frame
    • First observedfigma_create_rectangle
    • First observedfigma_create_text
    • First observedfigma_delete_node
    • First observedfigma_discover_library_styles
    • First observedfigma_discover_library_variables
    • First observedfigma_get_component_variants
    • First observedfigma_get_node_children
    • First observedfigma_get_node_parent
    • First observedfigma_get_node_props
    • First observedfigma_get_page_nodes
    • First observedfigma_get_pages
    • First observedfigma_get_selection
    • First observedfigma_get_text_info
    • First observedfigma_insert_component
    • First observedfigma_list_text_styles
    • First observedfigma_move_node
    • First observedfigma_preload_styles
    • First observedfigma_preload_variables
    • First observedfigma_read_variable_values
    • First observedfigma_replace_component
    • First observedfigma_restyle_artboard
    • First observedfigma_select_node
    • First observedfigma_set_component_text
    • First observedfigma_set_layout_sizing
    • First observedfigma_set_node_fill
    • First observedfigma_set_session_defaults
    • First observedfigma_set_text
    • First observedfigma_set_variant
    • First observedfigma_set_visibility
    • First observedfigma_swap_main_component
    • First observedfigma_tag_raw_exception
    • First observedfigma_validate_ds_compliance
    • First observedmimic_ai_knowledge_read
    • First observedmimic_ai_knowledge_write
    • First observedmimic_discover_ds
    • First observedmimic_generate_build_report
    • First observedmimic_generate_design_md
    • First observedmimic_pipeline_resolve
    • First observedmimic_render_url
    • First observedmimic_status

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose, from reading state to creating and modifying various Figma elements. The descriptions are detailed and prevent ambiguity even among similar operations like creating text vs. overriding component text.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern with snake_case, using 'figma_' prefix for Figma operations and 'mimic_' for server-specific actions. This makes it easy to predict and select the right tool.

Tool Count5/5

With 18 tools, the set covers a broad domain (Figma DS integration, building, knowledge management) without being excessive. Each tool serves a specific function, and the count feels justified by the server's scope.

Completeness3/5

The tool set covers discovery, creation, update, deletion, and validation, but a critical gap exists: the described workflow references 'figma_insert_component' which is not included. This missing tool breaks the expected CRUD lifecycle for components, a fundamental operation for this server's purpose.

Maintenance

ActivitySlowing
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    An MCP server integration that enables Cursor AI to communicate with Figma, allowing users to read designs and modify them programmatically through natural language commands.
    19
    894
    6,987
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables interaction with Figma files through intelligent API access, providing navigation, asset extraction, and design token retrieval with 95% token-optimized compact tree output format.
    15
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Converts Figma designs to React/Vue code using existing Design System components, ensuring consistency by enforcing component library usage instead of custom CSS or Tailwind.
    17
    1
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Provides access to Appian's Aurora design system documentation via GitHub, enabling LLMs to query components, layouts, and patterns. It supports both public and internal repositories with features for keyword searching and detailed component guidance.
    7
    11
    -

Latest Blog Posts

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/miapre/mimic-ai'

If you have feedback or need assistance with the MCP directory API, please join our Discord server