Skip to main content
Glama
arimunandar

figsnap-mcp

by arimunandar

Put an image on the canvas

figma_insert_image
Destructive

Inserts a base64-encoded PNG, JPG, or GIF into a Figma file as a new rectangle or as the fill of a specified layer, enabling local image placement without external network access.

Instructions

Places a PNG, JPG or GIF, passed as base64. With nodeId it becomes that layer’s fill, which is how a placeholder gets its picture; without one it arrives as a new rectangle at its own pixel size.

Base64 rather than a URL on purpose: the plugin’s manifest allows only the relay and the local daemon as network destinations, so the plugin cannot fetch an image from anywhere a designer keeps one. Read the file yourself and send the bytes. The cap is 700KB of base64, which is roughly a 500KB image.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
dataYesThe image as base64. A data: URL prefix is accepted and ignored.
nameNo
widthNoDefault: the image’s own width.
heightNoDefault: the image’s own height.
nodeIdNoFill this layer instead of making a new one.
parentIdNoWhere a new rectangle goes. Default: the current page.
scaleModeNoHow it sits in the frame. Default FILL.
Install Server

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate destructiveHint=true and readOnlyHint=false. The description adds context beyond annotations: the reason for base64 (network constraints), the 700KB cap, and the behavior of becoming the fill of a node (implying replacement). It does not contradict annotations and provides useful operational constraints.

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 well-structured and economical: a single opening sentence states the core behavior, followed by a short paragraph explaining modes and constraints. No redundant fluff, and the key limitation 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?

For a tool with 9 parameters and no output schema, the description covers the essential behavioral choices (modes, size semantics, network limitation, cap). Parameters are sufficiently documented in the schema, and the description fills gaps not covered elsewhere. It does not explain edge cases like invalid nodeId, but that's not required for correct invocation.

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 67% schema coverage, the description adds meaningful value: it explains the base64 vs URL rationale, the cap, and clarifies the two use modes (fill vs. new rectangle). It complements the schema descriptions for parameters like data, width/height, and nodeId by giving real-world context.

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 ('Places'), resource types (PNG, JPG, GIF), and the input format (base64). It also clearly differentiates the two operational modes (fill vs. new rectangle), which distinguishes it from siblings like figma_set_fill or figma_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 explains the intended use case (e.g., placeholder images) and why base64 is used (network restrictions in the manifest). It gives clear context for when to use it, but does not explicitly name alternative tools or conditions for when not to use it, leaving some inference to the agent.

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

Other Tools

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/arimunandar/figsnap-mcp'

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