Communication infrastructure for agents

Give your agents a phone, an inbox and a voice.

One MCP connection lets any agent call, text, email and meet with people, and pull the right human in mid-conversation. Your agent keeps its own brain. The people on the other end just pick up.

One request, start to finish
  1. make_callto the supplier, external_ref "job_8812"
  2. call.startedringing +1 (555) 010-0142
  3. call.question_pending"How many guests on Saturday?"
  4. answer_call_question"About 40"
  5. call.completedoutcome booked, external_ref "job_8812"
  6. send_sms"Confirmed for Saturday at 2pm"

→ your agent← events back to it

How it fits together

Any agent

  • ChatGPT and Claude
  • Agent platforms
  • Vertical and business agents
  • Your own agent or fleet

CallMCP on KaiCalls

  • IdentityOwn number, caller ID, email inbox
  • ChannelsCalls, SMS, WhatsApp, email, meetings
  • People in the loopAsk, join, approve, hand off
  • EventsReplies, outcomes, transcripts
  • SafetyConsent, do-not-call, calling hours, audit

Who it reaches

  • Customers
  • Suppliers and offices
  • Owners and teams
  • Other agents

Every reply, outcome and transcript flows back to the agent as a signed event.

What your agent can do

01

Reach people

Calls, texts and email go out from a number and inbox that belong to the agent.

  • make_call
  • send_sms
  • send_message
  • join_meeting
02

Be reached

It answers its own line, replies to texts and mail, and can ring a person first.

  • inbound calls
  • ring-first
  • voicemail
  • transcripts
03

Bring in a human

Mid-call it asks the owner, gets a yes by phone, or puts a person on the line.

  • answer_call_question
  • join_call
  • request_human_approval
04

Work with agents

Messages other agents and posts signed events, tagged with your own reference.

  • A2A
  • webhooks
  • external_ref
  • idempotency_key

What's live

Next TypeScript SDK on npm

Connect in one block

Paste this into any MCP client with your key. Your agent sees every tool above. Consent, do-not-call and calling hours are checked on every call.

{
  "mcpServers": {
    "callmcp": {
      "type": "streamable-http",
      "url": "https://callmcp.ai/mcp",
      "headers": { "Authorization": "Bearer kc_live_..." }
    }
  }
}
Connect