Skip to main content
Glama

figma_preview_plan

Validate a design plan against your cached design system without touching Figma. Returns a plan ID and summary, or errors with suggestions to fix and preview again.

Instructions

Validate a Design Plan (Design DSL JSON) with Zod, resolve every component/variant/property/token against the cached Design System, and return a planId + human-readable summary WITHOUT touching Figma. Invalid plans or unresolved components return structured errors with suggestions — fix the plan and preview again.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
planNoDesignPlan object: { name, screens: DesignNode[], target?, screenGap? }. See the figma-design skill for the DSL.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and largely meets it: it discloses validation semantics (Zod), that resolution happens against the cached Design System, that no Figma state is mutated, and that failures return structured errors with suggestions. It doesn't say whether validation results or the planId are persisted/cached or what permissions/state the cache requires.

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-loaded with the action and the key constraint, followed by the return contract and the failure/recovery path. Every clause adds information; nothing is restated from the name or schema.

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?

There is no output schema, so the description correctly supplies the return contract (planId + human-readable summary) and the error shape, which is what an agent needs to decide what to do next. Only the downstream role of the planId (e.g. passing it to figma_execute_plan) is left implicit.

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% and the single parameter already documents the DesignPlan shape and points at the figma-design skill for the DSL. The description adds the 'Design DSL JSON' framing and the validation/resolution context but no field-level meaning beyond the schema, so the baseline 3 is correct.

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

Purpose5/5

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

States a specific verb (validate/preview) and resource (Design Plan / Design DSL JSON) and pins the boundary 'WITHOUT touching Figma', which functionally separates it from figma_execute_plan without opening either schema. An agent can tell this is the dry-run counterpart to execution.

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

Usage Guidelines4/5

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

It gives clear when-to-use context via the closing loop: 'Invalid plans or unresolved components return structured errors with suggestions — fix the plan and preview again.' That establishes the iterate-before-execute workflow. It stops short of explicitly naming figma_execute_plan as the follow-up step or stating when to skip previewing.

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