← Back to all apps

Figma

Creativeby Figma, Inc.
Launched Sep 29, 2026 on ChatGPT

The Figma MCP server helps you pull in Figma context and generate high-quality code that aligns with your codebase and design intent. Use the MCP server to retrieve code resources from Figma Design or Make files, and turn your ideas into production apps.

Key features: • Generate code from selected frames or nodes

  • Select a frame in Figma or provide a node URL to have an AI agent turn your design into code.

• Extract design context from layers

  • Pull out variables, components, and layouts from a design to ensure builds adhere to design patterns.

• Code smarter with Code Connect

  • Boost output quality by reusing your actual components, the MCP server informs AI agents about existing components derived from Code Connect information.

• Map your flows with diagrams

  • The Figma MCP server can turn your Claude prompts into flow charts, Gantt charts, or other diagrams in FigJam.

Note: The get_screenshot tool is currently limited to returning a descripton of screenshots in Figma when called in Claude and Claude Code. See developer term [here](https://www.figma.com/legal/developer-terms/)

45ChatGPT Tools
9Claude Tools
Figma, Inc.Developer
CreativeCategory

Use Cases

creative

Available Tools

Add Code Connect Mapping

add_code_connect_map
Full Description

Map a Figma node to a code component in your codebase using Code Connect. Use the nodeId parameter to specify a node id. Use the fileKey parameter to specify the file key. If a URL is provided, extract the node id and file key from the URL, for example, if given the URL https://figma.com/design/:fileKey/:fileName?node-id=1-2, the extracted nodeId would be 1:2 and the fileKey would be :fileKey. If the URL does not include node-id, ask the user for a node-specific URL. Do not pass an empty or guessed nodeId.

Parameters (5 required, 4 optional)
Required
componentNamestring

The name of the component to map to in the source code

fileKeystring

The key of the Figma file to use. If the URL is provided, extract the file key from the URL. The given URL must be in the format https://figma.com/design/:fileKey/:fileName?node-id=:int1-:int2. The extracted fileKey would be `:fileKey`. Only design files are supported: the URL must be a /design/ URL. /slides/, /board/, and /make/ URLs are not allowed.

labelstring

The framework or language label for this Code Connect mapping. Valid values: React, Web Components, Vue, Svelte, Storybook, Javascript, Swift, Swift UIKit, Objective-C UIKit, SwiftUI, Compose, Java, Kotlin, Android XML Layout, Flutter, Markdown

Options:ReactWeb ComponentsVueSvelteStorybookJavascriptSwiftSwift UIKitObjective-C UIKitSwiftUIComposeJavaKotlinAndroid XML LayoutFlutterMarkdown
nodeIdstring

The ID of the node in the Figma document, eg. "123:456" or "123-456". This should be a valid node ID in the Figma document. Do not pass an empty string for node_id.

sourcestring

The location of the component in the source code

Optional
clientFrameworksstring

A comma separated list of frameworks used by the client in the current context, e.g. `react`, `react-native`, `expo`, `vue`, `django`, etc. If you do not know, please list `unknown`. This is metadata only for logging purposes—the tool output does not change based on this value, so do not retry with different variations.

clientLanguagesstring

A comma separated list of programming languages used by the client in the current context in string form, e.g. `javascript`, `typescript`, `html,css,typescript`, etc. If you do not know, please list `unknown`. This is metadata only for logging purposes—the tool output does not change based on this value, so do not retry with different variations.

templatestring

The executable JS template code for a Code Connect template. When provided, creates a figmadoc-type record (full template) instead of a component_browser mapping (simple mapping).

templateDataJsonstring

JSON string of template metadata. May include isParserless (boolean), imports, nestable, props fields. If omitted when template is provided, defaults to {}.

Authorize Figma connection

authorize_mcp_app
Full Description

Authorize the Figma app authentication session through the current OAuth connection. Called only by the app.

Parameters (1 required)
Required
init_tokenstring

Public, short-lived initialization token from the Figma authentication iframe.

Create Design System Rules

create_design_system_rules
Full Description

Provides a prompt to generate design system rules for this repo.

Parameters (0 required, 2 optional)
Optional
clientFrameworksstring

A comma separated list of frameworks used by the client in the current context, e.g. `react`, `vue`, `django` etc. If you do not know, please list `unknown`. This is used for logging purposes to understand which frameworks are being used. If you are unsure, it is better to list `unknown` than to make a guess

clientLanguagesstring

A comma separated list of programming languages used by the client in the current context in string form, e.g. `javascript`, `html,css,typescript`, etc. If you do not know, please list `unknown`. This is used for logging purposes to understand which languages are being used. If you are unsure, it is better to list `unknown` than to make a guess.

Create Generative Plugin

create_generative_plugin
Full Description

You MUST load the figma-generative-plugins skill before calling this tool. If it is not installed, read skill://figma/figma-generative-plugins/SKILL.md with resources/read or get_figma_skill. Use this for requests to build, create, upload, or publish a “Figma plugin,” “generative plugin,” or “custom tool.” It creates a generative plugin in the account library; it does not install an existing Figma Community plugin. Creates a new generative plugin in the authenticated user's account library and returns its id. The plugin starts as a working scaffold — a runnable starter that draws a square — so it is a structural starting point, not a finished plugin: follow this call with the update tool to replace the scaffold's source with the behavior the user asked for. planKey names the plan that will own the plugin; take it from the plans list returned by whoami.

Parameters (3 required)
Required
descriptionstring

One-line description of what the resource does.

namestring

Display name for the new resource.

planKeystring

The team or organization key (e.g. "team::1234567890" or "organization::1234567890"). Use the `key` field verbatim from one of the user's plans. If the user has more than one plan, ask which one to use before calling.

Create New File

create_new_file
Full Description

Create a new blank Figma file. IMPORTANT: You MUST load the /figma-create-new-file skill BEFORE every call to this tool, if it exists. NEVER call this tool without loading that skill first if it exists. By default the file is placed in the authenticated user's drafts folder; If specified it can be placed inside a project. Use this tool when you need a new file to work with before calling use_figma. Returns the new file key and URL. Always include all three required arguments: fileName, planKey, and editorType. For editorType, use "design", "figjam", or "slides". If the user already provided a planKey, use it directly. Otherwise, call the whoami tool first to get the list of plans. If the user has one plan, use its "key" field. If multiple, ask the user which team or organization to use. Optionally accepts a projectId. If the URL is of the format https://figma.com/files/project/:projectId, https://figma.com/files/:orgId/project/:projectId, or https://figma.com/files/team/:teamId/project/:projectId then use the :projectId as the projectId.

Parameters (3 required, 1 optional)
Required
editorTypestring

The type of Figma file to create. "design" creates a Figma design file. "figjam" creates a FigJam whiteboard file. "slides" creates a Figma Slides presentation file.

Options:designfigjamslides
fileNamestring

The name for the new Figma file.

planKeystring

The team or organization key (e.g. "team::1234567890" or "organization::1234567890"). Use the `key` field verbatim from one of the user's plans. If the user has more than one plan, ask which one to use before calling.

Optional
projectIdstring

The id of the project (folder) in Figma. If the URL is provided, extract the project id from the URL. Common URL formats include https://figma.com/files/project/:projectId, https://figma.com/files/:orgId/project/:projectId, and https://figma.com/files/team/:teamId/project/:projectId. The extracted projectId would be `:projectId`.

Create Shader

create_shader
Full Description

You MUST load the figma-shaders skill before calling this tool. If it is not installed, read skill://figma/figma-shaders/SKILL.md with resources/read or get_figma_skill. Use this for requests to build, create, upload, or publish a “Figma shader,” “shader effect,” “shader fill,” “custom effect,” “custom fill,” or “procedural shader.” Creates a new shader effect or fill in the authenticated user's account library and returns its id. Set kind to effect for a shader that transforms the layer beneath it, or fill for a shader that generates its own pixels. The resource starts as a working scaffold, so follow this call with the update tool to replace the scaffold's source with the shader the user asked for. planKey names the plan that will own the shader; take it from the plans list returned by whoami.

Parameters (4 required)
Required
descriptionstring

One-line description of what the resource does.

kindstring

The shader kind: effect transforms the layer beneath it; fill generates its own pixels.

Options:effectfill
namestring

Display name for the new resource.

planKeystring

The team or organization key (e.g. "team::1234567890" or "organization::1234567890"). Use the `key` field verbatim from one of the user's plans. If the user has more than one plan, ask which one to use before calling.

Download Assets

download_assets
Full Description

Download assets from a Figma file for a single node: an exported render, the original source images, and SVGs of the vector layers. The response contains: (1) export — an exported image of the whole node; (2) rawImages — original uploaded source images (JPEG, PNG, GIF, WebP) found as fills anywhere in the node subtree (capped at 20); and (3) svgAssets — SVGs for the vector layers in the subtree that are best represented as SVG (icons, logos, simple illustrations), the same set get_design_context surfaces (capped at 20). Each raw image carries a format field with its actual image format (e.g. "png", "jpeg", "gif", "webp") so you can save it with the correct file extension; if the format cannot be determined it is reported as "original". Each svgAssets entry has format "svg". Call this tool for asset URLs get_design_context has not already provided: the export render of the whole node, a specific format or scale, or assets for a node you have not requested design context for. Export precedence: when you pass defaultFormat and/or defaultScale, those override the export settings configured on the node in Figma. When you omit them, the node-configured export settings are used if present, otherwise png at scale 1. Pass defaultFormat or defaultScale only when the user explicitly asks for a specific format, size, or resolution. For cross-file image transfer, use the raw image URLs with upload_assets. URLs are temporary — download promptly. Works on Figma design files (URL path /design/), Figma Slides (/slides/), and FigJam boards (/board/). Does NOT work on Figma Make files (/make/).

Parameters (2 required, 2 optional)
Required
fileKeystring

The key of the Figma file to use. If the URL is provided, extract the file key from the URL. The given URL must be in the format https://figma.com/design/:fileKey/:fileName?node-id=:int1-:int2. The extracted fileKey would be `:fileKey`.

nodeIdstring

The ID of the node in the Figma document, eg. "123:456" or "123-456". This should be a valid node ID in the Figma document. Do not pass an empty string for node_id.

Optional
defaultFormatstring

Export format. When you provide this, it overrides any export settings configured on the node in Figma. When you omit it, the node-configured export format is used if present, otherwise png. Set this only when the user asks for a specific format.

Options:pngjpgsvgpdf
defaultScalenumber

Export scale (resolution multiplier). When you provide this, it overrides any export settings configured on the node in Figma. When you omit it, the node-configured export scale is used if present, otherwise 1. Set this only when the user asks for a specific size or resolution.

Export Video

export_video
Full Description

Export a Figma timeline node as an MP4 video. This tool only produces MP4 — GIF and animated SVG export are not supported yet. Renders the timeline server-side and returns a presigned download URL. The file stays available for ttlSeconds (defaults to 1 hour, clamped server-side to [30s, 7d]); use availableUntil in the response to know when it is deleted. Some renders finish in seconds, others take minutes; if the render hasn't finished within the handler budget, the response includes a jobId and status: "processing" — re-invoke export_video with { fileKey, jobId } after 10–15s to poll. Required: fileKey and either nodeId (to start a new export) or jobId (to poll). The nodeId must be the top-level frame that owns the timeline — in a design file a frame placed directly on the page or in a section, and in Slides the slide itself (not a layer inside it) — not a nested layer or sub-clip. If you animated a descendant, pass its containing top-level frame (the slide, in Slides); if get_motion_context returns a timelineCohorts entry, its rootNodeId is that frame. Use the quality field ("low"/"medium"/"high") to control output size.

Parameters (1 required, 6 optional)
Required
fileKeystring

The key of the Figma file to use. If the URL is provided, extract the file key from the URL. The given URL must be in the format https://figma.com/design/:fileKey/:fileName?node-id=:int1-:int2. The extracted fileKey would be `:fileKey`.

Optional
constraintobject

Output-size constraint. SCALE multiplies the node's natural size (value is the multiplier, e.g. 2 = 2x); WIDTH / HEIGHT pin that dimension to an absolute pixel count and scale the other to preserve aspect ratio. Optional; omit to render at the node's natural size (1x). Clamped server-side to a max 10x scale / 4096px per dimension. Ignored when polling with jobId.

fpsinteger

Frames per second for the rendered MP4 (5-60). Optional; the server picks a default.

jobIdstring

Returned from a previous call when the export was still rendering. Pass this to poll. Provide nodeId OR jobId, never both — the call is rejected if both are set. When polling, fps/quality/ttlSeconds are ignored (they were fixed when the job was created).

nodeIdstring

The timeline node to export. Required when starting a new export. Provide nodeId OR jobId, never both — the call is rejected if both are set. Must be the top-level frame that owns the timeline — in a design file a frame placed directly on the page or in a section, and in Slides the slide itself (not a layer inside it) — not a nested layer or sub-clip. If you animated a descendant, pass its containing top-level frame (the slide, in Slides); if get_motion_context returns a `timelineCohorts` entry, its `rootNodeId` is that frame.

qualitystring

Render quality preset. Higher quality means a larger file. Optional; the server picks a default.

Options:lowmediumhigh
ttlSecondsinteger

How long (in seconds) the rendered MP4 is retained on the server. Each poll reissues a fresh presigned download URL; once this window elapses the file is deleted and the job is no longer reachable. Clamped server-side to [30, 7d].

Generate Asset

generate_asset
Full Description

Generates marketing and creative assets in Figma Buzz, including but not limited to social media posts, banners, digital ads, posters, hiring materials, event materials, one-pagers, or flyers, greeting cards, invitations, resumes, business cards, and invoices.

Use this tool when you need polished, visual content suitable for social, print, or digital contexts and marketing, communication, personal, or professional purposes. Do not use this tool when you need application UI, websites, diagrams, or presentation decks. For diagrams, use the generate_diagram tool instead. For presentation decks, use generate_deck.

This tool requires an asset description, list of use cases, list of styles, list of aspect ratios, and list of search keywords. The tool does not have context on previous requests or chat history. The asset description you provide should be fully self-contained and include all relevant details with the context in mind but without referencing earlier prompts.

This tool will return up to three visual assets (thumbnails and URLs) suitable for further edits in Figma Buzz.

Parameters (6 required, 3 optional)
Required
aspectRatiosarray

List of applicable aspect ratios ranked by relevance. Do not include more than the singular relevant aspect ratio if the user requests a specific format (e.g. Instagram story): - 0.27: google skyscraper ad - 0.52: linkedin post - 0.56: 9:16 vertical, social story/reel/post, mobile video, tall poster - 0.67: 2:3, Pinterest, tall poster - 0.71: 5:7, photo print, invitation, poster - 0.75: 3:4 poster - 0.77: 8.5×11 Letter portrait, posters, research posters, one pager, flyers, and printed documents - 0.8: 4:5, social ads, poster - 1: 1:1 square, social ads - 1.2: 6:5 slide - 1.4: 7:5 photo print, postcard - 1.5: 3:2 name tag - 1.78: 16:9 widescreen, YouTube thumbnails - 1.9: wide facebook post - 1.91: Facebook event cover photo - 1.92: wide linkedin post - 2: 2:1 banner - 2.7: facebook cover photo - 3: 3:1 banner - 4: 4:1 LinkedIn profile banner - 5: 5:1 banner, YouTube ad - 6: 6:1 banner - 8.09: 8:1 leaderboard, Google ad

assetDescriptionstring

A self-contained prompt describing the asset to generate, as if written by a creative NYC brand designer. Include user intent, specific colors to use (only one set, do not give options), and the tone of the copy. Do not include specific copy unless the user specifies them. Do not add any layout, typography, or format requirements.

searchKeywordsarray

A short list of key terms or phrases that capture the core topic or intent of the asset to generate

stylesarray

List of applicable styles that define the visual aesthetic or overall look and feel of the asset, ordered with most relevant first. The valid values are: bold, minimal, playful, elegant, vibrant, organic, nostalgic, illustrated

titlestring

The title of the asset to generate.

useCasesarray

List of applicable use cases ordered with most relevant first. The valid values are: social_post, ad, flyer, poster, banner, invitation, announcement, event, promotion, product_showcase, celebration, sale, linkedin, instagram, resume, quote, invoice, one_pager, collage, letter, itinerary, name_tag, thank_you_card, birthday_card, testimonial, letterhead, event_speaker, youtube_thumbnail, hiring, social_proof, research_poster, business_card, save_the_date

Optional
planKeystring

Optional. The team or organization key where the generated Buzz draft file should be saved. The key must start with "team::" or "org::", but do not use these abbreviations in user-facing messages.

savePlanKeyboolean

Optional. Indicates whether to use the same plan for future generations. Do not provide this parameter unless the user specifically requests it, and a planKey is also provided.

userIntentstring

A description of what the user is trying to accomplish with this tool call. Important: Do not add extraneous information other than what the user provides.

Generate Deck

generate_deck
Full Description

Generates polished and fully editable presentation decks in Figma Slides, suitable for a wide range of use cases including pitches, slideshows, portfolios, readouts, workshops, research summaries, moodboards, training materials, retrospectives, event recaps, and strategic reviews. This tool produces visually refined, ready-to-edit decks that can be customized for personal, creative, professional, corporate, and creative contexts.

Use this tool when you need a slide deck that communicates ideas, findings, or proposals in a visually compelling way. Decks are optimized for storytelling, clarity, and design consistency—ideal for presenting to teams, clients, stakeholders, or audiences.

Do not use this tool for designing application UIs, websites, flow diagrams, or standalone marketing assets. For FigJam diagrams, use the generate_diagram tool instead.

This tool requires the following parameters to generate high-quality outputs: objectives, outline, style, color palette, use case, and theme. This tool does not retain chat history or conversational context beyond what you provide in the current request. To ensure best results, include all relevant details directly in your prompt, describing your goals and constraints clearly and completely. The prompt should be self-contained and include all relevant details with the context in mind but without referencing earlier prompts.

This tool will return up to three unique slide deck options, each including a thumbnail and Figma Slides URL for editing within Figma. These generated decks serve as starting points for refinement, collaboration, and final presentation design.

Parameters (5 required, 5 optional)
Required
descriptionstring

A description of the deck to generate. It must include the topic, audience, style/tone, and any other relevant information in this exact order. Be as detailed as possible and use context from the conversation to help generate the deck.

objectivesarray
outlinearray

A slide-by-slide outline of the deck. Each outline item includes the slide's subject, purpose, role, content, and visuals. The role represents the slide's layout type; aim to use a variety of roles to keep the deck interesting; do not use the same role for more than two slides in a row; ensure that each deck has at least two layouts with images. The content should be a list of specific facts, examples, or points; if the user's prompt is not specific enough, look up relevant information instead of using ambiguous language or abstract meta-commentary. The visuals should be a list of detailed descriptions of the images for the slide. Both the content and visuals should match the selected role.

templateQueryobject
titlestring

The title of the deck to generate.

Optional
planKeystring

The team or organization key (e.g. "team::1234567890" or "organization::1234567890"). Use the `key` field verbatim from one of the user's plans. If the user has more than one plan, ask which one to use before calling.

rulesstring

Optional. Concrete, enforceable do/don't rules specified by the user that must be followed. Only set this if the user has provided specific rules.

savePlanKeyboolean

Optional. Indicates whether to use the same plan for future generations. Do not provide this parameter unless the user specifically requests it, and a planKey is also provided.

themeobject

The theme of the slide deck. The palette is a list of accessible colors in hex format well-suited for both text, accent, and background colors. The paletteDescription is a concise phrase that describes the colors in the palette. The palette should be based on two primary colors related to the presentation content, with all other colors being tints, shades, or tones derived from these two primary colors.

userIntentstring

A description of what the user is trying to accomplish with this tool call. Important: Do not add extraneous information other than what the user provides.

Generate Diagram

generate_diagram
Full Description

Create a flowchart, decision tree, gantt chart, sequence diagram, state diagram, or entity relationship diagram in FigJam, using Mermaid.js. Generated diagrams should be simple, unless a user asks for details. This tool also does not support generating Figma designs, class diagrams, timelines, venn diagrams, or other Mermaid.js diagram types. This tool also does not support font changes, or moving individual shapes around -- if a user asks for those changes to an existing diagram, encourage them to open the diagram in Figma. If the tool is unable to complete the user's task, reference the error that is passed back. Do not use the create_new_file tool prior to creating a diagram using this tool; generate_diagram creates its own files.

Parameters (2 required, 5 optional)
Required
mermaidSyntaxstring

Mermaid.js code for the diagram. Keep diagrams simple, unless the user has detailed requirements. Only the following diagram types are supported: graph, flowchart, sequenceDiagram, stateDiagram, stateDiagram-v2, gantt, and erDiagram. Make sure to use correct Mermaid.js syntax. For graph, flowchart, or entity relationship diagrams, use LR direction by default and put all shape and edge text in quotes (eg. ["Text"], -->|"Edge Text"|, --"Edge Text"-->). Do not use emojis in the Mermaid.js code. Do not use to represent new lines. Feel free to use the full range of shapes and connectors that Mermaid.js syntax offers. For graph and flowchart diagrams only, you can use color styling--but do so sparingly unless the user asks for it. In gantt charts, do not use color styling. In sequence diagrams, do not use notes. Do not use the word "end" in classNames.

namestring

A human-readable title for the diagram. Keep it short, but descriptive.

Optional
fileKeystring

Optional. The key of an existing FigJam file to add the diagram to. Extract from a Figma URL like figma.com/board/{fileKey}/... When provided, the diagram is placed directly in this file instead of creating a new one. The user must have edit access to the file.

planKeystring

The team or organization key (e.g. "team::1234567890" or "organization::1234567890"). Use the `key` field verbatim from one of the user's plans. If the user has more than one plan, ask which one to use before calling.

savePlanKeyboolean

Optional. Indicates whether to use the same plan for future generations. Do not provide this parameter unless the user specifically requests it, and a planKey is also provided.

useArchitectureLayoutCodestring

Optional. To generate a diagram using the software architecture layout, pass the code from the architecture-diagram-instructions resource. Omit this parameter for standard diagrams.

userIntentstring

A description of what the user is trying to accomplish with this tool call. Important: Do not add extraneous information other than what the user provides.

Generate Figma Design

generate_figma_design
Full Description

Capture a live web page by URL into an *existing* Figma design file. Use this tool when the user wants to capture, screenshot, or push a running webpage (localhost or external URL) into Figma. REQUIRES an existing fileKey — if the user does not already have a Figma file, first call create_new_file (load the figma-create-new-file skill for the plan-resolution contract) and reuse the returned file_key here. Works with both local dev servers (localhost) and external websites. For LOCAL projects: explore the user's codebase to identify the page, dev server command, and URL before calling. Call this tool with a fileKey (no captureId) to get the capture script + a captureId, then poll with the captureId every 5 seconds (up to 10 times) until status is 'completed'. Each capture ID is single-use. The maximum capture size, including serialized images, is 50MB.

USING generate_figma_design WITH use_figma:

  • For web apps, use BOTH tools in parallel: run this tool (generate_figma_design) to capture a pixel-perfect layout, and use use_figma with search_design_system to build the screen from design system components.
  • Once both complete, refine the use_figma output to match the pixel-perfect layout from this tool's capture, then delete this tool's output (it was used as a layout reference only).
  • For non-web apps (e.g. iOS), use use_figma only.
  • For updating/syncing a page already in Figma, use use_figma only.
Parameters (1 required, 2 optional)
Required
fileKeystring

The key of the Figma file to use. If the URL is provided, extract the file key from the URL. The given URL must be in the format https://figma.com/design/:fileKey/:fileName?node-id=:int1-:int2. The extracted fileKey would be `:fileKey`. Only design files are supported: the URL must be a /design/ URL. /slides/, /board/, and /make/ URLs are not allowed.

Optional
captureIdstring

ID returned from the initial call. If provided, polls for capture completion. Each capture ID is single-use and captures exactly one page; call this tool once per page to capture multiple pages, all targeting the same fileKey.

nodeIdstring

Optional node ID to append the capture under. If not provided, a new page is created in the file.

Get Code Connect Mapping

get_code_connect_map
Full Description

Get a mapping of {[nodeId]: {codeConnectSrc: e.g. location of component in codebase, codeConnectName: e.g. name of component in codebase} E.g. {'1:2': { codeConnectSrc: 'https://github.com/foo/components/Button.tsx', codeConnectName: 'Button' } }. Use the nodeId parameter to specify a node id. Use the fileKey parameter to specify the file key. If a URL is provided, extract the node id and file key from the URL, for example, if given the URL https://figma.com/design/:fileKey/:fileName?node-id=1-2, the extracted nodeId would be 1:2 and the fileKey would be :fileKey. If the URL does not include node-id, ask the user for a node-specific URL. Do not pass an empty or guessed nodeId.

Parameters (2 required, 1 optional)
Required
fileKeystring

The key of the Figma file to use. If the URL is provided, extract the file key from the URL. The given URL must be in the format https://figma.com/design/:fileKey/:fileName?node-id=:int1-:int2. The extracted fileKey would be `:fileKey`.

nodeIdstring

The ID of the node in the Figma document, eg. "123:456" or "123-456". This should be a valid node ID in the Figma document. Do not pass an empty string for node_id.

Optional
codeConnectLabelstring

The label used to fetch Code Connect information for a particular language or framework when multiple Code Connect mappings exist.

Get Code Connect Suggestions

get_code_connect_suggestions
Full Description

Get AI-suggested strategy for linking a Figma node to code components via Code Connect. Workflow: call this tool → review suggestions with the user → call send_code_connect_mappings to save the approved mappings.

Use the nodeId parameter to specify a node id. Use the fileKey parameter to specify the file key. If a URL is provided, extract the node id and file key from the URL, for example, if given the URL https://figma.com/design/:fileKey/:fileName?node-id=1-2, the extracted nodeId would be 1:2 and the fileKey would be :fileKey. If the URL does not include node-id, ask the user for a node-specific URL. Do not pass an empty or guessed nodeId.

Parameters (2 required, 3 optional)
Required
fileKeystring

The key of the Figma file to use. If the URL is provided, extract the file key from the URL. The given URL must be in the format https://figma.com/design/:fileKey/:fileName?node-id=:int1-:int2. The extracted fileKey would be `:fileKey`. Only design files are supported: the URL must be a /design/ URL. /slides/, /board/, and /make/ URLs are not allowed.

nodeIdstring

The ID of the node in the Figma document, eg. "123:456" or "123-456". This should be a valid node ID in the Figma document. Do not pass an empty string for node_id.

Optional
clientFrameworksstring

A comma separated list of frameworks used by the client in the current context, e.g. `react`, `react-native`, `expo`, `vue`, `django`, etc. If you do not know, please list `unknown`. This is metadata only for logging purposes—the tool output does not change based on this value, so do not retry with different variations.

clientLanguagesstring

A comma separated list of programming languages used by the client in the current context in string form, e.g. `javascript`, `typescript`, `html,css,typescript`, etc. If you do not know, please list `unknown`. This is metadata only for logging purposes—the tool output does not change based on this value, so do not retry with different variations.

excludeMappingPromptboolean

Whether to exclude the prompt text and images from the response, returning only a lightweight list of unmapped components.

Get Code Connect Context

get_context_for_code_connect
Full Description

Get structured component metadata including properties, variants, and descendant tree for a Figma component or component set. Returns property definitions with types and variant options, and a tree of descendant instances and text nodes with their property references. Designed for creating Code Connect template files. Use the nodeId parameter to specify a node id. Use the fileKey parameter to specify the file key. If a URL is provided, extract the node id and file key from the URL, for example, if given the URL https://figma.com/design/:fileKey/:fileName?node-id=1-2, the extracted nodeId would be 1:2 and the fileKey would be :fileKey. If the URL does not include node-id, ask the user for a node-specific URL. Do not pass an empty or guessed nodeId.

Parameters (2 required, 2 optional)
Required
fileKeystring

The key of the Figma file to use. If the URL is provided, extract the file key from the URL. The given URL must be in the format https://figma.com/design/:fileKey/:fileName?node-id=:int1-:int2. The extracted fileKey would be `:fileKey`. Only design files are supported: the URL must be a /design/ URL. /slides/, /board/, and /make/ URLs are not allowed.

nodeIdstring

The ID of the node in the Figma document, eg. "123:456" or "123-456". This should be a valid node ID in the Figma document. Do not pass an empty string for node_id.

Optional
clientFrameworksstring

A comma separated list of frameworks used by the client in the current context, e.g. `react`, `react-native`, `expo`, `vue`, `django`, etc. If you do not know, please list `unknown`. This is metadata only for logging purposes—the tool output does not change based on this value, so do not retry with different variations.

clientLanguagesstring

A comma separated list of programming languages used by the client in the current context in string form, e.g. `javascript`, `typescript`, `html,css,typescript`, etc. If you do not know, please list `unknown`. This is metadata only for logging purposes—the tool output does not change based on this value, so do not retry with different variations.

Get Design Context

get_design_context
Full Description

Get design context for a Figma node — the primary tool for design-to-code workflows. Returns reference code, a screenshot, and contextual metadata that must be adapted to the target project.

IMPORTANT: You MUST load figma-design-to-code guidance BEFORE calling this tool. Prefer the /figma-design-to-code skill if available; otherwise read the skill://figma/figma-design-to-code/SKILL.md MCP resource.

NEVER call this tool without loading that guidance first — skipping it produces code that ignores the target project's existing components, design tokens, and conventions.

Use the nodeId parameter to specify a node id. Use the fileKey parameter to specify the file key. If a URL is provided, extract the node id and file key from the URL, for example, if given the URL https://figma.com/design/:fileKey/:fileName?node-id=1-2, the extracted nodeId would be 1:2 and the fileKey would be :fileKey. If the URL does not include node-id, ask the user for a node-specific URL. Do not pass an empty or guessed nodeId. If the URL is of the format https://figma.com/design/:fileKey/branch/:branchKey/:fileName then use the branchKey as the fileKey. If the URL is of the format https://figma.com/make/:makeFileKey/:makeFileName then use the makeFileKey to identify the Figma Make file. Only for Figma Make files (URLs containing /make/), and only when calling get_design_context, assume the nodeId is 0:1. The response will contain a code string and a JSON of download URLs for the assets referenced in the code. It will also include a screenshot of the node for context by default.

Parameters (2 required, 6 optional)
Required
fileKeystring

The key of the Figma file to use. If the URL is provided, extract the file key from the URL. The given URL must be in the format https://figma.com/design/:fileKey/:fileName?node-id=:int1-:int2. The extracted fileKey would be `:fileKey`.

nodeIdstring

The ID of the node in the Figma document, eg. "123:456" or "123-456". This should be a valid node ID in the Figma document. Do not pass an empty string for node_id.

Optional
clientFrameworksstring

A comma separated list of frameworks used by the client in the current context, e.g. `react`, `vue`, `django` etc. If you do not know, please list `unknown`. This is used for logging purposes to understand which frameworks are being used. If you are unsure, it is better to list `unknown` than to make a guess

clientLanguagesstring

A comma separated list of programming languages used by the client in the current context in string form, e.g. `javascript`, `html,css,typescript`, etc. If you do not know, please list `unknown`. This is used for logging purposes to understand which languages are being used. If you are unsure, it is better to list `unknown` than to make a guess.

disableCodeConnectboolean

Whether Code Connect should be used to get the design context. Only set this when the user directly requests to disable Code Connect.

excludeScreenshotboolean

Whether to exclude the screenshot of the design from the response. IMPORTANT: it is not recommended to exclude screenshots. Only set this to true if the user has explicitly requested it or you are trying to preserve context.

forceCodeboolean

Whether code should always be returned, instead of returning just metadata if the output size is too large. Only set this when the user directly requests to force the code.

skillNamesstring

A comma-separated list of Figma skill names being followed, if any (e.g. "figma-design-to-code", "figma-design-to-code,figma-code-connect"). Only pass this when explicitly instructed to by skill documentation. Used for logging purposes. If the skill was loaded via a skill-content MCP resource, prefix the skill name with "resource:". (e.g. "resource:figma-design-to-code", "resource:figma-design-to-code,resource:figma-code-connect")

Get FigJam Content

get_figjam
Full Description

Generate UI code for a given FigJam node in Figma. Use the nodeId parameter to specify a node id. If no node id is provided, use 0:1 which is the root node ID. Use the fileKey parameter to specify the file key. If a URL is provided, extract the node id from the URL, for example, if given the URL https://figma.com/board/:fileKey/:fileName?node-id=1-2, the extracted nodeId would be 1:2 and the fileKey would be :fileKey. IMPORTANT: This tool only works for FigJam files (URL path /board/), not other Figma files.

Parameters (2 required, 3 optional)
Required
fileKeystring

The key of the FigJam (board) file to use. If a URL is provided, extract the file key from the FigJam board URL. The given URL must be in the format https://figma.com/board/:fileKey/:fileName?node-id=:int1-:int2. The extracted fileKey would be `:fileKey`. A `/design/...` URL is NOT a FigJam file — do not call this tool with a design fileKey.

nodeIdstring

The ID of the node in the FigJam board, eg. "123:456" or "123-456". If a URL is provided, extract the node id from the FigJam board URL, e.g. for https://figma.com/board/:fileKey/:fileName?node-id=1-2 the extracted nodeId would be `1:2`. Do not pass an empty string for node_id.

Optional
clientFrameworksstring

A comma separated list of frameworks used by the client in the current context, e.g. `react`, `vue`, `django` etc. If you do not know, please list `unknown`. This is used for logging purposes to understand which frameworks are being used. If you are unsure, it is better to list `unknown` than to make a guess

clientLanguagesstring

A comma separated list of programming languages used by the client in the current context in string form, e.g. `javascript`, `html,css,typescript`, etc. If you do not know, please list `unknown`. This is used for logging purposes to understand which languages are being used. If you are unsure, it is better to list `unknown` than to make a guess.

includeImagesOfNodesboolean

Whether to include images of nodes in the response

Default: True

Get Generative Plugin

get_generative_plugin
Full Description

Reads a generative plugin from the account library by id (from list_generative_plugins), returning its name, description, owner, version, and a manifest of its source files as { filename, bytes, uri }. Owner is the authenticated user's email when they own the plugin, or a public publisher handle otherwise. Read each file's contents from its uri as an MCP resource (contents are not inlined here). Only set includeSource to true to add source to each file when the MCP client cannot read MCP resources. Pass an optional version (commit SHA) to read a specific build; defaults to the latest.

Parameters (1 required, 2 optional)
Required
idstring

The id of the resource to read, taken from the matching list tool.

Optional
includeSourceboolean

Include each file's source directly in the tool result, up to 100 files and 1,000,000 cumulative bytes. The result reports which limit caused truncation. Leave this false unless the MCP client cannot read MCP resources.

Default: False
versionstring

Optional 40-character commit SHA. Defaults to the latest built version.

Get Libraries

get_libraries
Full Description

Get the design libraries associated with a Figma file. Returns two lists: (1) libraries currently added to the file (subscribed), and (2) libraries available to add (community UI kits and organization libraries). Each library includes its name, library key, description, and source type. The organization libraries portion of libraries_available_to_add is paginated — when the response includes a libraries_available_to_add_next_offset value, pass it back via the offset parameter to fetch the next page. Use the library keys from the response to scope searches with search_design_system by passing them as includeLibraryKeys.

Parameters (1 required, 1 optional)
Required
fileKeystring

The key of the Figma file to get libraries for.

Optional
offsetinteger

Pagination offset from a previous response (libraries_available_to_add_next_offset). Pass this to fetch the next page of organization libraries in libraries_available_to_add.

Get Metadata

get_metadata
Full Description

IMPORTANT: Always prefer to use get_design_context tool. Get metadata for a node or page in the Figma desktop app in XML format. Useful only for getting an overview of the structure, it only includes node IDs, layer types, names, positions and sizes. You can call get_design_context on the node IDs contained in this response. Use the nodeId parameter to specify a node id, it can also be the page id (e.g. 0:1). IMPORTANT: This tool only works for Figma design files (URL path /design/). It is NOT supported for FigJam (/board/) or Slides (/slides/) files. This tool is not supported for Figma Make Files (URLs containing /make/). The nodeId parameter is optional: when omitted, the tool returns a list of the top-level pages (guid + name) in the document instead of an XML dump — use this when you don't yet know which page or node to drill into. When the user has a current selection relevant to the request, the response is prepended with a "Currently selected nodes:" block listing the selection by guid and name, so you can tell whether it matches the queried nodeId. If the URL includes node-id, extract it and pass it as nodeId; for example, if given the URL https://figma.com/design/:fileKey/:fileName?node-id=1-2, the extracted nodeId would be 1:2. If the URL does not include node-id, do not set nodeId; omit the field so the tool lists top-level pages. Do not pass an empty or guessed nodeId. If the URL is of the format https://figma.com/design/:fileKey/branch/:branchKey/:fileName then use the branchKey as the fileKey.

Parameters (1 required, 3 optional)
Required
fileKeystring

The key of the Figma file to use. If the URL is provided, extract the file key from the URL. The given URL must be in the format https://figma.com/design/:fileKey/:fileName?node-id=:int1-:int2. The extracted fileKey would be `:fileKey`.

Optional
clientFrameworksstring

A comma separated list of frameworks used by the client in the current context, e.g. `react`, `react-native`, `expo`, `vue`, `django`, etc. If you do not know, please list `unknown`. This is metadata only for logging purposes—the tool output does not change based on this value, so do not retry with different variations.

clientLanguagesstring

A comma separated list of programming languages used by the client in the current context in string form, e.g. `javascript`, `typescript`, `html,css,typescript`, etc. If you do not know, please list `unknown`. This is metadata only for logging purposes—the tool output does not change based on this value, so do not retry with different variations.

nodeIdstring

The ID of the node in the Figma document, eg. "123:456" or "123-456". This should be a valid node ID in the Figma document. Do not pass an empty string for node_id.

Get Motion Context

get_motion_context
Full Description

Get keyframe animation data for a Figma node. Returns animated-node inventory, keyframe tracks with easing curves, pre-computed CSS/@keyframes and motion.dev code snippets, and timeline coordination hints for recursive calls. Use after get_design_context for motion-aware code generation. Use the nodeId parameter to specify a node id. Use the fileKey parameter to specify the file key. If a URL is provided, extract the node id and file key from the URL, for example, if given the URL https://figma.com/design/:fileKey/:fileName?node-id=1-2, the extracted nodeId would be 1:2 and the fileKey would be :fileKey.

Parameters (2 required, 3 optional)
Required
fileKeystring

The key of the Figma file to use. If the URL is provided, extract the file key from the URL. The given URL must be in the format https://figma.com/design/:fileKey/:fileName?node-id=:int1-:int2. The extracted fileKey would be `:fileKey`.

nodeIdstring

The ID of the node in the Figma document, eg. "123:456" or "123-456". This should be a valid node ID in the Figma document. Do not pass an empty string for node_id.

Optional
clientFrameworksstring

A comma separated list of frameworks used by the client in the current context, e.g. `react`, `vue`, `django` etc. If you do not know, please list `unknown`. This is used for logging purposes to understand which frameworks are being used. If you are unsure, it is better to list `unknown` than to make a guess

clientLanguagesstring

A comma separated list of programming languages used by the client in the current context in string form, e.g. `javascript`, `html,css,typescript`, etc. If you do not know, please list `unknown`. This is used for logging purposes to understand which languages are being used. If you are unsure, it is better to list `unknown` than to make a guess.

recursiveboolean

If true, traverses the subtree and returns motion data for all descendant nodes with animations.

Default: False

Get Screenshot

get_screenshot
Full Description

Generate a screenshot for a given node or the currently selected node in the Figma desktop app. Works on Figma design files (URL path /design/), FigJam boards (/board/), and Figma Slides (/slides/). The optional maxDimension parameter (positive integer, max 65536, default 1024) caps the longer edge of the rendered PNG in pixels — increase it when you need to inspect fine detail, decrease it for thumbnails or to save context. The JSON metadata entry in the response includes both width/height (the rendered PNG size) and original_width/original_height (the node's natural canvas size before any clamping), so callers can decide whether to re-request at a higher maxDimension. Use the nodeId parameter to specify a node id. nodeId parameter is REQUIRED. Use the fileKey parameter to specify the file key. fileKey parameter is REQUIRED. If a URL is provided, extract the file key and node id from the URL. For example, if given the URL https://figma.com/design/pqrs/ExampleFile?node-id=1-2 the extracted fileKey would be pqrs and the extracted nodeId would be 1:2. If the URL does not include node-id, ask the user for a node-specific URL. Do not pass an empty or guessed nodeId. This tool is not supported for Figma Make Files (URLs containing /make/). By default this tool returns a short-lived URL to the screenshot plus curl instructions for downloading the PNG — the URL+curl path is strongly preferred because it uses far fewer tokens than embedding the image inline. The enableBase64Response parameter defaults to false. Only set enableBase64Response: true when the agent cannot fetch URLs (no shell access, no HTTP client, or a sandboxed environment that blocks outbound requests); when set, an inline base64 image entry is appended to the response in addition to the URL and curl instructions. If the URL is of the format https://figma.com/design/:fileKey/branch/:branchKey/:fileName then use the branchKey as the fileKey.

Parameters (2 required, 5 optional)
Required
fileKeystring

The key of the Figma file to use. If the URL is provided, extract the file key from the URL. The given URL must be in the format https://figma.com/design/:fileKey/:fileName?node-id=:int1-:int2. The extracted fileKey would be `:fileKey`.

nodeIdstring

The ID of the node in the Figma document, eg. "123:456" or "123-456". This should be a valid node ID in the Figma document. Do not pass an empty string for node_id.

Optional
clientFrameworksstring

A comma separated list of frameworks used by the client in the current context, e.g. `react`, `vue`, `django` etc. If you do not know, please list `unknown`. This is used for logging purposes to understand which frameworks are being used. If you are unsure, it is better to list `unknown` than to make a guess

clientLanguagesstring

A comma separated list of programming languages used by the client in the current context in string form, e.g. `javascript`, `html,css,typescript`, etc. If you do not know, please list `unknown`. This is used for logging purposes to understand which languages are being used. If you are unsure, it is better to list `unknown` than to make a guess.

contentsOnlyboolean

When true, renders the node in isolation — floating/overlapping content (e.g. connectors parented to the page that visually sit above a section) is excluded. Defaults to false so screenshots match what the user sees on the canvas. Only set to true if the caller specifically needs the isolated render.

enableBase64Responseboolean

When true, the response also includes the screenshot inline as a base64-encoded image entry, in addition to the short-lived URL and curl instructions. Defaults to false. Set to true ONLY if the agent cannot fetch URLs (no shell access, no HTTP client, or a sandboxed environment that blocks outbound requests)

Default: False
maxDimensioninteger

Optional. Maximum pixel size of the longer edge of the rendered screenshot — the server scales the node so that max(width, height) ≤ maxDimension while preserving aspect ratio. Defaults to 1024. Must be a positive integer; values above 65536 are rejected. Increase when the agent will visually inspect fine detail; decrease for thumbnails or to save context.

Default: 1024

Get Shader

get_shader
Full Description

Reads a shader effect or shader fill from the account library by id (from list_shaders), returning its name, description, owner, type, version, and a manifest of its source files as { filename, bytes, uri }. Owner is the authenticated user's email for their shaders, or figma for first-party shaders. Read each file's contents from its uri as an MCP resource. Only set includeSource to true to add source to each file when the MCP client cannot read MCP resources. Pass an optional version (commit SHA) to read a specific build; defaults to the latest.

Parameters (1 required, 2 optional)
Required
idstring

The id of the resource to read, taken from the matching list tool.

Optional
includeSourceboolean

Include each file's source directly in the tool result, up to 100 files and 1,000,000 cumulative bytes. The result reports which limit caused truncation. Leave this false unless the MCP client cannot read MCP resources.

Default: False
versionstring

Optional 40-character commit SHA. Defaults to the latest built version.

Get Variable Definitions

get_variable_defs
Full Description

Get variable definitions for a given node id. E.g. {'icon/default/secondary': #949494}Variables are reusable values that can be applied to all kinds of design properties, such as fonts, colors, sizes and spacings. Use the nodeId parameter to specify a node id. Extract the node id from the URL, for example, if given the URL https://figma.com/design/:fileKey/:fileName?node-id=1-2, the extracted nodeId would be 1:2. If the URL does not include node-id, ask the user for a node-specific URL. Do not pass an empty or guessed nodeId. This remote tool requires a concrete node target. This tool is not supported for Figma Make Files (URLs containing /make/). If the URL is of the format https://figma.com/design/:fileKey/branch/:branchKey/:fileName then use the branchKey as the fileKey.

Parameters (2 required, 2 optional)
Required
fileKeystring

The key of the Figma file to use. If the URL is provided, extract the file key from the URL. The given URL must be in the format https://figma.com/design/:fileKey/:fileName?node-id=:int1-:int2. The extracted fileKey would be `:fileKey`. Only design files are supported: the URL must be a /design/ URL. /slides/, /board/, and /make/ URLs are not allowed.

nodeIdstring

The ID of the node in the Figma document, eg. "123:456" or "123-456". This should be a valid node ID in the Figma document. Do not pass an empty string for node_id.

Optional
clientFrameworksstring

A comma separated list of frameworks used by the client in the current context, e.g. `react`, `react-native`, `expo`, `vue`, `django`, etc. If you do not know, please list `unknown`. This is metadata only for logging purposes—the tool output does not change based on this value, so do not retry with different variations.

clientLanguagesstring

A comma separated list of programming languages used by the client in the current context in string form, e.g. `javascript`, `typescript`, `html,css,typescript`, etc. If you do not know, please list `unknown`. This is metadata only for logging purposes—the tool output does not change based on this value, so do not retry with different variations.

List File Components for Code Connect

list_file_components_for_code_connect
Full Description

List every component and component set PUBLISHED to a Figma file's library, with the cross-component dependency graph needed to plan Code Connect in bulk. Only published components are returned (unpublished/local-only components are omitted). Returns one entry per component with its properties (exhaustive variant options, defaults, instance-swap preferred values), page and asset/library membership, child instance tags, instance count, and direct dependencies (each flagged internal vs. external library). Unlike get_context_for_code_connect — which returns the deep descendant tree for one known component — this returns the flat whole-file graph for dependency-ordered, batched template generation. Takes only a file key (no node id). Use the fileKey parameter to specify the file key. If a URL is provided, extract the file key from the URL, for example, if given the URL https://figma.com/design/:fileKey/:fileName, the extracted fileKey would be :fileKey. If the URL is of the format https://figma.com/design/:fileKey/branch/:branchKey/:fileName then use the branchKey as the fileKey.

Parameters (1 required)
Required
fileKeystring

The key of the Figma file to use. If the URL is provided, extract the file key from the URL. The given URL must be in the format https://figma.com/design/:fileKey/:fileName?node-id=:int1-:int2. The extracted fileKey would be `:fileKey`.

List File Shaders

list_file_shaders
Full Description

Lists the shader effects and shader fills used in a Figma file. Returns each shader as { id, name, description, type, version, published, truncated, files }, where type is "effect" (post-effect that samples an input raster) or "fill" (generates pixels directly), published indicates whether the shader is a published library version, and files is a manifest of its authored source files as { filename, uri }. When truncated is true, the manifest hit its 10,000-file safety cap and is not exhaustive. The top-level truncated field is true when a referenced shader could not be returned, including when the file references more than the 100 returned shaders. Read each file's contents from its uri as an MCP resource (contents are not inlined here). Requires view access to the file. Use this to inspect shaders in a file you can open, including ones you do not own. Source reads are pinned to the exact shader version referenced by the file.

Parameters (1 required)
Required
fileKeystring

The key of the Figma file to use. If the URL is provided, extract the file key from the URL. The given URL must be in the format https://figma.com/design/:fileKey/:fileName?node-id=:int1-:int2. The extracted fileKey would be `:fileKey`.

List Generative Plugins

list_generative_plugins
Full Description

Lists the generative plugins in the authenticated user's account library, including Figma's first-party plugins. Returns each plugin's id, name, description, and owner (plus a nextCursor when more pages exist). Owner is the authenticated user's email for their plugins, or a public publisher handle otherwise. Use the id with get_generative_plugin to read a plugin's source. Generative plugins are runnable tools that modify the canvas, distinct from shader effects and shader fills.

Parameters (0 required, 1 optional)
Optional
cursorstring

Pagination cursor returned as nextCursor by a previous call. Omit to fetch the first page.

List Shaders

list_shaders
Full Description

Lists the shader effects and shader fills in the authenticated user's account library. Returns each shader's id, name, description, owner, and type (effect or fill), plus a nextCursor when more pages exist. Owner is the authenticated user's email for their shaders, or figma for first-party shaders. Use the id with get_shader to read either shader type's source.

Parameters (0 required, 1 optional)
Optional
cursorstring

Pagination cursor returned as nextCursor by a previous call. Omit to fetch the first page.

Search Figma Files

mentionable_files
Full Description

Searches the signed-in user's accessible Figma Design, FigJam, and Make files that can be passed as references. Pass an empty query to return recently opened files.

Parameters (1 required)
Required
querystring

Search string to retrieve mentionable files.

Figma

open_figma_mcp_app_in_thread
Full Description

Open Figma in the host application thread view.

Report Figma connection failure

report_mcp_app_failure
Full Description

Report a bounded Figma app connection failure category. Called only by the app.

Parameters (1 required)
Required
failure_kindstring
Options:app_connect_failedbridge_message_invalidbridge_timeoutchild_authorization_failedchild_capability_mismatchchild_initialization_failedchild_parent_invalidchild_redemption_failedchild_session_rejectedchild_unexpectedhost_disconnectedinvalid_authorization_resultinvalid_launchauthorization_tool_failed

Search Design System

search_design_system
Full Description

Search for design system assets (components, variables, and styles). Returns matching assets from all design libraries. Use this when you need to find specific components, variables (e.g. colors, spacing tokens), or styles from design libraries. Pass queries as an array of objects, never strings. Each object must contain entity ("component", "variable", or "style") and a string query. Example: {"fileKey":"<file key>","queries":[{"entity":"component","query":"button"},{"entity":"variable","query":"surface"}]}. Do not pass {"queries":["button"]}. Combine searches already required for the task in one call, without speculative terms, synonyms, variants, or checklist items. Results are returned in a results array in the same order as queries; each item repeats its entity and query.

Parameters (3 required, 5 optional)
Required
fileKeystring

The file key for context

queriesarray

Array of search objects. Each entry must specify `entity` as exactly "component", "variable", or "style" (singular), and `query` as a string. Example: [{"entity":"component","query":"button"}]. Run multiple design-system searches in one call instead of issuing separate calls per term. Each entry must be an asset already identified as needed for the current task. Do not add speculative terms, generic checklists, synonyms, or naming variants to fill a batch. Use one batched call instead of parallel tool calls. Inspect results before deciding on a follow-up, and do not treat an empty result as a reason to try alternate terms. Results are returned in the same order as the entries.

querystring

Text query to search for design system components

Optional
disableCodeConnectboolean

Whether to disable Code Connect for search results.

includeComponentsboolean

Whether to include components in the search results. Defaults to true.

Default: True
includeLibraryKeysarray

Optional list of library keys to restrict the search to. When provided, only results from these libraries are returned. Library keys are returned in previous search results.

includeStylesboolean

Whether to include styles in the search results. Defaults to true.

Default: True
includeVariablesboolean

Whether to include variables in the search results. Defaults to true.

Default: True

Send Code Connect Mappings

send_code_connect_mappings
Full Description

Save multiple Code Connect mappings in bulk. Use after get_code_connect_suggestions to confirm and save approved mappings.

Use the nodeId parameter to specify a node id. Use the fileKey parameter to specify the file key. If a URL is provided, extract the node id and file key from the URL, for example, if given the URL https://figma.com/design/:fileKey/:fileName?node-id=1-2, the extracted nodeId would be 1:2 and the fileKey would be :fileKey. If the URL does not include node-id, ask the user for a node-specific URL. Do not pass an empty or guessed nodeId.

Parameters (3 required, 2 optional)
Required
fileKeystring

The key of the Figma file to use. If the URL is provided, extract the file key from the URL. The given URL must be in the format https://figma.com/design/:fileKey/:fileName?node-id=:int1-:int2. The extracted fileKey would be `:fileKey`.

mappingsarray
nodeIdstring

The ID of the node in the Figma document, eg. "123:456" or "123-456". This should be a valid node ID in the Figma document. Do not pass an empty string for node_id.

Optional
clientFrameworksstring

A comma separated list of frameworks used by the client in the current context, e.g. `react`, `vue`, `django` etc. If you do not know, please list `unknown`. This is used for logging purposes to understand which frameworks are being used. If you are unsure, it is better to list `unknown` than to make a guess

clientLanguagesstring

A comma separated list of programming languages used by the client in the current context in string form, e.g. `javascript`, `html,css,typescript`, etc. If you do not know, please list `unknown`. This is used for logging purposes to understand which languages are being used. If you are unsure, it is better to list `unknown` than to make a guess.

Update Generative Plugin

update_generative_plugin
Full Description

You MUST load the figma-generative-plugins skill before calling this tool. If it is not installed, read skill://figma/figma-generative-plugins/SKILL.md with resources/read or get_figma_skill. Use this when the user asks to update, revise, or republish an existing Figma plugin, generative plugin, or custom tool in their account library. Updates an existing generative plugin in the authenticated user's account library. Provide the plugin id, existing authored files to replace, optional name and description metadata, and a required Git commit message describing the change. The update is built, versioned, and deployed; record the new version when the response includes it. Use create_generative_plugin first when no plugin exists.

Parameters (2 required, 2 optional)
Required
commitMessagestring

Required Git commit message describing this update.

idstring

The id of the existing resource to update.

Optional
filesarray

Existing entrypoint or UI files to replace. New files cannot be created and unspecified files are preserved.

Default: []
metadataobject

Update Shader

update_shader
Full Description

You MUST load the figma-shaders skill before calling this tool. If it is not installed, read skill://figma/figma-shaders/SKILL.md with resources/read or get_figma_skill. Use this when the user asks to update, revise, or republish an existing Figma shader, shader effect, shader fill, custom effect, custom fill, or procedural shader. Updates an existing shader effect or fill in the authenticated user's account library. Provide its id, matching kind, existing authored files to replace, optional name, description, animation, and mouse metadata, and a required Git commit message describing the change. The update is built, versioned, and deployed; the response includes the new version. Use create_shader first when no shader exists.

Parameters (3 required, 2 optional)
Required
commitMessagestring

Required Git commit message describing this update.

idstring

The id of the existing resource to update.

kindstring

The existing shader kind. It must match the resource identified by id.

Options:effectfill
Optional
filesarray

Existing main.ts to replace. New files cannot be created.

Default: []
metadataobject

Upload Assets

upload_assets
Full Description

Upload assets (images and SVGs) into a Figma file. Call with a "count" to get that many single-use upload URLs. POST raw asset bytes to each URL with the correct Content-Type header (e.g. image/png, image/jpeg, image/svg+xml). Each upload URL handles storage, BlobStore commit, and canvas placement automatically. Use nodeIds to set raster images as fills on corresponding existing nodes; its order matches the returned upload URLs. Returned upload entries include targetNodeId when a target was provided. Without a target node, creates new frames with image fills on currentPageId when provided, otherwise on the current page. SVGs (image/svg+xml) are imported as editable vector node trees on that page; nodeIds and scaleMode do not apply to SVGs. Supports PNG, JPG, GIF, WebP, and SVG. Max 10MB per asset. Works on Figma design files (URL path /design/), FigJam boards (/board/), and Figma Slides (/slides/). Request at most 60 upload URLs per call, then POST to every returned URL before calling upload_assets again. Repeat until all assets have been uploaded.

Parameters (1 required, 6 optional)
Required
fileKeystring

The key of the Figma file to use. If the URL is provided, extract the file key from the URL. The given URL must be in the format https://figma.com/design/:fileKey/:fileName?node-id=:int1-:int2. The extracted fileKey would be `:fileKey`.

Optional
batchCommitboolean

Optional. Set to true only if you can call the returned commitUrl exactly once after all uploads complete. When enabled server-side, this commits and places all assets in one file operation. If omitted, each upload URL commits and places its asset automatically.

Default: False
countinteger

Number of assets to upload. Returns that many single-use upload URLs. POST raw asset bytes to each URL with the correct Content-Type header (e.g. image/png, image/jpeg); the URLs can be POSTed in parallel. By default, each upload URL handles storage, BlobStore commit, and canvas placement automatically.

Default: 1
currentPageIdstring

The GUID of the page to target. Always pass this when available. Use the page the user is currently viewing unless the request explicitly refers to a different page.

nodeIdstring

Deprecated: use nodeIds instead. If provided, sets the uploaded raster image as a fill on this existing node. Can only be used when count is 1. Ignored for SVGs, which are imported as vector node trees.

nodeIdsarray

Optional target node IDs, one per upload URL in the same order. Each uploaded raster image is set as a fill on its corresponding existing node. The array length must equal count. Cannot be combined with nodeId. Ignored for SVGs, which are imported as vector node trees.

scaleModestring

How a raster image fills the node. Default: FILL. Ignored for SVGs.

Options:FILLFITTILE
Default: FILL

Use Figma

use_figma
Full Description

Create, edit, generate, or sync any design in Figma — UIs, screens, mockups, components, frames, variables, styles, text, images, layouts, and design systems. This general-purpose tool writes to Figma with JavaScript via the Figma Plugin API. Works on Figma design files (URL path /design/), FigJam boards (/board/), and Figma Slides (/slides/).

IMPORTANT: Before calling this tool, load figma-use guidance — prefer the /figma-use skill if available, otherwise read the skill://figma/figma-use/SKILL.md MCP resource if available. Skipping this causes common, hard-to-debug failures.

Use this tool when the user wants to:

  • Create or generate a Figma design, screen, UI, or mockup from scratch, intent, or code
  • Update, edit, or sync an existing Figma design
  • Generate or sync Figma designs from source code
  • Set up or modify design tokens, variables, or styles
  • Build or extend a design system or component/variant library
  • Fix layout, spacing, auto-layout, or fill/hug issues
  • Add component descriptions, annotations and Code Connect metadata to nodes
  • Review or fix accessibility, contrast, typography, or visual polish
  • Inspect or query node properties programmatically

CHOOSING BETWEEN use_figma AND generate_figma_design:

  • Default to use_figma for all write operations
  • Exception: generate_figma_design ONLY to capture a web app page/view for the first time. For web apps, run both in parallel — generate_figma_design captures a pixel-perfect screenshot, use_figma builds from imported design system components and refines against the screenshot
  • Non-web (iOS, Android, generic UI) and from-scratch designs: use_figma only
  • Updating/syncing a Figma page already captured: use_figma — even if source code changed

GOTCHAS

  • For the font "Inter", the style is "Semi Bold", not "SemiBold" and "Extra Bold" not "ExtraBold"
  • MUST use await figma.setCurrentPageAsync(page) to change pages. Setting figma.currentPage is not supported
  • MUST NEVER use loadAllPagesAsync,setPluginData,createImageAsync. They are not supported API
Parameters (3 required, 1 optional)
Required
codestring

JavaScript code to execute. Has access to the `figma` global (Figma Plugin API)

descriptionstring

A concise description of what the code aims to do

fileKeystring

The key of the Figma file to use. If the URL is provided, extract the file key from the URL. The given URL must be in the format https://figma.com/design/:fileKey/:fileName?node-id=:int1-:int2. The extracted fileKey would be `:fileKey`.

Optional
skillNamesstring

A comma-separated list of Figma skill names being followed, if any (e.g. "figma-use", "figma-use,figma-generate-design"). Only pass this when explicitly instructed to by skill documentation. Used for logging purposes. If the skill was loaded via a skill-content MCP resource, prefix the skill name with "resource:". (e.g. "resource:figma-use", "resource:figma-use,resource:figma-generate-design")

Cancel Weave Tool Run

weave_cancel_tool_run
Full Description

Cancels one or more in-progress runs of a Weave tool (a published Weave workflow). Pass the recipeId of the tool and, optionally, the runIds to cancel (from weave_run_tool); omit runIds to cancel all of the user's currently running runs for that tool. Use this to stop a run the user no longer wants. Cancellation cannot be undone.

Parameters (1 required, 1 optional)
Required
recipeIdstring

The id of the Weave tool whose runs to cancel (from weave_list_tools).

Optional
runIdsarray

The run ids to cancel (from weave_run_tool). Omit to cancel all of the user's currently running runs for this tool.

Find Weave Model

weave_find_model
Full Description

Finds a Weave AI model by name so it can be run directly with weave_run_model — no Weave tool needed. Use this when the user names a model ("run nano banana 2 on this image", "make a video with veo 3"). A model is not a Weave tool: for a published Weave workflow use weave_list_tools and weave_run_tool instead. Returns the model with an approximate cost and the contract to run it with — its inputs and tunable params, each with a type, whether it is required, and any allowed values — or a short list of candidates to choose between when the name matches more than one model.

Parameters (1 required)
Required
querystring

The model name as the user said it ("nano banana 2", "veo 3").

Get Weave Model Run Output

weave_get_model_run_output
Full Description

Gets the output and status of Weave model runs started with weave_run_model. Pass the predictionIds those calls returned. This is for model runs only — for a run of a Weave tool (a published Weave workflow) use weave_get_tool_run_output instead. Poll this after weave_run_model to track progress and read the output. The response also includes curl instructions for downloading the outputs — the URL+curl path is strongly preferred because it uses far fewer tokens than embedding media inline.

Parameters (1 required)
Required
predictionIdsarray

The prediction ids to fetch output for, as returned by weave_run_model.

Get Weave Tool Inputs

weave_get_tool_inputs
Full Description

Gets the input contract of a Weave tool (a published Weave workflow) — the inputs you fill in to run it. Pass the recipeId (from weave_list_tools, or the <id> in a pasted Weave URL like app.weavy.ai/tool/<id> or app.weavy.ai/flow/<id> — that <id> is the recipeId). A pasted Weave URL is enough to inspect and run the tool right here — do not open a browser or use browser automation for Weave. Call this before weave_run_tool to learn what to send. Returns the tool version (pass it back to weave_run_tool), an outputs summary (what the tool produces), and a flat inputs list. Each input has a nodeId (the key you send in weave_run_tool), name, type (text, integer, boolean, select, seed, image, video, audio, 3D, color, or any), default (its current value), and required (true only when there is no current value, so you must provide one), plus options (for select), range, isIterator, and description.

Parameters (1 required, 1 optional)
Required
recipeIdstring

The id of the Weave tool whose input contract to fetch — from weave_list_tools, or the `<id>` in a pasted Weave URL (app.weavy.ai/tool/<id> or app.weavy.ai/flow/<id>), which is the recipeId.

Optional
versioninteger

Tool version to inspect; omit for the latest.

Get Weave Tool Run Output

weave_get_tool_run_output
Full Description

Gets the output and status of runs of a Weave tool (a published Weave workflow). Pass the recipeId of the tool and the runIds returned by weave_run_tool; omit runIds to get the tool's most recent run. Returns each run's status (RUNNING, COMPLETED, FAILED, or CANCELED), progress, any error, and — when complete — a link to every output the run produced. Poll this after running a tool to track progress and read its output. Each output is a JSON entry with a url, its type (e.g. image, video), and, when known, width/height/format. The response also includes curl instructions for downloading the outputs — the URL+curl path is strongly preferred because it uses far fewer tokens than embedding media inline.

Parameters (1 required, 1 optional)
Required
recipeIdstring

The id of the Weave tool whose runs to fetch (from weave_list_tools).

Optional
runIdsarray

The run ids to fetch output for, as returned by weave_run_tool. Omit to use the tool's most recent run (the latest in-flight run, or the latest completed run's output if none are in flight).

List Weave Tools

weave_list_tools
Full Description

Lists the Weave tools the authenticated user can run — published Weave workflows — in their active Weave workspace: their own, those shared with the workspace, and those shared with them directly. Here "tool" means a Weave tool (a published Weave workflow), not an agent/MCP tool. Use this when the user wants to see, browse, or choose from the Weave tools available to them. Returns the most recently updated tools and the total number available, each with its name, who created it, when it was last updated, and a link to open it in Weave. If the user already pasted a specific Weave URL (app.weavy.ai/tool/<id> or app.weavy.ai/flow/<id>), you already have its recipeId — that <id> — so skip this and go straight to weave_get_tool_inputs/weave_run_tool instead of opening a browser.

Parameters (0 required, 1 optional)
Optional
searchstring

Case-insensitive substring matched against tool names, to look up a tool the user named.

Run Weave Model

weave_run_model
Full Description

Runs a Weave AI model directly — no Weave tool needed — and returns a prediction id; poll it with weave_get_model_run_output. Call weave_find_model first for the model id and its contract. Running spends the user's Weave credits, so it is gated: a call without acknowledgedCost only quotes and spends nothing, returning inputs_required or cost_confirmation_required with instructions to follow. Always show the user the cost and get an explicit Approve/Cancel (a structured prompt, not free text) before echoing acknowledgedCost to run — every run, including reruns. Ask the user for any input you don't have; never invent one.

Parameters (2 required, 1 optional)
Required
idstring

The model's `id` from weave_find_model.

inputobject

The values to run with, keyed by the names in weave_find_model's `contract` — its `inputs` and `params` together, as one flat object. Send an array only for a field that declares `maxItems`; a field without one takes a single value.

Optional
acknowledgedCostnumber

The `cost` this tool quoted in its `cost_confirmation_required` response, echoed back after the user approves, to confirm the spend and run. Omit it on the first call.

Run Weave Tool

weave_run_tool
Full Description

Runs a Weave tool (a published Weave workflow) and returns run ids; poll them with weave_get_tool_run_output. A pasted Weave URL (app.weavy.ai/tool/<id> or app.weavy.ai/flow/<id>) is enough — never open a browser or use browser automation for Weave. Call weave_get_tool_inputs first to learn the inputs. Running spends the user's Weave credits, so it is gated: a call without acknowledgedCost only quotes and spends nothing, returning status: "inputs_required" or cost_confirmation_required with instructions to follow. Always show the user the cost and get an explicit Approve/Cancel (a structured prompt, not free text) before echoing acknowledgedCost to run — every run, including reruns — and confirm any auto-filled inputs (values you did not set that the run will use). Include the response's costDisclosure string as its own sentence after the question, not folded into it, the first time you quote a cost in a conversation; omit it after that. For an image/video input, pass a reachable https URL directly; only upload a local file with weave_upload_asset and pass the asset object it returns. If the user wants an input you did not get from weave_get_tool_inputs, do not omit it or fold it into another input like the prompt — re-fetch weave_get_tool_inputs (its inputs can change) and set it.

Parameters (1 required, 4 optional)
Required
recipeIdstring

The id of the Weave tool to run — from weave_list_tools, or the `<id>` in a pasted Weave URL (app.weavy.ai/tool/<id> or app.weavy.ai/flow/<id>), which is the recipeId.

Optional
acknowledgedCostnumber

The credit `cost` the tool quoted in its `cost_confirmation_required` response, echoed back after the user approves to confirm the spend and run. For a dynamic-cost tool (the response had `isDynamicCost: true` and `cost: null`), pass `-1` to confirm a variable charge.

inputsarray

Values for the inputs you want to set. Omit an input to keep its current value.

Default: []
numberOfRunsinteger

How many times to run the tool (1–10).

Default: 1
versioninteger

The tool `version` from weave_get_tool_inputs; omit to run the latest.

Upload Weave Asset

weave_upload_asset
Full Description

Uploads a local image or video file to Weave and returns the asset object to pass as the value for an image/video input in weave_run_tool. Returns a submitUrl and a token: POST the file to the submitUrl as multipart/form-data with a file field and the token in an X-Weave-Upload-Token header (e.g. curl -F "file=@/path/to/image.png" -H "X-Weave-Upload-Token: <token>" "<submitUrl>"); that POST returns the asset object. If you already have a reachable https URL, do not upload it — pass it directly to weave_run_tool. If the media exists only in this conversation (you have no path or URL for it), ask the user to save it and give you a path or URL. The token expires in about 10 minutes.

Who Am I

whoami
Full Description

Returns the authenticated user's handle, email, all the plans the user belongs to (and the ID for each plan) and their seats on those plans. You MUST use this tool if you are experiencing file access/permission issues or are being rate limited by the Figma MCP to help debug the issue.