MCP server reference

CallForMe is a remote MCP server over streamable HTTP at https://callforme.tel/mcp with standard OAuth sign-in. Adding it shows a Connect step that creates your account in one click. It has ten tools, including place_call, get_call, answer_question and share_call. Clients without OAuth can use /mcp/open or a personal key URL.

Endpoint

https://callforme.tel/mcp

Remote MCP, streamable HTTP, stateless, with standard MCP authorization (OAuth).

Connecting

When you add the URL, your client shows a Connect, Authenticate or Sign in step. A browser tab opens and closes by itself. There's no email, no form and no card. That creates your CallForMe account, and the client keeps the token for every later session.

The only other step is one setup link, the first time your agent places a real call, to add $10. After that every chat just calls. A second agent's first link recognizes you and links it to the same account in one click. See how setup links work.

Clients without OAuth

Endpoint Auth Behavior
https://callforme.tel/mcp OAuth The default. One click to connect.
https://callforme.tel/mcp/open None Works anywhere. Your agent gets a setup link in each new session unless it saves the account_key it receives and passes it back.
https://callforme.tel/mcp/k/<your key> Key in the URL Create a key on the account page. Calls go straight to your account.
https://callforme.tel/mcp + header Authorization: Bearer cfm_... Same key, sent as a header instead of in the URL.

On any endpoint, place_call also accepts "account_key": "cfm_..." and "setup_code": "k7m2q" (after the user finishes a setup link).

Tools

Tool Arguments Account Returns
place_call phone (required), goal (required), business_name, details, questions, on_behalf_of, callback_number, constraints, voicemail_message, transfer_to, language, setup_code, account_key Balance needed to dial (demo line is free) calling, needs_setup, or blocked
get_call call_id, wait_seconds (0 to 50) Yes Status, transcript, pending question, answers, outcome, duration, cost
answer_question call_id, answer Yes Confirms the answer was passed to the voice assistant
hang_up call_id Yes Ends the call
plan_call Same as place_call without setup_code and account_key No Opening line, checklist, likely uncovered questions, open-now check, cost estimate
find_business query, near No Name, phone, address, open now, hours today, rating
share_call call_id, public (default true) Yes A public link at https://callforme.tel/c/<id>. Pass public: false to turn it off.
list_calls limit Yes Your recent calls
account none Yes Balance, auto-reload setting, top-up link
pricing none No Current prices

place_call to the demo line, Maple Street Pizza at +1 469 770 7412 (a fictional restaurant), needs no payment: up to 5 free calls a day per user.

There's also a get_setup helper for the setup flow: after the user finishes a setup link, your agent can call it with the code instead of passing setup_code to place_call again. See setup links.

place_call arguments

Argument Type Notes
phone string Required. US or Canadian number. E.164 (+19725550100) is safest.
goal string Required. One sentence with the outcome you want.
business_name string Used in the call and in results.
details string Facts the assistant may share: names, order numbers, car model.
questions string[] What you want answered. Each comes back in answers.
on_behalf_of string The requester's name. Used in the opener.
callback_number string A number the business can use to reach the requester.
constraints string Limits, like "don't agree to more than $200".
voicemail_message string Left only if the call reaches voicemail. Without it, the assistant hangs up on voicemail.
transfer_to string The requester's phone. They're patched in when a human answers.
language string Defaults to en.
setup_code string From a needs_setup response, after the user finishes the link.
account_key string A cfm_ key, if not sent another way.

place_call responses

{ "status": "calling", "call_id": "call_8f2k1" }
{
  "status": "needs_setup",
  "setup_url": "https://callforme.tel/go/k7m2q",
  "setup_code": "k7m2q",
  "message_for_user": "To place this call, open https://callforme.tel/go/k7m2q and add $10. Then tell me when you're done."
}
{ "status": "blocked", "reason": "This number has asked not to receive automated calls." }

On /mcp/open, the first successful place_call after setup also includes account_key (cfm_...), shown once. Save it. OAuth and personal-key connections don't need to.

get_call response

{
  "status": "ended",
  "transcript": [
    { "role": "business", "text": "Nonna's, this is Kate." },
    { "role": "assistant", "text": "Hi Kate, I'm an automated assistant calling on behalf of Jordan..." }
  ],
  "pending_question": null,
  "answers": {
    "Is there a booth?": "No, window table instead."
  },
  "outcome": {
    "success": true,
    "summary": "Booked 4 at 7:45pm Friday under Jordan.",
    "confirmation_number": null,
    "price_quoted": null,
    "appointment_time": "Friday 7:45pm",
    "next_steps": "None."
  },
  "duration_s": 58,
  "cost_usd": 1.00
}

status moves through queued, ringing, in_progress, ended. The transcript shape above is illustrative; the fields listed in this section are the contract.

Mid-call questions

When the business asks something the assistant doesn't know, get_call returns a pending_question string. Reply with:

{ "call_id": "call_8f2k1", "answer": "Use 469-555-0199." }

on answer_question. The assistant waits on the line up to about 60 seconds. If there's no answer within about 50 seconds, it tells the business it'll call back.

Sharing a call

share_call makes a read-only page for one ended call at https://callforme.tel/c/<id>, with the transcript and result. Phone numbers and email addresses are hidden. The response is { "ok": true, "url": "...", "message": "..." }. Call it again with "public": false to take the page down.

{ "call_id": "call_8f2k1", "public": true }

Prompts

The server ships MCP prompts your agent can use as starting points:

Prompt For
quotes Call several places and compare
reservation Book a table or appointment
cancel Cancel a membership or service
hold-for-me Wait on hold, patch you in
negotiate-bill Ask for a lower bill
check-stock See who has something in stock

Recommended loop

  1. find_business if you don't have the number.
  2. plan_call and fill any gaps it lists.
  3. place_call. If needs_setup (first real call only), show message_for_user and wait.
  4. place_call again with setup_code. On /mcp/open, save account_key.
  5. get_call with wait_seconds: 50 until ended. Answer any pending_question.
  6. Report answers and outcome to the user. Offer share_call if they want to show someone.

Limits

US and Canadian numbers only. 911, 988, 211, 311, other N11 and 900/976 numbers are blocked. Up to 3 calls to the same number per account per day. Calls end at 30 minutes. See safety and disclosure.

Questions

What does the Connect step do?

It's standard MCP OAuth. A browser tab opens and closes by itself, with no email, form or card, and that creates your account. The first real call then shows one setup link to add $10.

Does the server keep session state?

No. It's stateless streamable HTTP. Every request carries its own auth token, so any client that speaks remote MCP works.

How long should get_call wait?

Pass wait_seconds up to 50. The call returns early when the status changes or a pending_question appears.

My client doesn't support OAuth. Can I still connect?

Yes. Use https://callforme.tel/mcp/open, which needs no sign-in, or create a key on the account page and use https://callforme.tel/mcp/k/<your key> or the header Authorization: Bearer cfm_....

Add CallForMe to your agent

One URL for any MCP agent. No key needed to install.

https://callforme.tel/mcp

Install steps for your agent · Pricing