Dialpad for AI agents

Dialpad is a cloud phone and contact center platform that handles calls, messages, and meetings for business teams over their existing devices. Connect it once through Arc0, and your agent, or Claude, ChatGPT and Cursor, can use it through one MCP endpoint, limited to what each user approved.

CommunicationOAuth 2.0MCP + RESTdialpad.com
AUDIT LOG · DIALPADPOLICY: acme-support
09:41:07 · claude · u_8f2read
dialpad.list_users
List users✓ allowed · 212ms
09:41:08 · claude · u_8f2read
dialpad.get_rooms_list
Get rooms list✓ allowed · 164ms
09:41:09 · claude · u_8f2write
dialpad.create_callback
Create callback✓ approved · approved by user
09:41:12 · claude · u_8f2destructive
dialpad.delete_room_by_id
Delete room by id✕ blocked · policy: deny
EVERY DIALPAD CALL, ON THE RECORD
01 · USE CASES

What agents do in Dialpad.

01

Route a call to an operator

Add an operator to a call center queue so incoming calls reach the right person during a shift change.

02

Look up a contact record

Read a contact's details before an agent returns a call, without editing the directory.

03

Approve before blocking numbers

Flag a request to add blocked phone numbers for review, since it can cut off a legitimate caller.

02 · ACTIONS

192 Dialpad actions, graded by risk.

Every Dialpad action is tagged read, write or destructive, so one policy covers the whole app and new actions inherit the right default.

read

80

Look things up. Allowed by default.

  • dialpad.list_users
    List users
  • dialpad.get_rooms_list
    Get rooms list
  • dialpad.get_call_labels
    Get call labels
  • dialpad.list_channels_api
    List channels api
  • dialpad.get_user_caller_id
    Get user caller id
  • dialpad.get_user_deskphones
    Get user deskphones
  • dialpad.get_user_e911_details
    Get user e911 details
  • dialpad.list_conference_rooms
    List conference rooms
  • dialpad.list_offices_endpoint
    List offices endpoint
  • dialpad.get_deskphones_in_rooms
    Get deskphones in rooms
  • dialpad.get_office_call_centers
    Get office call centers
  • dialpad.get_phone_number_details
    Get phone number details
  • dialpad.get_webhooks_information
    Get webhooks information
  • dialpad.get_channel_members_by_id
    Get channel members by id
  • dialpad.get_deskphone_by_parent_id
    Get deskphone by parent id
  • dialpad.get_call_center_status_by_id
    Get call center status by id
+ 64 MORE

write

81

Create and change things. Allow, or ask the user first.

  • dialpad.create_callback
    Create callback
  • dialpad.update_room_details
    Update room details
  • dialpad.add_member_to_channel
    Add member to channel
  • dialpad.add_operator_to_office
    Add operator to office
  • dialpad.add_participant_to_call
    Add participant to call
  • dialpad.create_channel_endpoint
    Create channel endpoint
  • dialpad.create_secondary_office
    Create secondary office
  • dialpad.create_new_contact_entry
    Create new contact entry
  • dialpad.post_users_screenpop_uri
    Post users screenpop uri
  • dialpad.update_ivr_details_by_id
    Update ivr details by id
  • dialpad.add_blocked_phone_numbers
    Add blocked phone numbers
  • dialpad.post_recording_share_link
    Post recording share link
  • dialpad.update_contact_information
    Update contact information
  • dialpad.add_member_to_coaching_team
    Add member to coaching team
  • dialpad.add_operator_to_call_center
    Add operator to call center
  • dialpad.update_operator_duty_status
    Update operator duty status
+ 65 MORE

destructive

31

Delete, cancel or archive. Ask first, or deny outright.

  • dialpad.delete_room_by_id
    Delete room by id
  • dialpad.delete_user_by_id
    Delete user by id
  • dialpad.delete_channel_by_id
    Delete channel by id
  • dialpad.delete_contact_by_id
    Delete contact by id
  • dialpad.delete_webhook_by_id
    Delete webhook by id
  • dialpad.delete_number_via_api
    Delete number via api
  • dialpad.remove_blocked_numbers
    Remove blocked numbers
  • dialpad.delete_call_center_by_id
    Delete call center by id
  • dialpad.delete_call_router_by_id
    Delete callrouter by id
  • dialpad.delete_deskphone_in_room
    Delete deskphone in room
  • dialpad.delete_agent_status_by_id
    Delete agent status by id
  • dialpad.delete_department_resource
    Delete department resource
  • dialpad.delete_channel_member_by_id
    Delete channel member by id
  • dialpad.delete_deskphone_by_user_id
    Delete deskphone by user id
  • dialpad.delete_office_operator_by_id
    Delete office operator by id
  • dialpad.delete_schedule_report_by_id
    Delete schedule report by id
+ 15 MORE
03 · HOW IT WORKS

Dialpad in three steps.

  1. 01Your users connect DialpadThey sign in to Dialpad on Arc0 Connect, under your brand, and approve the access you ask for.
  2. 02You set the rulesReads run, writes like “create callback” can wait for the user, and “delete room by id” can be denied outright.
  3. 03Any agent can actYour agent calls Dialpad through the Arc0 SDK or MCP, and so can Claude, ChatGPT and Cursor. Every call lands on the audit log.
POLICY.TS
await arc0.policies.set('dialpad', {
  read: 'allow',
  write: 'ask',        // create_callback
  destructive: 'deny',  // delete_room_by_id
})

# Claude Code: the same connection, one URL
$ claude mcp add --transport http arc0 \
    https://mcp.arc0.ai/u/u_8f2
04 · AUTH AND DATA

How Dialpad connects.

Users sign in to Dialpad on Arc0 Connect and approve the scopes you request. Build with Arc0’s Dialpad OAuth app, or bring your own so the Dialpad consent screen names you. Tokens refresh automatically, and you can export them whenever you want.

The same Dialpad connection serves your agent over MCP and your own backend over REST and the proxy, so a user connects once. How Arc0 handles credentials →

AUTH
API key · OAuth 2.0
CREDENTIALS
Per-tenant encrypted vault
MODEL SEES
Results only, never credentials
AUDIT LOG
Every call, on every plan
05 · WORKS WITH

Use Dialpad from any agent.

Claude
ChatGPT
Cursor
Codex
VS Code
OpenAI Agents SDK
Claude Agent SDK
Vercel AI SDK
Mastra
LangGraph
07 · FAQ

Dialpad and Arc0, answered.

Q01

Can I use Dialpad with Claude, ChatGPT or Cursor?

Yes. Connect Dialpad to Arc0 once, then add your Arc0 MCP URL to Claude, ChatGPT, Cursor, Claude Code or any other remote-MCP client. Each assistant only gets the Dialpad actions you allow.

Q02

How do users connect Dialpad?

Users sign in to Dialpad on Arc0 Connect and approve the scopes you request. Build with Arc0’s Dialpad OAuth app, or bring your own so the Dialpad consent screen names you. Tokens refresh automatically, and you can export them whenever you want.

Q03

Which Dialpad actions can my agent take?

192 in total: 80 read, 81 write and 31 destructive, such as “create callback”. Your policies decide which of them each agent may call.

Q04

Can I stop my agent from deleting things in Dialpad?

Yes. Actions like “delete room by id” are graded destructive. Set destructive actions to deny, or to ask so the user approves each one, and blocked calls still show up on the audit log.

Q05

Can my own backend call Dialpad too?

Yes. The same Dialpad connection is available over REST and through the Arc0 proxy, so your product and your agent share one connection per user.

Get started

Plug Dialpad into your agent.

Your users connect Dialpad once, under your brand. Your agent gets 192 actions behind your policies, with every call on the record.

Free to build · MCP + REST · Audit log on every plan