
Get all comments from a Figma file with author info, timestamps, and positioning metadata. Supports nested threads. Requires file_key.
Post a comment to a Figma file. Requires filekey and message. Optionally pin via clientmeta: {x, y}, or {nodeid, nodeoffset: {x, y}} for a top-level frame; either plus regionwidth/regionheight/commentpincorner pins a region. nodeid needs colons ('12744:44143'), not the hyphenated form in Figma URLs ('12744-44143'). Use getfile for node IDs. Omit client_meta for an unpinned comment.
Remove a specified comment from a Figma file. Requires valid commentid and filekey parameters. Essential for comment moderation and cleanup workflows.
Retrieve all reactions associated with a specific comment. Provides detailed reaction information including emoji types, user information, and reaction counts for engagement analysis.
Add an emoji reaction to a specific comment. Enables automated engagement and feedback acknowledgment through programmatic reaction management.
Remove a specific emoji reaction from a comment. Essential for reaction management and cleanup workflows in collaborative design environments.
List the components published to a Figma team's libraries. teamid falls back to the linked credential. Paginated: set pagesize, then pass pagination.nextcursor back as after for the next page (startcursor as before to page back). Use getfilecomponents for the components published from one file.
Get components from a file
Get details of a specific component
List the styles published to a Figma team's libraries. teamid falls back to the linked credential. Paginated: set pagesize, then pass pagination.nextcursor back as after for the next page (startcursor as before to page back). Use getfilestyles for the styles published from one file.
Get styles from a file
Get details of a specific style
Get development resources from a file
Delete a development resource
Get a Figma file's document tree. Returns pages plus their top-level children by default; raise depth to go deeper, or set fulldocument=true for every node (hundreds of MB - prefer getfile_nodes with ids). Passing ids returns those nodes at full depth. Optional ids accept either the colon form ('1:3') or the hyphenated form from a Figma URL's node-id parameter ('1-3').
Get specific nodes from a Figma file by node IDs. Requires file_key and comma-separated ids. ids accept either the colon form ('1:3') or the hyphenated form copied from a Figma URL's node-id parameter ('1-3'). Optional: version, depth, geometry, plugin data.
Export nodes from Figma file as images (PNG, JPG, SVG, PDF). Requires file_key and node ids. ids accept either the colon form ('1:3') or the hyphenated form copied from a Figma URL's node-id parameter ('1-3'). Optional: scale, format, SVG settings. Returns download URLs.
Get image fill references from a Figma file. Returns mapping of images to download URLs and metadata. Requires file_key.
Get version history of a Figma file with timestamps, authors, and version labels. Requires file_key.
Get lightweight file metadata (name, editor type, last modified, URL, access role) without downloading full document tree. Faster than getfile. Requires filekey.
List a Figma team's folders (formerly called projects). Pass teamid (the numeric ID in a team URL, e.g. 123456789 in figma.com/files/team/123456789/My-Team); if omitted, the teamid from the linked credential is used. Pass parentfolderid to list folders nested inside a folder. Feed a returned id to getprojectfiles.
List the files inside a Figma folder (formerly called a project). Use getteamprojects to find a folder ID. Set branchdata=true to include branch metadata for files that have branches. Each file's key feeds getfile, getcomments, getimages and the other file tools.
Validate Figma credentials. Verifies credentials during setup.
Get webhook configuration including event type, endpoint URL, and status. Requires webhook_id.
Create a webhook for Figma notifications. Requires eventtype, endpoint and passcode (the API rejects a create without one). Attaches to a team by default (teamid falls back to the linked credential); set context to project or file with the matching contextid to scope it narrower. Events: FILEUPDATE, FILEDELETE, FILEVERSIONUPDATE, LIBRARYPUBLISH, FILECOMMENT, DEVMODESTATUSUPDATE.
Update webhook configuration including endpoint, event types, description, or passcode. Requires webhook_id.
Delete a webhook subscription to stop notifications. Requires webhook_id.
List webhooks with their IDs, event types, endpoints and status. Lists a team's webhooks by default (teamid falls back to the linked credential); set context to project or file with the matching contextid to list those instead. Use getteamprojects for folder IDs.

In an mcp.json file, add the configuration below, and restart Cursor.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5 "headers": {
6 "Authorization": "Bearer yMt*****"
7 }
8 }
9 }
10}
11Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.
Make sure Claude is using the Node v20+.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "yMt*****"
14 }
15 }
16 }
17}Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "<ah-production-access-key>"
14 }
15 }
16 }
17 }In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".
You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.
Learn more in the official documentation ↗
1{
2 "inputs": [
3 {
4 "type": "promptString",
5 "id": "agent-handler-auth",
6 "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7 "password": true
8 }
9 ],
10 "servers": {
11 "agent-handler": {
12 "type": "stdio",
13 "command": "npx",
14 "args": [
15 "-y",
16 "mcp-remote@latest",
17 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18 "--header",
19 "Authorization: Bearer ${input:agent-handler-auth}"
20 ]
21 }
22 }
23}It’s a server that exposes data and functionality from Figma via tools. Agents can use these tools to do anything from posting comments in a Figma file to fetching a specific image from a Figma file.
Here are a few common use cases:
Here are some popular tools across data types.
Comments
Projects
Styles
Merge Agent Handler provides platform-level capabilities that apply to any MCP server, including Figma:
Yes, you can add any number of security rules in a matter of clicks in Merge Agent Handler.
For example, you can:
How can I start using Merge Agent Handler's Figma MCP server?
1. Sign up for Merge Agent Handler. Create a free account to gain access to the dashboard.
2. Create a Tool Pack. Navigate to "Tool Packs" in the sidebar and create a new Tool Pack. This is the container for your Figma connector and any other tools you want to make available.
3. Add the Figma connector. Within your Tool Pack, add Figma from the available connectors list.
4. Configure authentication. Set up OAuth for Figma to enable secure access to your design files and workspaces.
5. Select specific tools. Choose which Figma tools you want to make available to your agent, or enable all tools by default.
6. Register a User. Navigate to "Registered Users" in the sidebar and create a new registered user. This represents the identity that will perform actions through your agent.
7. Save your Tool Pack. Review and save all your Tool Pack settings.
8. Connect to your agent or IDE. Copy the MCP entry URL from your Tool Pack settings. The URL format will be:
https://ah-api.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp
10. Then add it to your IDE or agent configuration.
Yes, Agent Handler for Employees lets your employees connect Claude, ChatGPT, Microsoft Copilot, Cursor, and other MCP-compatible AI tools to Figma without bypassing IT governance.
Instead of setting up direct connections with personal credentials that IT can't monitor or revoke, each employee authenticates through Agent Handler and gets individual credentials tied to their identity.
IT also provisions access by role or group via SCIM. A designer, for example, gets Figma access to manage design files and components, Slack to share updates and collect feedback, and Jira to link designs to product tickets; while a product manager gets Figma access to review mockups and prototypes, Jira to track feature progress, and Confluence to document design decisions.
Every tool call an employee's AI makes to Figma is also inspected against your DLP rules and logged to a searchable audit trail, giving security teams full visibility into what data was accessed and by whom.
Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now