Skip to main content
Glama
arinspunk

Claude Talk to Figma MCP

by arinspunk

Claude Talk to Figma collage

Claude AI Agents Talk to Figma MCP

Enable your AI agents to read, analyze, and modify Figma designs.

Works with your favorite agentic tools:

πŸ‘©πŸ½β€πŸ’» Who it's for

UX/UI Teams

Automate repetitive design tasks and maintain brand consistency without manual effort:

  • Automated accessibility audits - Detect and fix contrast issues in seconds

  • Bulk style updates - Change colors, typography, or spacing across the entire document with a single command

  • Visual hierarchy analysis - Get instant feedback on your design structure

Developers

Generate production-ready code directly from designs:

  • React/Vue/SwiftUI components - From design to code in one step

  • Code with design tokens - Keep design and development in sync

  • Reduce handoff friction - Fewer back-and-forth iterations with the design team

Key advantage: Unlike Figma's official MCP which requires a Dev Mode license, this MCP works with any Figma account (even free ones).

Related MCP server: Figma Console MCP Server

πŸ’‘ Real-world use cases

Accessibility:

"Find all text with contrast ratio <4.5:1 and suggest colors that meet WCAG AA"

Rebranding:

"Change #FF6B6B to #E63946 in all primary buttons throughout the document"

Design analysis:

"Analyze the visual hierarchy of this screen and suggest improvements based on design principles"

Developer handoff:

"Generate the React component for 'CardProduct' including PropTypes and styles in CSS modules"

⚑️ Quick installation

Setup: 5 minutes | First automation: 2 minutes

Requirements

Step 1: Install and start the websocket

Enables the Agent to send commands to Figma.

Open your terminal, navigate to the folder where you want to install the tool, and run:

npx claude-talk-to-figma-mcp

πŸ’‘ Tip: This command is an "all-in-one" (clones, installs, and starts). In subsequent sessions, if you're already inside the project folder your-project/claude-talk-to-figma-mcp, you can simply run bun run socket.

Step 2: Install the plugin in Figma

Enables Figma to receive commands from the agent and return responses.

In Figma Desktop go to Menu β†’ Plugins β†’ Development β†’ Import plugin from manifest β†’ inside the folder where you installed the MCP, select src/claude_mcp_plugin/manifest.json

Step 3: Configure your Agentic Tool

Enables the agent to use the MCP's read and modify tools.

Claude Desktop

Download claude-talk-to-figma-mcp.dxt (from Assets section of the latest release) and double-click. Claude configures itself automatically.

Cursor

  1. Open Cursor Settings β†’ Tools & Integrations

  2. Click "New MCP Server" to open the mcp.json file

  3. Add this configuration:

{
  "mcpServers": {
    "ClaudeTalkToFigma": {
      "command": "npx",
      "args": ["-p", "claude-talk-to-figma-mcp@latest", "claude-talk-to-figma-mcp-server"]
    }
  }
}
  1. Save the file and restart Cursor

Other Agentic Tools

For other tools (Claude Code, Windsurf, VS Code + GitHub Copilot, Cline, Roo Code), you can follow the instructions in the "Configure your Agentic Tool" chapter of the detailed installation guide.

Step 4: Start working

  1. Open the plugin in Figma

  2. Copy the channel ID (bold code inside the green box)

  3. Type in the chat: Connect to Figma, channel {your-ID}

βœ… Ready to design with AI!

Subsequent work sessions

To use the MCP again in day-to-day work, you don't need to repeat the entire process:

  1. Start the socket: In the terminal, enter the project folder your-project/claude-talk-to-figma-mcp and run bun run socket (or npm run socket).

  2. Open the plugin in Figma: You'll find it in your recent plugins list.

  3. Connect the AI: Copy the channel ID and tell your agent: Connect to Figma, channel {your-ID}.

πŸ€– Multi-Agent & Parallel execution

This MCP server supports safe parallel execution out of the box, allowing multiple AI agents (e.g. Claude Code's sub-agents or team swarms) to work simultaneously on your Figma file without locking up the plugin. A built-in command queue processes requests sequentially on the server side, preventing the Figma API from timing out.

Note: Because multiple agents can modify the document simultaneously, relying on implicit page context is unsafe. As a result, stateful commands like set_current_page are blocked. All agents must explicitly provide the intended parentId parameter when executing any creation or structural modification command (e.g., create_frame, create_text).

(Special thanks to @mmabas77 for architecting and contributing this feature!)

🐳 Alternative: Using Docker

If you prefer Docker or need to run the WebSocket server in a team environment, see the Docker installation guide in the detailed installation documentation.

πŸ› οΈ Capabilities

Design analysis

  • Get document information, current selection, styles

  • Scan text, audit components, export assets

Element creation

  • Shapes, text, frames with full style control

  • Clone, group, organize elements

Modification

  • Colors, borders, corners, shadows

  • Auto-layout, advanced typography

  • Local components and team library components

See complete command list.

πŸ“š Documentation

πŸ™ Credits

Based on cursor-talk-to-figma-mcp by Sonny Lazuardi. Adapted for Claude Desktop and extended with new tools by XΓΊlio ZΓ©.

If you want to know about all project contributions, you can visit the "Contributors" chapter of the contribution guide.

MIT License


πŸ“Š Project status

βœ… Stable production - Tool ready for daily use in design and development teams

πŸš€ Under active development:

  • Complete support for Figma Variables

  • Enhanced export to Tailwind CSS/SwiftUI

Need something specific?

Propose new ones on GitHub Issues

Your feedback and contributions keep the project alive. ❀️

Available Tools

92 tools
apply_image_transformA

Adjust image position, scale, and rotation within node. Rotates the IMAGE inside the node, not the node itself.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to transform image on
scaleModeNoChange scale mode
rotationNoRotation in 90-degree increments (0, 90, 180, 270). Rotates the IMAGE inside the node, not the node itself.
translateXNoHorizontal translation offset
translateYNoVertical translation offset
scaleNoScale factor (1 = 100%)

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses key behavior (rotation inside node) but omits side effects (e.g., overwriting existing transforms, auth requirements, or constraints on parameter combinations).

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

Conciseness5/5

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

The description is a single, front-loaded sentence that efficiently communicates the core functionality with no redundant words.

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

Completeness2/5

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

Given the tool has 6 parameters and no output schema, the description is too minimal. It lacks explanation of parameter interactions, default behaviors, or expected results, leaving the agent underinformed.

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 the description adds no additional meaning beyond the schema for parameters. The tool's one-sentence description does not elaborate on parameter usage or constraints.

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 adjusts image position, scale, and rotation within a node, and explicitly distinguishes rotation from node rotation, making it distinguishable from sibling tools like rotate_node.

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

Usage Guidelines3/5

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

The description implies usage scenarios (adjusting image transform) but provides no explicit guidance on when to use this over alternatives like set_image or rotate_node, nor any prerequisites or limitations.

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

apply_variable_to_nodeA

Bind a variable to a node property in Figma. Call once per field β€” for multiple fields, call multiple times.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to bind the variable to
variableIdYesThe ID of the variable to bind
fieldYesThe node property field to bind (e.g., 'fills/0/color', 'opacity', 'width', 'height')

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility. It states the binding action but does not disclose side effects (e.g., overwriting, reversibility), prerequisites (variable must exist), or error scenarios, leaving significant behavioral gaps.

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 extremely concise: two short sentences. The first sentence states the purpose, and the second provides a key usage guideline. No unnecessary words, front-loaded, and easy to parse.

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?

While the description covers the core action and usage pattern, it lacks details about error handling, prerequisites (e.g., variable existence), return values (no output schema), and potential side effects, which would be expected for a mutation tool with no annotations.

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 descriptions cover all three parameters, but the description adds value by explaining the 'field' parameter with examples and the per-field calling pattern, which clarifies the intended usage 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's purpose: binding a variable to a node property in Figma. It distinguishes itself from sibling tools like 'set_variable' by emphasizing the binding action and the per-field usage pattern.

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

Usage Guidelines4/5

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

The description provides a usage guideline: 'Call once per field β€” for multiple fields, call multiple times.' This indicates when to use and how to batch calls, though it does not explicitly contrast with sibling tools like 'set_variable'.

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

boolean_operationB

Perform a boolean operation (union, subtract, intersect, exclude) on two or more nodes. All nodes must share the same parent.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdsYesArray of node IDs to combine (minimum 2). Order matters for SUBTRACT.
operationYesBoolean operation type
nameNoOptional name for the resulting node

TDQS

B3.2/5.0
Behavior2/5

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

No annotations exist, so the description must disclose side effects. It does not state whether the original nodes are deleted or replaced, whether the operation is destructive, or describe the result node. The mention of 'order matters for SUBTRACT' is helpful but insufficient for a mutation tool.

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

Conciseness5/5

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

Single sentence, no wasted words, front-loaded with purpose. Achieves maximum clarity with minimum text.

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

Completeness2/5

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

For a tool that modifies geometry, the description lacks essential context: what happens to the input nodes, what the result is, and any reversibility. Given the lack of output schema, the description should provide this context.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds the parent constraint, which complements the schema but does not significantly enhance understanding beyond what the schema already provides.

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

Purpose5/5

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

The description explicitly states 'Perform a boolean operation (union, subtract, intersect, exclude) on two or more nodes', using specific verbs and resource (nodes). It differentiates from siblings like group_nodes by specifying boolean operations rather than grouping, and includes a constraint (same parent).

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives (e.g., group_nodes, flatten_node). It does not provide context for when boolean operations are appropriate or when to expect different behavior. The constraint 'All nodes must share the same parent' is a prerequisite but not a usage guideline.

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

clone_nodeB

Clone an existing node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to clone
xNoNew X position for the clone (local coordinates, relative to parent)
yNoNew Y position for the clone (local coordinates, relative to parent)
parentIdNoThe ID of the parent node to place the clone into. REQUIRED β€” server enforces this. Use page node ID for top-level elements.

TDQS

B3.2/5.0
Behavior2/5

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

Without annotations, the description carries full burden but only states 'Clone an existing node', omitting behaviors like positioning (via x,y,parentId parameters), return value, or side effects (e.g., new node ID).

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler, efficiently conveying the core action.

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

Completeness2/5

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

Given no output schema and no annotation, the description should mention return values (e.g., cloned node ID) or success conditions, but it does not. The tool's result is unclear for agent planning.

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% with parameter descriptions, so the description adds no extra meaning. Baseline 3 is appropriate as it does not degrade clarity.

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 'Clone an existing node in Figma' uses a specific verb ('Clone') and resource ('existing node'), clearly distinguishing it from sibling tools that create new nodes or modify existing ones.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus other creation or duplication tools. There is no mention of prerequisites (e.g., node must exist) or alternatives.

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

convert_to_frameA

Convert a group or shape node into a frame in Figma. Preserves position, size, visual properties, and children. Useful for converting groups into auto-layout-capable frames.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to convert to a frame

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description discloses key behaviors: it preserves position, size, visual properties, and children. It also implicitates that the resulting frame supports auto-layout. Missing are details on whether the operation is reversible, if it requires specific permissions, or what happens if the node is already a frame. Overall, transparency is good but not exhaustive.

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

Conciseness5/5

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

The description is three short, front-loaded sentences. The first sentence states the primary action, the second lists preserved properties, and the third provides a use case. Every sentence adds distinct value, and there is no redundancy or unnecessary detail.

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

Completeness4/5

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

For a tool with one parameter and no output schema, the description covers the core behavior, preservation details, and a use case. It lacks edge case handling (e.g., if node is already a frame) and does not specify the return value or whether the original node ID remains valid. Slight gaps, but sufficient for a simple conversion tool.

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

Parameters4/5

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

The parameter 'nodeId' has a schema description that is generic ('The ID of the node to convert to a frame'). The tool description adds context by specifying that the node must be a group or shape, which is meaningful beyond the schema. With 100% schema coverage, the description adds value by narrowing the valid node types.

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 action ('convert'), the target resource ('group or shape node into a frame'), and provides specific details about what is preserved (position, size, visual properties, children). It effectively distinguishes from sibling tools like 'group_nodes' or 'ungroup_nodes' by specifying the conversion outcome.

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

Usage Guidelines3/5

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

The description mentions a use case ('useful for converting groups into auto-layout-capable frames') but does not explicitly state when not to use the tool or mention alternatives such as 'create_frame' or 'set_auto_layout'. The context is clear but lacks exclusions or comparative guidance.

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

create_component_from_nodeB

Convert an existing node (frame, group, etc.) into a reusable component in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to convert into a component
nameNoOptional new name for the component
parentIdNoParent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It only states the basic action ('convert...into a reusable component') without disclosing whether the original node is replaced or kept, side effects, authentication needs, or error conditions.

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?

Single sentence, front-loaded with verb and noun ('Convert an existing node...'), no wasted words. Efficient and clear.

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

Completeness3/5

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

The tool is relatively simple, but with no output schema or behavioral disclosure, the description omits return value, constraints (e.g., what node types can be converted), and error handling. Adequate for minimal understanding but not fully complete.

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?

Input schema has 100% parameter description coverage, so the schema already explains all parameters. The description adds no additional meaning beyond what the schema provides (e.g., name is optional, parentId is required). Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool converts an existing node (like frame, group) into a reusable component. It specifies the action and resource, distinguishing it from siblings like 'create_component_instance' which creates instances rather than converting.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs alternatives (e.g., create_component_set). The description does not mention prerequisites, contexts where conversion is not possible (e.g., unsupported node types), or any exclusions.

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

create_component_instanceB

Create an instance of a component in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
componentKeyYesKey of the component to instantiate
xYesX position (local coordinates, relative to parent)
yYesY position (local coordinates, relative to parent)
parentIdNoParent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states 'Create an instance', missing details on side effects, required permissions, or mutation behavior beyond the obvious.

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 concise sentence, but it is so brief that it sacrifices informative value; still, no unnecessary words.

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

Completeness2/5

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

Missing annotations and lack of usage context; the description does not inform about return values or behaviors beyond the schema, leaving the agent underinformed for a creation tool with 4 parameters.

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 the baseline is 3; the description adds no extra meaning beyond the schema's parameter 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 'Create' and the resource 'an instance of a component in Figma', making it distinct from siblings like 'create_component_from_node' and 'detach_instance'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives; fails to mention prerequisites like obtaining a component key via 'get_local_components', and does not provide when-not or exclusions.

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

create_component_setA

Create a component set (variants) from multiple component nodes in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
componentIdsYesArray of component node IDs to combine into a component set
nameNoOptional name for the component set
parentIdNoParent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool.

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure but only states the creation action. It omits details like side effects on original nodes, required permissions, limitations on node count, or return values, making it minimally informative for an agent.

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

Conciseness5/5

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

The description is a single, concise sentence that conveys the essential action without redundant words. It is front-loaded and efficiently captures the tool's purpose.

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 100% schema coverage and a clear purpose, the description is mostly complete for a creation tool. However, the absence of return value or error info and no behavioral details from annotations slightly reduce completeness, though it remains adequate.

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 parameters are well-documented in the schema. The tool description adds no additional parameter meaning beyond the schema, except as implied by the phrase 'from multiple component nodes'. Baseline score applies.

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 'Create' and the resource 'component set (variants)' with the source 'from multiple component nodes'. It uniquely identifies the action among siblings like create_component_from_node (single component) and create_component_instance (instance).

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 context: use when combining multiple component nodes into a component set. It does not include explicit exclusions or alternative tool names, but the context is sufficient for an agent to infer the appropriate scenario.

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

create_connectorA

Create a connector (arrow or line) in FigJam. Connectors can link two existing nodes by ID, or connect arbitrary canvas positions. Use this to draw flow arrows between stickies, shapes, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
startNodeIdNoID of the node where the connector starts (omit to use startX/startY)
startXNoX position of the connector start point (used when startNodeId is not provided)
startYNoY position of the connector start point (used when startNodeId is not provided)
endNodeIdNoID of the node where the connector ends (omit to use endX/endY)
endXNoX position of the connector end point (used when endNodeId is not provided)
endYNoY position of the connector end point (used when endNodeId is not provided)
connectorLineTypeNoLine routing style (default: ELBOWED)
startStrokeCapNoArrowhead at the start (default: NONE)
endStrokeCapNoArrowhead at the end (default: ARROW)
strokeColorNoStroke color in RGBA format
strokeWeightNoStroke weight / line thickness
nameNoOptional name for the connector node
parentIdNoParent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool.

TDQS

A3.9/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. Mentions parentId is REQUIRED (server enforces) and how to get page IDs. However, lacks disclosure of side effects, auth requirements, rate limits, or what happens if parameters conflict. Limited 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?

Two sentences, front-loaded purpose, then brief parameter hint. No redundant information. Efficient and clear.

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?

Core purpose and two usage modes explained. Notes parentId requirement but lacks examples, format details for strokeColor, or clarification on mutual exclusivity of parameters. Adequate but not exhaustive for a 13-param tool.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. Description adds value by explaining two modes (node ID vs coordinates) and implicitly mapping parameters. Also notes default arrowhead at end. Provides context beyond 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?

Clearly states verb 'create' and resource 'connector (arrow or line)'. Distinguishes from siblings by specifying target: 'FigJam' connectors, linking nodes or canvas positions. Purpose is unambiguous.

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

Usage Guidelines4/5

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

Provides clear usage context: 'draw flow arrows between stickies, shapes, etc.' Does not explicitly exclude alternatives, but among many create siblings, this tool is distinct. Lacks explicit when-not-to-use, but context is sufficient.

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

create_effect_styleB

Create a reusable effect style (shadows, blurs) in Figma's local styles.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the style (e.g., 'Shadow/Medium' or 'Glass/Blur')
effectsYesArray of effects to apply and store in the style

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits. It only states the basic action without mentioning side effects (e.g., whether existing styles are overwritten, required permissions, or response behavior). This is insufficient for a creation tool.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. Every element is relevant.

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

Completeness2/5

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

For a tool that creates a resource (effect style), the description lacks crucial context: return value (likely style ID), uniqueness constraints, potential errors (e.g., duplicate name), and performance considerations. No output schema is present, so the description should compensate.

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

Parameters3/5

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

The schema covers 100% of parameters, so the description adds little value beyond mentioning 'shadows, blurs' as examples. It does not elaborate on parameter usage or constraints beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the action ('create'), the resource ('a reusable effect style'), and the domain ('Figma's local styles'). It specifies the types ('shadows, blurs'), effectively distinguishing it from sibling tools like create_paint_style or create_text_style.

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

Usage Guidelines3/5

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

The description implies usage for creating reusable styles rather than applying effects to individual nodes, but it does not explicitly compare with alternatives like set_effects or set_effect_style_id, nor does it provide when-not-to-use guidance.

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

create_ellipseC

Create a new ellipse in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX position (local coordinates, relative to parent)
yYesY position (local coordinates, relative to parent)
widthYesWidth of the ellipse
heightYesHeight of the ellipse
nameNoOptional name for the ellipse
parentIdNoParent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool.
fillColorNoFill color in RGBA format
strokeColorNoStroke color in RGBA format
strokeWeightNoStroke weight

TDQS

C2.7/5.0
Behavior2/5

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

There are no annotations, so the description must fully disclose behavior. It only states that an ellipse is created, but fails to mention whether the ellipse is added to the selection, any side effects on the document state, or requirements like the parent parameter being mandatory.

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

Conciseness2/5

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

The description is too short, consisting of a single sentence. While concise, it omits critical information, making it too sparse to be truly helpful.

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

Completeness2/5

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

Given the complexity of 9 parameters and many sibling tools, the description is incomplete. It does not explain return values, how the ellipse relates to the canvas, or any interactions with other tools like setting properties.

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 the baseline is 3. The description adds no extra meaning beyond what the schema provides, such as clarifying coordinate systems or color formats.

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

Purpose4/5

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

The description clearly states 'Create a new ellipse in Figma', which is a specific verb+resource. However, it does not differentiate from sibling tools like create_rectangle or create_polygon, which similarly create shapes.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool vs alternatives. The description does not mention prerequisites, such as needing a parentId from get_pages, nor does it exclude cases where other shape tools would be more appropriate.

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

create_frameC

Create a new frame in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX position (local coordinates, relative to parent)
yYesY position (local coordinates, relative to parent)
widthYesWidth of the frame
heightYesHeight of the frame
nameNoOptional name for the frame
parentIdNoParent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool.
fillColorNoFill color in RGBA format
strokeColorNoStroke color in RGBA format
strokeWeightNoStroke weight

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure but only states 'Create a new frame.' It does not mention side effects, authentication needs, return values, or potential limitations. The schema hints at required fields, but that's not sufficient.

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 single-sentence description is concise and front-loaded, but given the tool's complexity (9 parameters, nested objects), slightly more detail could be beneficial without losing conciseness.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description is too sparse. It does not explain what the tool returns, how to use it in a workflow, or any constraints beyond the schema. The schema helps, but the description should provide more context.

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

Parameters3/5

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

Schema description coverage is 100%, providing detailed parameter descriptions (e.g., coordinate system, parent ID requirement). The tool description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description 'Create a new frame in Figma' clearly states the verb and resource, distinguishing it from sibling tools like create_rectangle or create_ellipse. However, it lacks specificity about the frame's role as a container or its relationship to other elements.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., create_rectangle, create_section). The schema contains a note about parentId being required, but the description itself offers no usage context or prerequisites.

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

create_pageB

Create a new page in the current Figma document

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the new page

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It does not mention side effects, output, limits, or whether the new page becomes active. For a create operation, more transparency is needed.

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

Conciseness5/5

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

The description is a single concise sentence that communicates the purpose without any extraneous words. Every part is necessary.

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

Completeness2/5

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

Given the absence of an output schema and annotations, and the presence of many sibling tools, the description is too minimal. It does not explain what 'current Figma document' implies or what the result of creation is, leaving gaps for a new user.

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% with the parameter 'name' described. However, the description adds no extra context such as naming conventions, uniqueness, or character limits. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (create), the resource (page), and the scope (in the current Figma document). It differentiates from sibling tools like delete_page, duplicate_page, and rename_page by focusing solely on creation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., duplicate_page or organize_pages). There is no mention of prerequisites or situations where creation is not appropriate.

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

create_paint_styleA

Create a reusable color/paint style (SOLID) in Figma's local styles.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the style (e.g., 'Brand/Primary' or 'UI/Background')
rYesRed component (0-1)
gYesGreen component (0-1)
bYesBlue component (0-1)
aNoAlpha/opacity (0-1, default 1)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, and the description lacks details on side effects, error behavior (e.g., duplicate names), permissions, or return value. It only states that it creates a style, which is minimal 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 a single concise sentence that front-loads the action and resource. Every word is meaningful with no redundancy.

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 or annotations, the description should ideally mention return values or potential errors. It is adequate for a simple creation tool but incomplete regarding behavioral context.

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

Parameters4/5

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

The input schema covers all 5 parameters with descriptions (100% coverage). The description adds value by specifying 'SOLID' type, which clarifies that only solid color styles are created, not gradients or other paint types.

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 action ('Create'), the resource ('reusable color/paint style'), and the type ('SOLID') in Figma's local styles. It distinguishes itself from other style creation tools like create_effect_style or create_text_style.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives like create_effect_style or create_text_style. No context on prerequisites or limitations is given.

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

create_polygonC

Create a new polygon in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX position (local coordinates, relative to parent)
yYesY position (local coordinates, relative to parent)
widthYesWidth of the polygon
heightYesHeight of the polygon
sidesNoNumber of sides (default: 6)
nameNoOptional name for the polygon
parentIdNoParent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool.
fillColorNoFill color in RGBA format
strokeColorNoStroke color in RGBA format
strokeWeightNoStroke weight

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, and the description gives no behavioral details such as side effects, permissions, or constraints beyond what is in parameter descriptions. The parameter description for parentId hints at requirement, but that is parameter-level info.

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 very concise (5 words), which is efficient, but it lacks substance for a tool with 10 parameters. It could be expanded without losing conciseness.

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

Completeness2/5

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

No output schema exists, and the description does not explain return values or side effects. With 10 parameters including nested objects, the description is incomplete for an agent to fully understand the tool's behavior.

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

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 does not add meaning beyond the schema; however, the schema itself provides clear parameter descriptions, so no deduction needed.

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

Purpose4/5

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

The description 'Create a new polygon in Figma' clearly states the verb and resource, but lacks differentiation from sibling tools like create_star or create_ellipse. It is specific but could be more distinctive.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, limitations, or context, leaving the agent to infer usage.

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

create_rectangleB

Create a new rectangle in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX position (local coordinates, relative to parent)
yYesY position (local coordinates, relative to parent)
widthYesWidth of the rectangle
heightYesHeight of the rectangle
nameNoOptional name for the rectangle
parentIdNoParent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool.
fillColorNoFill color in RGBA format
strokeColorNoStroke color in RGBA format
strokeWeightNoStroke weight

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, and the description only says 'Create a new rectangle'. It does not disclose behavioral traits such as side effects (e.g., selection changes, file modification), required permissions, or error conditions.

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 one sentence, concise and front-loaded. However, it could include more contextual hints without becoming verbose, so a 4 is suitable.

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

Completeness2/5

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

Given the tool has 9 parameters and nested objects, the description is minimal. It lacks context about the working file, selection, or output. No mention of return values or required state.

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

Parameters3/5

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

The schema description coverage is 100%, so the schema already documents all parameters. The description adds no extra meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action 'Create', the resource 'rectangle', and the platform 'Figma'. It is specific and distinguishes this tool from siblings like create_ellipse or 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 Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., create_shape_with_text, clone_node). It does not mention prerequisites or 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.

create_sectionB

Create a FigJam section. Sections are used to group and organise content on the FigJam board. They appear as labelled coloured regions.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX position on the canvas
yYesY position on the canvas
widthNoWidth of the section (default: 800)
heightNoHeight of the section (default: 600)
nameNoLabel / name for the section
fillColorNoBackground fill color in RGBA format
parentIdNoParent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It only states that sections appear as labelled coloured regions, but does not disclose behavioral traits such as side effects, permission requirements, or what happens when optional parameters are omitted.

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

Conciseness5/5

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

The description is two sentences long, with the first sentence stating the action and the second explaining the purpose. It is concise and front-loaded with no wasted words.

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

Completeness2/5

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

Given the tool has 7 parameters, 2 required, and no output schema, the description is incomplete. It omits critical context such as the parentId requirement, default values for width/height, and what the tool returns. Siblings are not mentioned for contrast.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the schema for any parameter; it is a high-level overview without per-parameter elaboration.

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 'Create a FigJam section' with a specific verb and resource, and explains that sections are used to group and organize content as labelled coloured regions. It distinguishes from sibling tools like create_rectangle or create_sticky by defining the unique purpose of sections.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool vs alternatives (e.g., group_nodes or frames). It does not mention prerequisites like the need for a parentId, which is described as required in the schema but not highlighted.

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

create_shape_with_textA

Create a FigJam shape with text inside. Useful for flowcharts, diagrams, and process maps. Supported shapes: SQUARE, ELLIPSE, ROUNDED_RECTANGLE, DIAMOND, TRIANGLE_UP, TRIANGLE_DOWN, PARALLELOGRAM_RIGHT, PARALLELOGRAM_LEFT.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX position on the canvas
yYesY position on the canvas
widthNoWidth of the shape (default: 200)
heightNoHeight of the shape (default: 200)
shapeTypeNoThe shape type (default: ROUNDED_RECTANGLE)
textNoText to display inside the shape
fillColorNoFill color in RGBA format (0-1 range each component)
nameNoOptional name for the node
parentIdNoParent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It adds key behavioral info: 'parentId' is required server-side despite not being in required array, and lists supported shapes. However, it omits details on mutation behavior, undo, or authentication needs.

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 with no filler. Front-loaded with verb and purpose, followed by essential list of supported shapes. Every sentence earns its place.

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

Completeness2/5

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

Despite 9 parameters and no output schema, the description is minimal. It fails to explain coordinate system, default dimensions, text rendering behavior, or error cases. ParentId requirement is mentioned but could be clearer. More context needed for a complex tool.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description lists shape enum values and mentions text inside, adding marginal value over schema. No additional parameter semantics beyond what schema already provides.

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

Purpose5/5

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

The description clearly states the tool creates a FigJam shape with text inside, using specific verb 'Create' and resource 'shape with text'. It distinguishes from sibling shape tools (e.g., create_rectangle, create_ellipse) by emphasizing text inclusion and listing supported shapes.

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 notes usefulness 'for flowcharts, diagrams, and process maps', providing clear usage context. It implies when to choose this tool over shape-only siblings, but lacks explicit when-not-to-use or alternative recommendations.

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

create_starB

Create a new star in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX position (local coordinates, relative to parent)
yYesY position (local coordinates, relative to parent)
widthYesWidth of the star
heightYesHeight of the star
pointsNoNumber of points (default: 5)
innerRadiusNoInner radius ratio (0.01-0.99, default: 0.5)
nameNoOptional name for the star
parentIdNoParent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool.
fillColorNoFill color in RGBA format
strokeColorNoStroke color in RGBA format
strokeWeightNoStroke weight

TDQS

B3.3/5.0
Behavior2/5

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

No annotations exist, so the description carries full responsibility. It fails to disclose side effects, required permissions, return value, or whether the operation is reversible, leaving significant gaps.

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 sentence, concise and to the point. However, it could include more context without becoming verbose, so it earns a 4 rather than 5.

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

Completeness2/5

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

Given 11 parameters, nested objects, and no output schema, the description is too sparse. It does not explain return behavior, restrictions, or lifecycle implications, making it incomplete for an autonomous agent.

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% with good descriptions. The description adds value for parentId by clarifying it is required and suggesting get_pages for page IDs, but overall adds little 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 verb ('Create') and resource ('a new star in Figma'), distinguishing it from sibling tools like create_rectangle or create_ellipse.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance is given. The description provides a hint about parentId requirements, but does not address selection among similar shape-creation tools.

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

create_stickyB

Create a sticky note in a FigJam board. Sticky notes are the primary way to add text content in FigJam.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX position on the canvas
yYesY position on the canvas
textYesText content of the sticky note
colorNoBackground color of the sticky note (default: yellow). Supported values: yellow, pink, green, blue, purple, red, orange, teal, gray, white.
isWideNoWhether the sticky note should be wide format (default: false)
nameNoOptional name/label for the node
parentIdNoParent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It only states creation and primary use for text. Critical details like the required parentId (enforced server-side) are not mentioned, nor any mutation implications or side effects.

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

Conciseness5/5

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

Two sentences, front-loaded with the core action and context. No wasted words.

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 thorough schema descriptions and no output schema, the description covers basic purpose but lacks mention of important constraints (e.g., parentId requirement) that are only in the property descriptions. It could provide more integration context with sibling tools.

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% with descriptions for all parameters. The main description adds no additional semantic meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states 'Create a sticky note in a FigJam board' and notes that sticky notes are the primary way to add text content. However, it does not differentiate from sibling tools like create_text or create_shape_with_text, which also add text.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. The description implies sticky notes are primary for text, but does not specify exclusions or provide when-not-to-use advice.

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

create_textC

Create a new text element in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX position (local coordinates, relative to parent)
yYesY position (local coordinates, relative to parent)
textYesText content
fontSizeNoFont size (default: 14)
fontWeightNoFont weight (e.g., 400 for Regular, 700 for Bold)
fontColorNoFont color in RGBA format
nameNoOptional name for the text node by default following text
parentIdNoParent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool.
textAlignHorizontalNoHorizontal text alignment. Use RIGHT for Arabic/RTL text.
textAutoResizeNoText resize behavior. Use HEIGHT for fixed-width text that wraps.
widthNoFixed width for the text node. Use with textAutoResize HEIGHT for wrapping text within a specific width.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description should carry behavioral context. It only states the basic action, omitting important details like side effects, requirements (e.g., parentId), or the need to load fonts first.

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 concise sentence. It could benefit from slightly more structure (e.g., a brief list of required inputs), but it is not verbose.

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

Completeness2/5

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

Given the tool's complexity (11 parameters, no output schema or annotations), the description is insufficient. It fails to mention critical context like the required parentId or the need to use load_font_async first.

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 the baseline is 3. The description adds no additional parameter meaning beyond the schema descriptions, which are already detailed.

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

Purpose4/5

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

The description clearly states the action (create) and resource (text element) in Figma. It is specific and directly conveys the tool's function, though it does not differentiate from sibling create tools.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like create_shape_with_text or other create tools. It lacks any context about prerequisites or typical usage scenarios.

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

create_text_styleC

Create a reusable text style (typography) in Figma's local styles. This is useful for design system consistency.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the style (e.g., 'Heading/H1' or 'Body/Large')
fontFamilyYesFont family name (e.g., 'Inter', 'Roboto')
fontStyleNoFont style (e.g., 'Regular', 'Bold', 'Italic'). Defaults to 'Regular'.
fontSizeYesFont size in pixels
letterSpacingNoLetter spacing value (defaults to 0)
letterSpacingUnitNoLetter spacing unit (PIXELS or PERCENT, defaults to PIXELS)
lineHeightNoLine height value
lineHeightUnitNoLine height unit (PIXELS, PERCENT, or AUTO, defaults to AUTO if no value provided)
textCaseNoText case transformation
textDecorationNoText decoration type

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must compensate. It only states the tool creates a style, but doesn't disclose behavior like whether it overwrites existing styles, requires permissions, or returns the style ID. For a create operation, expected mutation is implied, but more detail is needed.

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

Conciseness5/5

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

Two sentences with no wasted words. The first sentence immediately states the action and target, making it front-loaded and efficient.

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

Completeness2/5

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

Given the tool has 10 parameters and no output schema, the description should explain what the created style yields (e.g., style ID for later use) and any constraints (e.g., file context). The current description is too minimal for effective use.

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

Parameters3/5

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

The input schema has 100% coverage with clear parameter descriptions, so the description adds no additional semantic value. Baseline 3 is appropriate; the description could have clarified defaults or relationships between parameters (e.g., lineHeightUnit affecting how lineHeight is interpreted).

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

Purpose4/5

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

The description clearly states the tool creates a reusable text style in Figma's local styles, which is distinct from other style creation tools (e.g., create_effect_style). However, it doesn't explicitly differentiate from sibling tools like create_paint_style, but the context 'text style' makes it sufficiently clear.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs. alternatives (e.g., using set_text_style_id or creating a text node with inline styles). The description only mentions 'useful for design system consistency,' which is a general benefit, not a usage guideline.

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

delete_nodeC

Delete a node from Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to delete

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description bears the full burden of behavioral disclosure. It only states the basic delete action and omits critical traits such as irreversibility, whether child nodes are deleted, or any side effects. For a destructive operation, this is a significant transparency gap.

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

Conciseness4/5

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

The description is a single, direct sentence with no filler words. It is front-loaded with the action and resource, but it is so minimal that it omits useful behavioral context; still, as far as structure and brevity, it is clean.

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

Completeness2/5

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

For a destructive tool with no annotations and no output schema, the description is incomplete. It fails to mention the irreversible nature of the operation, whether children are affected, or how this tool differs from 'delete_multiple_nodes'. An agent is left without key information for safe invocation.

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

Parameters3/5

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

Schema description coverage is 100% and the 'nodeId' parameter is clearly described as 'The ID of the node to delete'. The tool description does not add extra parameter semantics beyond the schema but does not need to, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb ('Delete'), a resource ('node'), and a context ('from Figma'), making the core action clear. It does not explicitly differentiate from the sibling tool 'delete_multiple_nodes', so the specificity is slightly incomplete, but the singular phrasing and tool name carry that distinction.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives such as 'delete_multiple_nodes'. The description gives no context for choosing between single and batch deletion, nor any exclusions or prerequisites.

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

delete_pageB

Delete a page from the current Figma document

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesID of the page to delete

TDQS

B3.2/5.0
Behavior2/5

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

No annotations exist, so description must disclose behavioral traits. It only states the action without mentioning consequences (permanent deletion, permissions needed, impact on other pages). Insufficient for a destructive operation.

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?

Single sentence with no wasted words. Efficiently communicates the core function despite brevity.

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 the simple tool (1 param, no output schema), the description is minimally adequate. Does not explain return value or error scenarios, but acceptable for low 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% and the parameter description in schema already explains the parameter. The tool description adds no extra meaning, so baseline score of 3 is appropriate.

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

Purpose5/5

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

Description clearly states the action (delete) and the resource (page) with context (from current Figma document). Distinguished from sibling 'delete_node' which deletes a node within a page.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., delete_node). Missing prerequisites or conditions like whether the page can be current or the last page.

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

detach_instanceA

Detach a component instance, converting it into a regular frame. This breaks the link with the main component.

ParametersJSON Schema
NameRequiredDescriptionDefault
instanceIdYesThe ID of the instance to detach

TDQS

A3.8/5.0
Behavior3/5

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

The description explains the primary behavioral change (breaking link, converting to frame) but lacks details on irreversibility, effect on overrides, or required permissions. No annotations to supplement, so description carries full burden.

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

Conciseness5/5

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

The description is a single sentence with no wasted words, efficiently conveying the tool's purpose and effect.

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 (one parameter, no output schema), the description is fairly complete. It covers the core functionality, though it could mention error cases or that the instance must exist. Overall, adequate.

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

Parameters3/5

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

The single parameter instanceId is described in the schema ('The ID of the instance to detach'), and the tool description does not add additional meaning. Schema coverage is 100%, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (detach a component instance) and the outcome (convert to regular frame, break link with main component). It is specific and distinguishes from sibling tools like create_component_instance or set_instance_variant.

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

Usage Guidelines3/5

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

The description implies when to use (when you want to break the component link) but does not provide explicit guidance on when not to use or mention alternatives. No context on prerequisites or side effects.

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

duplicate_pageA

Duplicate an existing page in the Figma document, creating a complete copy of all its contents

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesID of the page to duplicate
nameNoOptional name for the duplicated page (defaults to 'Original Name (Copy)')

TDQS

A3.6/5.0
Behavior3/5

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

No annotations provided, so description alone must disclose behavior. It states a complete copy is made, but does not detail side effects (e.g., page position, naming collision handling beyond default, undoability). Basic transparency but insufficient for a mutation tool.

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

Conciseness5/5

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

Single sentence with no wasted words. Clearly communicates the tool's action and result. Efficient and front-loaded.

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

Completeness2/5

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

No output schema and no annotations. Description lacks details on where the duplicate is placed, whether it's reversible, error handling for invalid pageId, or how it relates to siblings like clone_node. Incomplete for a side-effect tool.

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 has 100% coverage for both parameters. Description adds no extra meaning to parameter semantics; it only explains the overall effect. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Duplicate' and resource 'an existing page', and specifies the result as 'creating a complete copy of all its contents'. It distinguishes from siblings like create_page (creates empty page) and clone_node (clones a node).

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives like clone_node or create_page. The purpose is straightforward, but the description lacks context about prerequisites or scenarios.

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

export_node_as_imageC

Export a node as an image from Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to export
formatNoExport format
scaleNoExport scale

TDQS

C2.7/5.0
Behavior1/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, but it only restates the tool name without adding behavioral context. It does not state whether the operation is read-only, what response format to expect, what limits exist, or how unsupported nodes are handled.

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 one short, front-loaded sentence with no wasted words. It is easy to parse, though the brevity sacrifices useful behavioral context.

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

Completeness2/5

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

The tool has no annotations and no output schema, so the description is the only place to communicate return behavior, side effects, and constraints. It provides none of that, leaving an agent uncertain about what happens after invocation beyond the parameter contract.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters adequately. The description adds no additional meaning to nodeId, scale, or format beyond what the schema provides, which aligns with the baseline of 3.

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

Purpose4/5

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

The description states a specific verb ('Export'), resource ('a node'), and result ('as an image'), making the core purpose clear. It is distinct from sibling tools, though it does not explicitly differentiate itself from alternatives by name.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus siblings, no prerequisites, and no mention of exclusions or alternatives. Usage is only implied by the tool's purpose, not explained.

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

flatten_nodeB

Flatten a node in Figma (e.g., for boolean operations or converting to path)

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesID of the node to flatten

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose behavioral traits such as mutation, destructiveness, permissions, or side effects. The minimal description offers insufficient transparency.

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 (14 words) and front-loaded with the main action, though it could be slightly more structured.

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 the tool's simplicity (one param, no output schema, no annotations), the description provides core purpose but lacks details on outcomes, error conditions, or prerequisites, leaving some gaps for an agent.

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% with a single parameter described as 'ID of the node to flatten'. The description adds no extra meaning beyond the schema, but the parameter is self-explanatory.

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

Purpose4/5

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

The description clearly states the action ('flatten a node') with examples (boolean operations, converting to path), distinguishing it from siblings like 'boolean_operation' (a specific operation type) and 'convert_to_frame'.

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

Usage Guidelines3/5

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

The description provides examples of when to use (boolean operations, converting to path) but lacks explicit guidance on when not to use, prerequisites (e.g., node type), or alternatives.

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

get_annotationC

Read annotations from a node in Figma. Uses the proposed Annotations API.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to read annotations from

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must bear the burden of behavioral disclosure. It only states it reads annotations, but does not address edge cases (e.g., node not found, no annotations), response format, or any limitations related to the proposed API.

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 very short (two sentences) with no redundancy. The second sentence about the proposed API is slightly extraneous but does not detract from clarity.

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

Completeness2/5

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

With no output schema, the description should at least hint at the return format or contents of annotations. It fails to do so, leaving the agent uncertain about what to expect. Additionally, the mention of a 'proposed' API suggests instability but lacks further context.

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

Parameters3/5

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

The input schema covers 100% of parameters with a description for nodeId. The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool reads annotations from a node, distinguishing it from sibling tools like set_annotation that write. The verb 'read' and resource 'annotations' are specific, but it could be more explicit about the context of annotations.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. While set_annotation exists as a sibling for writing, the description does not mention it or provide any when-to-use or when-not-to-use advice.

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

get_document_infoB

Get detailed information about the current Figma document

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get' implies a read operation, but the description does not state whether there are side effects, authentication requirements, or any details about what 'detailed information' includes or how it is returned.

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

Conciseness5/5

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

The description is a single, concise sentence with no filler. It front-loads the action and resource clearly, earning its place without redundancy.

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?

For a parameterless tool, the description is minimally adequate, but it leaves the agent without a clear sense of what 'detailed information' means or what the output will contain. With no output schema and no annotations, more specificity about the returned content would make it 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?

The tool has zero parameters, so the schema already fully covers this dimension. The description adds no parameter semantics, but none are needed for a parameterless tool; the baseline of 4 is appropriate.

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

Purpose4/5

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

The description clearly states the verb 'get' and the resource 'current Figma document,' which identifies the tool's function. However, 'detailed information' is vague and does not specify what is included, and it doesn't explicitly distinguish itself from sibling tools like get_node_info or read_my_design.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as get_selection, get_node_info, or read_my_design. The description gives a general purpose but no context, exclusions, or selection criteria, leaving the agent to infer usage.

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

get_figjam_elementsA

Get all FigJam-specific elements (stickies, connectors, shapes with text, sections, stamps) on the current page. Use this to read the contents of a FigJam board.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states it reads contents but does not disclose behavioral details (e.g., whether the tool is read-only, what happens if the page is not a FigJam board, or performance characteristics). The description is adequate but lacks depth.

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: first explains what elements are retrieved, second when to use. Front-loaded, no filler, every sentence adds value.

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

Completeness4/5

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

Given no parameters and no output schema, the description provides sufficient context for a simple read operation. It lists the element types and board context. It could mention the output structure (e.g., returns an array) but is not required to be exhaustive.

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?

No parameters exist, so schema coverage is 100% trivially. Per guidelines, 0 parameters warrants a baseline of 4. Description adds no parameter semantics, which is acceptable here.

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

Purpose5/5

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

Description clearly states it retrieves FigJam-specific elements (stickies, connectors, shapes with text, sections, stamps) on the current page, distinguishing it from general node retrieval tools like get_node_info or get_selection.

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 recommends using this tool to read FigJam board contents, providing clear context. Lacks explicit alternatives or when-not-to-use guidance, but the sibling list implies alternatives like get_node_info for broader node data.

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

get_gridA

Read layout grids from a frame node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the frame node to read grids from

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Read' (non-destructive) but fails to mention error handling, permissions, or what happens if the node is not a frame. This leaves significant gaps for an agent.

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

Conciseness5/5

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

The description is a single, short sentence that front-loads the action ('Read layout grids from a frame node in Figma'). Every word is meaningful with no unnecessary fluff.

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 the tool's simplicity (1 parameter, no output schema), the description is minimally adequate but lacks details about return format or behavior when the node has no grids. It covers the core functionality.

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

Parameters3/5

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

Schema description coverage is 100% (the only parameter 'nodeId' is described in schema). The description adds no additional meaning beyond 'The ID of the frame node to read grids from', so baseline 3 is appropriate.

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

Purpose5/5

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

The description 'Read layout grids from a frame node in Figma' uses a specific verb ('Read') and identifies the resource ('layout grids'), clearly distinguishing it from sibling tools like 'set_grid' (write) and 'get_guide' (guides vs grids).

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

Usage Guidelines3/5

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

The description implies usage for reading grids from a frame node but provides no explicit guidance on when to use vs alternatives or prerequisites (e.g., node must be a frame). The purpose is clear enough for the agent to infer basic usage.

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

get_guideC

Read guides from a page in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesThe ID of the page to read guides from

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavior. It correctly implies a read operation but does not mention permissions, side effects, or return format. The description is insufficient for a mutation-free tool.

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

Conciseness4/5

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

The description is concise (five words) and front-loaded. It has no wasted words, but the extreme brevity may sacrifice necessary detail, making it less than ideal.

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

Completeness2/5

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

The tool has only one parameter and no output schema, but the description fails to explain what guides are or how they relate to sibling tools like grids. The context is incomplete for effective use.

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% (one parameter with description). The tool description adds no additional meaning beyond the schema, so a baseline of 3 is appropriate.

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

Purpose3/5

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

The description states 'Read guides from a page', providing a clear verb and resource. However, it does not differentiate from sibling tools like get_grid or get_annotation, leaving ambiguity about what 'guides' refers to (e.g., ruler guides vs. grid guides).

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as set_guide, get_grid, or get_annotation. The description does not mention prerequisites or context.

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

get_image_from_nodeB

Extract image metadata from a node

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to get image from

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It only states 'extract image metadata' without detailing what metadata is returned, behavior on non-image nodes, or error conditions. Inadequate for unannotated tool.

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

Conciseness5/5

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

Single sentence is extremely concise and front-loaded with the core action. No wasted words.

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

Completeness2/5

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

Given no output schema and only one parameter, description should specify what 'image metadata' includes (e.g., dimensions, format). Current description leaves ambiguity, making it incomplete for effective tool use.

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

Parameters3/5

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

Schema description coverage is 100% (nodeId described as 'The ID of the node'). Description adds no additional parameter semantics beyond schema, so baseline score of 3 is appropriate.

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

Purpose5/5

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

Description uses specific verb 'Extract' and resource 'image metadata from a node', clearly distinguishing from sibling tools like 'export_node_as_image' or 'get_svg' which handle actual image data.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. While the purpose is clear, there is no mention of prerequisites, context, or exclusion cases.

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

get_local_componentsA

Get all local components from the Figma document

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It clearly signals a read-only list operation via 'Get,' but it does not define what qualifies as 'local,' whether nested/variant components are included, or what the returned component data contains.

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

Conciseness5/5

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

The description is a single sentence with no filler. Every word adds value, and the key scoping terms 'local' and 'Figma document' are included.

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?

For a zero-parameter getter, the description is mostly sufficient to invoke the tool correctly. However, with no annotations and no output schema, the agent is left to infer the exact return structure and the precise boundary of 'local components.'

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

Parameters4/5

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

The tool has zero parameters, so there is no schema to elaborate on and no parameter meaning to clarify. Baseline 4 applies because no input documentation is needed.

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

Purpose4/5

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

The description states a specific verb and resource: 'Get all local components' scoped to 'the Figma document.' It is clear and distinguishable from siblings like get_selection, get_styles, or get_node_info, though it does not explicitly name an alternative.

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

Usage Guidelines3/5

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

There is no explicit guidance about when to use this tool instead of related tools like scan_nodes_by_types or get_styles. The term 'local' implies it excludes library/team components, but this distinction is not spelled out.

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

get_node_infoB

Get detailed information about a specific node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to get information about
depthNoHow many child levels to include in full detail. Deeper levels return only id/name/type stubs.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, but the description does not disclose what 'detailed information' includes, such as properties or children. The depth parameter hints at nested detail, but overall behavioral traits are vague.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no waste. It could be slightly more informative without losing conciseness.

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

Completeness2/5

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

Without an output schema, the description should explain what data the tool returns. It does not, leaving the agent uncertain about the response structure. Incomplete for a retrieval tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters well. The description does not add significant meaning beyond 'specific node', earning a baseline score of 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 'Get detailed information about a specific node in Figma', using a specific verb and resource. It distinguishes from siblings like get_document_info and get_nodes_info.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., get_nodes_info for multiple nodes). The description offers no when-to-use or when-not-to-use context.

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

get_nodes_infoB

Get detailed information about multiple nodes in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdsYesArray of node IDs to get information about
depthNoHow many child levels to include in full detail. Deeper levels return only id/name/type stubs.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavior. It only says 'detailed information' without describing what 'detailed' means, how depth parameter affects results, or any side effects. Lacks transparency on return structure or limitations.

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?

Extremely concise single sentence, front-loaded with key purpose. No redundant 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?

Given no output schema and two parameters, the description could be more complete by explaining the return value or depth behavior. But schema covers parameter details, so it's minimally adequate.

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?

Input schema already documents both parameters with descriptions (100% coverage). The description adds 'detailed information' but no additional semantic meaning beyond the schema.

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

Purpose4/5

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

Description clearly states 'Get detailed information about multiple nodes in Figma', which is a specific verb-resource combination. It distinguishes from the singular get_node_info sibling by implying multiple nodes, though not explicitly stating the plural nature.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like get_node_info or other query tools. Does not specify context, prerequisites, or exclusions.

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

get_pagesA

Get all pages in the current Figma document

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states the basic action. Does not disclose if pages include hidden/archived pages, authorization requirements, or performance implications.

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

Conciseness5/5

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

One sentence, no wasted words, appropriately sized for the tool's simplicity.

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 getter with no parameters and no output schema, the description is fairly complete. However, lacks detail on what 'all pages' entails (e.g., hidden pages, order).

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

Parameters4/5

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

There are no parameters, so schema coverage is 100%. Baseline score of 4 applies; the description adds context by specifying 'in the current Figma document', which is clear.

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 'Get' and resource 'all pages' with scope 'in the current Figma document'. It is specific and distinguishes from sibling tools like 'create_page' and 'delete_page'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. There is no mention of prerequisites, filtering, or when not to use it.

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

get_reactionsA

Read all prototype interactions (reactions) from a node in Figma. Useful for debugging and inspecting existing interactions.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to read reactions from

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden of disclosing behavior. It correctly indicates the tool is read-only (no mutation). It does not detail side effects or permissions, but for a simple read operation, this is adequate. 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.

Conciseness5/5

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

The description is two sentences, front-loading the action and resource. Every sentence adds value, with no unnecessary words. It is optimally concise.

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 (one parameter, no output schema, no nested objects), the description provides sufficient context: it states the action, resource, and typical use case. It could briefly mention the return format (array of reactions), but not having it does not hinder understanding significantly.

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

Parameters3/5

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

The input schema has 100% coverage with a description for nodeId. The tool description does not add any additional meaning beyond the schema's description, so it meets the baseline but does not exceed it.

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?

Description clearly states the tool reads prototype interactions (reactions) from a node, with a specific verb (read) and resource (interactions from a node). It also distinguishes from the sibling write tool set_reactions by emphasizing read-only purpose.

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

Usage Guidelines3/5

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

The description mentions the tool is 'useful for debugging and inspecting existing interactions,' implying when to use it, but it does not explicitly state when not to use it or provide alternatives (e.g., set_reactions for writing). Guidance is implied but not comprehensive.

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

get_remote_componentsA

Get available components from team libraries in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It only states the operation is a read ('Get') but does not mention authentication requirements, library selection, or what 'available' entails (e.g., published vs. unpublished). Minimal transparency beyond the basic action.

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

Conciseness5/5

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

A single, concise sentence that is front-loaded with the verb and resource. No extraneous information, every word contributes to understanding the tool's purpose.

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

Completeness3/5

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

Given the simplicity (no parameters, no output schema), the description is adequate but could be more complete by clarifying that it retrieves published components from accessible team libraries. The lack of output schema increases the need for description of return value scope.

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 zero parameters and 100% schema coverage, the description does not need to explain parameters. It adds value by specifying the resource ('team libraries'), which is not evident from the empty schema. Baseline 4 for zero parameters is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the specific resource 'available components from team libraries in Figma'. It distinguishes itself from the sibling tool 'get_local_components' by specifying 'remote' components, making its purpose precise and unambiguous.

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

Usage Guidelines3/5

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

The description implies usage for retrieving team library components but does not explicitly state when to use this tool versus alternatives like 'get_local_components'. No exclusions or conditions are provided, leaving the agent to infer context.

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

get_selectionB

Get information about the current selection in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description must carry the behavioral disclosure burden. It signals a read operation through 'Get information' but does not disclose return fields, side-effect freedom, or any prerequisites like needing an open document. This is minimal extra value beyond the tool's name.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundancy. Every word contributes to stating the tool's purpose.

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?

This is a simple zero-parameter getter, so the description is nearly sufficient. However, with no output schema present, the vague term 'information' leaves the agent guessing about the return shape, such as whether it returns node IDs, types, or names.

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

Parameters4/5

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

There are zero parameters and schema coverage is effectively complete, so the description has nothing to add. The baseline of 4 applies because no parameter semantics are needed.

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

Purpose4/5

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

The description states a clear verb ('Get') and resource ('current selection in Figma'), making the tool's basic purpose understandable. It is distinct from siblings such as set_selections, get_node_info, and get_document_info, though it does not enumerate exactly what information is returned.

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

Usage Guidelines3/5

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

No explicit when-to-use or alternative tool guidance is provided. The name and sibling list imply it is for reading the active selection rather than mutating it with set_selections or querying a specific node with get_node_info, but this is left to inference.

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

get_styled_text_segmentsA

Get text segments with specific styling in a text node

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the text node to analyze
propertyYesThe style property to analyze segments by

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. However, it only states the function without disclosing behavioral traits such as what happens with invalid nodeId, whether it is a read-only operation, or if there are any side effects. The simplicity leaves ambiguity about error handling and output nature.

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

Conciseness5/5

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

The description is a single, direct sentence with no extraneous information. It is appropriately sized for the tool's simplicity and front-loaded with the core action.

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 the lack of output schema and annotations, the description omits details about return format, pagination, or error behavior. While the tool is simple, the description is minimally adequate but leaves gaps that could be filled with more context.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond what the schema already provides; it merely restates the purpose without elaborating on parameter values or usage nuances.

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 gets text segments with specific styling within a text node. The verb 'Get' and resource 'text segments with specific styling' are specific. Among siblings, 'scan_text_nodes' is broader, so this tool is clearly distinguished.

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

Usage Guidelines3/5

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

The description implies usage when needing to analyze styled segments in a specific text node, but it does not provide explicit instructions on when to use this tool versus alternatives like 'scan_text_nodes' or 'get_node_info'. No when-not or prerequisites are mentioned.

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

get_stylesA

Get all styles from the current Figma document

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Get', implying a read operation, but does not clarify what kinds of styles are included (fill, text, effect, grid), whether library styles are returned, or what the response contains. This is minimal behavioral detail.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word earns its place, and the verb-resource-scope structure makes it easy to parse quickly.

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 zero-parameter getter, the description is largely sufficient: an agent knows what action to take and what resource to expect. The main gap is the ambiguous scope of 'styles', which could be interpreted in multiple ways, but the overall call is straightforward.

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

Parameters4/5

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

The tool has zero parameters, so the schema requires no documentation. The baseline of 4 applies because there are no parameter semantics to clarify; the description does not need to add parameter-level meaning.

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

Purpose5/5

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

The description uses a specific verb ('Get'), a clear resource ('all styles'), and a scope ('current Figma document'). It is immediately distinguishable from sibling tools like get_local_components or get_document_info, which target different resources.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as get_local_components or get_document_info. The phrase 'from the current Figma document' gives some context, but no explicit conditions, exclusions, or alternative-tool routing are provided.

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

get_svgA

Export a single node as an SVG string from Figma. Returns the SVG markup including all nested children.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to export as SVG

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It states the output (SVG string with all nested children) and the action (export). However, it does not disclose any side effects, permissions, or limitations such as whether this triggers rendering or has size constraints.

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

Conciseness5/5

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

The description is two sentences, concise and front-loaded with the core purpose. Every word adds value, with no filler or 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?

For a simple export tool with one required parameter and no output schema, the description is mostly complete. It explains what is returned (SVG markup including children). Missing are potential error conditions or limitations, but overall adequate.

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% with a single required parameter 'nodeId' described as 'The ID of the node to export as SVG'. The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool exports a single node as an SVG string from Figma, with specific verb 'export' and resource 'node as SVG'. It distinguishes itself from sibling tools like 'export_node_as_image' and 'get_image_from_node' by specifying the output format (SVG) and including nested children.

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

Usage Guidelines3/5

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

The description implies usage for obtaining SVG markup of a node but does not explicitly mention when to use this tool over alternatives like 'export_node_as_image' or 'get_image_from_node'. No exclusion or alternative guidance is provided.

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

get_variablesA

List all variable collections and their variables in the current Figma file. Returns collections with their modes and variables.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

The description indicates a read-only operation ('list... returns'), which is sufficient. No annotations exist, but the description carries the full burden and does not contradict any structured data.

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

Conciseness5/5

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

One sentence that is front-loaded with the key action and resource, 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?

With zero parameters and no output schema, the description completely explains what the tool does and returns, making it fully sufficient for an 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?

There are no parameters, so schema coverage is 100%. The description adds meaning beyond the schema by describing the return structure (collections, modes, variables).

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 action 'list' and the resource 'variable collections and their variables', and it differentiates from sibling tools like 'apply_variable_to_node' or 'set_variable'.

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

Usage Guidelines3/5

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

No explicit when-to-use or alternatives are mentioned, but for a simple read-only listing tool, the usage context is implied given sibling tools are mostly mutation or specific manipulators.

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

group_nodesC

Group nodes in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdsYesArray of IDs of the nodes to group
nameNoOptional name for the group

TDQS

C2.9/5.0
Behavior1/5

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

With no annotations, the description carries full burden but merely states the action. It does not disclose whether grouping is destructive, requires selection, or affects existing groups, leaving the agent uninformed.

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 extremely concise (4 words), which is efficient, but lacks any explanatory structure. It earns a high conciseness score but could benefit from minimal elaboration.

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

Completeness2/5

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

Given the simplicity (2 params, no output schema), the description is too minimal. It does not explain the effect of grouping, side effects, or expected behavior, leaving gaps for an agent.

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% (both parameters have descriptions in the schema). The description adds no extra meaning beyond what the schema already provides, so baseline 3 applies.

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 'Group nodes in Figma' clearly states the action (group) and resource (nodes), distinguishing it from siblings like 'ungroup_nodes', 'flatten_node', and 'delete_node'.

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

Usage Guidelines2/5

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

No usage guidance is provided. The description does not indicate when to use this tool over alternatives, nor does it mention any prerequisites or exclusions.

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

insert_childB

Insert a child node inside a parent node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
parentIdYesID of the parent node where the child will be inserted
childIdYesID of the child node to insert
indexNoOptional index where to insert the child (if not specified, it will be added at the end)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose behavioral traits such as whether this is a destructive operation, auth requirements, or side effects on the document. The bare verb 'insert' leaves much to the agent's assumption.

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

Conciseness5/5

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

A single, concise sentence that front-loads the essential information. No superfluous words.

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

Completeness2/5

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

Given no output schema, no annotations, and a moderate number of parameters (3), the description is incomplete. It does not explain return values, error conditions, or the effect on the document structure. The agent may lack sufficient context for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add any extra meaning beyond what is already in the schema; it merely repeats the operation. No parameter details are given.

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 action (insert) and the target resource (child node inside a parent node), which is distinct from sibling tools that perform other operations like delete, move, or rename.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like move_node or duplicate_node. No mention of prerequisites or 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.

join_channelC

Join a specific channel to communicate with Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesThe name of the channel to join

TDQS

C2.8/5.0
Behavior2/5

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

Annotations are absent, so the description must disclose side effects, permissions, or state changes. It only says 'join' and 'communicate', with no indication of what happens upon joining, whether it's reversible, or if any permissions are required. This is insufficient for a mutation tool.

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

Conciseness3/5

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

The description is very short (one sentence), which risks under-specification. While it avoids fluff, it omits crucial details, making it less effective. It is concise but incomplete.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description should provide more context about return values, side effects, and prerequisites. For a state-changing tool like 'join_channel', this description is inadequate.

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

Parameters3/5

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

The input schema already describes the sole parameter ('channel') with full coverage (100%). The description adds no additional semantic value beyond what the schema provides, so a score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action (join) and the resource (channel). However, the phrase 'to communicate with Figma' is vague; it doesn't specify what joining a channel entails. Nonetheless, the core purpose is evident 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 Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For instance, there is a sibling 'list_active_channels' that might be a prerequisite, but no hints are given. The description offers no usage context or exclusions.

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

load_font_asyncC

Load a font asynchronously in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
familyYesFont family name
styleNoFont style (e.g., 'Regular', 'Bold', 'Italic')

TDQS

C2.9/5.0
Behavior2/5

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

The async nature is mentioned, but no details on return behavior, error handling, or side effects. With no annotations, the description should provide more behavioral 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?

A single sentence that is entirely non-redundant and front-loaded with key information. No unnecessary words.

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

Completeness2/5

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

For a file loading operation with no output schema, the description lacks critical context about async behavior, error states, and usage prerequisites. Minimal completeness.

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 the description adds no extra meaning beyond what the schema already provides. Baseline score is appropriate.

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

Purpose4/5

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

The description clearly states the action (load) and resource (font) with the async qualifier. It is distinct from sibling tools like set_font_name which modify properties rather than loading.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, or prerequisites such as font availability. The description lacks context for decision-making.

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

move_nodeB

Move a node to a new position in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to move
xYesNew X position (local coordinates, relative to parent)
yYesNew Y position (local coordinates, relative to parent)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits like side effects, permissions required, or coordinate system behavior. It only states the basic action without deeper 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 a single, concise sentence that gets straight to the point with no unnecessary words.

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

Completeness2/5

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

With no output schema and no annotations, the description fails to explain return values or provide complete context for using the tool effectively. It is minimal.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already provides clear parameter meanings. The description adds no extra semantic value beyond what is in 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 'Move a node to a new position in Figma,' using a specific verb and resource. It effectively distinguishes this tool from siblings like 'resize_node' and 'rotate_node'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It lacks information about prerequisites, limitations, or conditions under which moving a node might not be appropriate, such as within auto-layout frames.

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

rename_nodeB

Rename a node (frame, component, group, etc.) in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to rename
nameYesThe new name for the node

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as whether the rename is destructive, if it requires permissions, or what happens to the node's children or styles. For a mutation tool, this is a significant lack of transparency.

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 sentence that is concise and to the point, with no extraneous information. It is efficient but lacks any structural elements like bullet points or sections.

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

Completeness3/5

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

The tool has no output schema, so the description should ideally explain what is returned (e.g., success confirmation, updated node ID). It does not. Also, annotations are missing. For a simple two-parameter tool, it is marginally adequate but incomplete.

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% with clear descriptions for both parameters (nodeId and name). The description adds no extra meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'rename' and the resource 'node', and lists specific node types (frame, component, group, etc.), making it easy to distinguish from sibling tools like 'move_node' or 'delete_node'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'set_node_properties', which might also allow renaming. The agent has no help in deciding between these tools.

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

rename_pageC

Rename an existing page in the Figma document

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesID of the page to rename
nameYesNew name for the page

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for behavioral transparency. It reveals that the tool mutates the document by renaming a page, but does not disclose side effects, such as impact on nested elements or potential name conflicts. No read-only or destructive hints are provided.

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

Conciseness4/5

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

The description is a single, front-loaded sentence that efficiently conveys the core action. It is concise with no redundant words, though it could include brief context without becoming verbose.

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?

For a simple two-parameter tool with no output schema, the description is minimally adequate. However, it lacks completeness on preconditions (e.g., page must exist) and postconditions (e.g., name change affects references), which would help an agent avoid errors.

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

Parameters3/5

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

The input schema has 100% coverage with clear descriptions for both parameters ('ID of the page to rename' and 'New name for the page'). The tool description adds no additional meaning beyond the schema, meeting the baseline for full schema coverage.

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

Purpose4/5

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

The description clearly states it renames an existing page in the Figma document. The tool name and description together specify the resource (page) and action (rename). However, it does not explicitly differentiate from the sibling tool 'rename_node', which could rename any node, leaving potential ambiguity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'rename_node' or 'create_page'. There is no mention of prerequisites, such as the page needing to exist, or exclusions.

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

reorder_nodeA

Change the z-order (layer order) of a node within its parent. Distinct from insert_child which re-parents a node β€” reorder_node changes position within the same parent.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to reorder
positionNoMove to front/back or one step forward/backward
indexNoDirect index position within parent's children (0 = bottom). Overrides position if both provided.

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses that the tool changes layer order within the same parent, which is a non-destructive operation. It does not mention any side effects, permissions, or error conditions, but for this simple tool, the behavior is adequately transparent.

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

Conciseness5/5

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

The description is concise, consisting of two short sentences that immediately convey the core purpose and key distinction. No unnecessary information.

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's simplicity (3 parameters, no output schema), the description covers all necessary aspects: purpose, distinction from a key sibling, and interaction between parameters. The agent has enough context to select and invoke the tool correctly.

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

Parameters4/5

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

The input schema has 100% description coverage for all parameters. The description adds value by clarifying that the 'index' parameter overrides 'position' if both are provided, which is not stated in the schema. This helps the agent understand parameter precedence.

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 explicitly states the tool changes the z-order of a node within its parent, using a specific verb ('Change') and resource ('z-order of a node'). It clearly distinguishes itself from 'insert_child' by noting that reorder_node does not re-parent.

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 contrasts with 'insert_child' to guide when to use this tool vs that sibling. However, it does not mention other related siblings like 'move_node' (which changes position in 2D space) or provide explicit when-not-to-use guidance, leaving some ambiguity.

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

replace_image_fillA

Replace existing image on node with new image while preserving transform

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node with image to replace
newImageSourceYesNew image URL or base64 data
sourceTypeYesSource type: 'url' or 'base64'
preserveTransformNoPreserve existing image transform (default: true)

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It notes that transform is preserved, which is useful, but omits other traits like what happens if no existing image, auth needs, or side effects. The description adds some context beyond the name but is minimal.

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

Conciseness5/5

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

The description is a single sentence that is direct and efficient, containing no redundant or irrelevant information. Every word contributes.

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?

For a 4-parameter tool with no output schema and no annotations, the description is somewhat sparse. It covers the core action but lacks details on transform preservation semantics, error conditions, or the return value. It is minimally adequate.

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 each parameter is already described in the schema. The description adds no additional parameter-specific meaning beyond what the schema provides. The baseline of 3 applies.

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

Purpose4/5

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

The description "Replace existing image on node with new image while preserving transform" clearly states the action (replace) and the resource (image on node). It provides a specific verb and resource, distinguishing it from generic set operations. However, it does not explicitly differentiate from the sibling tool 'set_image_fill'.

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

Usage Guidelines3/5

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

The description implies usage when you want to replace an image while keeping its transform, but it provides no explicit guidance on when to use this vs. alternatives like set_image_fill, nor does it mention prerequisites or when not to use.

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

resize_nodeC

Resize a node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to resize
widthYesNew width
heightYesNew height

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Resize a node in Figma' only implies mutation; it does not disclose whether the operation is reversible, how it interacts with auto-layout, constraints, or child nodes, or any side effects. For a mutating tool with zero annotation coverage, this is a significant gap.

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

Conciseness4/5

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

The description is a single front-loaded sentence with zero filler: 'Resize a node in Figma' conveys the purpose immediately. It earns its place, though the terseness borders on under-specification rather than deliberate brevity backed by richer content elsewhere.

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

Completeness2/5

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

With no annotations and no output schema, the one-sentence description must carry all context, but it omits what the tool returns, whether changes are undoable, and how resizing affects constraints or auto-layout parents. An agent calling this tool would have to guess at side effects and expected confirmation behavior, which is inadequate even for a simple 3-parameter mutation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters with clear descriptions ('New width', 'New height', 'The ID of the node to resize'). The description adds no additional parameter meaning beyond what the schema provides, so the baseline score of 3 applies.

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

Purpose4/5

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

The description states a specific verb (resize) and resource (a node in Figma), making the core action unambiguous. It distinguishes from sibling tools because move_node, rename_node, delete_node, and clone_node each carry different verbs, so there is no overlap in what this tool does. It stops short of a 5 because it adds no scope detail (e.g., which node types are resizable) or explicit differentiation language.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as move_node, set_layout_sizing, or set_layout_mode. There are no conditions, exclusions, or references to siblings, leaving the agent to infer appropriateness entirely from the tool name.

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

rotate_nodeA

Rotate a node in Figma by a specified angle in degrees (clockwise). Use relative=true to add to the current rotation instead of setting an absolute value. Note: locked nodes can still be rotated β€” the Plugin API bypasses the UI lock by design.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to rotate
angleYesRotation angle in degrees (clockwise)
relativeNoIf true, add angle to current rotation instead of setting absolute value (default: false)

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses that locked nodes can be rotated (notable bypass of UI lock). However, it does not mention rotation center, anchor point, or impact on children, leaving some behavioral ambiguity.

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

Conciseness5/5

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

The description is concise with two sentences plus a note, no redundant information. Key details are front-loaded and every sentence adds value.

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

Completeness4/5

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

For a simple rotation tool, the description covers primary behavior and a critical caveat. It lacks mention of rotation center but is otherwise sufficient given no output schema needed.

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. Description adds value by specifying clockwise direction and clarifying the default behavior of relative (false) and the ability to rotate locked nodes, which are not in 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 (rotate), resource (node in Figma), and specific details (angle in degrees clockwise). It distinguishes from sibling transformation tools like move_node or resize_node by focusing on rotation.

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

Usage Guidelines3/5

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

The description explains the relative parameter and locked node behavior but does not explicitly state when to use this tool over alternatives like boolean_operation or apply_image_transform. Usage context is implied but not compared to siblings.

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

scan_text_nodesC

Scan all text nodes in the selected Figma node

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesID of the node to scan

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It implies a read-only scan but does not explain whether the scan recurses through all descendants, what data is returned, or how results are formatted. 'Scan' alone is too vague for an agent to predict behavior reliably.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no filler. It conveys the essential action and object efficiently, though it could include more behavioral detail without becoming bloated.

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

Completeness2/5

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

Given there is no output schema and no annotations, the description should explain what the tool returns or how the scan behaves. It does not mention return values, traversal depth, or any side effects, leaving significant ambiguity for a tool that an agent needs to invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100%, with nodeId described as 'ID of the node to scan.' The description adds only the phrase 'selected Figma node,' which maps loosely to the parameter but provides no extra semantic value. Baseline 3 is appropriate since the schema already documents the parameter.

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

Purpose4/5

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

The description states a specific verb ('scan') and a clear resource ('all text nodes in the selected Figma node'), so an agent can understand the core function. It does not explicitly differentiate from the sibling scan_nodes_by_types, but the focus on text nodes makes the purpose reasonably distinct.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool instead of alternatives like scan_nodes_by_types or get_node_info. The context of when this tool is appropriate is left entirely to inference.

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

set_annotationA

Add an annotation label to a node in Figma. Uses the proposed Annotations API β€” requires Figma Desktop with enableProposedApi.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to annotate
labelYesThe annotation label text

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the write nature (adds) and the prerequisite, but does not detail whether the operation is idempotent, what happens if annotation already exists, or any side effects.

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

Conciseness5/5

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

The description is two sentences long, front-loads the main purpose, and every word adds value. There is no 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 simplicity (two required parameters, no output schema), the description is fairly complete. It covers the basic usage and prerequisite. However, it could benefit from a brief note about the return value or behavior when annotation already exists.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents both parameters adequately. The description adds no extra meaning beyond the schema, meeting the 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 it adds an annotation label to a node in Figma, using a specific verb and resource. It distinguishes from the sibling tool 'get_annotation' which retrieves annotations.

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 specifies the prerequisite (Figma Desktop with enableProposedApi), providing clear context. However, it does not explicitly state when not to use this tool or mention alternatives beyond the implied contrast with 'get_annotation'.

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

set_auto_layoutC

Configure auto layout properties for a node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to configure auto layout
layoutModeYesLayout direction
paddingTopNoTop padding in pixels
paddingBottomNoBottom padding in pixels
paddingLeftNoLeft padding in pixels
paddingRightNoRight padding in pixels
itemSpacingNoSpacing between items in pixels
primaryAxisAlignItemsNoAlignment along primary axis
counterAxisAlignItemsNoAlignment along counter axis
layoutWrapNoWhether items wrap to new lines
strokesIncludedInLayoutNoWhether strokes are included in layout calculations

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so the description bears full burden. It only states 'Configure', without disclosing effects like whether existing properties are overridden, if the node must already have auto layout enabled, or any permissions needed. The description lacks behavioral detail beyond the action.

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

Conciseness5/5

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

A single concise sentence that front-loads the purpose. No redundant or unnecessary words; every part contributes to clarity.

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

Completeness2/5

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

With 11 parameters, no output schema, and no annotations, the description is incomplete. It omits return values, error conditions, preconditions (e.g., does the node need to be a frame?), and behavioral context. A more thorough description is needed for such a complex tool.

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 the baseline is 3. The description adds no additional meaning beyond the schema; parameters are already well-described in the schema (e.g., 'paddingTop', 'layoutMode'). No relational or conditional semantics are explained.

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

Purpose4/5

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

The description clearly states the tool configures auto layout properties for a Figma node. It specifies the verb 'Configure' and resource 'auto layout properties', distinguishing it from generic node property tools like set_node_properties. However, it could be more precise about the scope (e.g., 'for a given node').

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. For instance, it does not clarify that this tool is specifically for auto layout settings, while other tools like set_node_properties might be used for general properties. There is no mention of prerequisites or 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.

set_corner_radiusA

Set the corner radius of a node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to modify
radiusYesCorner radius value
cornersNoOptional array of 4 booleans to specify which corners to round [topLeft, topRight, bottomRight, bottomLeft]

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of disclosing behavioral expectations. 'Set the corner radius' conveys a basic mutation, but it does not mention that the change is persistent, whether unsupported node types will error, how the optional corners parameter interacts with the radius, or whether existing radius values are overwritten. For a mutation tool with no annotation coverage, this is a significant gap.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundancy. Every word contributes to identifying the tool's action and target. The under-specification of behavioral details is a completeness issue, not a conciseness issue.

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?

For a simple three-parameter tool with complete schema coverage, the core invocation details are present. However, with no annotations and no output schema, the description leaves important context unstated: how to obtain a valid nodeId, whether all nodes support corner radius, and what happens when corners is omitted. This is adequate but not robust.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents nodeId, radius, and the optional corners array. The description adds no parameter-specific meaning beyond echoing the general concept of corner radius. This is the expected baseline when the schema already handles parameter documentation.

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

Purpose5/5

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

The description clearly states a specific verb ('Set') and resource ('corner radius of a node in Figma'). This meaningfully distinguishes it from sibling tools like set_fill_color, resize_node, or set_padding. Even without a title, the purpose is immediately unambiguous.

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

Usage Guidelines3/5

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

The intended use case is implied by the tool name and description: use it when you need to change a node's corner radius. However, there is no explicit guidance about when not to use it, what node types support corner radius, or how it relates to alternative tools such as resize_node or set_padding. It meets the threshold for implied usage but provides no explicit routing or exclusions.

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

set_current_pageA

DEPRECATED β€” this stateful command is blocked by the relay server. Instead, pass the target page's node ID as parentId on creation commands (e.g., create_rectangle, create_frame). Use get_pages to discover page IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesID of the page to switch to

TDQS

A4.6/5.0
Behavior5/5

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

Fully discloses the tool is deprecated and blocked by the relay server. No annotations exist, but description alone provides complete behavioral context.

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?

Single, clear sentence that efficiently communicates deprecation, alternative, and related tool. Slightly verbose with 'DEPRECATED β€”' but overall well-structured.

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 is deprecated and should not be used, the description covers all necessary context: what it did, why it's unusable, and how to achieve the same effect. Complete for the intended use.

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 has 100% coverage for the single parameter (pageId). Description adds context that it's a node ID, but schema already describes it as 'ID of the page'. No additional semantics needed beyond 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?

Description explicitly states deprecation, the tool's original purpose (stateful command to set current page), and provides alternative method. It clearly differentiates itself from siblings by marking itself as unusable.

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 tells when not to use (deprecated and blocked) and what to use instead (pass page ID as parentId on creation commands). Provides a concrete alternative tool (get_pages for discovery).

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

set_effectsC

Set the visual effects of a node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to modify
effectsYesArray of effects to apply

TDQS

C2.9/5.0
Behavior1/5

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

With no annotations provided, the description should disclose behavioral details. It fails to mention whether effects replace or merge with existing ones, if order matters, or any side effects like permission requirements. The description is too brief to inform safe invocation.

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 sentence of 10 words, which is concise and front-loaded. However, it sacrifices necessary detail for brevity, but still earns a 4 for efficiency.

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

Completeness2/5

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

For a tool with a complex input schema (array of effect objects) and no output schema, the description is too sparse. It doesn't explain return values or side effects, and with no annotations, more context is needed for completeness.

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 the schema already documents both parameters well. The description does not add meaning beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Set the visual effects') and the resource ('a node in Figma'). It distinguishes from sibling tools like set_fill_color or set_stroke_color by specifying 'visual effects', which covers shadows and blurs.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool vs alternatives such as set_effect_style_id. There is no discussion of when not to use it or prerequisites.

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

set_effect_style_idC

Apply an effect style to a node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to modify
effectStyleIdYesThe ID of the effect style to apply

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. It does not disclose behavioral traits such as whether it overrides existing effects, what happens to previous effect styles, or if the operation is reversible. This is a significant gap for a mutation tool.

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

Conciseness4/5

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

The description is a single sentence that is clear and to the point. While it could be improved by adding a bit more context, it is efficient and avoids unnecessary verbosity.

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 the simplicity of the tool (2 string params, no output schema, no annotations), the description is minimally adequate. It tells what the tool does but lacks details about side effects or error conditions that would make it fully complete.

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 both parameters have descriptions in the schema (nodeId and effectStyleId). The description adds no additional meaning beyond what the schema already provides, so baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb 'Apply' and the resource 'effect style to a node in Figma', which is specific and distinguishes it from siblings like set_effects that modify effect properties directly. However, it could be more explicit about the style being an existing style ID.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like set_effects or set_fill_color. No mention of prerequisites (e.g., effect style must exist) or 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.

set_fill_colorA

Set the fill color of a node in Figma. Alpha component defaults to 1 (fully opaque) if not specified. Use alpha 0 for fully transparent.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to modify
rYesRed component (0-1)
gYesGreen component (0-1)
bYesBlue component (0-1)
aNoAlpha component (0-1, defaults to 1 if not specified)

TDQS

A4.2/5.0
Behavior4/5

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

Discloses default behavior of alpha component and hints at how to achieve transparency. No annotations, so description carries burden; adds value beyond schema.

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

Conciseness5/5

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

Two concise sentences, no waste. Front-loaded with core purpose, then key detail about alpha.

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?

Adequate for a simple mutation tool with well-defined parameters. Lacks mention of error conditions or return value, but not critical given context.

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 already describes each parameter (100% coverage). Description adds slight value by restating alpha default and suggesting alpha=0 for transparency, but mostly redundant.

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?

Describes exactly what the tool does: set the fill color of a node in Figma. Clear verb and resource, differentiated from sibling tools like set_stroke_color or set_gradient.

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 guidance on alpha default and usage for transparency. Does not explicitly contrast with alternative fill-setting tools but context makes it clear for solid colors.

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

set_font_nameB

Set the font name and style of a text node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the text node to modify
familyYesFont family name
styleNoFont style (e.g., 'Regular', 'Bold', 'Italic')

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It only states the action (set font name and style) but does not disclose side effects like font loading requirements, whether the operation is idempotent, or what happens if the font is unavailable. The mutation implication is clear, but richer behavioral context is missing.

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

Conciseness5/5

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

The description is a single sentence of 13 words that immediately conveys the core purpose. Every word earns its place; there is no fluff or redundancy. It is front-loaded with the action and target. For a simple tool, this is appropriately concise.

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 the tool's simplicity and full schema coverage, the description is minimally adequate. However, it lacks behavioral context (e.g., font loading, error conditions) and does not explain the return value (no output schema). For a mutation tool with no annotations, more detail would improve completeness, especially regarding prerequisites like node type validation.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema's parameter descriptions (e.g., family is 'Font family name'). It does not clarify parameter dependencies, valid values, or how style interacts with family. The description neither improves nor harms parameter understanding.

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

Purpose4/5

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

The description clearly states the tool sets font name and style on a text node in Figma. It specifies the action and resource, though it does not explicitly differentiate from siblings like set_font_size or set_font_weight. The verb 'set' combined with 'font name and style' is specific enough to avoid confusion.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as set_text_style_id or individual font property setters. There are no prerequisites, when-not-to-use instructions, or mention of related tools. The agent must infer usage from the name alone.

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

set_font_sizeB

Set the font size of a text node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the text node to modify
fontSizeYesFont size in pixels

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description bears full responsibility for behavioral disclosure. It does not mention prerequisites (e.g., font must be loaded), side effects, or error conditions, leaving the agent unaware of important behavior.

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 extremely concise at one sentence, avoiding redundancy. It efficiently conveys the core purpose without extraneous 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?

For a simple tool with two parameters and no output schema, the description is minimally adequate. However, it does not address return values or what happens upon success/failure, leaving some gaps.

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%, with both parameters already well-described. The description adds no additional semantic value beyond the schema, resulting in a baseline score of 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 action (set), the resource (font size of a text node), and the context (Figma). It effectively distinguishes from siblings like set_font_name or set_font_weight.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as set_font_name or set_text_style_id. The description lacks contextual usage hints.

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

set_font_weightB

Set the font weight of a text node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the text node to modify
weightYesFont weight (100, 200, 300, 400, 500, 600, 700, 800, 900)

TDQS

B3.2/5.0
Behavior1/5

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

No annotations provided, and the description does not disclose any behavioral traits such as side effects, permissions, or reversibility. For a mutation tool, this is insufficient.

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?

Single sentence that is direct and contains no unnecessary words. Efficiently communicates the core purpose.

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

Completeness4/5

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

For a simple tool with two parameters and no output schema, the description is adequate. It tells what the tool does, but could mention return values or errors. However, given the low complexity, it is relatively complete.

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

Parameters3/5

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

Schema description coverage is 100% since both parameters have descriptions. The description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

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

Purpose5/5

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

Description clearly states the verb (Set), resource (font weight of a text node), and platform (Figma). It distinguishes the tool from siblings like set_font_size or set_font_name.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. The description only states the action, with no context on prerequisites or appropriate scenarios.

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

set_gradientA

Set a gradient fill on a node in Figma. Supports linear, radial, angular, and diamond gradients. Replaces all existing fills (same behavior as set_fill_color).

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to modify
typeYesGradient type
stopsYesArray of gradient color stops (minimum 2)
gradientTransformNo2x3 affine transform matrix [[a,b,tx],[c,d,ty]]. Defaults to left-to-right linear: [[1,0,0],[0,1,0]]

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool replaces all existing fills, which is a key behavioral trait. However, it omits details like error conditions, permission requirements, or node type constraints.

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 well-structured sentences: first states purpose, second adds constraints. No superfluous content, front-loaded with key 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 moderate complexity (4 parameters, nested objects) and no output schema, the description covers the essential behavior and parameter roles. It could be improved by noting prerequisites (e.g., node must exist and accept fills) but is sufficient for basic use.

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

Parameters3/5

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

The input schema has 100% description coverage, so the description adds minimal value beyond the schema. It mentions the gradient types and a default for gradientTransform, but these are already specified in 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 action ('Set a gradient fill on a node'), specifies the resource ('node in Figma'), and lists supported gradient types, distinguishing it from sibling tools like set_fill_color and set_image_fill.

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 mentions that the tool 'Replaces all existing fills' and notes the same behavior as set_fill_color, providing context for when to use it. However, it does not explicitly state when not to use it or mention alternative tools for other fill types.

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

set_gridB

Apply layout grids to a frame node in Figma. Supports columns, rows, and grid patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the frame node to apply grids to
gridsYesArray of layout grids to apply

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavioral traits. It implies mutation but does not state whether grids replace existing ones, if node must be a frame, or any side effects. Lacks crucial context for a destructive action.

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?

Single sentence efficiently conveys core purpose. Could be slightly more structured but no waste.

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

Completeness2/5

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

Given the complexity (nested object parameters, no output schema), the description is too minimal. Does not explain behavioral nuances like grid replacement, constraints on count vs sectionSize, or what 'apply' entails. Sibling tools like get_grid exist, but no cross-reference.

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% with all parameters described. The description adds 'columns, rows, grid patterns' which maps to the pattern enum, but does not provide additional meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Apply' and the resource 'layout grids to a frame node'. It distinguishes from siblings like set_fill_color or get_grid by focusing on grid patterns, listing supported types (columns, rows, grid).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like set_fill_color or other 'set_*' tools. Does not specify prerequisites (e.g., node must be a frame) or exclusions.

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

set_guideA

Set guides on a page in Figma. Replaces all existing guides on the page.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesThe ID of the page to add guides to
guidesYesArray of guides to set on the page

TDQS

A3.5/5.0
Behavior3/5

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

The description discloses that guides are replaced, which is a key behavioral trait. However, with no annotations, it omits other important details like permissions, side effects on other page elements, or rate limits.

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

Conciseness5/5

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

The description is extremely concise with two sentences that efficiently convey the core purpose and a critical behavioral note, wasting no words.

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?

For a simple tool with two parameters and no output schema, the description covers the essential function and replacement behavior. However, it lacks explanation of return values or error states, leaving some ambiguity.

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 no additional meaning beyond the schema, which already fully documents the axis enum and offset number.

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 sets guides on a page and replaces all existing guides, distinguishing it from sibling tools like get_guide by specifying the action and the replacement behavior.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as set_grid or get_guide. It does not mention prerequisites, context, or exclusion criteria, leaving the agent without decision support.

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

set_imageA

Set an image fill on a node from base64-encoded image data. Supports PNG, JPEG, GIF, WebP. Max ~5MB after decode.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to apply the image fill to
imageDataYesBase64-encoded image data (PNG, JPEG, GIF, or WebP). Max ~5MB after decode.
scaleModeNoHow the image is scaled within the node (default: FILL)

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, description provides some behavioral context (supports formats, max size) but fails to disclose whether it replaces existing fills, creates new layers, or other side effects. Adequate but not comprehensive.

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, front-loaded with main action and followed by supporting details. 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?

Covers essentials: action, input type, formats, size limit. Lacks return value info but tool is simple and has no output schema. Minor gap for completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are well-documented inside schema. Description reinforces constraints (max size, base64) but adds no new meaning beyond schema. Baseline 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?

Description clearly states the tool sets an image fill on a node from base64 data, with specific verb and resource. It lists supported formats and size limit, distinguishing it from siblings like replace_image_fill.

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

Usage Guidelines3/5

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

Implied usage as a general image fill setter, but no explicit guidance on when to use this vs alternatives like replace_image_fill. No when-not-to-use or prerequisites mentioned.

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

set_image_fillC

Apply image to node from URL or base64 data

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to apply image to
imageSourceYesImage URL or base64 data string
sourceTypeYesSource type: 'url' for image URL, 'base64' for base64 encoded data
scaleModeNoImage scaling mode (default: FILL)

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided, and the description only states the action without disclosing side effects (e.g., overrides existing fills, required permissions, error handling). The burden is on the description, which is insufficient.

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 very concise (one sentence) but lacks any structural elements like use cases or examples. It is minimally acceptable but could benefit from more detail.

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

Completeness2/5

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

No output schema. The tool modifies a node, but the description does not mention return values, success conditions, or consequences of failure. Incomplete for a mutation tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains each parameter. The description adds no extra meaning beyond 'from URL or base64 data'. Baseline score of 3 applies.

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

Purpose4/5

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

The description states a specific verb ('Apply image') and resource ('node') with source types (URL or base64). It is clear but does not distinguish from similar sibling tools like 'set_image' or 'replace_image_fill'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description implies a general setting of image fill but does not specify exclusions (e.g., when to use replace_image_fill instead).

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

set_image_filtersC

Apply color and light adjustments to image fills

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node with image fill
exposureNoBrightness adjustment (-1.0 to 1.0)
contrastNoContrast adjustment (-1.0 to 1.0)
saturationNoColor intensity (-1.0 to 1.0, -1 = grayscale)
temperatureNoWarm/cool tint (-1.0 to 1.0)
tintNoGreen/magenta shift (-1.0 to 1.0)
highlightsNoBright area adjustment (-1.0 to 1.0)
shadowsNoDark area adjustment (-1.0 to 1.0)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits like whether adjustments are additive or absolute, or if nodeId must reference a valid image fill. The one-line description omits these details.

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 concise sentence with no redundancy. It could be slightly expanded to include core behavior, but it is efficiently front-loaded.

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

Completeness2/5

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

The tool has 8 parameters and no output schema, yet the description provides no context about combining filters, defaults ordering, or error cases. It is insufficient for reliable invocation.

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?

All 8 parameters have schema descriptions, so the description adds limited value. It summarizes 'color and light adjustments' but doesn't clarify how parameters interact or what default values are, meeting the baseline.

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

Purpose4/5

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

The description clearly states the tool applies color and light adjustments to image fills, conveying the main action and target. However, it does not differentiate from similar sibling tools like set_image_fill or set_effects, which could cause confusion.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, nor any conditions or prerequisites. The description lacks explicit usage context.

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

set_instance_variantA

Change the variant properties of a component instance without recreating it. This preserves instance overrides and is more efficient than delete + create workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the instance node to modify
propertiesYesVariant properties to set as key-value pairs (e.g., { "State": "Hover", "Size": "Large" })

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility. It states that the tool preserves instance overrides and is more efficient, but it does not disclose any side effects, authorization requirements, error conditions, or whether changes are reversible. This is a significant gap for a mutation tool.

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

Conciseness5/5

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

The description is extremely concise with two sentences that each serve a purpose: the first states the primary action, the second explains the benefit. 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.

Completeness3/5

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

Given the simplicity of the tool (2 required params, no output schema), the description explains the core behavior and a key benefit. However, it lacks details about constraints (e.g., valid variants, whether properties must match a component set) and the result of the operation (e.g., the instance is modified in place). This is adequate but not complete.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description does not add extra meaning beyond the schema; it uses the same language ('variant properties', 'instance overrides'). No additional semantic value is provided for either parameter.

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

Purpose5/5

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

The description uses a specific verb ('Change') and resource ('variant properties of a component instance'), and distinguishes this tool from alternatives by noting it preserves overrides and is more efficient than a delete+create workflow. This clearly states what the tool does and sets it apart from siblings like create_component_instance.

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

Usage Guidelines3/5

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

The description implies usage by contrasting with a delete+create workflow, suggesting this tool is better for changing variants without side effects. However, it does not explicitly state when to use this tool over alternatives like set_node_properties or generate_component_variants, nor does it list 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.

set_letter_spacingB

Set the letter spacing of a text node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the text node to modify
letterSpacingYesLetter spacing value
unitNoUnit type (PIXELS or PERCENT)

TDQS

B3/5.0
Behavior2/5

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

No annotations provided, so description must cover behavioral traits. Only states the action, missing details like side effects, constraints, or return behavior. Insufficient for a mutation tool.

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

Conciseness3/5

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

Single short sentence is concise but lacks structure. Could be improved by front-loading key info, though not verbose.

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

Completeness2/5

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

For a mutation tool with 3 parameters, no output schema, and no annotations, the description is too minimal. Lacks context on valid ranges, unit behavior, or return values, leaving gaps for an agent.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. Description adds no extra meaning beyond the schema; it merely restates the purpose.

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 the action (set), the resource (letter spacing of a text node), and the context (Figma). Distinguishes from sibling tools like set_font_size or set_line_height.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, no prerequisites, and no exclusion criteria. Fails to provide context for proper selection.

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

set_line_heightB

Set the line height of a text node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the text node to modify
lineHeightYesLine height value
unitNoUnit type (PIXELS, PERCENT, or AUTO)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only states the action without mentioning side effects, reversibility, permissions, or constraints (e.g., line height must be positive, unit auto implies no value).

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

Conciseness5/5

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

A single sentence of nine words that is front-loaded with the action and context. No redundant 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?

Given the tool has 3 parameters and no output schema, the description is minimal. It lacks context about node type requirement, mutation behavior, or validation rules, but schema descriptions fill parameter details. Adequate but not comprehensive.

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% with descriptions for all three parameters. The description adds no additional meaning beyond what the schema already provides, so baseline of 3 is appropriate.

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

Purpose5/5

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

The description 'Set the line height of a text node in Figma' uses a specific verb ('Set') and resource ('line height of a text node'), clearly distinguishing it from sibling tools like 'set_font_size' or 'set_letter_spacing'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., node must be a text node) or exclusions (e.g., not for other node types).

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

set_multiple_text_contentsB

Set multiple text contents parallelly in a node

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node containing the text nodes to replace
textYesArray of text node IDs and their replacement texts

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only reveals that the operation sets multiple text contents 'parallelly', but does not state whether existing text is replaced, whether the node must contain text nodes, or whether the operation is atomic.

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 sentence with no filler and the action verb is front-loaded. However, 'parallelly' is an awkward modifier and 'text contents' is imprecise, so it is concise but not maximally polished.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is thin. It omits how this tool relates to set_text_content, what 'parallelly' means in terms of execution, and any side effects or prerequisites, though the schema covers the parameter mechanics.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds little beyond the schema: 'parallelly' and 'in a node' hint at the relationship between the parent node and the array, but the schema already documents both parameters and their roles.

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

Purpose4/5

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

The description uses a specific verb ('Set') and resource ('multiple text contents') and scopes the operation to 'a node'. The word 'multiple' differentiates it from the sibling set_text_content, though 'parallelly' is vague and 'text contents' is slightly ambiguous.

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

Usage Guidelines3/5

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

No explicit when-to-use guidance or alternatives are stated. The term 'multiple' implies this is the batch counterpart to set_text_content, but the description never clarifies when to choose this over the singular tool or what types of nodes are valid.

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

set_node_propertiesA

Set visibility, lock state, and/or opacity of a node in Figma. Only provided properties are changed; omitted properties remain unchanged.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to modify
visibleNoSet node visibility (true = visible, false = hidden)
lockedNoSet node lock state (true = locked, false = unlocked)
opacityNoSet node opacity (0 = fully transparent, 1 = fully opaque)

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It accurately states that the tool modifies node properties and that omitted properties are unchanged. However, it does not discuss side effects, permissions, or error conditions. The behavior is straightforward, so a 3 is appropriate.

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

Conciseness5/5

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

Two sentences with no wasted words. The first sentence states purpose, the second adds a crucial usage detail. Information is front-loaded and every sentence earns its place.

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

Completeness4/5

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

For a simple mutation tool with 4 parameters (all documented in schema) and no output schema, the description provides essential context. It explains partial update behavior. Missing output format, but that is acceptable given no output schema requirement. Overall, it is sufficiently complete 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.

Parameters3/5

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

The input schema has 100% description coverage, so schema descriptions already define each parameter. The tool description adds a meta-guideline ('only provided properties are changed') but does not elaborate on individual parameter meanings beyond the schema. 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?

The description clearly states the action ('Set') and the specific resources (visibility, lock state, opacity) of a node in Figma. It differentiates from sibling tools like set_fill_color or resize_node by focusing on these three property types. The phrase 'only provided properties are changed' adds precision.

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 usage guidance: 'Only provided properties are changed; omitted properties remain unchanged.' This informs the agent that partial updates are safe and supported. However, it does not explicitly contrast with alternatives or specify when not to use this tool, though the context of siblings implies it is for these specific properties.

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

set_paragraph_spacingB

Set the paragraph spacing of a text node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the text node to modify
paragraphSpacingYesParagraph spacing value in pixels

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are present, so the description carries full burden. It does not disclose side effects (e.g., whether spacing applies to empty text), permissions needed, or error conditions. Minimal behavioral 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?

Single sentence, no wasted words. Front-loaded and efficient.

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

Completeness2/5

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

For a simple two-parameter tool, the description is sparse. It omits that the node must be a text node and provides no info on return values or valid ranges. Incomplete given context.

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%, with both parameters described. The description adds no additional meaning beyond the schema. Baseline 3 applies.

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 'Set', the resource 'paragraph spacing', and the context 'text node in Figma'. It distinguishes this tool from siblings like 'set_text_align' or 'set_font_size'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., other text formatting tools) or on prerequisites like the node being a text node. The description lacks usage context.

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

set_reactionsA

Set prototype interactions (reactions) on a node in Figma. Use this to add hover effects, click interactions, etc. For component variants, set on the default variant to add 'While hovering -> Change to hover variant' interactions.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to set reactions on
reactionsYesArray of reactions to set on the node

TDQS

A4/5.0
Behavior3/5

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

The description implies the tool performs a write operation (sets reactions), but it does not disclose whether it overwrites existing reactions or requires specific node permissions. With no annotations, the description should provide more behavioral details such as side effects.

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

Conciseness5/5

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

The description is two concise sentences that immediately state the purpose and provide a key usage tip. There is no superfluous information, and the structure is front-loaded.

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

Completeness4/5

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

The description covers the tool's functionality and includes a variant-specific tip. However, it does not address return values or error cases, and with no output schema, a brief mention of what to expect after setting reactions would improve completeness.

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?

Since the input schema has 100% description coverage, the description adds minimal additional meaning beyond the schema. It uses examples but does not explain parameter semantics further, meeting the baseline expectation.

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's purpose: setting prototype interactions (reactions) on a Figma node, with concrete examples like hover effects and click interactions. It also provides specific guidance for component variants, which helps distinguish its use case.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool (adding hover effects, click interactions, etc.) and includes a tip for component variants. However, it does not explicitly state when not to use it or compare to alternatives like get_reactions, so it lacks full usage boundaries.

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

set_selection_colorsA

Recursively change all stroke and fill colors of a node and all its descendants. Works like Figma's 'Selection colors' feature - perfect for recoloring icon instances.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to modify (typically an icon instance)
rYesRed component (0-1)
gYesGreen component (0-1)
bYesBlue component (0-1)
aNoAlpha component (0-1, defaults to 1)

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility. It mentions 'recursively change all stroke and fill colors' but does not disclose whether the operation is destructive (overwriting gradients or images), any required permissions, or potential side effects. The behavioral disclosure is minimal beyond the basic action.

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

Conciseness5/5

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

The description is two short sentences, highly concise, with no unnecessary words. The key information (recursive, stroke+fill, Figma feature) is front-loaded. Every sentence adds value.

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 the tool's complexity (recursive color change on all descendants) and absence of an output schema, the description provides the core functionality and a use case but leaves gaps: behavior with non-vector nodes, handling of existing color effects, and result confirmation. Adequate but not fully comprehensive.

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

Parameters3/5

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

The input schema covers 100% of parameters with descriptions, so the baseline is 3. The description adds minimal extra meaning (e.g., nodeId is 'typically an icon instance'), but does not significantly enhance understanding beyond the schema. The parameters are well-defined in 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 action (recursively change all stroke and fill colors) and the resource (a node and all its descendants). It distinguishes itself from sibling tools like set_fill_color or set_stroke_color by specifying recursive behavior and referencing Figma's 'Selection colors' feature.

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 mentions it's 'perfect for recolorizing icon instances', giving a clear use case. However, it does not explicitly state when not to use it or mention alternatives like set_fill_color for single-node changes. The context is clear but lacks exclusion guidance.

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

set_sticky_textB

Update the text content of an existing FigJam sticky note.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the sticky note node to update
textYesThe new text content

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, and the description fails to disclose behavioral traits such as side effects, error handling, or permissions. This mutation tool requires more context.

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, concise sentence that efficiently conveys the tool's purpose without unnecessary words.

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

Completeness2/5

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

Given the lack of output schema and annotations, the description is incomplete. It does not explain return values, prerequisites, or scope limitations for a simple update tool.

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

Parameters3/5

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

The input schema provides clear descriptions for both parameters (nodeId and text). With 100% schema coverage, the description adds no additional value, meeting the 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 the tool updates text content of a FigJam sticky note, using a specific verb and resource. It distinguishes from sibling tools like create_sticky and set_text_content.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like set_text_content or create_sticky. The description lacks any context for appropriate usage.

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

set_stroke_colorB

Set the stroke color of a node in Figma (defaults: opacity 1, weight 1)

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to modify
rYesRed component (0-1)
gYesGreen component (0-1)
bYesBlue component (0-1)
aNoAlpha component (0-1)
strokeWeightNoStroke weight >= 0)

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It adds some behavioral information by stating defaults (opacity=1, weight=1) for optional parameters. However, it does not disclose whether the operation is destructive, if any permissions are needed, or what side effects occur (e.g., if the node already has a stroke).

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

Conciseness5/5

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

The description is a single sentence with no extraneous information. It is front-loaded with the core purpose and adds defaults parenthetically. Every word earns its place.

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

Completeness4/5

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

For a simple mutation tool with 6 parameters and no output schema, the description covers the essential purpose and defaults. It does not mention error cases, return values, or prerequisites, but given the tool's simplicity and the schema's completeness, it is mostly adequate.

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 the input schema already describes all parameters. The description adds marginal value by noting default values for 'a' and 'strokeWeight', which is not in the schema. This slightly enhances understanding but does not significantly increase meaning beyond the schema.

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

Purpose4/5

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

The description clearly states the tool sets the stroke color of a node in Figma, specifying the verb 'Set' and the resource 'stroke color'. It also provides default values for opacity and weight. However, it does not explicitly distinguish itself from similar sibling tools like set_fill_color, but the context of 'stroke' makes it clear enough.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as set_fill_color or other node-modifying tools. The description merely states the action and defaults, leaving the agent to infer usage context.

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

set_svgA

Import an SVG string as a vector node in Figma. The SVG is sanitized (scripts and external resources are stripped) before import. Max 500KB.

ParametersJSON Schema
NameRequiredDescriptionDefault
svgStringYesSVG markup string (max 500KB). Must contain a valid <svg> element.
xNoX position for the imported SVG (default: 0)
yNoY position for the imported SVG (default: 0)
nameNoOptional name for the imported node
parentIdNoParent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations exist, so description must cover behavioral traits. It discloses sanitization and size limits, which are important. However, it omits that parentId is required (server-enforced) and does not describe the return value.

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 deliver purpose and key behavioral info without fluff. Front-loaded and to the point.

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 and moderate complexity, the description covers core behavior (import, sanitization, size limit). Missing mention of required parentId and return value, but still fairly complete.

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 covers 100% of parameters with descriptions. The description adds sanitization context for svgString but does not enhance understanding of other parameters 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 action ('Import'), resource ('SVG string'), and result ('vector node'), effectively distinguishing it from sibling tools like set_image or create_rectangle.

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 implicitly indicates usage for importing SVG data, but does not explicitly compare with alternatives or state when not to use. It is clear enough for an experienced user.

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

set_text_alignB

Set the text alignment of a text node in Figma. Use textAlignHorizontal RIGHT for RTL/Arabic text.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the text node to modify
textAlignHorizontalNoHorizontal text alignment (LEFT, CENTER, RIGHT, JUSTIFIED). Use RIGHT for Arabic/RTL text.
textAlignVerticalNoVertical text alignment (TOP, CENTER, BOTTOM)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It states the action but does not disclose behavioral traits like mutation effects, reversibility, required permissions, or impact on other node properties. The tip about Arabic text adds minor 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?

Two sentences, highly concise and front-loaded with the purpose. No extraneous information, every sentence adds value.

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?

For a simple tool with no output schema, the description covers basic function but lacks context on prerequisites, side effects, or when to use. It is minimally adequate but not complete.

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%, with each parameter described. The description repeats the schema's tip about using RIGHT for Arabic text, adding no new semantics. Baseline 3 is appropriate as description does not compensate beyond schema.

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

Purpose4/5

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

Description clearly states 'Set the text alignment of a text node in Figma', specifying verb and resource. It also provides a specific hint for RTL/Arabic text. However, it does not differentiate from sibling set_* tools beyond the alignment focus.

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

Usage Guidelines3/5

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

Includes a usage hint for using RIGHT alignment for RTL/Arabic text, but lacks explicit guidance on when to use this tool versus alternatives (e.g., other set_* tools), and no mention of prerequisites or 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.

set_text_caseB

Set the text case of a text node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the text node to modify
textCaseYesText case type

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits. It only states the action but omits details like error handling (e.g., if node is not a text node), reversibility, or side effects.

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

Conciseness4/5

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

The description is concise (one sentence, 9 words) and efficient, but could benefit from additional structured information like usage context without being verbose.

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

Completeness2/5

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

For a tool with 2 required params and no output schema, the description is too minimal. It lacks context about the node's existence, text-case constraints, or return behavior, making it incomplete for safe invocation.

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 description adds no extra meaning beyond the parameter names and schema descriptions. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's action ('Set'), resource ('text case'), and context ('text node in Figma'). It is specific and distinguishes from siblings like 'set_font_name' or 'set_text_content'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives (e.g., 'set_text_style_id' or 'set_font_name'). No prerequisites or exclusions are mentioned.

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

set_text_contentA

Set the text content of an existing text node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the text node to modify
textYesNew text content

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full burden of behavioral disclosure. It states the action ('set text content') but does not disclose that existing text will be overwritten, possible error cases for invalid node IDs, permissions, or any side effects. The description mostly restates what the tool name already conveys.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It states the action, target, and context efficiently.Purpose and scope are clear without any 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?

Given the low complexity (2 simple parameters, full schema coverage, no output schema), the description is mostly sufficient for an agent to invoke the tool correctly. It clearly targets existing text nodes. However, a brief note about overwriting the existing text or batch alternatives would round out the context.

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 the schema already documents both parameters and their meanings. The description adds minimal semantic value beyond reinforcing that the node must already exist and be a text node. Baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Set'), a precise resource ('text content of an existing text node'), and the domain ('in Figma'). The word 'existing' distinguishes this from create_text, and the singular 'a text node' contrasts with set_multiple_text_contents.

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

Usage Guidelines3/5

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

The description implies usage for modifying one existing text node, but it does not explicitly explain when to prefer this over siblings like set_multiple_text_contents or create_text. There is no when/when-not guidance, only a contextual cue via 'existing'.

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

set_text_decorationC

Set the text decoration of a text node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the text node to modify
textDecorationYesText decoration type

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, and the description only says 'Set,' implying mutation. It does not disclose any side effects, permissions, or behavior when the node is not a text node.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It is concise and gets to the point, though slightly sparse.

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

Completeness2/5

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

For a simple mutation with 2 required parameters and no output schema, the description is minimal. It lacks explanation of return values or additional context about text decoration types.

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 no extra meaning beyond the schema; it merely restates the parameter names implicitly.

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

Purpose4/5

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

The description clearly states it sets the text decoration of a text node in Figma, using the verb 'Set' and specifying the resource. However, it does not differentiate from sibling tools like set_text_align or set_text_case.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives or any prerequisites. With many sibling set_text_* tools, explicit usage context is missing.

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

set_text_style_idC

Apply a text style to a text node in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the text node to modify
textStyleIdYesThe ID of the text style to apply

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It only states the action without explaining side effects, reversibility, or failure conditions (e.g., what happens if the node is not a text node or the style ID is invalid).

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 very short (one sentence) and gets to the point, but it lacks structure and is arguably too brief, missing opportunities to add value.

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?

For a simple mutation tool with two parameters, the description covers the basic purpose. However, with no output schema, the agent is left uninformed about return values or success/failure indicators. It is minimally complete but not rich.

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%, with each parameter described in the schema (nodeId and textStyleId). The description adds no additional meaning or context beyond the schema, so baseline 3 is appropriate.

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

Purpose4/5

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

Clearly states the action ('Apply a text style') and the target resource ('text node in Figma'). The verb and resource are specific. However, it does not explicitly distinguish from sibling tools like apply_design_system, which might also apply styles, but the name set_text_style_id makes the intent clear.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., set_font_name, apply_design_system). No prerequisites or context about required node type or style existence are mentioned.

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

set_variableA

Create or update a variable in a Figma variable collection. Creates the collection if collectionName is provided and it doesn't exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionIdNoID of an existing variable collection
collectionNameNoName for a new collection (used if collectionId not provided)
nameYesVariable name
resolvedTypeYesVariable type
valueNoVariable value. COLOR: {r,g,b,a} (0-1). FLOAT: number. STRING: string. BOOLEAN: boolean.
modeIdNoMode ID to set the value for (uses default mode if omitted)

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It explains the collection creation behavior but does not mention whether updates overwrite or merge, required permissions, error conditions, or what happens if collectionId refers to a non-existent collection. Adequate but not comprehensive.

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

Conciseness5/5

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

The description is two sentences, no filler, front-loaded with the purpose. Every sentence adds value.

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 6 parameters, no output schema, and no annotations, the description covers core behavior but lacks details on error handling, return values, default mode behavior, and invalid value handling. Adequate for a simple tool but incomplete.

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 minor context about the interaction between collectionId and collectionName but does not provide additional semantics beyond 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 tool creates or updates a variable in a Figma variable collection, and explicitly mentions that it creates the collection if collectionName is provided and doesn't exist. This distinguishes it from sibling tools like get_variables (read) and apply_variable_to_node (apply).

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives (e.g., switch_variable_mode). The description implies usage for creating or updating variables but does not provide context on when not to use it or what prerequisites are needed.

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

switch_variable_modeB

Switch the variable mode on a node for a specific collection. This changes which mode's values are used for bound variables.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to switch mode on
collectionIdYesThe ID of the variable collection
modeIdYesThe ID of the mode to switch to

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the core action but does not elaborate on side effects, whether the operation is reversible, required permissions, or how bound variables are updated. This is minimal for a mutation tool.

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

Conciseness4/5

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

The description is a single sentence of 20 words, front-loaded with the action. It is concise and avoids redundancy, though it could be slightly expanded for clarity without losing efficiency.

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 the simplicity of the tool with three well-documented parameters and no output schema, the description is adequate but leaves gaps about behavioral context, such as what happens to the previous mode or whether the change is persistent.

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

Parameters3/5

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

The input schema already provides descriptions for all three parameters with 100% coverage. The description does not add extra meaning beyond what is in the schema, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Switch' and the resource 'variable mode on a node for a specific collection'. It also explains the effect by noting it changes which mode's values are used for bound variables. This distinguishes it from sibling tools that set variables or apply them.

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

Usage Guidelines3/5

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

The description implies usage when you need to change the variable mode for a node-collection pair, but it does not explicitly state when to use this tool versus alternatives like apply_variable_to_node or set_variable. No exclusions or context are provided.

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

ungroup_nodesC

Ungroup nodes in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesID of the node (group or frame) to ungroup

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only states 'Ungroup nodes' without explaining what happens to children after ungrouping, whether it is destructive, or if it only works on certain node types. The parameter schema mentions 'group or frame', but this context is not in the description itself.

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 extremely concise (2 words), which is efficient but lacks structure. It is front-loaded with the verb and resource, yet additional context could be added without becoming verbose.

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

Completeness2/5

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

Given no output schema and no annotations, the description is incomplete. It does not explain the result of ungrouping, error conditions, or any side effects, leaving the agent with insufficient information for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%: the nodeId parameter has a description in the schema. The tool description adds no extra meaning beyond the schema, so baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action (ungroup) and resource (nodes in Figma), distinguishing it from sibling tools like group_nodes and flatten_node. However, it does not specify that it works on both groups and frames, which is only in the parameter description.

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

Usage Guidelines2/5

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

No guidance on when to use this tool or when not to. There is no mention of prerequisites (e.g., the node must be a group or frame) or alternatives like flatten_node for more permanent operations.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updates
    • Removedget_svg
    • Removedget_variables
    • Removedset_image_filters
    • Removedset_svg
    • Removedset_variable
  2. 1 tool update
    • Addedset_variable
  3. 12 tool updates
    • Removedapply_variable_to_node
    • Removedcreate_connector
    • Removedcreate_effect_style
    • Removedcreate_paint_style
    • Removedcreate_section
    • Removedcreate_shape_with_text
    • Removedcreate_sticky
    • Removedcreate_text_style
    • Removedget_figjam_elements
    • Removedset_sticky_text
    • Removedset_variable
    • Removedswitch_variable_mode
  4. 87 tool updatesv0.8.2
    • Addedapply_image_transform
    • Addedapply_variable_to_node
    • Addedboolean_operation
    • Changedclone_node4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / parentId
        Added value: +{
        +  "description": "The ID of the parent node to place the clone into. REQUIRED β€” server enforces this. Use page node ID for top-level elements.",
        +  "type": "string"
        +}
      • changedInput schema / properties / x / description
        Previous value: -"New X position for the clone"New value: +"New X position for the clone (local coordinates, relative to parent)"
      • changedInput schema / properties / y / description
        Previous value: -"New Y position for the clone"New value: +"New Y position for the clone (local coordinates, relative to parent)"
    • Addedconvert_to_frame
    • Addedcreate_component_from_node
    • Changedcreate_component_instance4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / parentId
        Added value: +{
        +  "description": "Parent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool.",
        +  "type": "string"
        +}
      • changedInput schema / properties / x / description
        Previous value: -"X position"New value: +"X position (local coordinates, relative to parent)"
      • changedInput schema / properties / y / description
        Previous value: -"Y position"New value: +"Y position (local coordinates, relative to parent)"
    • Addedcreate_component_set
    • Addedcreate_connector
    • Addedcreate_effect_style
    • Changedcreate_ellipse6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / fillColor / additionalProperties
        Added value: +false
      • changedInput schema / properties / parentId / description
        Previous value: -"Optional parent node ID to append the ellipse to"New value: +"Parent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool."
      • addedInput schema / properties / strokeColor / additionalProperties
        Added value: +false
      • changedInput schema / properties / x / description
        Previous value: -"X position"New value: +"X position (local coordinates, relative to parent)"
      • changedInput schema / properties / y / description
        Previous value: -"Y position"New value: +"Y position (local coordinates, relative to parent)"
    • Changedcreate_frame6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / fillColor / additionalProperties
        Added value: +false
      • changedInput schema / properties / parentId / description
        Previous value: -"Optional parent node ID to append the frame to"New value: +"Parent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool."
      • addedInput schema / properties / strokeColor / additionalProperties
        Added value: +false
      • changedInput schema / properties / x / description
        Previous value: -"X position"New value: +"X position (local coordinates, relative to parent)"
      • changedInput schema / properties / y / description
        Previous value: -"Y position"New value: +"Y position (local coordinates, relative to parent)"
    • Addedcreate_page
    • Addedcreate_paint_style
    • Changedcreate_polygon6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / fillColor / additionalProperties
        Added value: +false
      • changedInput schema / properties / parentId / description
        Previous value: -"Optional parent node ID to append the polygon to"New value: +"Parent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool."
      • addedInput schema / properties / strokeColor / additionalProperties
        Added value: +false
      • changedInput schema / properties / x / description
        Previous value: -"X position"New value: +"X position (local coordinates, relative to parent)"
      • changedInput schema / properties / y / description
        Previous value: -"Y position"New value: +"Y position (local coordinates, relative to parent)"
    • Changedcreate_rectangle7 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / fillColor
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Fill color in RGBA format",
        +  "properties": {
        +    "a": {
        +      "description": "Alpha component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "b": {
        +      "description": "Blue component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "g": {
        +      "description": "Green component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "r": {
        +      "description": "Red component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "r",
        +    "g",
        +    "b"
        +  ],
        +  "type": "object"
        +}
      • changedInput schema / properties / parentId / description
        Previous value: -"Optional parent node ID to append the rectangle to"New value: +"Parent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool."
      • addedInput schema / properties / strokeColor
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Stroke color in RGBA format",
        +  "properties": {
        +    "a": {
        +      "description": "Alpha component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "b": {
        +      "description": "Blue component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "g": {
        +      "description": "Green component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "r": {
        +      "description": "Red component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "r",
        +    "g",
        +    "b"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / strokeWeight
        Added value: +{
        +  "description": "Stroke weight",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • changedInput schema / properties / x / description
        Previous value: -"X position"New value: +"X position (local coordinates, relative to parent)"
      • changedInput schema / properties / y / description
        Previous value: -"Y position"New value: +"Y position (local coordinates, relative to parent)"
    • Addedcreate_section
    • Addedcreate_shape_with_text
    • Changedcreate_star6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / fillColor / additionalProperties
        Added value: +false
      • changedInput schema / properties / parentId / description
        Previous value: -"Optional parent node ID to append the star to"New value: +"Parent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool."
      • addedInput schema / properties / strokeColor / additionalProperties
        Added value: +false
      • changedInput schema / properties / x / description
        Previous value: -"X position"New value: +"X position (local coordinates, relative to parent)"
      • changedInput schema / properties / y / description
        Previous value: -"Y position"New value: +"Y position (local coordinates, relative to parent)"
    • Addedcreate_sticky
    • Changedcreate_text8 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / fontColor / additionalProperties
        Added value: +false
      • changedInput schema / properties / parentId / description
        Previous value: -"Optional parent node ID to append the text to"New value: +"Parent node ID. REQUIRED β€” server enforces this. Use page node ID for top-level elements. Get page IDs via get_pages tool."
      • addedInput schema / properties / textAlignHorizontal
        Added value: +{
        +  "description": "Horizontal text alignment. Use RIGHT for Arabic/RTL text.",
        +  "enum": [
        +    "LEFT",
        +    "CENTER",
        +    "RIGHT",
        +    "JUSTIFIED"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / textAutoResize
        Added value: +{
        +  "description": "Text resize behavior. Use HEIGHT for fixed-width text that wraps.",
        +  "enum": [
        +    "WIDTH_AND_HEIGHT",
        +    "HEIGHT",
        +    "NONE",
        +    "TRUNCATE"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / width
        Added value: +{
        +  "description": "Fixed width for the text node. Use with textAutoResize HEIGHT for wrapping text within a specific width.",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • changedInput schema / properties / x / description
        Previous value: -"X position"New value: +"X position (local coordinates, relative to parent)"
      • changedInput schema / properties / y / description
        Previous value: -"Y position"New value: +"Y position (local coordinates, relative to parent)"
    • Addedcreate_text_style
    • Changeddelete_node1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addeddelete_page
    • Addeddetach_instance
    • Addedduplicate_page
    • Changedexport_node_as_image1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedflatten_node1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedget_annotation
    • Addedget_figjam_elements
    • Addedget_grid
    • Addedget_guide
    • Addedget_image_from_node
    • Changedget_node_info2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "How many child levels to include in full detail. Deeper levels return only id/name/type stubs.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changedget_nodes_info2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "How many child levels to include in full detail. Deeper levels return only id/name/type stubs.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Addedget_pages
    • Addedget_reactions
    • Changedget_styled_text_segments1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedget_svg
    • Addedget_variables
    • Changedgroup_nodes1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedinsert_child1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedjoin_channel3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / channel / default
        Removed value: -""
      • addedInput schema / required
        Added value: +[
        +  "channel"
        +]
    • Changedload_font_async1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedmove_node3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / x / description
        Previous value: -"New X position"New value: +"New X position (local coordinates, relative to parent)"
      • changedInput schema / properties / y / description
        Previous value: -"New Y position"New value: +"New Y position (local coordinates, relative to parent)"
    • Addedrename_node
    • Addedrename_page
    • Addedreorder_node
    • Addedreplace_image_fill
    • Changedresize_node1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedrotate_node
    • Changedscan_text_nodes1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedset_annotation
    • Changedset_auto_layout1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedset_corner_radius1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedset_current_page
    • Changedset_effect_style_id1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedset_effects4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / effects / items / additionalProperties
        Added value: +false
      • addedInput schema / properties / effects / items / properties / color / additionalProperties
        Added value: +false
      • addedInput schema / properties / effects / items / properties / offset / additionalProperties
        Added value: +false
    • Changedset_fill_color1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedset_font_name1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedset_font_size1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedset_font_weight1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedset_gradient
    • Addedset_grid
    • Addedset_guide
    • Addedset_image
    • Addedset_image_fill
    • Addedset_image_filters
    • Addedset_instance_variant
    • Changedset_letter_spacing1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedset_line_height1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedset_multiple_text_contents2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / text / items / additionalProperties
        Added value: +false
    • Addedset_node_properties
    • Changedset_paragraph_spacing1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedset_reactions
    • Addedset_selection_colors
    • Addedset_sticky_text
    • Changedset_stroke_color1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedset_svg
    • Addedset_text_align
    • Changedset_text_case1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedset_text_content1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedset_text_decoration1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedset_text_style_id
    • Addedset_variable
    • Addedswitch_variable_mode
    • Changedungroup_nodes1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
  5. 43 tool updatesv1.0.0
    • Changedclone_node5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the node to clone",
        +  "type": "string"
        +}
      • addedInput schema / properties / x
        Added value: +{
        +  "description": "New X position for the clone",
        +  "type": "number"
        +}
      • addedInput schema / properties / y
        Added value: +{
        +  "description": "New Y position for the clone",
        +  "type": "number"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId"
        +]
    • Changedcreate_component_instance5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / componentKey
        Added value: +{
        +  "description": "Key of the component to instantiate",
        +  "type": "string"
        +}
      • addedInput schema / properties / x
        Added value: +{
        +  "description": "X position",
        +  "type": "number"
        +}
      • addedInput schema / properties / y
        Added value: +{
        +  "description": "Y position",
        +  "type": "number"
        +}
      • addedInput schema / required
        Added value: +[
        +  "componentKey",
        +  "x",
        +  "y"
        +]
    • Changedcreate_ellipse11 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / fillColor
        Added value: +{
        +  "description": "Fill color in RGBA format",
        +  "properties": {
        +    "a": {
        +      "description": "Alpha component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "b": {
        +      "description": "Blue component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "g": {
        +      "description": "Green component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "r": {
        +      "description": "Red component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "r",
        +    "g",
        +    "b"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / height
        Added value: +{
        +  "description": "Height of the ellipse",
        +  "type": "number"
        +}
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "Optional name for the ellipse",
        +  "type": "string"
        +}
      • addedInput schema / properties / parentId
        Added value: +{
        +  "description": "Optional parent node ID to append the ellipse to",
        +  "type": "string"
        +}
      • addedInput schema / properties / strokeColor
        Added value: +{
        +  "description": "Stroke color in RGBA format",
        +  "properties": {
        +    "a": {
        +      "description": "Alpha component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "b": {
        +      "description": "Blue component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "g": {
        +      "description": "Green component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "r": {
        +      "description": "Red component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "r",
        +    "g",
        +    "b"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / strokeWeight
        Added value: +{
        +  "description": "Stroke weight",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / width
        Added value: +{
        +  "description": "Width of the ellipse",
        +  "type": "number"
        +}
      • addedInput schema / properties / x
        Added value: +{
        +  "description": "X position",
        +  "type": "number"
        +}
      • addedInput schema / properties / y
        Added value: +{
        +  "description": "Y position",
        +  "type": "number"
        +}
      • addedInput schema / required
        Added value: +[
        +  "x",
        +  "y",
        +  "width",
        +  "height"
        +]
    • Changedcreate_frame11 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / fillColor
        Added value: +{
        +  "description": "Fill color in RGBA format",
        +  "properties": {
        +    "a": {
        +      "description": "Alpha component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "b": {
        +      "description": "Blue component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "g": {
        +      "description": "Green component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "r": {
        +      "description": "Red component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "r",
        +    "g",
        +    "b"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / height
        Added value: +{
        +  "description": "Height of the frame",
        +  "type": "number"
        +}
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "Optional name for the frame",
        +  "type": "string"
        +}
      • addedInput schema / properties / parentId
        Added value: +{
        +  "description": "Optional parent node ID to append the frame to",
        +  "type": "string"
        +}
      • addedInput schema / properties / strokeColor
        Added value: +{
        +  "description": "Stroke color in RGBA format",
        +  "properties": {
        +    "a": {
        +      "description": "Alpha component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "b": {
        +      "description": "Blue component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "g": {
        +      "description": "Green component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "r": {
        +      "description": "Red component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "r",
        +    "g",
        +    "b"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / strokeWeight
        Added value: +{
        +  "description": "Stroke weight",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / width
        Added value: +{
        +  "description": "Width of the frame",
        +  "type": "number"
        +}
      • addedInput schema / properties / x
        Added value: +{
        +  "description": "X position",
        +  "type": "number"
        +}
      • addedInput schema / properties / y
        Added value: +{
        +  "description": "Y position",
        +  "type": "number"
        +}
      • addedInput schema / required
        Added value: +[
        +  "x",
        +  "y",
        +  "width",
        +  "height"
        +]
    • Changedcreate_polygon12 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / fillColor
        Added value: +{
        +  "description": "Fill color in RGBA format",
        +  "properties": {
        +    "a": {
        +      "description": "Alpha component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "b": {
        +      "description": "Blue component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "g": {
        +      "description": "Green component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "r": {
        +      "description": "Red component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "r",
        +    "g",
        +    "b"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / height
        Added value: +{
        +  "description": "Height of the polygon",
        +  "type": "number"
        +}
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "Optional name for the polygon",
        +  "type": "string"
        +}
      • addedInput schema / properties / parentId
        Added value: +{
        +  "description": "Optional parent node ID to append the polygon to",
        +  "type": "string"
        +}
      • addedInput schema / properties / sides
        Added value: +{
        +  "description": "Number of sides (default: 6)",
        +  "minimum": 3,
        +  "type": "number"
        +}
      • addedInput schema / properties / strokeColor
        Added value: +{
        +  "description": "Stroke color in RGBA format",
        +  "properties": {
        +    "a": {
        +      "description": "Alpha component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "b": {
        +      "description": "Blue component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "g": {
        +      "description": "Green component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "r": {
        +      "description": "Red component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "r",
        +    "g",
        +    "b"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / strokeWeight
        Added value: +{
        +  "description": "Stroke weight",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / width
        Added value: +{
        +  "description": "Width of the polygon",
        +  "type": "number"
        +}
      • addedInput schema / properties / x
        Added value: +{
        +  "description": "X position",
        +  "type": "number"
        +}
      • addedInput schema / properties / y
        Added value: +{
        +  "description": "Y position",
        +  "type": "number"
        +}
      • addedInput schema / required
        Added value: +[
        +  "x",
        +  "y",
        +  "width",
        +  "height"
        +]
    • Changedcreate_rectangle8 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / height
        Added value: +{
        +  "description": "Height of the rectangle",
        +  "type": "number"
        +}
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "Optional name for the rectangle",
        +  "type": "string"
        +}
      • addedInput schema / properties / parentId
        Added value: +{
        +  "description": "Optional parent node ID to append the rectangle to",
        +  "type": "string"
        +}
      • addedInput schema / properties / width
        Added value: +{
        +  "description": "Width of the rectangle",
        +  "type": "number"
        +}
      • addedInput schema / properties / x
        Added value: +{
        +  "description": "X position",
        +  "type": "number"
        +}
      • addedInput schema / properties / y
        Added value: +{
        +  "description": "Y position",
        +  "type": "number"
        +}
      • addedInput schema / required
        Added value: +[
        +  "x",
        +  "y",
        +  "width",
        +  "height"
        +]
    • Changedcreate_star13 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / fillColor
        Added value: +{
        +  "description": "Fill color in RGBA format",
        +  "properties": {
        +    "a": {
        +      "description": "Alpha component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "b": {
        +      "description": "Blue component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "g": {
        +      "description": "Green component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "r": {
        +      "description": "Red component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "r",
        +    "g",
        +    "b"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / height
        Added value: +{
        +  "description": "Height of the star",
        +  "type": "number"
        +}
      • addedInput schema / properties / innerRadius
        Added value: +{
        +  "description": "Inner radius ratio (0.01-0.99, default: 0.5)",
        +  "maximum": 0.99,
        +  "minimum": 0.01,
        +  "type": "number"
        +}
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "Optional name for the star",
        +  "type": "string"
        +}
      • addedInput schema / properties / parentId
        Added value: +{
        +  "description": "Optional parent node ID to append the star to",
        +  "type": "string"
        +}
      • addedInput schema / properties / points
        Added value: +{
        +  "description": "Number of points (default: 5)",
        +  "minimum": 3,
        +  "type": "number"
        +}
      • addedInput schema / properties / strokeColor
        Added value: +{
        +  "description": "Stroke color in RGBA format",
        +  "properties": {
        +    "a": {
        +      "description": "Alpha component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "b": {
        +      "description": "Blue component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "g": {
        +      "description": "Green component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "r": {
        +      "description": "Red component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "r",
        +    "g",
        +    "b"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / strokeWeight
        Added value: +{
        +  "description": "Stroke weight",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / width
        Added value: +{
        +  "description": "Width of the star",
        +  "type": "number"
        +}
      • addedInput schema / properties / x
        Added value: +{
        +  "description": "X position",
        +  "type": "number"
        +}
      • addedInput schema / properties / y
        Added value: +{
        +  "description": "Y position",
        +  "type": "number"
        +}
      • addedInput schema / required
        Added value: +[
        +  "x",
        +  "y",
        +  "width",
        +  "height"
        +]
    • Changedcreate_text10 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / fontColor
        Added value: +{
        +  "description": "Font color in RGBA format",
        +  "properties": {
        +    "a": {
        +      "description": "Alpha component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "b": {
        +      "description": "Blue component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "g": {
        +      "description": "Green component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "r": {
        +      "description": "Red component (0-1)",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "r",
        +    "g",
        +    "b"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / fontSize
        Added value: +{
        +  "description": "Font size (default: 14)",
        +  "type": "number"
        +}
      • addedInput schema / properties / fontWeight
        Added value: +{
        +  "description": "Font weight (e.g., 400 for Regular, 700 for Bold)",
        +  "type": "number"
        +}
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "Optional name for the text node by default following text",
        +  "type": "string"
        +}
      • addedInput schema / properties / parentId
        Added value: +{
        +  "description": "Optional parent node ID to append the text to",
        +  "type": "string"
        +}
      • addedInput schema / properties / text
        Added value: +{
        +  "description": "Text content",
        +  "type": "string"
        +}
      • addedInput schema / properties / x
        Added value: +{
        +  "description": "X position",
        +  "type": "number"
        +}
      • addedInput schema / properties / y
        Added value: +{
        +  "description": "Y position",
        +  "type": "number"
        +}
      • addedInput schema / required
        Added value: +[
        +  "x",
        +  "y",
        +  "text"
        +]
    • Changeddelete_node3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the node to delete",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId"
        +]
    • Changedexport_node_as_image5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "Export format",
        +  "enum": [
        +    "PNG",
        +    "JPG",
        +    "SVG",
        +    "PDF"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the node to export",
        +  "type": "string"
        +}
      • addedInput schema / properties / scale
        Added value: +{
        +  "description": "Export scale",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId"
        +]
    • Changedflatten_node3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "ID of the node to flatten",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId"
        +]
    • Changedget_document_info1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_local_components1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_node_info3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the node to get information about",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId"
        +]
    • Changedget_nodes_info3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / nodeIds
        Added value: +{
        +  "description": "Array of node IDs to get information about",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeIds"
        +]
    • Changedget_remote_components1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_selection1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_styled_text_segments4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the text node to analyze",
        +  "type": "string"
        +}
      • addedInput schema / properties / property
        Added value: +{
        +  "description": "The style property to analyze segments by",
        +  "enum": [
        +    "fillStyleId",
        +    "fontName",
        +    "fontSize",
        +    "textCase",
        +    "textDecoration",
        +    "textStyleId",
        +    "fills",
        +    "letterSpacing",
        +    "lineHeight",
        +    "fontWeight"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "property"
        +]
    • Changedget_styles1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedgroup_nodes4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "Optional name for the group",
        +  "type": "string"
        +}
      • addedInput schema / properties / nodeIds
        Added value: +{
        +  "description": "Array of IDs of the nodes to group",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeIds"
        +]
    • Changedinsert_child5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / childId
        Added value: +{
        +  "description": "ID of the child node to insert",
        +  "type": "string"
        +}
      • addedInput schema / properties / index
        Added value: +{
        +  "description": "Optional index where to insert the child (if not specified, it will be added at the end)",
        +  "type": "number"
        +}
      • addedInput schema / properties / parentId
        Added value: +{
        +  "description": "ID of the parent node where the child will be inserted",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "parentId",
        +  "childId"
        +]
    • Changedjoin_channel2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / channel
        Added value: +{
        +  "default": "",
        +  "description": "The name of the channel to join",
        +  "type": "string"
        +}
    • Changedload_font_async4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / family
        Added value: +{
        +  "description": "Font family name",
        +  "type": "string"
        +}
      • addedInput schema / properties / style
        Added value: +{
        +  "description": "Font style (e.g., 'Regular', 'Bold', 'Italic')",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "family"
        +]
    • Changedmove_node5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the node to move",
        +  "type": "string"
        +}
      • addedInput schema / properties / x
        Added value: +{
        +  "description": "New X position",
        +  "type": "number"
        +}
      • addedInput schema / properties / y
        Added value: +{
        +  "description": "New Y position",
        +  "type": "number"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "x",
        +  "y"
        +]
    • Changedresize_node5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / height
        Added value: +{
        +  "description": "New height",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the node to resize",
        +  "type": "string"
        +}
      • addedInput schema / properties / width
        Added value: +{
        +  "description": "New width",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "width",
        +  "height"
        +]
    • Changedscan_text_nodes3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "ID of the node to scan",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId"
        +]
    • Changedset_auto_layout13 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / counterAxisAlignItems
        Added value: +{
        +  "description": "Alignment along counter axis",
        +  "enum": [
        +    "MIN",
        +    "CENTER",
        +    "MAX"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / itemSpacing
        Added value: +{
        +  "description": "Spacing between items in pixels",
        +  "type": "number"
        +}
      • addedInput schema / properties / layoutMode
        Added value: +{
        +  "description": "Layout direction",
        +  "enum": [
        +    "HORIZONTAL",
        +    "VERTICAL",
        +    "NONE"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / layoutWrap
        Added value: +{
        +  "description": "Whether items wrap to new lines",
        +  "enum": [
        +    "WRAP",
        +    "NO_WRAP"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the node to configure auto layout",
        +  "type": "string"
        +}
      • addedInput schema / properties / paddingBottom
        Added value: +{
        +  "description": "Bottom padding in pixels",
        +  "type": "number"
        +}
      • addedInput schema / properties / paddingLeft
        Added value: +{
        +  "description": "Left padding in pixels",
        +  "type": "number"
        +}
      • addedInput schema / properties / paddingRight
        Added value: +{
        +  "description": "Right padding in pixels",
        +  "type": "number"
        +}
      • addedInput schema / properties / paddingTop
        Added value: +{
        +  "description": "Top padding in pixels",
        +  "type": "number"
        +}
      • addedInput schema / properties / primaryAxisAlignItems
        Added value: +{
        +  "description": "Alignment along primary axis",
        +  "enum": [
        +    "MIN",
        +    "CENTER",
        +    "MAX",
        +    "SPACE_BETWEEN"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / strokesIncludedInLayout
        Added value: +{
        +  "description": "Whether strokes are included in layout calculations",
        +  "type": "boolean"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "layoutMode"
        +]
    • Changedset_corner_radius5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / corners
        Added value: +{
        +  "description": "Optional array of 4 booleans to specify which corners to round [topLeft, topRight, bottomRight, bottomLeft]",
        +  "items": {
        +    "type": "boolean"
        +  },
        +  "maxItems": 4,
        +  "minItems": 4,
        +  "type": "array"
        +}
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the node to modify",
        +  "type": "string"
        +}
      • addedInput schema / properties / radius
        Added value: +{
        +  "description": "Corner radius value",
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "radius"
        +]
    • Changedset_effect_style_id4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / effectStyleId
        Added value: +{
        +  "description": "The ID of the effect style to apply",
        +  "type": "string"
        +}
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the node to modify",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "effectStyleId"
        +]
    • Changedset_effects4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / effects
        Added value: +{
        +  "description": "Array of effects to apply",
        +  "items": {
        +    "properties": {
        +      "blendMode": {
        +        "description": "Blend mode",
        +        "type": "string"
        +      },
        +      "color": {
        +        "description": "Effect color (for shadows)",
        +        "properties": {
        +          "a": {
        +            "description": "Alpha (0-1)",
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "b": {
        +            "description": "Blue (0-1)",
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "g": {
        +            "description": "Green (0-1)",
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "r": {
        +            "description": "Red (0-1)",
        +            "maximum": 1,
        +            "minimum": 0,
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "r",
        +          "g",
        +          "b",
        +          "a"
        +        ],
        +        "type": "object"
        +      },
        +      "offset": {
        +        "description": "Offset (for shadows)",
        +        "properties": {
        +          "x": {
        +            "description": "X offset",
        +            "type": "number"
        +          },
        +          "y": {
        +            "description": "Y offset",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "x",
        +          "y"
        +        ],
        +        "type": "object"
        +      },
        +      "radius": {
        +        "description": "Effect radius",
        +        "type": "number"
        +      },
        +      "spread": {
        +        "description": "Shadow spread (for shadows)",
        +        "type": "number"
        +      },
        +      "type": {
        +        "description": "Effect type",
        +        "enum": [
        +          "DROP_SHADOW",
        +          "INNER_SHADOW",
        +          "LAYER_BLUR",
        +          "BACKGROUND_BLUR"
        +        ],
        +        "type": "string"
        +      },
        +      "visible": {
        +        "description": "Whether the effect is visible",
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "type"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the node to modify",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "effects"
        +]
    • Changedset_fill_color7 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / a
        Added value: +{
        +  "description": "Alpha component (0-1, defaults to 1 if not specified)",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / b
        Added value: +{
        +  "description": "Blue component (0-1)",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / g
        Added value: +{
        +  "description": "Green component (0-1)",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the node to modify",
        +  "type": "string"
        +}
      • addedInput schema / properties / r
        Added value: +{
        +  "description": "Red component (0-1)",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "r",
        +  "g",
        +  "b"
        +]
    • Changedset_font_name5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / family
        Added value: +{
        +  "description": "Font family name",
        +  "type": "string"
        +}
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the text node to modify",
        +  "type": "string"
        +}
      • addedInput schema / properties / style
        Added value: +{
        +  "description": "Font style (e.g., 'Regular', 'Bold', 'Italic')",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "family"
        +]
    • Changedset_font_size4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / fontSize
        Added value: +{
        +  "description": "Font size in pixels",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the text node to modify",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "fontSize"
        +]
    • Changedset_font_weight4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the text node to modify",
        +  "type": "string"
        +}
      • addedInput schema / properties / weight
        Added value: +{
        +  "description": "Font weight (100, 200, 300, 400, 500, 600, 700, 800, 900)",
        +  "type": "number"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "weight"
        +]
    • Changedset_letter_spacing5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / letterSpacing
        Added value: +{
        +  "description": "Letter spacing value",
        +  "type": "number"
        +}
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the text node to modify",
        +  "type": "string"
        +}
      • addedInput schema / properties / unit
        Added value: +{
        +  "description": "Unit type (PIXELS or PERCENT)",
        +  "enum": [
        +    "PIXELS",
        +    "PERCENT"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "letterSpacing"
        +]
    • Changedset_line_height5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / lineHeight
        Added value: +{
        +  "description": "Line height value",
        +  "type": "number"
        +}
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the text node to modify",
        +  "type": "string"
        +}
      • addedInput schema / properties / unit
        Added value: +{
        +  "description": "Unit type (PIXELS, PERCENT, or AUTO)",
        +  "enum": [
        +    "PIXELS",
        +    "PERCENT",
        +    "AUTO"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "lineHeight"
        +]
    • Changedset_multiple_text_contents4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the node containing the text nodes to replace",
        +  "type": "string"
        +}
      • addedInput schema / properties / text
        Added value: +{
        +  "description": "Array of text node IDs and their replacement texts",
        +  "items": {
        +    "properties": {
        +      "nodeId": {
        +        "description": "The ID of the text node",
        +        "type": "string"
        +      },
        +      "text": {
        +        "description": "The replacement text",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "nodeId",
        +      "text"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "text"
        +]
    • Changedset_paragraph_spacing4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the text node to modify",
        +  "type": "string"
        +}
      • addedInput schema / properties / paragraphSpacing
        Added value: +{
        +  "description": "Paragraph spacing value in pixels",
        +  "type": "number"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "paragraphSpacing"
        +]
    • Changedset_stroke_color8 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / a
        Added value: +{
        +  "description": "Alpha component (0-1)",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / b
        Added value: +{
        +  "description": "Blue component (0-1)",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / g
        Added value: +{
        +  "description": "Green component (0-1)",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the node to modify",
        +  "type": "string"
        +}
      • addedInput schema / properties / r
        Added value: +{
        +  "description": "Red component (0-1)",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / strokeWeight
        Added value: +{
        +  "description": "Stroke weight >= 0)",
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "r",
        +  "g",
        +  "b"
        +]
    • Changedset_text_case4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the text node to modify",
        +  "type": "string"
        +}
      • addedInput schema / properties / textCase
        Added value: +{
        +  "description": "Text case type",
        +  "enum": [
        +    "ORIGINAL",
        +    "UPPER",
        +    "LOWER",
        +    "TITLE"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "textCase"
        +]
    • Changedset_text_content4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the text node to modify",
        +  "type": "string"
        +}
      • addedInput schema / properties / text
        Added value: +{
        +  "description": "New text content",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "text"
        +]
    • Changedset_text_decoration4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "The ID of the text node to modify",
        +  "type": "string"
        +}
      • addedInput schema / properties / textDecoration
        Added value: +{
        +  "description": "Text decoration type",
        +  "enum": [
        +    "NONE",
        +    "UNDERLINE",
        +    "STRIKETHROUGH"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId",
        +  "textDecoration"
        +]
    • Changedungroup_nodes3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / nodeId
        Added value: +{
        +  "description": "ID of the node (group or frame) to ungroup",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "nodeId"
        +]
  6. 43 tool updates
    • First observedclone_node
    • First observedcreate_component_instance
    • First observedcreate_ellipse
    • First observedcreate_frame
    • First observedcreate_polygon
    • First observedcreate_rectangle
    • First observedcreate_star
    • First observedcreate_text
    • First observeddelete_node
    • First observedexport_node_as_image
    • First observedflatten_node
    • First observedget_document_info
    • First observedget_local_components
    • First observedget_node_info
    • First observedget_nodes_info
    • First observedget_remote_components
    • First observedget_selection
    • First observedget_styled_text_segments
    • First observedget_styles
    • First observedgroup_nodes
    • First observedinsert_child
    • First observedjoin_channel
    • First observedload_font_async
    • First observedmove_node
    • First observedresize_node
    • First observedscan_text_nodes
    • First observedset_auto_layout
    • First observedset_corner_radius
    • First observedset_effect_style_id
    • First observedset_effects
    • First observedset_fill_color
    • First observedset_font_name
    • First observedset_font_size
    • First observedset_font_weight
    • First observedset_letter_spacing
    • First observedset_line_height
    • First observedset_multiple_text_contents
    • First observedset_paragraph_spacing
    • First observedset_stroke_color
    • First observedset_text_case
    • First observedset_text_content
    • First observedset_text_decoration
    • First observedungroup_nodes

TDQS

C2.8/5.0

Scored across 92 tools

Disambiguation2/5

Many tools have overlapping purposes, such as set_image, set_image_fill, replace_image_fill, and set_image_filters. Similarly, set_text_content and set_multiple_text_contents are redundant. The large number of similar setters (set_fill_color, set_stroke_color, etc.) makes it difficult for an agent to distinguish between them without careful reading.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (e.g., create_rectangle, set_font_size, get_pages). A few outliers like boolean_operation (noun style) and set_multiple_text_contents (longer phrase) exist, but the overall naming is predictable and clear.

Tool Count1/5

With 92 tools, the server is significantly over-scoped. This large number leads to redundancy and cognitive overload. Most MCP servers with good coherence have 3-15 tools; 92 is an extreme mismatch for the apparent domain.

Completeness3/5

The tool set covers a wide range of Figma operations including creation, reading, updating, and deleting nodes and pages, as well as styles, variables, and FigJam elements. However, there are notable gaps: no tools to delete or update styles, no tool to delete variables, and no global search for nodes. The coverage is broad but not fully complete.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude to interact directly with Figma Desktop for creating UI components, managing design tokens, and auditing files through natural language. It establishes a live connection between the AI and the Figma API via a local server and companion plugin.
    15,625 npm
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables Claude AI to extract design information from Figma files and create or update designs via a Figma plugin, supporting both readonly and write modes.
    9
    36
    -
  • A
    license
    B
    quality
    B
    maintenance
    Enables Claude to connect to Figma without a paid plan, offering auto-connect and 100+ tools for document manipulation, design system sync, and code-to-Figma conversion.
    100
    68 npm
    1
    MIT