Skip to main content
Glama

get_variable_defs

Reads styles, components, and variable bindings from a saved Figma design so you can inspect how design properties are defined and linked.

Instructions

Read styles, components and variable bindings present in the saved design. Does not claim to resolve restricted variable collections.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "get_variable_defs"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlNo
nodeIdNo
fileKeyNo
snapshotIdNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

C2.7/5.0
Behavior2/5

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

The description adds one piece of genuine behavioral scope — restricted variable collections are not resolved — which is useful context beyond the annotations. However, annotations declare readOnlyHint=false, openWorldHint=true, and idempotentHint=false, and the description's opening verb "Read" gives no hint of why the operation is non-read-only, non-idempotent, or open-world, nor whether it creates saved state. That mismatch leaves the agent with conflicting expectations about side effects.

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

Conciseness4/5

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

Two short sentences with the capability front-loaded and the limitation second; nothing is padded. The phrasing "does not claim to resolve" is evasive where a plain "does not resolve" would be clearer, which is the only structural deduction.

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 four optional, entirely undocumented identifiers, a non-obvious non-read-only annotation profile, and no output schema, the description should say which parameter selects the target and roughly what comes back. As written, an agent could call it with no arguments or the wrong identifier with no way to know from the definition.

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

Parameters2/5

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

All four parameters (url, nodeId, fileKey, snapshotId) have 0% schema description coverage and none are required, so the description is the only place meaning could be supplied — yet it says nothing about which identifier to use or how they interact. "Saved design" weakly hints that snapshotId is relevant, but that is inference rather than documentation.

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?

"Read styles, components and variable bindings present in the saved design" gives a concrete verb plus a specific set of resources, so an agent knows the return content is design-token data. It stops short of a 5 because it never distinguishes itself from close siblings such as figma_get_variables or get_design_context, and the name (get_variable_defs) is narrower than the styles/components scope described.

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

Usage Guidelines2/5

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

There is no statement of when to call this versus figma_get_variables, get_design_context, or figma_list_snapshots, despite six sibling tools in that space. The only usage signal is a partial exclusion ("restricted variable collections" are not resolved), which hints at a when-not condition but never names the alternative to use instead.

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