Skip to main content
Glama

Create instance

figma_create_instance
Idempotent

Place an instance of a component, of a component set's default variant, or of the variant of a set you name. Local ids come from figma_get_local_components.

Instructions

Place an instance of a component, of a component set's default variant, or of the variant of a set you name. Local ids come from figma_get_local_components. A library component is placed by componentKey or componentSetKey: imported first, then placed (figma_import_library_assets imports several at once). Give exactly one of componentId, componentKey, componentSetKey. To change which component an existing instance shows, use figma_swap_component. Editors: Design; unverified: FigJam, Slides.

Input Schema

NameRequiredDescriptionDefault
xNo
yNo
forceNoOverwrite on purpose. A write to a node someone changed after you last read it is refused (STALE); read it again and resend instead. Pass true only when the person said to overwrite their edit.
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.
variantNoFor a set: which variant, e.g. "Size=Large, State=Hover". Default: the set's default variant.
parentIdNoDefaults to the current page (in Slides: the focused slide).
componentIdNoA COMPONENT or COMPONENT_SET id in this file.
componentKeyNoA published library component's key.
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.
componentSetKeyNoA published library component set's key.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.3.0
    • addedInput schema / properties / force
      Added value: +{
      +  "description": "Overwrite on purpose. A write to a node someone changed after you last read it is refused (STALE); read it again and resend instead. Pass true only when the person said to overwrite their edit.",
      +  "type": "boolean"
      +}
  2. First observedv0.1.1

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover safety (readOnly=false, destructive=false, idempotent=true), so the description needn't restate them. It adds genuinely non-obvious behavior: library components are imported first and then placed, which is a side effect on the file's asset list, plus a FigJam/Slides reliability caveat. It stops short of describing placement results or failure modes, but the stale/force behavior is carried by the schema.

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?

Four dense sentences with no filler, front-loaded on the action, then prerequisites, then the alternative tool. The first sentence is slightly tangled with its three parallel cases, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter creation tool with no output schema, the description supplies everything an agent needs before calling: how to source identifiers, the mutual-exclusion constraint, default placement context (deferred to schema), library import side effects, and platform support. Remaining param details are covered by 82% schema coverage.

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?

Schema coverage is 82%, so the baseline is 3; the description earns above that by explaining the semantics of the three identifier parameters and their exclusion rule, and by clarifying that `variant` takes a Figma-style string like "Size=Large, State=Hover" with a defined default. Coordinates, sizing, and idempotencyKey are left entirely to their schema descriptions.

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 opening sentence uses a specific verb ("Place an instance") and enumerates the three distinct resource cases: a component, a set's default variant, and a named variant. It is immediately distinguishable from siblings like figma_swap_component and figma_convert_to_component.

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

Usage Guidelines5/5

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

It explicitly routes the agent: local ids come from figma_get_local_components, bulk imports use figma_import_library_assets, and changing an existing instance's component requires figma_swap_component instead. It even states the mutual-exclusion rule ("Give exactly one of componentId, componentKey, componentSetKey") and the editor support matrix.

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