Connect your AI Agents to Expensify in minutes

Merge lets you securely connect your agents to Expensify and thousands of tools instantly

Available tools

export_card_transactions

Export corporate card transactions for a domain by date range. Two-step: generates reconciliation file then downloads. Returns transaction details including merchant, amount, and card info.

get_domain_cards

List all corporate cards registered on a domain. Returns card details including bank, card name, number, and assigned employee. Use the domain from your company email (e.g. mycompany.com).

update_employees

Add or update employees on a policy. Each employee needs email and manager email. Note: this API is deprecated by Expensify. Use list_policies first to find policy IDs.

create_expenses

Create one or more standalone expenses. Each expense needs merchant, amount (cents), currency, and date. Optionally attach to a report or policy. Use get_policy to check valid categories/tags.

list_policies

List all accessible Expensify policies (workspaces). Returns policy IDs, names, types, and roles. Use this first to get policy IDs needed by other tools.

get_policy

Get detailed policy config including categories, tags, report fields, employees, and tax settings. Use list_policies first to find policy IDs.

create_policy

Create a new Expensify policy (workspace). Returns the new policy ID. Use 'team' for small groups or 'corporate' for organizations with advanced features.

update_categories

Add, update, or replace expense categories on a policy. Use 'merge' to add/update or 'replace' to overwrite all. Use get_policy first to see existing categories.

update_tags

Add, update, or replace tags on a policy. Tags are used to categorize expenses (e.g., by project or department). Use get_policy first to see existing tags.

export_reports

Export expense reports with transactions by date range, status, or ID. Two-step: generates file then downloads. Use list_policies first to verify policy IDs.

create_report

Create a new expense report with transactions. Requires policy ID (use list_policies), employee email, title, and at least one expense with date, merchant, and amount in cents.

update_report_status

Update report status to REIMBURSED (only supported status via API). Filter by report IDs or date range. Reports must be in APPROVED state first.

How to set up Merge Agent Handler

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}
11
Copy Code

Open 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}
Copy Code
Copied!

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  }
Copy Code

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}
Copy Code

FAQs on using Merge's Expensify  MCP server

FAQs on using Merge's Expensify  MCP server

Explore other MCP servers built and managed by Merge

xero
Xero
yelp
Yelp
youtube
YouTube
zendesk
Zendesk
zendesk_sell
Zendesk Sell
zohocrm
Zoho CRM
zohodesk
Zoho Desk
zoom
Zoom
zoominfo
ZoomInfo
biorxiv
bioRxiv
n8n
n8n

Ready to try it out?

Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now