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

contentful
Contentful
crustdata
Crustdata
databricks
Databricks
datadog
Datadog
docusign
DocuSign
doordash
DoorDash
dropbox
Dropbox
duffel
Duffel
dynamics365
Dynamics 365 Sales
exa
Exa
factset
FactSet
figma
Figma
firehydrant
FireHydrant
firecrawl
Firecrawl
fireflies
Fireflies
foursquare
Foursquare
freshbooks
FreshBooks
freshdesk
Freshdesk
freshservice
Freshservice
front
Front
gamma
Gamma
github
GitHub
gitlab
GitLab
gmail
Gmail

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