Skip to main content
Glama
kicholiz

Figma Write Bridge MCP

by kicholiz

set_reactions

Set prototype reactions on a Figma node, replacing existing ones, to support navigation, overlays, URLs, variables, conditionals, and media actions with schema validation.

Instructions

Set prototype reactions on a node (replaces existing reactions). Supports every action type including NODE navigation (NAVIGATE/SWAP/OVERLAY/SCROLL_TO/CHANGE_TO), BACK, CLOSE, URL, SET_VARIABLE, SET_VARIABLE_MODE, CONDITIONAL, and UPDATE_MEDIA_RUNTIME. Reactions are validated against a strict schema: transitions of type DISSOLVE/SMART_ANIMATE/SCROLL_ANIMATE must NOT carry direction or matchLayers (only MOVE_IN/MOVE_OUT/PUSH/SLIDE_IN/SLIDE_OUT may), and a NODE destination must be a valid target for its navigation type — NAVIGATE/SWAP need a top-level frame, OVERLAY an overlay-configured frame, SCROLL_TO a node inside a scrollable ancestor, CHANGE_TO a sibling variant in the same component set.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nodeIdYes
reactionsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.9/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 behavioral burden, and it does substantial work here: it discloses that existing reactions are destroyed ('replaces existing reactions'), that input is validated against a strict schema, and gives concrete validation rules (transition/direction constraints, destination compatibility per navigation type). It stops short of error behavior or required permissions, but the destruction and validation semantics are strong disclosure for an unannotated 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?

Purpose and destructive semantics are front-loaded in the first clause, followed by two dense sentences of hard constraints. It is long, but nearly every clause encodes a real validation rule an agent needs, so the length is largely earned rather than padding.

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 2-param mutation tool with no annotations and no output schema, the description covers the critical complexity: what it overwrites and the cross-field validation rules that will otherwise cause failures. Remaining gaps (nodeId conventions, response/error shape) are minor given there is no output schema to explain.

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 0% for the two parameters, so the description must compensate. It richly specifies the semantic content of the reactions payload (action types, transition constraints, destination rules) but says nothing about the nodeId format or the concrete field layout of the reactions array, so it partially closes the gap rather than fully covering 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 states a specific verb and resource ('Set prototype reactions on a node') and immediately qualifies scope with 'replaces existing reactions.' It enumerates the supported action types, which cleanly separates it from read-only siblings like get_reactions and from narrower writers like upsert_reaction, set_transition_reaction, and set_smart_animate_reaction.

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 replacement semantics imply when to reach for this versus an additive tool, and the enumeration of supported action types hints at its breadth. However, it never explicitly names an alternative (e.g., 'use upsert_reaction to add without clearing') or states when-not to use it, leaving sibling routing to inference.

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

Deploy Server

Other Tools