
List customers and vendors with server-side filtering, sorting, and paging. Use this to find contactid values for the invoice, estimate, and contact get/update/delete tools. Filter by contactname, companyname, email, phone, or searchtext; sort with sortcolumn/sortorder; page with page/per_page.
Create a Zoho Books contact. contactname is required; contacttype ('customer' or 'vendor') is optional. Returns the new contactid for use with createinvoice and createestimate (as customerid).
Fetch one contact by ID. Use listcontacts to find contactid values.
Update a contact's fields. Providing email or phone sets the primary contact person. Only the fields you pass are changed. Use listcontacts to find contactid values.
Permanently delete a contact by ID. This cannot be undone. Use listcontacts to find contactid values.
List estimates (quotes) with server-side filtering, sorting, and paging. Filter by customerid (from listcontacts), estimatenumber, customername, searchtext, or status; sort with sortcolumn/sortorder; page with page/perpage. Use this to find estimate_id values for get/update/delete.
Create an estimate (quote). Requires customerid (from listcontacts) and lineitems (each with an itemid from listitems). Returns the new estimateid. Call listcontacts and listitems first to gather valid IDs.
Fetch one estimate by ID. Use listestimates to find estimateid values.
Update an estimate's fields. Only the fields you pass are changed; passing lineitems replaces the existing lines. Use listestimates to find estimateid values and listitems for item_id values.
Permanently delete an estimate by ID. This cannot be undone. Use listestimates to find estimateid values.
List invoices with server-side filtering, sorting, and paging. Filter by customerid (from listcontacts), invoicenumber, customername, searchtext, or status; sort with sortcolumn/sortorder; page with page/perpage. Use this to find invoice_id values for get/update/delete.
Create an invoice. Requires customerid (from listcontacts) and lineitems (each with an itemid from listitems). Returns the new invoiceid. Call listcontacts and listitems first to gather valid IDs.
Fetch one invoice by ID. Use listinvoices to find invoiceid values.
Update an invoice's fields. Only the fields you pass are changed; passing lineitems replaces the existing lines. Use listinvoices to find invoiceid values and listitems for item_id values.
Permanently delete an invoice by ID. This cannot be undone. Use listinvoices to find invoiceid values.
List items (products and services) with server-side filtering, sorting, and paging. Use this to find itemid values for the lineitems of createinvoice and createestimate. Filter by name, description, or searchtext; sort with sortcolumn/sortorder; page with page/perpage.
Create an item (a product or service). Requires name and rate. Returns the new itemid for use in createinvoice and createestimate lineitems.
Fetch one item by ID. Use listitems to find itemid values.
Update an item's fields. Only the fields you pass are changed. Use listitems to find itemid values.
Permanently delete an item by ID. This cannot be undone. Use listitems to find itemid values.
List the Zoho Books organizations and IDs visible to this credential. The organization used by other tools is fixed by the connected account's organization_id. This informational tool can confirm which organization is linked.
Validate Zoho Books credentials by listing accessible organizations and confirming the connected account's organization_id is present.

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}Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now