CallAlternative
Skip to guide
← AI callingCallAlternative / Agent guide
On this page

AI AGENT GUIDE Upcoming open beta

Connect your
AI agent.

You ask. Your agent prepares the request. CallAlternative makes the call and brings the answer back.

01 Connect02 Ask03 Get the answer
Get ready for the beta. Agent connections are available only where enabled. Creating an account, connecting an agent or upgrading to Max does not activate beta calling.
Start with the connection

01 / SET UP

Connect your agent

CallAlternative uses MCP: a shared way for an AI application to discover tools and ask them to do a task. Your application needs to support Streamable HTTP MCP with OAuth authorization.

GPT, Claude and Gemini illustrate compatible-agent workflows. Setup depends on your application; native chat-app connectors are not included in this release.

Before you begin

  • An active Max subscription and an email-verified account.
  • Calling credit and a destination your account can call.
  • A compatible agent application with the connection configured.

Basic and Basic Plus do not include AI agent or MCP access.

Checking connection availability…

  1. Add the available MCP server address to your compatible agent application.
  2. Choose its connect or authorize option. Sign in to CallAlternative when prompted.
  3. Review the application, return address and permissions. Select Connect to return to your agent automatically.

You never need to copy access tokens. Your agent handles its own connection credentials after you approve. Manage or disconnect applications in Connected agents.

Never paste credentials into prompts or URLs, or extract tokens from your browser. Only approve applications and return addresses you recognize.

Choose and change permissions

Connections default to read-only. If your agent requests calling access, you can choose Allow calling before connecting. In Connected agents, turn calling off immediately while keeping read access. To allow calling again, reconnect from your agent, request calls:write and approve it. Existing calls continue when calling access is removed.

Manage agent permissions
Check the connection without placing a call

First, ask your application to discover the server’s available tools (tools/list in MCP). Then check your account and destination. These examples are MCP tool invocations, not connection settings.

Check account access
{
  "name": "account_get_status",
  "arguments": {}
}
Check a destination
{
  "name": "calling_preflight",
  "arguments": {
    "to": "+12025550100"
  }
}
List recent calls
{
  "name": "calls_list",
  "arguments": {
    "limit": 10
  }
}

The example number is fictional. Replace it with your intended, authorized recipient. A successful connection check does not enable beta calling.

02 / ASK

Start with one question

Keep your first request small. For example:

“Call the restaurant and ask if they’re open today.”
  1. Confirm the recipient. Your agent checks the number and whether your account can call it.
  2. Confirm the request. Give your agent permission to place this specific call.
  3. Keep the call ID. When calling is enabled, your agent submits the request and uses the returned ID to follow it.
MCP tool invocation · ask a question
{
  "name": "call_create_with_goal",
  "arguments": {
    "destination": "+12025550100",
    "goal": "Are you open today?",
    "maxDurationSeconds": 30,
    "idempotencyKey": "<unique-operation-UUID>"
  }
}

Example only; nothing runs on this page. Replace the fictional number and placeholder key before using it in your configured agent.

Question limits and safe retries

Use one English question, up to 220 ASCII characters. The current calling agent speaks English (en-US). The duration is a requested cap, not an exact hard stop; your balance or eligibility may reduce it.

Generate a unique UUID for each new operation. If a request times out with an unknown result, retry with the same idempotency key and identical arguments. Do not create a new key or automatically redial.

A queued response does not prove the phone rang. Check the returned call ID for progress and results.

03 / GET THE ANSWER

Find out what happened

Open Calls for captured answers and available transcripts. Your agent can retrieve them through MCP using the same call ID.

Call progresscall_get
Answer & outcomecall_get_result

Completed means the call ended. Check the captured answer and action outcome to learn whether someone answered and your request was achieved.

Read results in your agent
Check call progress
{
  "name": "call_get",
  "arguments": {
    "callId": "<returned-call-id>"
  }
}
Read the call result
{
  "name": "call_get_result",
  "arguments": {
    "callId": "<returned-call-id>"
  }
}

answerCapture.status can be pending, captured, no_answer or unavailable. If pending, check the same ID later or reload Calls.

For actions, inspect result.outcome.status: confirmed, not_completed, needs_user_input or unknown. Provider-reported results use source: provider_report and independentlyVerified: false. A captured quote can exist alongside an unknown outcome.

If the result is unclear, ask the user what to do next. Do not automatically redial.

End a call when the user asks

Confirm which call should stop, then use its call ID and a separate operation key.

End the confirmed call
{
  "name": "call_hangup",
  "arguments": {
    "callId": "<returned-call-id>",
    "idempotencyKey": "<separate-operation-UUID>"
  }
}

One simple action, too

Ask your agent to confirm a reservation, move a reservation or cancel an appointment. It should collect missing details and get your approval before calling.

“Call the salon and cancel Alex Rivera’s appointment.”
Supported actions and required details

Natural requests can be short. The submitted action currently requires both the reference and customer name. Your agent must ask for these if missing; a name alone is not enough for the structured action.

Use the matching action type and exact English goal
Action typeGoal (English)
confirm_reservationConfirm the reservation.
reschedule_reservationReschedule the reservation.
cancel_appointmentCancel the appointment.

Only fee-free requests within the approved details are supported. Do not authorize charges, payments, unapproved alternatives or extra conditions. A reschedule needs an unambiguous future date, time and time zone.

MCP tool invocation · move a reservation
{
  "name": "call_create_with_goal",
  "arguments": {
    "destination": "+12025550100",
    "goal": "Reschedule the reservation.",
    "maxDurationSeconds": 120,
    "idempotencyKey": "<unique-operation-UUID>",
    "action": {
      "type": "reschedule_reservation",
      "userAuthorized": true,
      "target": {
        "reference": "<reservation-reference>",
        "customerName": "Alex Rivera"
      },
      "requestedSlot": {
        "localDate": "2027-04-20",
        "localTime": "19:00",
        "timeZone": "America/New_York"
      }
    }
  }
}

Replace the placeholders and confirm that the example date is still in the future. Set userAuthorized only after the user has approved this exact action. An optional callerName changes the spoken introduction (the default is the account’s first name); it does not replace the action’s customer name.

Your agent’s tools

Discover available tools in your connection before using them. Availability depends on your account and the beta features enabled.

MCP tool reference
ToolWhat it does
account_get_statusReadCheck your account, plan and calling eligibility.
calling_preflightReadCheck a destination before calling. Does not place a call.
calls_listReadFind recent calls and their IDs.
call_getReadCheck the progress of one call.
call_get_resultReadRead available answers, transcripts and action outcomes.
call_create_with_goalPlaces a callPlace a question or supported action call, when beta calling is enabled.
call_hangupEnds a callEnd a call you have confirmed should stop.
calling_request_country_accessSends a requestSend a request for country access. Does not grant access or place a call.

One credit pool. A different rate.

AI calls use your shared calling-minute balance. We round connected time up to the next full minute, then deduct 10 calling minutes per minute. Browser calls keep their regular rate.

30 seconds connected10 calling minutes
61 seconds connected20 calling minutes

An unanswered, unconnected call uses zero minutes. A connected voicemail counts as connected time. AI agent access requires Max.

Review your plan and credit

A little help if you get stuck

My plan is not eligible, or I’m out of credit

AI agent access requires Max, a verified email and calling credit. Review your account on Billing. Upgrading does not activate the upcoming beta.

The connection says unauthorized or expired

Start the connection again from your agent application and sign in to approve access. You can disconnect old applications in Connected agents. Never share credentials in chat.

I can’t find a tool

Refresh tool discovery in your configured application. Check that it supports Streamable HTTP MCP with OAuth authorization. The tool may not be enabled for your account or the current beta.

Another call is active, or a request timed out

Check the existing call and wait for it to finish. Retry an uncertain operation only with its original key and identical arguments. A new key can create another call.

The call ended, but the answer is still pending

Check the same call ID with call_get_result, or reload Calls. Some answers or transcripts may be unavailable. Do not automatically place another call.

AI Agent Guide | CallAlternative