# Flash now works inside the Figma agent > Add Flash as a connector in the Figma agent, sign in once, and the agent reads your design system live and builds the file's variables from it. - Source: https://flashdsm.com/blog/flash-in-the-figma-agent - Published: 2026-09-24 - Author: Flash DSM Team - Track: Notes - Reading time: 4 min read --- ## What changed Figma's agent can now call Flash. You add Flash as a connector in the agent's chat, sign in to Flash once, pick a design system, and from then on the agent can read that system while it works in your file: tokens, components, the usage rules, and a ready-made plan for the file's variables. The part we care about most is the last one. Designers kept asking the agent to "set up our colours as variables", and the agent kept inventing names. Now it asks Flash what the file should hold and gets back the same collections, modes and paths the [Flash plugin](/blog/figma-plugin-live-sync) writes, so a file built by the agent and a file built by the plugin come out the same. There are three pieces: - **The connector.** Flash's MCP server, the one [Cursor and Claude Code already use](/blog/cursor-design-tokens-on-brand-ai), now signs agents in with OAuth, so you never paste a token into Figma. - **Figma-shaped tools.** New tools hand the agent your variables in Figma's own shapes, page by page, with a playbook that spells out the naming rules. - **An Agents tab in the plugin.** The plugin you may already use now shows the connector address and the steps, so nobody has to go looking for them. ## Connect it You need a Figma plan with the agent turned on and a Full seat. Figma's agent is in beta and rolling out, so if you don't see it yet, that's why. 1. In a Figma design file, open the agent and go to [[Add context > Connectors > Manage]]. 2. On **Created by you**, click **Create**. Name it Flash, and paste `https://flashdsm.com/api/v1/mcp` as the MCP server URL. Leave the authentication settings empty; OAuth is the default. 3. Click **Connect**. A Flash page opens in your browser. 4. Sign in if you need to, pick the design system the agent should see, and choose whether it may propose changes. Click **Allow**. 5. Back in Figma, the Flash tools appear, split into read tools and write tools. Write tools start switched off. The consent screen is the whole permission model. One grant covers one design system. If you tick "read only", the tools that propose changes are hidden from the agent entirely rather than refused when it tries them. You can see and revoke every grant under [[Dashboard > Integrations]], and the agent is out on its next call. > [!TIP] > The plugin's new **Agents** tab has the connector address with a copy button and these same steps. It works before you pair the plugin, because the agent signs in on its own. ## What the agent can do with it Start with a question it can answer without touching the file: ```text Use the Flash connector: call get_figma_variable_plan and list the collections, their modes and variable counts. Read only. ``` On one of our own systems that came back as eight collections: Colors with Dark and Light modes, then Spacing, Radius, Typography, Border, Effects, Shadows and Motion, 196 variables in all. Nothing in the file changed. Then ask for the real thing: ```text Read flash://figma/playbook.md, then build this system's variables in this file. ``` The agent pulls the plan one collection at a time, creates or updates each collection and its modes, sets every value, and links the semantic colours to the steps they point at once all the variables exist. Two rules come from the plugin and matter in practice. It finds an existing variable by its name first and renames it in place instead of adding a duplicate. And it never deletes a variable Flash doesn't mention; it tells you about it instead. It finishes by telling Flash what it wrote, so the Sync page shows the file as current. On the same system, in a file the plugin had built once before, that one prompt created 167 variables and 10 text styles, updated 29 variables that were already there, skipped none and deleted none. The agent asks before each Flash tool it calls, so a run like this is a handful of clicks on **Run**. The tools, for reference: | Tool | What it's for | | --- | --- | | get_figma_variable_plan | Collections, modes and every variable, in Figma's shapes, paged | | get_figma_text_styles | Text styles and which variables each property binds to | | get_figma_sync_status | How far the file is behind the system, and pending proposals | | push_figma_variables | Send the file's variables to Flash as a proposal | | record_figma_sync | Tell Flash the file now matches a given version | ## Changes from Figma still wait for a person Going the other way, the agent can read the file's variables and send them to Flash with push_figma_variables. That creates a proposal under [[Sync > Review]], the same place a push from the plugin lands. Nothing in your system changes until someone approves it. Proposals from the agent are labelled **Figma agent**, so you can tell them apart from plugin pushes. This is the same rule Flash has had since the plugin shipped: outside tools propose, people apply. The agent is an outside tool. ## If you work in code, not in Figma Claude Code, Cursor and Codex can hold two MCP servers at once: Figma's own and Flash's. Flash now generates a second skill for each system, the Figma sync skill, that tells an agent with both servers how to build the file's variables through Figma's use_figma tool using Flash's plan, and how to send the file back for review. Find it next to the other agent files under [[Sync > Agents]]. The [MCP guide](/mcp) covers connecting Flash itself. ## What stays the same The plugin isn't going anywhere. It's still the way to build the full file with its Foundations, Components, Icons and Modules pages, and live sync still keeps a file following Flash while its panel is open. The connector is for the moments you'd rather ask than click, and for teams where the agent is already open in every file. Flash is still the source of truth. The agent reads your system when it needs it instead of copying it once, so the values it writes are the ones in Flash at that moment.