Skip to main content
Assistable runs a hosted Model Context Protocol server at https://api.assistable.ai/mcp. Any agent that speaks MCP over Streamable HTTP can use it to place outbound calls with an Assistable voice assistant, wait for the call to finish, and read the transcript and recording.
Without a key the server lists only its basic tools. If phone_whoami is missing from your agent’s tool list, check that the key is sent and has the subaccounts:read, billing:read and numbers:list scopes. The Tools table lists the scopes for every phone tool.

What you need

  • An Assistable account with a voice assistant and a phone number assigned to it.
  • An API key from Settings → API keys (see Authentication). Use a key limited to one subaccount: the server then targets that subaccount automatically, so the agent only needs one header.
  • Calls are billed to the account at its normal usage rates.
Every request to the MCP server carries the key:
For a key that covers several subaccounts, also send X-Subaccount-Id: <subaccount-id>.

Connect your agent

This writes the key to ~/.grok/config.toml. Avoid --scope project, which writes it to ./.grok/config.toml inside the project, where it can be committed by mistake.

Place a call

A typical run, in the order an agent should use the tools:
1

Check the account

phone_whoami returns the subaccount, wallet balance, owned numbers, and the default assistant when there is exactly one.
2

Preview the call

calls_create with assistant_id and to (E.164, e.g. +15551234567) and no confirm returns a preview and places nothing.
3

Place it

Call calls_create again with confirm: true once the person you act for has approved the number and the assistant. The result includes call_id.
4

Wait for the result

calls_wait with call_id blocks up to 45 seconds. If meta.timed_out is true, call it again. It returns when the call is COMPLETED, BUSY, FAILED, NO_ANSWER or CANCELED.
5

Read the outcome

calls_get returns the status, summary, transcript and recording.
Pass variables to calls_create to give the assistant context for this call, for example the reservation time and party size. Pass contact_id to attach the call to an existing contact.

Show your own number

To make the call appear from a number the person owns, such as their cell:
  1. caller_id_add with number and confirm: true. Assistable sends a code to that number by SMS (or method: "call" for a voice call).
  2. caller_id_confirm with the id that caller_id_add returned as number_id, and the code the person received.
  3. Pass the verified number as from to calls_create.
caller_ids_list shows each caller ID and whether it is verified. A number can only be used as caller ID by the account that verified it.

Tools

Tools the key’s scopes do not allow are left out of the tool list. The server also exposes assistant, contact, conversation and appointment tools, and search_tools to find a tool by intent.

When a call is refused

Refusals come back as an error with a details.reason you can show the person: Platform numbers can only call US and Canadian (+1) numbers.

Safety

  • calls_create, numbers_assign and caller_id_add do nothing without confirm: true. Confirm the number, the assistant and the purpose with the person you act for first.
  • Every call dials a real phone and is billed to the account.
  • Follow the calling and consent rules where the call lands. In the US, the TCPA treats AI-generated voices as artificial voices, so calls to consumers need their prior consent.