Skip to main content
Glama

Roll back to a savepoint

figma_rollback
DestructiveIdempotent

Take back everything you did since a savepoint, in one call, only when that is safe. Refused with ROLLBACK_BLOCKED before any undo when, since the savepoint, a person or a collaborator changed anything on the page the plugin watches, a…

Instructions

Take back everything you did since a savepoint, in one call, only when that is safe. Refused with ROLLBACK_BLOCKED before any undo when, since the savepoint, a person or a collaborator changed anything on the page the plugin watches, a local variable or style changed without you, or the page was switched by anyone but you: an undo would take their edit too. Your own changes reported late do not block it. The refusal lists what changed (partial.changed) and offers the safe part: figma_delete_nodes on the nodes you made since (partial.safe), which touches nobody's edits. Otherwise one undo per call since the savepoint, then a check that the nodes made since are gone: { savepointId, undone, verified, stillThere, calls }. Use it instead of figma_undo_step. Requires confirm: true. Editors: Design; unverified: FigJam, Slides.

Input Schema

NameRequiredDescriptionDefault
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.
confirmYesMust be true: you have read the description.
sessionNoOptional sessionId or file name, to pick a Figma file when more than one is connected.
savepointIdYesThe savepoint to go back to, as figma_savepoint returned it ("sp-3").
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.8/5.0
Behavior5/5

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

Annotations already flag destructive=true and idempotent=true, but the description adds far more: the exact refusal code and its trigger set, that refusal happens before any undo, that your own late changes are exempt, one-undo-per-call semantics, a post-undo verification step, the return fields {savepointId, undone, verified, stillThere, calls}, the confirm:true gate, and editor coverage (Design; unverified FigJam, Slides). That is unusually rich disclosure of what could be taken and when it will refuse.

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 opening sentence front-loads the action and the safety caveat, and no sentence is filler — refusal causes, fallback tool, undo count, return shape, requirement, editor support all carry weight. It is, however, a single dense paragraph of ~150 words that an agent must parse in one pass; tighter grouping would help.

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?

No output schema exists, but the description supplies the response shape, the failure code and its partial payloads, the confirm precondition, and platform coverage. For a destructive rollback tool this covers everything needed to call it correctly and to interpret a refusal.

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 schema documents force, confirm, session, savepointId and idempotencyKey thoroughly; baseline would be 3. The description adds one meaningful gating condition ('Requires confirm: true') and ties the refusal behavior to when force does or does not help, but it doesn't reinterpret individual params beyond that.

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?

Opens with a specific verb+resource+scope: 'Take back everything you did since a savepoint, in one call, only when that is safe.' It explicitly separates itself from figma_undo_step ('Use it instead of figma_undo_step') and points at figma_delete_nodes for the safe-part fallback, so an agent can choose it without 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 Guidelines5/5

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

The when-not conditions are stated precisely: refused with ROLLBACK_BLOCKED if a person/collaborator touched the watched page, a variable/style changed without you, or the page was switched by anyone else, and 'Your own changes reported late do not block it.' It names a concrete alternative (figma_undo_step) and a fallback tool (figma_delete_nodes) for the partial.safe case, leaving nothing to inference.

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