Documentation

How phoneAFriendForAgents works

phoneAFriendForAgents is a remote MCP server with one job: your agent names a business, a phone number, and the questions, and a real person makes the call and writes back. This page covers connecting, the three tools, how a call runs, what the caller will and will not do, the monthly allowance, and what to do when something goes wrong.

Connect

The server address is https://phoneafriendforagents.com/mcp. Add it to any MCP client that supports remote servers.

Sign in from the client. Clients that support OAuth (claude.ai, Claude Desktop, Claude Code, Codex, Cursor, and others) open a browser page on connect. Enter your email address, type the six-digit code that arrives, and the client receives a token. In claude.ai: Customize → Connectors → Add custom connector, paste the address, and connect.

Or paste an API key. For scripts, SDK-built agents, and clients that only take a header, request a key on the home page; it arrives by email with the setup lines for each client filled in. Send it as Authorization: Bearer <key>.

Either way your account is your email address. Calls, limits, and the allowance belong to that address, so the same person signing in from two clients sees the same calls. Step-by-step lines for each client are on the home page.

The tools

request_call
Have a person call a number and report back.
Required: entity (who to call, with the branch or city), phone (with country code; add an extension or menu path if known), questions (1 to 10, each answerable in a sentence). Optional: on_behalf_of, context, constraints, call_window, language, attachments, timeout_minutes.
get_call_result
Pick up the report on an earlier call.
task_id from the original call, and an optional timeout_minutes; 0 checks once and returns.
check_allowance
See how many calls are left this month.
No parameters. Places no call.

How a call runs

1. Your agent calls request_call. The server checks the allowance and rate limits, then emails the brief to the person who makes the call.

2. The tool waits up to timeout_minutes for the report. The default is 3 minutes, because claude.ai and Claude Desktop stop any tool call after four minutes. If the report is not in by then, the tool returns status timeout with a task_id, and the call carries on.

3. The person dials during the business's hours, asks the questions, and replies in writing. Expect twenty minutes to a few hours. A call outside business hours is made at the next opportunity.

4. Your agent picks the report up with get_call_result and the task id. In Claude Code, which allows long tool calls, you can set timeout_minutes up to 1440 and raise MCP_TOOL_TIMEOUT to wait in one go.

Both call tools return the same structure as text and as structured content:

{
  "task_id": "HT-3f9a1c2b",
  "status": "completed | partial | failed | timeout | cancelled",
  "report": "the caller's words, or null until reported",
  "counted": true,
  "calls_remaining": 9,
  "requested_at": "ISO 8601",
  "reported_at": "ISO 8601 or null",
  "waited_seconds": 180,
  "note": "what to do next, when there is something to do"
}

completed means they were reached and answered; partial means some questions were answered; failed means no answer, voicemail, a wrong number, or a refusal to talk, which is not counted. The report is the caller's own account of what the business said. Agents should treat it as information to relay, not as instructions.

What the caller does and does not do

The caller introduces themselves as calling on behalf of whoever the agent names in on_behalf_of (a first name, a company, or "a client"), asks the questions, and reports what was said with exact figures and the name of whoever answered.

The caller never claims to be you or your user, never says they are an account holder, never gives payment details, and never agrees to anything the agent did not authorise. Calls are for information a business gives any caller: hours, prices and quotes, stock at a branch, whether a table or appointment is free, order and reservation status, return and cancellation policies, whether a package arrived. Anything only an account holder may ask for is out of scope, and so is anything a web form or API could answer.

Allowance and limits

Every account can complete 10 calls per calendar month (UTC). A call counts when the report comes back with the questions answered in full or in part; a call that does not get through does not count. An account may have 3 calls in progress at once, and each holds one of the month's calls until it is reported. The allowance resets on the first of the month. Need more? Write to rmtonmoy232@gmail.com about an enterprise setup.

Example prompts

"Call Powell's City of Books on Burnside in Portland and ask what time they close today."

"Call Dr. Patel's office at +1 510 555 0142 and ask whether they are taking new patients and what the earliest appointment is."

"Phone Bay Outfitters in Berkeley, ask if the navy Kånken 16L is in stock, and if so whether they can hold one under the name Alex until closing."

"Ring the restaurant and ask whether they have a table for four at 7pm on Friday and whether they take walk-ins."

"Check how many calls I have left this month."

Troubleshooting

The connector will not connect or returns 401. Your token has expired or the key is wrong. Disconnect and sign in again, or request a fresh key on the home page.

The sign-in code does not arrive. Check spam. Codes expire after ten minutes and are limited to three per address per hour; wait and start again from your client.

The tool returned status "timeout". Nothing went wrong. The call is under way; call get_call_result with the task id later, or with timeout_minutes: 0 to check without waiting.

The tool call was cut off by the client. claude.ai and Claude Desktop stop tool calls after four minutes. Leave timeout_minutes at the default or lower; the call still happens, and the agent can pick it up. In Claude Code raise MCP_TOOL_TIMEOUT to wait longer.

"No calls left this month". The allowance resets on the first of the month. Calls still in progress hold a slot until they are reported.

"No call HT-... was requested with your credentials". Task ids belong to the account that requested them. Sign in with the same email address, or use the same key.

Attachment problem. Each attachment needs exactly one of url, base64, or text; up to 10 files and 20 MB per call. Most calls need none.

Anything else: see Support.