Connect your AI Agents to Dialpad in minutes

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

Available tools

list_callcenters

List Dialpad call centers. Filter by officeid or namesearch; set includealerts for alert config. Use cursor + limit for pagination. Use listoffices to find office_id.

get_callcenter

Get a Dialpad call center by ID. Use list_callcenters to find call center IDs.

create_callcenter

Create a Dialpad call center. name and officeid are required; use listoffices to find office_id. Returns the new call center including its id.

update_callcenter

Update a Dialpad call center by ID. Only the fields you set are changed. Use list_callcenters to find call center IDs.

delete_callcenter

Delete a Dialpad call center by ID. Use list_callcenters to find call center IDs.

list_channels

List Dialpad channels. Filter by state. Use cursor + limit for pagination.

get_channel

Get a Dialpad channel by ID. Use list_channels to find channel IDs.

create_channel

Create a Dialpad channel. name, description, and privacytype ('public' or 'private') are required. Returns the new channel including its id. Use addchannelmember to add members and deletechannel to remove the channel.

delete_channel

Delete a Dialpad channel by ID. Use list_channels to find channel IDs.

list_channel_members

List members of a Dialpad channel. Use list_channels to find channel IDs. Use cursor + limit for pagination.

add_channel_member

Add a user to a Dialpad channel. Use listchannels to find channel IDs and listusers to find user IDs. Inverse of removechannelmember.

remove_channel_member

Remove a user from a Dialpad channel. Use listchannelmembers to find member user IDs. Inverse of addchannelmember.

list_sms_opt_outs

List SMS opt-out records for a Dialpad company. Use getcompany to find companyid. This endpoint requires a company admin API key. a2pcampaignid is only valid with optoutstate='opted_out'.

get_company

Get the Dialpad company associated with the current credential. Use this to discover the company ID needed by listsmsopt_outs.

list_contacts

List Dialpad contacts. Filter by name (first/last/display/company) or ownerid. Use cursor + limit for pagination; pass pageinfo.cursor back as cursor for the next page. Use listusers to find ownerid values.

get_contact

Get a Dialpad contact by ID. Use list_contacts to find contact IDs.

create_contact

Create a Dialpad contact. firstname and lastname are required. Returns the new contact including its id for use with getcontact/updatecontact/delete_contact.

update_contact

Update a Dialpad contact by ID. Only the fields you set are changed. Use list_contacts to find contact IDs.

delete_contact

Delete a Dialpad contact by ID. Use list_contacts to find contact IDs.

list_departments

List Dialpad departments. Filter by officeid or namesearch. Use cursor + limit for pagination. Use listoffices to find officeid values.

get_department

Get a Dialpad department by ID. Use list_departments to find department IDs.

create_department

Create a Dialpad department. name and officeid are required; use listoffices to find office_id. Returns the new department including its id.

update_department

Update a Dialpad department by ID. Only the fields you set are changed. Use list_departments to find department IDs.

delete_department

Delete a Dialpad department by ID. Use list_departments to find department IDs.

list_numbers

List Dialpad phone numbers. Filter by area_code or status ('office', 'available', 'pending', 'suspended'). Use cursor + limit for pagination.

get_number

Get a Dialpad phone number by its E.164 string, e.g. '+14155550001'. Use list_numbers to find numbers. The number itself is the key, not a numeric ID.

delete_number

Unassign/delete a Dialpad phone number by its E.164 string, e.g. '+14155550001'. Use list_numbers to find numbers.

list_call_labels

List the call label names configured for the company. Returns a bare list of label strings with no pagination.

list_offices

List Dialpad offices. Set active_only to return only active offices. Use cursor + limit for pagination. Offices are read-only; use this to find office IDs for creating users, departments, call centers, and rooms.

get_office

Get a Dialpad office by ID. Use list_offices to find office IDs.

list_rooms

List Dialpad rooms. Filter by officeid. Use cursor + limit for pagination. Use listoffices to find office_id values.

get_room

Get a Dialpad room by ID. Use list_rooms to find room IDs.

create_room

Create a Dialpad room. name and officeid are required; use listoffices to find office_id. Returns the new room including its id.

update_room

Update a Dialpad room by ID. Only the fields you set are changed. Use list_rooms to find room IDs.

delete_room

Delete a Dialpad room by ID. Use list_rooms to find room IDs.

list_scheduled_messages

List Dialpad scheduled messages. Use cursor and limit to paginate; use user_id to filter by owner.

get_scheduled_message

Get one Dialpad scheduled message by its string ID.

create_scheduled_message

Schedule a real Dialpad SMS/MMS; sendat is ISO 8601, at least 10 minutes ahead. Links go in text; filereference is one image or video (max 500 KiB raw). Dialpad rejects documents; share them as links in text. Use exactly one recipient and text or file_reference. Texting phone numbers requires the company's 10DLC registration in Dialpad; if a send fails for missing registration, don't retry.

update_scheduled_message

Update only the fields provided for a Dialpad scheduled message. sendat is ISO 8601 and must be at least 10 minutes from now. filereference replaces one image or video (max 500 KiB raw); Dialpad rejects documents, so share them as links in text.

delete_scheduled_message

Delete a Dialpad scheduled message by its string ID.

send_scheduled_message_now

Send a Dialpad scheduled message immediately instead of waiting for its scheduled time.

send_sms

Send a real SMS/MMS in Dialpad. Links go in text; filereference is one image or video (max 500 KiB raw). Dialpad rejects documents; share them as links in text. Use exactly one recipient and text or filereference. Texting phone numbers requires the company's 10DLC registration in Dialpad; if a send fails for missing registration, don't retry.

create_text_export

Start a batch text-history export (not real-time; real-time needs webhooks). Texts sent today may not appear yet. Exports take about 10s; Dialpad allows 200 per hour. Covers the whole company unless officeid or targettype/targetid is set. Then poll gettextexport with requestid until status is complete.

get_text_export

Read a batch text-history export (not real-time; real-time needs webhooks). Texts sent today may not appear yet. Exports take about 10s; Dialpad allows 200/hour. Covers the whole company unless officeid or targettype/targetid was set. Poll with requestid until complete. Each page re-downloads the export, so prefer a large limit. direction/message_id filters and paging run on our side.

list_users

List Dialpad users. Filter by firstname, lastname, state, email, companyadmin, number, or forwardingnumber. Use cursor + limit for pagination. For free-text search across name/email, use search_users instead.

search_users

Search Dialpad users by a free-text query matched against name and email. Use this when you have a search term; use list_users to browse or filter by a specific field. query is required.

get_user

Get a Dialpad user by ID. Use listusers or searchusers to find user IDs.

create_user

Create a Dialpad user. email and officeid are required; use listoffices to find officeid. Returns the new user including its id for use with getuser/updateuser/deleteuser.

update_user

Update a Dialpad user by ID. Only the fields you set are changed. Use listoffices to find officeid values. Use list_users to find user IDs.

delete_user

Delete a Dialpad user by ID. Use list_users to find user IDs.

validate_credential

Validate Dialpad credentials by making a lightweight authenticated request. Returns success plus a message explaining any failure.

View all tools by creating a free accountSee more tools

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 Dialpad  MCP server

FAQs on using Merge's Dialpad  MCP server

Explore other MCP servers built and managed by Merge

activecampaign
ActiveCampaign
adobe_experience_manager
Adobe Experience Manager
adobe_pdf_services
Adobe PDF Services
adobe_workfront
Adobe Workfront
ahrefs
Ahrefs
airtable
Airtable
alphavantage
Alpha Vantage
amadeus
Amadeus
amazon_s3
Amazon S3
amazon_seller_central
Amazon Seller Central
amplitude
Amplitude
anaplan
Anaplan
apollo
Apollo
arize
Arize
articulate
Articulate Reach 360
asana
Asana
ashby
Ashby
attio
Attio
avalara
Avalara
aviationstack
Aviationstack
aws_partner_central_selling
AWS Partner Central Selling
axiom
Axiom
bamboohr
BambooHR
basecamp
Basecamp

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