An MCP server for phone calls
An AI assistant can read a web page, but it cannot ring a shop and ask a question. The HumanCalls MCP server closes that gap. Your assistant sends a request, a real person makes the call, and the assistant reads back what the business said.
What the HumanCalls MCP server is
MCP (Model Context Protocol) is a standard way for a chat app or coding tool to use outside services. HumanCalls runs one such server. It lets your assistant request a phone call to a business in the United States or Canada.
The call is made by a person, not a synthetic voice. They say who they are and who they are calling for, and they tell the business the call is recorded. Sales, debt collection, political calls, cold calls to consumers, sensitive healthcare workflows and anything deceptive are not accepted.
The server uses Streamable HTTP and lives at one address:
https://humancalls.ai/mcp
Sign in with OAuth
The server uses OAuth 2.1 with PKCE. Your client finds the sign-in details at https://humancalls.ai/.well-known/oauth-protected-resource, sends you to HumanCalls, and you approve access. You do not copy a key into a chat.
If you already have an hc_live_ API key, it also works as a Bearer token. A first sign-in creates your workspace, and a new workspace gets 10 free minutes once the owner verifies their email address.
Setup steps for each app are on the Connect page. The developer docs cover the REST API for teams that prefer to call it directly.
The seven tools and what each returns
| Tool | What it does |
|---|---|
request_call | Creates the call task: the business, number, goal and the answers you want back. |
get_call | Returns the current state of a call. Once it finishes, this holds the result. |
list_calls | Lists your recent calls so the assistant can find one. |
cancel_call | Cancels a call. This works only while the call is queued or assigned. |
answer_question | Replies to a question your caller asked before dialing. |
add_details | Adds information to a request before the first dial. |
get_account | Shows your balance and whether work can go ahead. |
The tools split into three jobs. request_call, add_details and cancel_call change a task. get_call, list_calls and get_account only read. answer_question is how you reply when a person at HumanCalls needs a detail.
How results are read with get_call
Nothing is pushed into your chat. After request_call, the assistant tells you the call is under way. When you ask how it went, or come back later, it calls get_call.
A finished call returns these fields:
- The status, which moves from queued to assigned, dialing and in progress, then ends as completed, failed, no answer, declined or canceled.
- Typed answers to the questions you asked, with an empty value when an optional answer was unavailable.
- Notes on the outcome and a short summary.
- Duration, billed minutes and cost.
- A link to the recording and a link to the transcript.
Recordings and transcripts can arrive a little after the call completes, so the links may be missing on the first read. Ask again and they appear.
Before dialing, the caller may have a question. It shows up as an open question on get_call. The assistant asks you, then sends your reply with answer_question.
Calls are placed between 8am and 9pm in the business's own time zone, so a result can take from a few minutes to the next business morning.
Which clients work
Any client that supports MCP over Streamable HTTP with OAuth can connect. Dedicated guides exist for ChatGPT, Claude, Claude Code and Cursor. You can also add a call step to a workflow with n8n. The full list is on the integrations page.
A request looks like this in plain words. The business is a fictional example.
- “Example: Call Lakeside Hardware on 512 555 0187 and ask if they stock 3/4 inch copper elbows and the price per unit. Don't order anything.”
What it costs
$1 per connected minute, rounded up to the next minute. Phone menus and hold time after the business answers count. Ringing does not. A call nobody answers, a declined request and a canceled call cost $0. Credit is added only by you on your dashboard, so your assistant can check the balance with get_account but cannot buy anything. See pricing.
Questions
- What is the address of the HumanCalls MCP server?
- It is https://humancalls.ai/mcp. Paste it into any MCP client that supports Streamable HTTP and sign in with OAuth.
- Do I need an API key to use the MCP server?
- No. Your client signs you in with OAuth 2.1 and PKCE. An existing hc_live_ key also works as a Bearer token if you already have one.
- Does the server push call results to my assistant?
- No. Results are read with get_call when you ask. The assistant tells you the call is under way, then fetches the result later.
- Is the caller an AI voice?
- No. A real, trained person makes every call, says who they are calling for, and tells the business the call is recorded.
- Can my assistant spend my money on its own?
- No. Only you can add credit, on your dashboard. The assistant can read your balance with get_account and set a maximum number of minutes for each call.
Related
- Can ChatGPT make phone calls?ChatGPT cannot ring an ordinary business line by itself. Here is what voice mode does, what AI voice agents do, and how to have a real person call for you.
- How to make an AI agent call a businessThree ways to make an AI agent phone a business: build a voice agent, hand the call to a person over an API, or do it yourself. Includes a worked example.
- A human caller or an AI voice agent?When should an AI agent's phone call be made by a real person, and when by an AI voice agent? An honest comparison of cost, speed, accuracy and disclosure.
Try it with 10 free minutes
$1 per connected minute after that, and nothing when nobody picks up.