figma_inspect
Reads live Figma documents in one call, accepting multiple node IDs to return compact outlines, exact properties, comparisons, prototype flows, and mismatch checks without modifying the canvas.
Instructions
READ the live Figma document in ONE call — the tool for any read (not figma_execute_code); pass every node id you need at once instead of one call per node. Default: a compact outline, one line per node (TYPE "name" #id WxH @x,y [V gap8 pad16 fill/hug a:start/center] size:fill/hug fill:#FFF stroke:#E8EAF0/0,1,1,1 r0,0,3,3 shadow:… font "text…"; non-defaults only; a TEXT named after its text drops the name; a:P/C = primaryAxisAlignItems/counterAxisAlignItems, start = MIN, center = CENTER, end = MAX, between = SPACE_BETWEEN, absent = MIN/MIN), as deep as fits the reply unless depth is given; children:N marks a node with more below. like: "<ref id>" (or several) FINDS every copy of the reference under node_ids (screens/sections; default: its section) — instances of the same component, or same name — and diffs each against it: the call for "redo these like the reference" when you don't know where the copies are. compare: "<ref id>" lists, per node_id, every difference from that reference (layout, sizing, stroke, radius, effects, clip, font, variant; children matched by name) and ends with REF lines, the reference's exact values to copy into the write (no props read needed) — one call for "make these like that one", and the check after the write. props returns exact values instead: { id: { prop: value } } (also fill, stroke, text, font, layout, padding, parent, children, main, variant, props, absolute, reactions, connector). find searches node names under node_ids (or the current page); find_text searches text content. view: "map" = canvas map (sections, breakpoints). view: "flow" = the prototype links under node_ids (a section or screens): per screen, source, trigger, action, target, transition, plus the overlay settings of overlay targets — never scan the page for reactions. context: true adds ancestor sections, breakpoints and component variants. offset skips the first N outline lines when a reply ends with pass offset=K. check returns only mismatches. Combine them freely. Changes nothing.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Alias of node_ids. | |
| find | No | Case-insensitive substring of node names to search for under node_ids (or the current page). Up to 8 matches come back with their subtree outline (as deep as fits, no extra read needed); more matches as one line each. | |
| like | No | Reference node id (several: comma-separated): find its copies under node_ids (default: the reference's top section) and list, per copy, its frame and how it differs (missing children come with the reference's own line, and REF lines at the end give the reference's exact values, so no extra read is needed). Copies that already match are listed as identical. | |
| view | No | "outline" (default) = one line per node; "map" = canvas map: sections, frames, breakpoints and component sets in a few lines; "table" = per table (found by structure) the columns: header, width, sizing, cell contents, plus row and cell ids; "flow" = prototype links (screen, source, trigger, action, target, transition, overlay settings) under node_ids (without node_ids: every top-level screen of the current page). | |
| check | No | Expectations to verify: { "12:34": { "width": 320, "fill": "#FFFFFF", "layout": "V gap8 pad16" } }. Returns { pass, fail: [{ id, key, want, got }], missing }. | |
| depth | No | Outline levels below each node (0 = the nodes only, max 6). Omit it: the outline goes as deep as fits the reply. | |
| limit | No | Max find matches (default 30). | |
| props | No | Return these properties per node instead of an outline, e.g. ["width", "layoutSizingHorizontal", "fill", "text"]; also "reactions" (prototype interactions) and "connector" (FigJam connector ends). | |
| offset | No | Skip the first N lines of the outline / found list (use the K from a '… pass offset=K' line to read the next page). | |
| target | No | fileName of a specific connected Figma document, when more than one is open (see figma_list_targets). | |
| compare | No | Reference node id: instead of an outline, list how each node_id differs from it (x/y/width and text content are skipped; height, stroke sides/align are compared). Ends with REF lines: the exact values of the differing reference nodes, to copy in figma_execute_code without a props read. 'identical' = nothing to fix. | |
| context | No | Also return, per node: ancestor sections, breakpoint siblings and component variants ({ id: context }). | |
| node_id | No | Alias of node_ids for one id. | |
| node_ids | No | Node ids to read ("12:34" or "12-34"). Omit to use the current page. | |
| find_text | No | Case-insensitive substring of TEXT content to search for under node_ids (or the current page). One line per match: #id "layer" «text» in <parent layer #id>, screen "<top frame>" (the parent is the frame to click or edit). | |
| find_type | No | Restrict find to one node type, e.g. FRAME, TEXT, INSTANCE. | |
| max_output_bytes | No | Cap on the text response in UTF-8 bytes (default 3500; in clients that spill big outputs to a file, 0 and values above 3900 become 3900). A cut outline ends with '… pass offset=K': use `offset` to page instead of raising this. |