Skip to main content
Glama

Stress-test a design with real content

figma_stress_test
Idempotent

Does the design survive real content? Copies the frame once per case beside it, applies the case to the copy, runs figma_check_layout (craft plus audits) on the original and on each copy, and reports what each case broke that the…

Instructions

Does the design survive real content? Copies the frame once per case beside it, applies the case to the copy, runs figma_check_layout (craft plus audits) on the original and on each copy, and reports what each case broke that the original does not have, by the original's layer path. Cases: expand (every text grown as translation grows it, 300 % up to 10 characters down to 130 % past 70), long (names and titles at their longest), numbers (every number large: 9 → 12,345), many (lists of three or more instances tripled), empty (those lists emptied); default all. The copies are removed unless keep: true (then they stay, selected). One undo step. Result { baseline: { ok, counts }, cases: [{ case, broke: [{ kind, severity, path, detail }], ok }], kept? }. Run it on every screen before sign-off and fix what it breaks. Editors: Design; unverified: FigJam, Slides.

Input Schema

NameRequiredDescriptionDefault
keepNoLeave the copies beside the frame, selected, for the person to see. Default false.
casesNoWhich cases to run. Default all five.
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.
auditsNofigma_check_layout audits to run besides craft, which always runs, e.g. ["a11y", "copy"].
nodeIdYesThe frame to test: a screen, a card, a section.
sessionNoOptional sessionId or file name, to pick a Figma file when more than one is connected.
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. Addedv0.3.0

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that one copy per case is created beside the frame, that copies are deleted unless `keep: true` (then left selected), that the whole run is one undo step, and that STALE writes are refused unless `force` is set. It also spells out the result shape and confirms idempotent/destructive=false semantics without contradicting them.

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-loaded with the framing question and the mechanism before the case definitions, and nearly every clause carries information. The parenthetical ratio rules for `expand` are dense and slow to parse, which slightly hurts readability but not substance.

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?

There is no output schema, and the description compensates by describing the returned object (`baseline`, `cases[].broke[].kind/severity/path/detail`, `kept?`). With the mutation behavior, undo scope, platform support (Design verified; FigJam/Slides unverified) and cleanup rules all stated, an agent has everything needed to call it correctly.

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 100%, so the baseline is 3; the description earns more by explaining what each case actually does (e.g. "expand" grows text 300% up to 10 characters down to 130% past 70) and that `audits` runs besides craft, which the enum list alone does not convey.

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 — stress-test a frame by copying it per case, applying the case, and diffing layout audits against the original. It is clearly distinct from figma_check_layout, which it names as a component it invokes rather than duplicates, and it enumerates the five cases so the scope is unambiguous.

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 a clear operational trigger: "Run it on every screen before sign-off and fix what it breaks," plus defaults for `cases` (all five). It does not state when not to use it, or how to choose between this and a plain figma_check_layout run, so it stops short of explicit alternatives/exclusions.

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