Skip to main content
Glama
arinspunk

Claude Talk to Figma MCP

by arinspunk

Claude Talk to Figma 拼贴图

Claude AI 智能体 Talk to Figma MCP

让你的 AI 智能体能够读取、分析和修改 Figma 设计。

适用于你最喜爱的智能体工具:

👩🏽💻 适用人群

UX/UI 团队

无需手动操作,即可自动化重复的设计任务并保持品牌一致性:

  • 自动化无障碍审计 - 在几秒钟内检测并修复对比度问题

  • 批量样式更新 - 通过单个命令更改整个文档的颜色、排版或间距

  • 视觉层级分析 - 获得关于设计结构的即时反馈

开发人员

直接从设计生成生产就绪的代码:

  • React/Vue/SwiftUI 组件 - 一步从设计到代码

  • 使用设计令牌 (Design Tokens) 编写代码 - 保持设计与开发同步

  • 减少交付摩擦 - 减少与设计团队之间的反复迭代

核心优势:与需要 Dev Mode 许可证的 Figma 官方 MCP 不同,此 MCP 适用于任何 Figma 账户(甚至是免费账户)。

Related MCP server: Figma Console MCP Server

💡 实际应用场景

无障碍设计:

"查找所有对比度 <4.5:1 的文本,并建议符合 WCAG AA 标准的颜色"

品牌重塑:

"将文档中所有主按钮的 #FF6B6B 更改为 #E63946"

设计分析:

"分析此屏幕的视觉层级,并根据设计原则提出改进建议"

开发交付:

"为 'CardProduct' 生成 React 组件,包括 PropTypes 和 CSS 模块样式"

⚡️ 快速安装

设置: 5 分钟 | 首次自动化: 2 分钟

要求

第 1 步:安装并启动 websocket

使智能体能够向 Figma 发送命令。

打开终端,导航到要安装该工具的文件夹,然后运行:

npx claude-talk-to-figma-mcp

💡 提示:此命令是“一体化”的(克隆、安装并启动)。在后续会话中,如果你已经在项目文件夹 your-project/claude-talk-to-figma-mcp 中,只需运行 bun run socket 即可。

第 2 步:在 Figma 中安装插件

使 Figma 能够接收来自智能体的命令并返回响应。

在 Figma Desktop 中,转到 Menu → Plugins → Development → Import plugin from manifest → 在你安装 MCP 的文件夹内,选择 src/claude_mcp_plugin/manifest.json

第 3 步:配置你的智能体工具

使智能体能够使用 MCP 的读取和修改工具。

Claude Desktop

下载 claude-talk-to-figma-mcp.dxt(从最新版本的 Assets 部分下载)并双击。Claude 会自动完成配置。

Cursor

  1. 打开 Cursor Settings → Tools & Integrations

  2. 点击 "New MCP Server" 以打开 mcp.json 文件

  3. 添加此配置:

{
  "mcpServers": {
    "ClaudeTalkToFigma": {
      "command": "npx",
      "args": ["-p", "claude-talk-to-figma-mcp@latest", "claude-talk-to-figma-mcp-server"]
    }
  }
}
  1. 保存文件并重启 Cursor

其他智能体工具

对于其他工具(Claude Code、Windsurf、VS Code + GitHub Copilot、Cline、Roo Code),你可以按照详细安装指南的“配置你的智能体工具”章节中的说明进行操作。

第 4 步:开始工作

  1. 在 Figma 中打开插件

  2. 复制频道 ID(绿色框内的粗体代码)

  3. 在聊天中输入:Connect to Figma, channel {your-ID}

✅ 准备好使用 AI 进行设计了!

后续工作会话

要在日常工作中再次使用 MCP,无需重复整个过程:

  1. 启动 socket:在终端中,进入项目文件夹 your-project/claude-talk-to-figma-mcp 并运行 bun run socket(或 npm run socket)。

  2. 在 Figma 中打开插件:你可以在最近使用的插件列表中找到它。

  3. 连接 AI:复制频道 ID 并告诉你的智能体:Connect to Figma, channel {your-ID}

🤖 多智能体与并行执行

此 MCP 服务器开箱即用地支持 安全并行执行,允许多个 AI 智能体(例如 Claude Code 的子智能体或团队集群)同时在你的 Figma 文件上工作,而不会锁定插件。内置的命令队列会在服务器端按顺序处理请求,防止 Figma API 超时。

注意:由于多个智能体可以同时修改文档,依赖隐式页面上下文是不安全的。因此,像 set_current_page 这样的有状态命令被 阻止 了。所有智能体在执行任何创建或结构修改命令(例如 create_framecreate_text)时,必须明确提供预期的 parentId 参数。

(特别感谢 @mmabas77 设计并贡献了此功能!)

🐳 替代方案:使用 Docker

如果你更喜欢 Docker 或需要在团队环境中运行 WebSocket 服务器,请参阅详细安装文档中的 Docker 安装指南

🛠️ 功能

设计分析

  • 获取文档信息、当前选区、样式

  • 扫描文本、审计组件、导出资源

元素创建

  • 具有完全样式控制的形状、文本、框架

  • 克隆、编组、组织元素

修改

  • 颜色、边框、圆角、阴影

  • 自动布局、高级排版

  • 本地组件和团队库组件

查看 完整命令列表

📚 文档

🙏 致谢

基于 Sonny Lazuardi 的 cursor-talk-to-figma-mcp。由 Xúlio Zé 适配至 Claude Desktop 并扩展了新工具。

如果你想了解所有项目贡献,可以访问 贡献指南的“贡献者”章节

MIT 许可证


📊 项目状态

稳定生产 - 工具已准备好在设计和开发团队中日常使用

🚀 积极开发中:

  • 对 Figma 变量的全面支持

  • 增强导出至 Tailwind CSS/SwiftUI 的功能

有特定需求?

在 GitHub Issues 上提出新建议

你的反馈和贡献让项目保持活力。❤️

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.8/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 states the action 'bind' but does not disclose potential side effects, required permissions, error conditions, or whether repeated calls overwrite or stack. The description 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?

Two succinct sentences with no unnecessary words. The instruction about multiple calls is front-loaded. Every sentence serves a 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 tool with three parameters and no output schema, the description adequately explains the usage pattern and the need for multiple calls. However, it lacks information about return values or error handling, which would be helpful.

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% coverage with descriptions for all three parameters. The description adds the context of calling once per field but does not enhance parameter meaning beyond the schema. 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 tool's action ('Bind a variable to a node property') and resource ('node property in Figma'). It distinguishes from sibling tools like 'set_variable' and 'switch_variable_mode' by focusing on binding variables to node properties.

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

Usage Guidelines4/5

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

Provides explicit guidance: 'Call once per field — for multiple fields, call multiple times.' This tells the agent how to use the tool for multiple bindings, but does not mention when not to use it or suggest alternatives.

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

boolean_operationA

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

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 must disclose behavioral traits. It mentions the operation and constraint but does not indicate whether the operation is destructive, reversible, or what side effects occur (e.g., original nodes are replaced). The schema's note about order mattering for SUBTRACT is in the parameter description, not the main description.

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 sentences that convey the core purpose and a key constraint without any superfluous 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 no output schema or annotations, the description is minimally adequate but lacks information about return values or side effects. It does not explain what happens to the input nodes or what the tool returns, which could leave an agent uncertain about the operation's outcome.

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 having a clear description. The main description does not add any additional 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 it performs boolean operations (union, subtract, intersect, exclude) on nodes, which distinguishes it from other node manipulation tools like group_nodes or flatten_node. It specifies the key constraint that all nodes must share the 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 Guidelines3/5

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

The description provides a prerequisite (same parent) but does not explicitly state when to use this tool versus alternatives like group_nodes or flatten_node. No when-not-to-use or alternative recommendations are given.

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/5.0
Behavior3/5

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

Without annotations, the description tells that position, size, visual properties, and children are preserved. This is helpful but does not cover potential side effects (e.g., breaking references) or prerequisites beyond the node type mentioned.

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-loaded with the essential action, and contains no redundant information. 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 tool with one parameter and no output schema, the description covers what it does, what is preserved, and its purpose. It lacks mention of return value or error conditions, but these are minor omissions.

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 has 100% coverage with a description for the single parameter. The tool description adds no further meaning to 'nodeId' 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 ('Convert'), the resource ('group or shape node'), and the result ('into a frame'). It specifies the converted object's properties are preserved and mentions auto-layout capability, distinguishing it from sibling tools like create_frame or group_nodes.

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 says it's 'useful for converting groups into auto-layout-capable frames', providing clear context for when to use. However, it does not state when not to use or mention alternatives, though siblings exist.

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_pageA

Create a new page in the current Figma document

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the new page

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 must fully disclose behavioral traits. It indicates creation (a mutation) but does not mention side effects such as whether the new page becomes the current page, permission requirements, or any other behavioral context beyond the creation itself.

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 unnecessary words. Every element earns its place, making it highly efficient.

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

Completeness4/5

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

Given the simplicity of the tool (one required parameter, no output schema, no nested objects), the description is largely complete. However, it could be improved by mentioning whether the page is automatically set as the current page or any success indicator, but overall it covers the essential purpose.

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% as the only parameter 'name' is described in the schema. The description does not add any additional meaning beyond the schema; it merely states the action without elaborating on parameter constraints or formatting. Baseline score of 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 action 'Create' and the resource 'a new page' within 'the current Figma document'. It meaningfully distinguishes the tool from its siblings like delete_page, rename_page, and duplicate_page by specifying the creation verb.

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 a new page is needed in the current document, but it provides no explicit guidance on when to use this tool versus alternatives, nor any 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_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_nodeB

Delete a node from Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesThe ID of the node to delete

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 only says 'Delete a node'. It lacks critical behavioral details such as whether deletion is permanent, irreversible, affects children, or requires specific permissions. For a destructive operation, 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?

The description is a single sentence with no unnecessary words. It is front-loaded and concise.

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 simplicity (one param, no output schema), the description is minimal but still incomplete. It does not mention return values, success indicators, or confirm irreversible actions. More context would be beneficial.

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 one parameter with a clear description. Schema coverage is 100%, so baseline is 3. The description does not add extra meaning beyond what the schema 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 'Delete' and the resource 'node'. It distinguishes from sibling tools like 'clone_node' or 'move_node' by specifying the deletion operation.

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, no prerequisites (e.g., node existence), and no mention of when not to use it. The agent is left without context for appropriate invocation.

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.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. It only states the destructive action without disclosing potential side effects, permissions, or irreversibility.

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 single sentence is concise and front-loaded, with no extraneous information.

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

Completeness4/5

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

For a simple delete tool with one parameter and no output schema, the description adequately covers the action and scope ('current Figma document'). Slightly more detail about irreversibility could add value.

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 already describes 'pageId' as 'ID of the page to delete'. The description adds no extra meaning beyond the schema, so 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 uses a specific verb 'Delete' and resource 'page' from the 'current Figma document', clearly distinguishing it from siblings like create_page, rename_page, and duplicate_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) or when not to use it. There is no mention of prerequisites or context.

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.5/5.0
Behavior3/5

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

With no annotations, description carries full burden. It states 'duplicate' and 'complete copy' but does not disclose default naming behavior (schema covers it), placement of duplicate, or any side effects. Adequate but could be more 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?

Single sentence with clear verb and object. No fluff, front-loaded with action. Every word earns its place.

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 params and no output schema, description covers main purpose but omits placement of duplicated page and potential error conditions. Adequate for basic use 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?

Schema description coverage is 100%: pageId and name are fully described. The description adds no further parameter meaning beyond the schema, 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?

Description clearly states the action 'Duplicate an existing page' and the scope 'in the Figma document', with effect 'creating a complete copy of all its contents'. It distinguishes from sibling tools like create_page (new blank) 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 vs. alternatives like create_page, and no prerequisites mentioned (e.g., page must exist). Does not state that the duplicate is placed after the original or any conflict resolution.

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.9/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 fails to mention crucial details such as required permissions (read/write), the format of the returned image (e.g., base64 data, URL), size limits, or what happens if the node ID is invalid. The description is too minimal to ensure safe and correct usage.

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 concise and to the point. It contains no extraneous information and is immediately understandable. It is ideally sized for quick comprehension.

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, the description is incomplete. It does not mention the return value (image data or URL), error handling, or how it differs from similar tools like 'get_image_from_node'. This lack of completeness could lead to incorrect expectations.

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. It does not clarify the exact meaning of 'scale' (e.g., 2x for retina) or the implications of each format. Thus, it meets the baseline but does not enhance 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 exports a node as an image from Figma. It specifies the verb 'export' and the resource 'node', making the purpose obvious. However, it does not explicitly differentiate from similar sibling tools like 'get_image_from_node' or 'get_svg', so it loses a point for not distinguishing itself.

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. It does not mention prerequisites, typical scenarios, or conditions under which other tools should be used instead. This lack of usage context leaves the agent uninformed about proper selection.

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

flatten_nodeA

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesID of the node to flatten

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 must fully disclose behavior. It only states the action without detailing side effects (e.g., irreversibility, destruction of vector data) or what happens to the node after flattening.

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 extraneous information. Every word serves a purpose, making it easy to parse quickly.

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 one parameter and no output schema, the description provides adequate purpose and use-case examples. However, it lacks behavioral information that would fully inform an agent about the consequences of the action.

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 description adds no additional meaning beyond the schema's documentation. The parameter 'nodeId' is already clear from 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?

Description clearly states the action (flatten) and resource (node), with specific examples of use cases like boolean operations or converting to path. This distinguishes it from sibling tools such as boolean_operation or clone_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 suggests usage contexts via examples but does not explicitly state when to use this tool versus 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.

get_annotationB

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

B3.1/5.0
Behavior2/5

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

Without annotations, the description must carry the full burden. It mentions using the 'proposed Annotations API', which hints at experimental status, but does not disclose read-only nature (implied), permissions needed, or any side effects. Further behavioral details are 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?

Two sentences, each adding value: the first states the core purpose, the second adds important context about the API status. No extraneous 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 read tool with one parameter, the description covers the basic purpose. However, it lacks information about the return value (what format the annotations come in) and any pagination or limitations, making it minimally 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 one parameter (nodeId) described. The description adds no further meaning beyond what the schema already provides, 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.

Purpose4/5

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

The description clearly states the verb 'read' and the resource 'annotations from a node', providing a specific action and target. It distinguishes from the sibling 'set_annotation' implicitly through the verb, but does not explicitly differentiate, which would warrant a 5.

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_annotation'. There is no mention of prerequisites, context, or typical use cases, 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.

get_document_infoA

Get detailed information about the current Figma document

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description must shoulder the burden. It states 'detailed information' without specifying what fields or behaviors (e.g., read-only, no side effects). For a zero-parameter tool, more detail on the return value would improve 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?

Single sentence, directly states purpose with no extraneous words. Perfectly 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?

For a tool with no parameters or annotations, the description is minimal. It doesn't explain what 'detailed information' includes or guarantee any behavioral context (e.g., that it's safe to call). More context would be beneficial.

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?

Input schema has no parameters and 100% coverage, so the description needs no param details. 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 uses a specific verb ('Get') and resource ('detailed information about the current Figma document'), clearly distinguishing it from sibling tools like get_node_info (specific node) or get_pages (list pages).

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 implies use when needing document-level info, and sibling tool names provide context for alternatives. However, it lacks explicit 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.

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/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden. It states 'read the contents,' implying read-only behavior without side effects, but does not disclose potential performance implications, size limits, or default behavior if the page has no FigJam elements. The description adds minimal behavioral context beyond the obvious read operation.

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

Conciseness5/5

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

Two sentences, no redundancy, front-loaded with the action and supported elements. Every word 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?

Given no output schema exists, the description should explain the return value structure. It only says 'Get all FigJam-specific elements' without describing the format (e.g., array of objects with type, content, position). This is a significant gap for a tool with no parameters and no output schema, as the agent needs to know what shape the response takes.

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 description coverage is effectively 100%. With zero parameters, the baseline is 4, and the description adds no additional meaning needed since none is required.

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 retrieves all FigJam-specific elements (stickies, connectors, shapes with text, sections, stamps) on the current page, using the verb 'get' and specifying the resource. It explicitly says 'Use this to read the contents of a FigJam board,' making the purpose unambiguous and distinct from siblings like get_node_info or create_sticky.

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?

Description provides a clear context for use ('to read the contents of a FigJam board'), implying this is the right tool for that specific task. While no explicit alternatives or when-not-to-use guidance is given, the context is strong enough to differentiate it from sibling tools that read other aspects or create elements.

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.6/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 side effects, permissions, or that the operation is non-destructive. It only says 'read', which hints at safety but lacks explicit 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 concise sentence that directly states the tool's purpose with no redundant words, achieving high 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?

The tool has no output schema, and the description does not explain what is returned (e.g., format of grids). It also omits contextual details like node type requirements. This leaves the agent uninformed about the output and usage constraints.

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 already describes the single parameter 'nodeId' with 100% coverage, so the description adds no additional meaning beyond 'nodeId'. It meets the baseline but does not enhance parameter understanding.

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

Purpose5/5

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

The description clearly states 'Read layout grids from a frame node in Figma' with a specific verb and resource, and it effectively distinguishes from the sibling tool 'set_grid', which performs the opposite operation.

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 implies that this tool is for reading grid data as opposed to setting it, but it does not explicitly mention when to use it versus alternatives or any prerequisites like the node being a frame.

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

get_guideB

Read guides from a page in Figma

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

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 does not disclose behavioral traits such as whether the tool is read-only, non-destructive, or requires authentication. It essentially repeats the tool name's implication.

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 concise and front-loaded, stating the purpose in a single phrase. It is not verbose but could be structured as a proper sentence.

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, the description should explain the return value or behavior. It omits what the result looks like (e.g., list of guides, their properties), making it incomplete for an agent to fully understand the tool's output.

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 for its single parameter, with a clear description. The tool description adds no extra meaning 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 (read) and the resource (guides from a page in Figma). It is specific and differentiates from sibling tools like 'set_guide' and 'get_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. The description does not mention any prerequisites, conditions, or typical use cases.

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.1/5.0
Behavior2/5

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

No annotations provided. Description lacks behavioral details such as whether the tool is read-only, what happens if node has no image, or any side effects. Minimal disclosure.

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, no wasted words. However, 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?

Given no output schema and no annotations, the description is too brief. It doesn't explain what 'image metadata' includes, or handle edge cases like missing image.

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 one parameter, so baseline is 3. Description adds no extra meaning beyond what the schema already states ('The ID of the node to get image from').

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 clear resource 'image metadata from a node', distinguishing it from siblings like 'get_node_info' and 'export_node_as_image'.

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. Sibling list includes many similar tools, but description offers no context on appropriate usage scenarios.

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.5/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 for behavioral disclosure. It only states the function without details on what 'local components' entails, any side effects, or output characteristics.

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 front-loaded and contains no superfluous information. Every word earns its place.

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 (no parameters, no output schema), the description provides basic completeness. However, it lacks context on what the result contains or how it relates to other getter tools.

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 no parameters and schema coverage is 100%. Per guidelines, baseline is 4. The description adds no parameter info, but none is needed.

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 action ('Get') and the resource ('all local components') within the context of a Figma document. It clearly distinguishes from sibling tools like get_remote_components.

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., get_remote_components). The description lacks context on the tool's scope or prerequisites.

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_pagesB

Get all pages in 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, and the description lacks details about return format, pagination, or side effects. For a read operation, it does not confirm whether it mutates state or requires auth, leaving the agent uncertain.

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. It efficiently communicates the core purpose without redundancy.

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 the tool's simplicity, the description should specify what 'pages' means (IDs, names, objects) or any prerequisites like a document must be loaded. It is insufficiently informative.

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?

There are no parameters, so the schema fully covers parameter information. The description adds no extra meaning beyond what the schema already provides, 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 action ('Get all pages') and the resource ('in the current Figma document'). It is specific and distinguishes this tool from others like create_page or 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 is provided on when to use this tool versus alternatives such as get_node_info or get_document_info. The description only states what the tool does without context for selection.

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.5/5.0
Behavior2/5

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

With no annotations present, the description must disclose behavioral traits. It only states the basic purpose, omitting details about authentication, network requirements, or what 'available components' entails.

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 free of unnecessary words, achieving maximum conciseness.

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 parameters and no output schema, the description is adequate but lacks details on return format or expected behavior when no remote libraries exist.

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 description does not need to add parameter information. According to the rubric, baseline is 4 for no parameters.

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

Purpose5/5

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

The description clearly states the action ('Get') and the resource ('available components from team libraries in Figma'), effectively distinguishing it from sibling tools like get_local_components.

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 such as get_local_components, nor does it mention any prerequisites or context for use.

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.3/5.0
Behavior2/5

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

No annotations exist, and the description does not disclose what information is returned, whether it requires permissions, or any side effects. The read-only nature is implied but not explicitly stated.

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 short sentence, which is concise and to the point. However, 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?

Given no output schema, the description should at least hint at what information is returned (e.g., node IDs, types). It fails to provide enough context for an agent to understand the tool's output.

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 no parameters, and the schema coverage is 100%. The description adds no parameter information, but none is needed. Baseline for 0 parameters is 4.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'information about the current selection', which is distinct from sibling tools. Since there are no parameters, the purpose is unambiguous and specific.

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 get_ tools (e.g., get_node_info). The description does not include context about selection behavior or prerequisites.

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

get_styled_text_segmentsB

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

B3.2/5.0
Behavior2/5

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

Without annotations, the description alone must disclose behavioral traits. It does not mention that the node must be a text node, whether the tool modifies data, or any limitations. Only the basic action is stated.

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 direct and to the point with no superfluous words. The structure is efficient given the tool's simplicity.

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 output schema, so the description should explain the return format (e.g., list of segments with indices or offsets). It does not. The requirement that the node be a text node is also omitted, 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 description coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond the schema; 'specific styling' is already conveyed by the property enum. No additional parameter details are provided.

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 resource 'text segments with specific styling', making the tool's purpose unambiguous. It distinguishes itself from siblings like 'scan_text_nodes' which scans for nodes, not styled segments.

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., get_node_info for full data). There are no exclusions or context cues 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.

get_stylesB

Get all styles from the current Figma document

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 does not disclose behavioral traits such as read-only nature, performance implications, or potential side effects. The description is too minimal for a read operation without annotations.

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

Conciseness5/5

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

The description is a single sentence, concise with no wasted words. It is appropriately 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?

Given the complex set of sibling tools, the description is too vague. It does not clarify what 'styles' encompasses (e.g., paint, text, effect styles) and does not describe the return format. The description is incomplete for the 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 has zero parameters with 100% coverage. Since there are no parameters, the description does not need to add parameter semantics. Baseline is 4.

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 resource 'styles' with scope 'from the current Figma document'. However, it does not differentiate from sibling tools like get_variables or get_local_components.

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 get_local_components or get_variables. The description lacks context for selection.

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
Behavior3/5

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

No annotations are provided, so the description carries the burden. It states the return includes nested children but does not mention if the operation is read-only, permissions needed, or any side effects. For a read-like tool, this is acceptable but not fully transparent.

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

Conciseness5/5

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

Two sentences convey purpose and return format with zero redundancy. 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 single-parameter, no-output-schema tool, the description adequately covers purpose and return. It could mention that the operation is non-destructive, but given the simplicity, it is sufficiently 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?

With 100% schema description coverage, baseline is 3. The description adds value by clarifying the parameter 'nodeId' refers to a single node and that the export includes nested children, exceeding the schema's minimal description.

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

Purpose5/5

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

The description clearly states the tool exports a single node as an SVG string, specifying the return format ('SVG markup including all nested children'). It distinguishes from siblings like 'export_node_as_image' and 'set_svg' by focusing on SVG string export.

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 (e.g., 'export_node_as_image', 'set_svg'). The description implies usage for SVG string export but lacks when-not or exclusion criteria.

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
Behavior3/5

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

No annotations are provided, so the description must carry the burden. It states the tool returns collections with modes and variables, which is informational but does not disclose any behavioral traits like read-only nature, permissions, or performance implications. It is adequate for a simple list operation.

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

Conciseness5/5

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

The description is extremely concise at two sentences and 15 words, with no wasted text. It front-loads the action and result immediately.

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

Completeness5/5

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

For a parameterless list tool, the description fully explains what is returned (collections, modes, variables). No output schema exists, but the text covers the return structure sufficiently.

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, and the input schema coverage is 100%, so the baseline is 4. The description does not need to add parameter information, and it correctly omits 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?

The description uses the specific verb 'List' and the resource 'variable collections and their variables', making the tool's purpose crystal clear. It distinguishes itself from sibling tools like set_variable and apply_variable_to_node by focusing on retrieval.

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 context is clearly implied: use this tool when you need to see all variable collections and variables in the current Figma file. However, it does not explicitly state when not to use it or mention alternatives, though no sibling performs a similar function.

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.8/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. It merely says 'Group nodes', omitting details like whether the operation is reversible, what happens to existing groups, or if any side effects occur.

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 extremely concise at three words, but it sacrifices necessary context. It is not verbose, but it fails to add value beyond the tool name.

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 two parameters and no output schema, the description is incomplete. It does not clarify the result of grouping, the effect on node layout, or any caveats about node selection.

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% as both parameters (nodeIds, name) have descriptions in the schema. The tool description adds no additional semantic value beyond the schema, earning a baseline score 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 clearly states the action (group) and resource (nodes), but it does not distinguish from sibling tools like ungroup_nodes or flatten_node, lacking specificity about scope or context.

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 ungroup_nodes or flatten_node. The description does not mention prerequisites or best practices.

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.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 does not disclose whether the child is moved or copied, handling of existing child parent relationships, or behavior when index is out of range. This lack of behavioral detail 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?

Extremely concise single sentence that clearly communicates the action. No redundant 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?

Description is minimally sufficient for a simple insert operation but lacks behavioral context about reparenting, ordering edge cases, and side effects. Without output schema, more detail would be beneficial.

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 covers all three parameters with descriptions. The tool description adds no additional semantic meaning beyond the schema. Baseline score of 3 is appropriate given full schema coverage.

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

Purpose5/5

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

Description clearly states the verb (insert) and resource (child node inside a parent in Figma). It distinguishes from sibling tools like move_node or clone_node by specifying the parent-child insertion action.

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. Does not mention prerequisites (e.g., parent must exist), ordering considerations, or scenarios where other sibling tools might be more appropriate.

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

join_channelB

Join a specific channel to communicate with Figma

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesThe name of the channel to join

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 hints at communication but does not disclose behavioral traits such as whether joining is ephemeral, creates a subscription, requires authentication, or has side effects. The agent is left uninformed about the tool's behavior.

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

Conciseness5/5

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

The description is a single sentence that concisely conveys the tool's purpose without unnecessary words. It is efficiently front-loaded.

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

Completeness3/5

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

Given the tool's simplicity (one parameter, no output schema), the description is minimally adequate. However, the lack of behavioral transparency and usage guidance leaves it incomplete for an agent to use confidently.

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 clear description of the 'channel' parameter. 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 clearly states the action (join) and the resource (a channel) and the purpose (to communicate with Figma). It is specific and distinguishes from sibling tools, none of which involve joining.

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 prerequisites or contextual cues. The agent has no direction on when to invoke this tool.

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

load_font_asyncB

Load a font asynchronously in Figma

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

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 carries full burden. It mentions 'asynchronously' but does not explain implications (e.g., non-blocking, potential delays, error handling). No details about side effects, permissions, or what happens on failure.

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

Conciseness5/5

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

A single sentence that is front-loaded, concise, and contains no fluff. Every word 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 two-parameter tool with no output schema, the description is minimal but covers basic purpose. However, it lacks context about return value, error cases, or how the loaded font affects subsequent operations, which could be useful 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?

Input schema covers both parameters with descriptions (family, style), achieving 100% coverage. The description adds no additional semantics beyond what the schema provides, 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 'Load' on resource 'font', and specifies 'asynchronously', which distinctly sets it apart from sibling tools like set_font_name or set_font_size. It is specific 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 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 example, it does not indicate that fonts must be loaded before using set_font_name, or that this is a prerequisite for other font operations. No preconditions or exclusion criteria are provided.

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.3/5.0
Behavior2/5

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

No annotations provided; description lacks behavioral details such as coordinate system, constraints, or effects on children. Schema partially covers coordinate context but overall transparency is low.

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, front-loaded, no wasted words. Slightly too brief but still effective.

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 required params and no output schema, description is insufficient—lacks info on behavior, constraints, or result confirmation.

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%; description adds no extra meaning beyond schema, 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?

Description clearly states verb ('Move') and resource ('node to a new position in Figma'), distinguishing it from sibling tools like resize_node or 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?

No guidelines on when to use or avoid this tool, but the purpose is straightforward, so usage is implied.

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.4/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 'rename' without mentioning if the operation is reversible, requires permissions, or affects node references. This leaves significant gaps 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 a single, front-loaded sentence with no wasted words. It efficiently conveys the core function.

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 description lacks any mention of return values, error handling, or side effects. Given no output schema and no annotations, this is incomplete for a mutation operation. More context is needed for confident 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%, so baseline is 3. The description adds minimal context by listing example node types, but does not elaborate on the 'name' parameter's allowed format or constraints. Value added is marginal.

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 'rename' and the resource 'node', with examples (frame, component, group, etc.). It effectively distinguishes this tool from siblings like 'rename_page' which operates on a different entity.

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 no explicit guidance on when to use this tool versus alternatives like 'rename_page'. While the purpose is clear, it fails to set context for selection among sibling tools.

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

rename_pageB

Rename an existing page in the Figma document

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesID of the page to rename
nameYesNew name for the page

TDQS

B3/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 states 'rename an existing page'. It does not disclose any side effects, permissions required, or whether the rename is destructive. The behavioral context 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.

Conciseness3/5

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

Single sentence is concise but lacks additional context. It is front-loaded with the core action, but could be more informative 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?

Tool is simple (rename a page), but no output schema and minimal description. It fails to mention return values, confirmation, or that the rename happens in-place. Given the presence of many sibling tools, more context would be beneficial.

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 covers 100% of parameters with descriptions. The tool 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.

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 'existing page', which distinguishes it from sibling tools like create_page, delete_page, and rename_node (which targets nodes in general).

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., rename_node for other node types). No prerequisites or conditions are mentioned, leaving the agent without 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.

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

A3.8/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 for behavioral disclosure. It does not mention side effects, error cases, permissions, or return values. The description only clarifies the difference from insert_child, leaving many behavioral aspects implicit.

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 consists of two sentences with no extraneous information. It is front-loaded with the core purpose and immediately addresses sibling differentiation, making it highly efficient.

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

Completeness4/5

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

For a simple tool with three fully-described parameters and no output schema, the description is reasonably complete. It covers the key differentiator from insert_child, though it could mention other related tools like move_node. Overall, it provides sufficient context for correct usage.

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. The description adds no additional parameter-level meaning beyond what the schema provides (e.g., the override behavior of index is already in the schema). Thus 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 'change' and the resource 'z-order (layer order) of a node', and explicitly distinguishes it from the sibling tool 'insert_child' which does re-parenting. This makes the purpose specific and differentiated.

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 directly compares with 'insert_child', clarifying that reorder_node is for same-parent reordering while insert_child changes parent. This provides clear context on when to use each tool, though no explicit 'when not to use' or other alternatives are listed.

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

replace_image_fillB

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

B3.4/5.0
Behavior3/5

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

The description discloses the key behavioral trait of preserving the transform, but with no annotations provided, it lacks details on side effects, error handling, or required authentication. It does not contradict annotations as none exist, but it offers only 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?

The description is a single concise sentence that front-loads the action and key behavior. Every word earns its place with no unnecessary verbosity.

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 and no annotations, the description fails to explain what happens after replacement, such as whether the old image is removed or what the return value is. It also does not address edge cases or prerequisites, leaving the tool incomplete for an AI agent to fully understand its 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?

The input schema has 100% description coverage for all 4 parameters, so the schema already explains what each parameter does. The description adds no additional meaning 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 ('Replace existing image on node') and the key differentiator ('while preserving transform'), distinguishing it from siblings like set_image_fill or set_image which may not preserve transform.

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 like set_image_fill or set_image. It lacks context on prerequisites, such as requiring the node to already have an image fill, and does not mention when to choose this over other tools.

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 present, and the description does not disclose any behavioral traits beyond the basic action. It does not mention aspect ratio behavior, permission needs, or side effects on child nodes.

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, clear sentence with no wasted words. It is appropriate in length for a simple tool, though it could benefit from front-loading key constraints.

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 output schema and no annotations, the description is minimal. It lacks details on return value, error conditions, or behavioral dependencies, making it incomplete for an agent to use safely.

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 adequately defines parameters. The description adds no extra meaning (e.g., units of width/height), but given full coverage, 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 verb 'resize' and resource 'node' in context of Figma. It is specific enough to distinguish from many sibling tools that manipulate nodes in other ways, though it does not explicitly differentiate from 'set_node_properties' which could also resize.

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_node_properties' or constraints like aspect ratio. The description provides no context on prerequisites or exclusion criteria.

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

A3.8/5.0
Behavior3/5

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

The description discloses that locked nodes can be rotated because the Plugin API bypasses the UI lock, which is a notable behavioral trait. However, it omits other potential behaviors like side effects on children, constraints, or re-layout. With no annotations, the burden is higher, so more detail would be beneficial.

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-loaded with the core purpose, and every sentence adds value. No unnecessary words 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 rotation tool, the description covers the key aspects: absolute vs relative mode, clockwise direction, and behavior on locked nodes. It lacks details about angle range limits, but given the tool's simplicity and no output schema, it is mostly 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% coverage with descriptions for all three parameters. The description adds minimal extra semantic value beyond restating the schema's content (e.g., 'relative=true to add'). 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 explicitly states the action (rotate), the resource (node), and the specifics (clockwise angle in degrees). It clearly distinguishes from sibling tools like move_node or resize_node by specifying 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 provides guidance on using the 'relative' parameter for additive vs absolute rotation. However, it does not explain when to choose this tool over alternatives like apply_image_transform or set_node_properties, nor does it give scenarios where rotation should be avoided.

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 provided, so the description carries the full burden. It only states the action but fails to disclose what 'scan' entails (e.g., returning text content, traversing nested nodes, read-only behavior). This is insufficient for an agent to understand side effects or output.

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 (8 words). It is appropriately sized for the tool's simplicity, though slightly more structure (e.g., noting output) would improve it 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?

Given the tool has one parameter and no output schema, the description should explain what is returned (e.g., text strings, node references). It does not, leaving the agent uncertain about the result.

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 clear description of 'nodeId' as the ID of the node to scan. 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 scans all text nodes in a given Figma node, using a specific verb and resource. However, it does not explicitly differentiate from siblings like 'get_node_info' or 'set_text_content', though the action is 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 on when to use this tool versus alternatives. The agent must infer usage from the name and description, with no exclusions or context provided.

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.1/5.0
Behavior3/5

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

Without annotations, the description must disclose behavioral traits. It states the environment requirement but does not explain mutation details (e.g., whether it overwrites existing annotations) or error handling. The description is adequate but lacks depth for a mutation tool.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the core purpose, and includes a necessary usage note. Every sentence adds value without redundancy.

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

Completeness5/5

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

For a simple tool with two well-documented parameters and a clear action, the description covers all essential information: what it does, the environment requirement, and the input schema provides the rest. No additional context is needed.

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 with clear parameter descriptions. The tool description adds no additional meaning beyond the schema, so the 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 ('Add an annotation label') and the resource ('node in Figma'). It also distinguishes the tool by mentioning the proposed Annotations API and specific environment requirement, which sets it apart from other set tools.

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 the prerequisite (Figma Desktop with enableProposedApi), giving clear guidance on when it can be used. While it does not list alternatives or when not to use, the context of adding annotations versus other operations is implicit.

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

set_auto_layoutB

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

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 it configures properties. It does not disclose side effects, error conditions, or constraints (e.g., behavior when layoutMode is NONE).

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 is concise and front-loaded with purpose, but could be more structured without sacrificing brevity.

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, no output schema, and no annotations, the description is incomplete. It doesn't explain return values, partial updates, or parameter interactions (e.g., padding relevance per layoutMode).

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 parameter descriptions already 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?

Description clearly states the verb 'Configure' and the resource 'auto layout properties for a node', distinguishing it from sibling tools like set_node_properties 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?

No guidance on when to use this tool vs alternatives like set_node_properties, no prerequisites (e.g., node must be a frame), and no exclusions mentioned.

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

set_corner_radiusB

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

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 reversal, error handling, or required permissions beyond saying 'set'.

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 could include more detail without being verbose, such as hinting at the optional corners parameter.

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 three well-described parameters, the description is minimally complete but lacks contextual guidance for selection among siblings and behavior beyond the schema.

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 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 'set' and the resource 'corner radius of a node in Figma', distinguishing it from sibling tools like set_node_properties which set multiple properties.

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_node_properties, or prerequisites such as node existence or radius constraints.

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_effectsB

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

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 does not disclose behavioral traits such as whether effects are replaced or merged, permissions needed, or side effects. 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.

Conciseness4/5

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

The description is a single sentence, concise and to the point. While it could benefit from additional context, it is not verbose or redundant.

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 visual effects, the description is too brief. It does not explain that effects replace existing ones, confirm node requirements, or describe the return value (none provided). More context is needed.

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 for parameters, so the schema already provides detailed semantics. The tool description adds no extra meaning beyond stating the overall action.

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 resource ('visual effects of a node in Figma'), effectively distinguishing it from sibling tools like set_fill_color or create_effect_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?

No guidance is provided on when to use this tool versus alternatives (e.g., set_effect_style_id) or prerequisites (e.g., node existence). The description lacks 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_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.8/5.0
Behavior2/5

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

No annotations exist, so the description must compensate. It only states 'apply', implying mutation, but fails to disclose side effects (e.g., overrides existing effects), permissions needed, or reversibility.

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 with no redundancy, but it lacks important details. Not overly concise—just 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?

Given the low complexity (2 simple params, no output schema), the description is too minimal. It does not explain what an effect style is or how it differs from directly applying effects.

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 already explains both parameters. The description adds no additional meaning beyond what the schema provides.

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 applies an effect style to a Figma node, using a specific verb and resource. It distinguishes from sibling tools like set_effects or set_fill_color by focusing on effect styles.

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_effects for custom effects). No exclusions or context provided.

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

A3.7/5.0
Behavior3/5

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

With no annotations, description adds behavior about alpha defaulting to 1 and use of alpha 0 for transparency. However, it does not disclose other behavioral traits like whether the tool replaces existing fills or if it requires certain permissions.

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

Conciseness5/5

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

Two concise sentences. First sentence states purpose directly, second adds critical detail about alpha behavior. No unnecessary 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 color-filling tool, the description covers the essential purpose and alpha behavior. However, it does not explain whether the fill replaces existing ones, or that it sets a solid color (not gradient), which could affect usage. Lacks guidance on return values or side effects.

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. Description slightly adds value by explaining the alpha default in plain language and suggesting use of alpha 0, but this is already implied in the schema description of the alpha 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?

Description clearly states 'Set the fill color of a node in Figma' with a specific verb and resource. It differentiates from sibling tools like set_stroke_color by focusing specifically on fill color.

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?

Implies usage through schema requirements and alpha behavior, but provides no explicit guidance on when to use this tool over alternatives or any prerequisites. Does not mention exclusions.

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.2/5.0
Behavior2/5

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

No annotations are available, so the description must disclose behavioral traits. It only says 'set' without explaining side effects (e.g., requiring font to be loaded, affecting entire text, causing reflow). The minimal description fails to inform the agent about mutation risks.

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, complete sentence with no redundant information. It is appropriately front-loaded and concise.

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 moderate complexity (3 params, no output schema), the description is insufficient. It omits critical context such as font loading requirements, error scenarios, and behavior when the font is unavailable or the style is omitted.

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 full descriptions for all 3 parameters (100% coverage), so the tool description adds little extra meaning. The phrase 'font name and style' reinforces the purpose but does not clarify format or constraints 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 'Set the font name and style of a text node in Figma', specifying the action (set), resource (font name and style), and target (text node). It effectively distinguishes from sibling tools like set_font_size or set_font_weight that modify only a single attribute.

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., set_font_size, set_font_weight). The description does not mention optionality of style or prerequisites like font loading, leaving the agent without decision context.

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

set_font_sizeA

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

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states the action but does not disclose side effects (e.g., whether it resizes other elements or requires prior font loading). However, for a simple setter, the minimal description is adequate.

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 wasted words. It is front-loaded with the action. Could be slightly more structured but is efficient.

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

Completeness4/5

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

For a simple 2-parameter tool with no output schema or annotations, the description sufficiently conveys the tool's purpose and basic behavior. It does not need to explain return values since there is no output schema.

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 coverage is 100% and both parameters have clear descriptions (nodeId as string, fontSize as number with exclusiveMinimum 0 and unit pixels). The description does not add extra 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.

Purpose5/5

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

The description clearly specifies the verb 'set' and the resource 'font size of a text node in Figma', making the tool's function unambiguous. It also naturally distinguishes itself from sibling tools 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 on when to use this tool versus alternatives. There is no mention of prerequisites (e.g., need to load font) or scenarios where this tool should be avoided. Siblings like set_font_name or set_font_weight are listed but not differentiated.

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.4/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 responsibility. It does not disclose whether the tool is destructive, requires font loading, or performs validation. The simple statement leaves behavioral assumptions unaddressed.

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 extraneous words. It efficiently states 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 well-documented parameters and no output schema, the description is minimally adequate. It conveys the essential purpose, though more context (e.g., need for existing text node) could be beneficial.

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 has 100% coverage with descriptions for both parameters. The description adds no additional 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 resource 'font weight of a text node', and the context 'in Figma'. It distinguishes well from sibling tools 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?

The description provides no guidance on when to use this tool, prerequisites (e.g., font must support the weight), or when not to use it. It does not mention alternatives.

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?

Without annotations, the description carries the behavioral burden. It discloses that fills are replaced, but does not mention permissions, reversibility, or node validity, which are important 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?

Two sentences, no filler, front-loaded with the action. Every word 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 the parameter richness (4 params, 100% schema coverage) and no output schema, the description covers the core behavior (replace fills, gradient types). It could mention node requirements or typical workflows, but is largely 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%, so baseline is 3. Description adds no extra param details beyond listing gradient types already in the enum. The replacement behavior is stated but not param-specific.

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 a gradient fill on a Figma node, specifies supported gradient types, and distinguishes from set_fill_color by noting it replaces all fills. This is a specific verb+resource combination.

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 implies when to use this tool (for gradients) vs set_fill_color (for solids) by noting the same replacement behavior. However, it lacks explicit when-not-to-use guidance or alternatives beyond that one comparison.

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 are provided, so the description must cover behavioral traits. It does not disclose whether the operation is destructive (replaces all grids), whether it validates node types (only frames), or any permissions needed. The input schema is detailed but does not replace behavioral context like side effects 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 a single, concise sentence that front-loads the main action and supported patterns. It is efficient with no wasted words. However, it could be slightly expanded to add behavioral details without becoming overly long.

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 a complex nested array parameter and no output schema or annotations, the description is too brief. It does not explain the tool's effect on existing grids (replacement vs. addition), validation rules, or return value. Combined with the lack of annotations, the agent may under- or misuse the 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 has 100% description coverage, with each parameter documented in detail. The description mentions support for patterns (columns, rows, grid) but adds little beyond the schema. It does not clarify parameter relationships, such as whether count and sectionSize are required together for columns/rows. Baseline 3 is appropriate given high 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 the tool applies layout grids to a frame node in Figma, specifying support for columns, rows, and grid patterns. It uses a specific verb and resource, and the purpose is distinct from sibling tools like set_fill_color or set_auto_layout. However, it does not explicitly clarify whether it replaces or appends to existing grids, leaving slight ambiguity.

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 is given on when to use this tool versus alternatives (e.g., set_node_properties might also modify grids). The description implies usage for applying grids but does not provide context on prerequisites, exclusions, or alternative tools. Usage is implied by the tool name and description, but lacks explicit recommendations.

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

A4/5.0
Behavior4/5

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

Explicitly states that the tool replaces all existing guides, which is a key behavioral trait. Lacks details on permissions or side effects, but sufficient for this simple 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?

Two concise sentences, no redundant information, effectively communicates the core purpose and behavior.

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 (2 params, no output schema), the description adequately covers the operation and replacement behavior. Missing error conditions or prerequisites, but acceptable.

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 additional meaning beyond the schema definitions for pageId and guides.

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 tool sets guides on a Figma page, and explicitly mentions it replaces all existing guides, distinguishing it from sibling tools like get_guide.

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?

Implies usage for setting guides, but no explicit guidance on when to use this tool versus alternatives like set_grid 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_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.5/5.0
Behavior3/5

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

Annotations are absent, so the description carries full burden. It mentions the size limit (~5MB) and supported formats, which is helpful. However, it does not disclose whether the tool is destructive (e.g., replaces existing fill), if it requires node to exist, or any authorization needs. No contradictions since no annotations.

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

Conciseness5/5

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

The description is two concise sentences, front-loaded with the primary action. Every word adds value, and there is no redundancy. Ideal length for a tool with three parameters.

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 no annotations, the description covers the basic input and constraints but does not explain return behavior (e.g., success/failure, what happens if node invalid) or contrast with sibling tools. It is adequate but not comprehensive for a tool that modifies a node.

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 value by repeating the size limit and supported formats that are already in the schema. For scaleMode, it merely states the default (FILL) but the schema already provides the enum. No new semantic information 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?

The description clearly states the action (set an image fill), the resource (a node), and the method (from base64-encoded image data). It also lists supported formats and size limit, making the purpose unmistakable. Among siblings like replace_image_fill, this one is distinguished by using base64 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 guidance is provided on when to use this tool versus similar siblings like replace_image_fill or set_image_fill. There are no prerequisites or context for appropriate usage. The description does not mention alternatives 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_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.9/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 action without disclosing side effects (e.g., replacing existing fill), required permissions, or whether the operation is reversible.

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 with a single sentence and no redundant information. However, it could be slightly more informative without sacrificing conciseness.

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 schema fully documents parameters, the description suffices for a simple mutation tool. However, it lacks any mention of return values or confirmation of success, and no output schema exists to 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?

All 4 parameters have schema descriptions (100% coverage), so the description adds no extra meaning. The description does not elaborate on valid image formats or constraints 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 action ('Apply image to node') and the sources ('URL or base64 data'). However, it does not differentiate from sibling tools like 'set_image' or 'replace_image_fill', which might have similar purposes.

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 like 'replace_image_fill' or 'set_image'. No context on prerequisites or exclusions.

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

set_image_filtersB

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

B3.1/5.0
Behavior2/5

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

No annotations provided, and the description lacks details on behavioral traits like mutability, reversibility, or side effects. The agent cannot infer whether this modifies the node in place or returns anything.

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 is concise and front-loaded, but could be expanded with minimal additions. 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?

With 8 parameters, no output schema, and no annotations, the description is insufficient. It does not explain how adjustments combine, default values, or what the result looks like.

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 parameters. The description adds no additional meaning beyond 'adjustments', 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 'Apply color and light adjustments to image fills' specifies a clear verb (apply) and resource (image fills), distinct from sibling tools like 'replace_image_fill' or 'set_image'.

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., 'apply_image_transform', 'replace_image_fill'). The description does not mention prerequisites or excluded scenarios.

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.9/5.0
Behavior3/5

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

Without annotations, the description must convey behavioral traits. It mentions preservation of overrides and efficiency, which are key. However, it does not disclose error conditions, prerequisites (e.g., node must be an instance), or potential 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, front-loaded with the action and key benefits. Every sentence adds value, and there is 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?

The description covers the tool's purpose and advantages, but given the absence of an output schema, it lacks information about return values or error handling. For a simple mutation tool with two well-described parameters, it is nearly sufficient but could be improved.

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% description coverage, so baseline is 3. The description adds context about preserving overrides and efficiency, but does not elaborate on parameter semantics beyond what the schema already provides (e.g., the format of 'properties').

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 changes variant properties of a component instance, highlighting efficiency and preservation of overrides. It distinguishes itself from siblings like 'create_component_instance' and 'detach_instance' by focusing on modifying an existing instance without recreation.

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 implies when to use this tool (to change variant properties efficiently) and contrasts with a delete+create workflow. However, it does not explicitly state when not to use it or compare with alternatives like 'set_node_properties'.

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.3/5.0
Behavior2/5

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

No annotations exist, and the description does not disclose behavioral details such as requiring a text node, side effects, or default behavior for the optional unit parameter. It only states the action without additional 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 concise sentence efficiently communicates the core purpose without extraneous information. It is 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 tool is simple with only three parameters and no output schema, the description could add context like 'applies to text nodes only' or 'unit defaults to PIXELS' for completeness. It is adequate but not enriched.

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 each parameter. The description adds no further meaning beyond the schema, so it meets 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 'Set the letter spacing of a text node in Figma' clearly states the verb (Set), the resource (letter spacing of a text node), and the context (Figma). It distinguishes from sibling tools like set_line_height 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 vs alternatives like set_text_style_id or adjusting text properties via other setters. 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_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?

With no annotations, description should disclose behavioral traits (e.g., mutation, side effects, permissions), but it only states the action. Lacks details 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.

Conciseness5/5

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

Single sentence with 12 words, front-loaded, no redundancy. Every word contributes to the 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?

Minimal but adequate for a simple mutation tool with 3 parameters. However, without output schema or annotations, more context (e.g., constraints, return behavior) 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?

Schema description coverage is 100%, so baseline is 3. The description adds no extra meaning beyond schema; parameters are adequately documented but not enriched.

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 uses a specific verb 'Set' and resource 'line height of a text node', distinguishing it from siblings that set other text properties.

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_font_size or set_letter_spacing; no context about prerequisites or exclusions.

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

set_multiple_text_contentsC

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

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. It uses the vague term 'parallelly' without explaining concurrency semantics, error handling, or atomicity. It does not disclose whether the operation overwrites or merges content, or if it requires certain permissions. This minimal disclosure 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.

Conciseness4/5

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

The description is a single sentence with no wasted words. It is front-loaded with the verb and resource. However, it could be more informative while remaining concise, such as mentioning the tool's advantage over multiple calls to set_text_content.

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 the presence of sibling tools, the description is incomplete. It does not explain the return value (e.g., success status) or the relationship between the parent nodeId and the text array's nodeId fields. The description should cover more contextual details to aid correct usage.

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. The description adds the notion of parallelism but does not provide additional meaning beyond the schema. The baseline of 3 is appropriate as the schema already documents parameters adequately.

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 ('Set') and resource ('multiple text contents') and adds 'parallelly' to indicate concurrency. However, it does not differentiate from the sibling tool 'set_text_content', which likely sets a single text content. The purpose is clear but could be improved by explicitly contrasting with the single-text counterpart.

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'. The description does not state that this is for batch operations or that it requires a parent node ID and an array of child text nodes. This lack of guidance may lead to incorrect tool selection.

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 provided, so the description carries the burden of disclosing behaviors. It only states the action without mentioning side effects, error conditions, or requirements (e.g., node existence, valid range for spacing). 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.

Conciseness4/5

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

Single sentence, no wasted words. Front-loaded with the action. However, it is almost too concise, missing optional context that could be added without harming conciseness.

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 (2 params, no output schema), the description is minimally adequate. It does not explain return values or error handling, but for a basic setter this is acceptable. A bit more context 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?

Schema coverage is 100% with descriptions for both parameters. The tool description adds no additional meaning beyond what the schema already provides. 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 identifies the action ('Set'), the resource ('paragraph spacing of a text node'), and the domain ('Figma'). It distinguishes from sibling tools like set_font_size or set_line_height by specifying the exact property.

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. Does not mention prerequisites (e.g., node must be a text node, must be loaded) or typical scenarios. With many sibling 'set_' tools, some usage context would help.

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

A4.2/5.0
Behavior4/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 discloses the recursive behavior affecting all descendants, which is a key behavioral trait. However, it does not mention whether changes are reversible or if the tool modifies the original node in place.

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

Conciseness5/5

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

Two sentences, no wasted words. Front-loaded with the main action and supported by a clarifying analogy. Perfectly 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?

The description covers the core behavior and typical use case. Without an output schema, return value details are omitted, but for a mutation tool this is acceptable. Could mention absence of side effects or return value.

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% description coverage meaning all parameters are already documented. The description adds no extra semantic detail 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.

Purpose5/5

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

The description explicitly states the tool recursively changes stroke and fill colors of a node and descendants, using a clear verb ('Recursively change') and resource ('stroke and fill colors'). It distinguishes itself from sibling tools like set_fill_color by specifying recursion and comparison to 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?

Description implies usage for recoloring icon instances and notes similarity to a specific feature, providing useful context. However, it lacks explicit when-not-to-use guidance or alternative tool suggestions, leaving room for ambiguity.

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.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. Only states 'update text content' without disclosing behavioral traits like whether it's destructive, permissions needed, error handling, or if text replaces or appends. 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.

Conciseness4/5

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

Single sentence of 9 words is efficient and front-loaded. Could add brief usage context without losing conciseness, but overall well-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?

Simple tool with 2 params and no output schema. Description provides minimal context; lacks details on return value, side effects, or error conditions. Adequate for basic understanding but incomplete for full agent guidance.

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 parameter descriptions. The tool description adds no additional 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.

Purpose5/5

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

Description clearly states the tool updates text content of an existing FigJam sticky note, using specific verb and resource. Differentiates from siblings like 'create_sticky' and 'set_text_content' by specifying 'FigJam sticky note'.

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., create_sticky for new notes, set_text_content for Figma text). No mention of prerequisites, constraints, 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.

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.3/5.0
Behavior2/5

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

No annotations provided, so the description must disclose behavior. It mentions defaults but does not describe whether changes are additive, whether the node must have stroke enabled, error handling, or permanence. Critical behavioral details are 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?

A single concise sentence with no redundancy or extraneous information. Every word earns its place.

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 mutation tool with no output schema and no annotations, the description covers the basic purpose but omits error scenarios, return values, and prerequisites. It is minimally adequate 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?

Schema coverage is 100%, so the description adds value by mentioning defaults for opacity and weight. This helps the agent understand what happens if optional parameters are omitted, but doesn't add beyond what the schema already conveys.

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' and the resource 'stroke color of a node in Figma', with defaults for opacity and weight. It distinguishes from sibling tools like set_fill_color by specifying stroke.

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 like set_fill_color or set_stroke_weight. The description implies it's for setting stroke color with defaults but doesn't mention when not to use or prerequisites.

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_alignA

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

A3.6/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 indicates mutation (set) without disclosing reversibility, side effects, or required permissions. The RTL hint is useful but insufficient given the lack of annotation support.

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 short sentences with no redundant information; the key action and one special case are 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?

For a simple 3-parameter tool with no output schema, the description adequately covers the core purpose and provides a specific usage hint. Lack of error handling or input validation info is acceptable given the tool's simplicity.

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 minimal extra meaning beyond what's in the schema (the RTL hint is already in the enum description). The description does not elaborate on nodeId or textAlignVertical.

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) and resource (text alignment of a text node) and implicitly distinguishes from sibling tools like set_text_content or set_font_name by focusing on alignment.

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 one specific guideline for RTL/Arabic text but lacks general guidance on when to use this tool versus alternatives, 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.3/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 any behavioral traits such as required permissions, side effects, or error conditions. It only states the basic operation without additional 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 sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and efficiently communicates the core functionality.

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 absence of annotations and output schema, the description is adequate for a simple tool with two parameters that are fully described in the schema. However, it could provide more context about return values or behavior when applied to non-text nodes.

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 descriptions for both parameters. The description itself adds no extra meaning beyond the schema, so it meets the baseline score.

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 the specific verb 'set' and resource 'text case of a text node in Figma', clearly indicating the action and target. It distinguishes itself from siblings like 'set_text_content' and 'set_font_name' by specifying the property being modified.

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_content' or 'set_font_size'. The description does not mention prerequisites, limitations, or scenarios where this tool is appropriate.

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

set_text_contentB

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

B3.3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only says 'Set the text content', implying mutation, but omits details like required permissions, what happens if the node does not exist or is not a text node, 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?

The description is a single, concise sentence that efficiently conveys the tool's purpose without any 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 the tool's simplicity and complete schema, the description is minimally adequate but lacks behavioral context and usage guidance that would make it fully complete for an AI 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). The 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.

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 ('text content of an existing text node'), and the domain ('Figma'). This distinguishes it from sibling tools like set_font_name or create_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 guidance is provided on when to use this tool versus alternatives. For example, it does not mention that create_text should be used for new nodes, or other set_* tools for other properties.

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.8/5.0
Behavior2/5

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

The description implies a write operation (mutation) but does not disclose potential side effects, required permissions, or error conditions. Since no annotations are provided, the description should cover behavioral traits, but it offers minimal insight beyond the verb.

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

Conciseness3/5

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

The description is a single short sentence, which is concise but may be overly minimal. It avoids fluff but lacks sufficient detail for an agent to fully understand the tool's behavior, making it borderline adequate.

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 annotations and output schema, the description should provide richer context about behavior, prerequisites, and return values. It fails to explain what happens when the decoration is set, how it interacts with other properties, or any limitations.

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 both parameters (nodeId and textDecoration), achieving 100% coverage. The description adds no additional parameter meaning beyond what the schema conveys, 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 verb 'Set', the resource 'text decoration', and the context 'text node in Figma'. It is specific to a single property, but does not differentiate from sibling tools like 'set_text_style_id' which may also affect decoration.

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 when to modify text decoration via styles vs directly. No usage constraints or prerequisites (e.g., font loading) 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_style_idB

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

B3.3/5.0
Behavior2/5

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

Without annotations, the description must fully disclose behavioral traits. It only states 'apply a text style', implying mutation, but provides no details about safety (e.g., is it reversible?), required permissions, or what happens if the node is not a text type. This minimal disclosure leaves significant uncertainty 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 with no extraneous information. It communicates the core action efficiently, earning its place without waste.

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 string parameters and no output schema, the description is minimally complete. However, it could be improved by noting that the text style must exist or that the node must be a text node, which are missing contextual nuances.

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 descriptions for both parameters ('The ID of the text node to modify' and 'The ID of the text style to apply'). The description does not add additional semantics 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 'apply' and the resource 'text style', and specifies the target 'text node in Figma'. It distinguishes itself from sibling tools like 'set_text_content' (which modifies content) and 'set_font_name' (which modifies a specific property), providing a unique and unambiguous purpose.

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. With many sibling tools that affect text properties (e.g., set_font_name, set_font_size, set_text_align), the description lacks explicit context for choosing this tool, leaving the agent to infer 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_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.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 carries full burden. It discloses the creation of collections as a side effect, but lacks details on mutation behavior (overwriting existing variables), authorization needs, or error conditions. For a write operation, more transparency is expected.

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-loaded with the main purpose, and every sentence adds necessary context. No redundant or filler content.

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 high parameter coverage, the description omits information about the return value (e.g., what is output after creation/update) and error cases. For a tool with 6 parameters and no output schema, this is a significant gap.

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

Parameters4/5

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

Schema coverage is 100% and descriptions are included, but the description adds value beyond schema by explaining the conditional creation of collections based on collectionName. The value parameter also includes example formats (e.g., COLOR: {r,g,b,a}). This exceeds 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?

The description clearly states the verb 'Create or update' and the specific resource 'a variable in a Figma variable collection'. It also adds the side effect of creating the collection if needed, which distinguishes it from sibling tools like get_variables or switch_variable_mode.

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 or updating variables, but does not explicitly state when to use this tool versus alternatives (e.g., other variable tools). No exclusions or prerequisites are mentioned, leaving the agent with implicit guidance.

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

switch_variable_modeA

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

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses that switching changes which mode's values are used, but lacks details on persistence, side effects, or whether it affects the UI. This is adequate but not rich.

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 redundant information. The action is front-loaded, and every word serves a 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?

The description is adequate for a simple toggle tool but lacks details on return values, prerequisites, or reversibility. Given no output schema and no annotations, additional context (e.g., confirmation of change) would improve completeness.

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 three parameters, providing clear IDs. The description adds context by explaining the overall effect ('changes which mode's values are used'), which goes beyond mere parameter definitions.

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 switches the variable mode on a node for a specific collection, which is distinct from siblings like 'set_variable' or 'apply_variable_to_node'. The verb 'switch' and resource 'variable mode on a node' are specific 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 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, nor does it mention prerequisites or when not to use it. It only states the action without contextual usage advice.

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.4/5.0
Behavior1/5

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

No annotations are provided, and the description does not disclose any behavioral traits beyond the action. Important details about side effects, prerequisites, or error conditions are missing.

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 extremely short (one sentence). While concise, it lacks necessary substance and is not front-loaded with critical 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?

Given the tool's simplicity (single parameter, no output schema, no annotations), the description is too minimal. It does not fully equip an AI agent to use the tool correctly, missing behavioral 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 has 100% description coverage, so the baseline is 3. The description does not add additional value beyond what the schema already provides.

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 'ungroup' and resource 'nodes in Figma', making the purpose understandable. It is distinct from siblings like 'group_nodes' and 'flatten_node', but lacks explicit differentiation.

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. While the purpose is clear, there are no context cues or exclusions to help the agent decide.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 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
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
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    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.
    8,318
    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
    28
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/arinspunk/claude-talk-to-figma-mcp'

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