Skip to main content
Glama
Rompni

figma-rest-mcp

by Rompni

Get Figma file

get_file
Read-only

Retrieve a Figma file's JSON structure by file key or URL, with configurable depth and payload modes to control response size.

Instructions

GET /v1/files/{key} — file JSON. depth defaults to 2. mode=trim|summary|full shrinks node payloads (see README).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idsNoNode ids, comma-separated or as an array. URL form 1-2 is normalized to 1:2.
fileYesFigma file key or URL (figma.com/design/... or figma.com/file/...)
modeNoPayload size: summary = id/name/type/layout/text only; trim = drop noisy keys (prototypeDevice, styleOverrideTable, interactions, …); full = raw REST JSON. Default trim.
depthNoNode levels to include. Default 2.
versionNoOptional version id from get_file_versions.
geometryNoOptional geometry mode, e.g. paths.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.5.0

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already mark the tool as read-only and open-world. The description aligns with that by showing a GET operation, and adds the useful behavioral facts that depth defaults to 2 and mode trims/summarizes payloads. It does not discuss response size, limit/error behavior, or what the README clarifies, so it is adequate, 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.

Conciseness4/5

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

The description is short, front-loaded with the endpoint, and immediately surfaces the two most behaviorally relevant options. The reference to '(see README)' is the only weak spot, since it pushes out beyond this definition, but the overall structure is tight.

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?

With 6 parameters, no output schema, and a large sibling list, the description is minimally sufficient because the schema carries most of the parameter context. It does not explain the response shape beyond 'file JSON', nor does it help the agent choose it over the many closely related 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 descriptions cover 100% of the parameters, so the baseline is 3. The description's mention of depth and mode mostly restates what the schema already says, and it adds no meaning for ids, version, geometry, or file key/URL handling.

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 names the exact REST operation.GET /v1/files/{key} — file JSON' and makes clear the tool returns a Figma file payload. It does not explicitly contrast with siblings like get_file_meta or get_nodes, so differentiation is inferred rather than stated.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool instead of get_nodes, get_file_meta, get_images, or the other file-scoped tools. The description mentions depth and mode, but offers no conditions, exclusions, or explicit alternative routing.

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