Skip to main content
Glama

Import image

figma_import_image
Idempotent

Place an image into a Figma file from a URL, local path, or rendered layer; fill an existing node or create a rectangle with fit, crop, or tile scale modes.

Instructions

Place a picture: from a url (http/https, fetched by Figma), a local path inside the export directory or BRIDGE_EXPORT_ROOTS (read by the bridge), or renderNodeId: a layer of this file rendered to a picture inside Figma — a styleframe snapshotted into a storyboard thumbnail, a frame on a mood board. With nodeId it becomes that node's fill; otherwise a new rectangle at the image's own proportions (a render: the layer's own size), or width/height. scaleMode fill / fit / crop / tile. PNG, JPEG or GIF, at most 4096 px a side. To look at a layer yourself, figma_export_node returns its picture to you instead of placing it. Editors: Design; unverified: FigJam, Slides.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
urlNo
nameNo
pathNoA file inside an allowed root; relative paths resolve from the export directory.
widthNo
heightNo
nodeIdNoFill this existing node instead of creating a rectangle.
sizingNoHow it sizes, as in Figma's panel: { "horizontal": "fill" } to take the parent column's width; "hug" fits content; "fixed" keeps the number.
sessionNoOptional sessionId or file name, to pick a Figma file when more than one is connected.
parentIdNo
scaleModeNoDefault "fill".
renderWidthNoPixel width of the render; its height follows the layer. Default twice the target's width, within 4096 px a side.
cornerRadiusNo
renderNodeIdNoA layer of this file to render as the picture. Not with `url` or `path`.
idempotencyKeyNoCaller-owned retry key, ≤128 chars. Re-calling with the same key never executes twice: it returns the existing result, or waits for the op still in flight. Supply your own for anything large — if the MCP client times out (rather than the bridge), only a key you chose can be used to retry safely.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnly=false, destructive=false, idempotent=true), and the description layers on genuinely useful behavior: accepted formats (PNG/JPEG/GIF), the 4096 px per-side limit, what placement does to the target node (becomes its fill vs creates a rectangle), and editor support ('Design; unverified: FigJam, Slides'). It omits retry/idempotency semantics, which live only in the schema field text, so it is not fully self-contained.

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?

Front-loads the core action and keeps everything to a single dense passage with no filler sentences. The heavy em-dash and parenthetical nesting makes it slightly harder to scan than ideal, but each clause carries distinct information rather than restating the name or schema.

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 complex 16-parameter mutation tool with a nested object and no output schema, it conveys the decision points an agent needs: source selection, placement behavior, format limits, and environment support. The remaining omissions (position/name params, idempotency guidance) are minor and partly carried by the schema.

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?

Against 50% schema coverage it compensates on the differentiating parameters: it explains how url, path and renderNodeId differ in who fetches/reads the bytes, that nodeId turns the image into a fill, and that width/height govern the new rectangle. Several params (x, y, name, parentId, cornerRadius) remain undocumented in both description and schema, leaving a real gap.

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?

States a specific verb and resource ('Place a picture') and immediately enumerates the three input modes (url, path, renderNodeId) plus the two placement outcomes (fill an existing nodeId vs create a new rectangle). It cleanly distinguishes itself from siblings like figma_export_node and figma_create_rectangle without the agent opening any schema.

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?

Gives explicit conditional routing: 'To look at a layer yourself, figma_export_node returns its picture to you instead of placing it' names the alternative and the condition that selects it. It also explains what each source mode does, giving clear context for which parameter to reach for. It stops short of stating hard exclusions (e.g., when not to use a url vs a render), so it is strong but not exhaustive.

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