Skip to main content

Exotel MCP Server

The Exotel Model Context Protocol (MCP) server gives AI agents a set of tools they can invoke on your Exotel account. Once you connect a client (Claude, Cursor, VS Code, Windsurf, Claude Code), the agent can place calls, send SMS, manage VoiceBots, pull transcripts, and run Conversational Intelligence.

How it works

Exotel hosts a remote MCP server at https://mcp.exotel.com/mcp that uses the Streamable HTTP transport. Your AI client connects to that endpoint. Authentication is a JSON object in the Authorization header, with one section per product you want to enable.

Server info:

FieldValue
Endpointhttps://mcp.exotel.com/mcp
TransportStreamable HTTP
Protocol version2025-06-18
Tools62 across CPaaS, VoiceBot, and Conversational Intelligence
Resources19 API reference documents your agent can pull into context
Prompts22 pre-built prompt templates for common workflows

Open source reference implementation: github.com/exotel/ExotelMCP.

Authentication

Authentication uses your existing Exotel API credentials. Every request to https://mcp.exotel.com/mcp carries an Authorization header containing a JSON object with those credentials. The server forwards each tool call to the underlying CPaaS, VoiceBot, or CQA API, which authenticates it against your account. No separate MCP token or OAuth flow is involved: if the credentials work against api.exotel.com, they work here.

The JSON has three product groups. Include only the groups you want to enable. Tools for a missing product still appear in tools/list, but calling one returns a credential error at call time.

CPaaS (voice, SMS, number lookup, Engage)

FieldValue
tokenBase64 of api_key:api_token from my.exotel.com → Settings → API Settings.
account_sidAccount SID from the same page.
from_numberYour Exotel virtual number (from Numbers).
caller_idUsually same as from_number.
api_domainhttps://api.in.exotel.com for India-hosted accounts, https://api.exotel.com for globally-hosted accounts.
exotel_portal_urlhttps://my.exotel.com (or https://my.in.exotel.com for India-hosted).

VoiceBot

FieldValue
voicebot_api_key, voicebot_api_token, voicebot_account_idVoiceBot Dashboard → Settings → API Keys.
voicebot_base_urlDefaults to https://voicebot.in.exotel.com/voicebot/api/v2.
calls_api_key, calls_api_token, calls_account_idReused from CPaaS credentials. Required for bot-driven outbound calls.

Conversational Intelligence (CQA)

FieldValue
cqa_api_key, cqa_account_idCQA Console → Settings → API Keys.
cqa_hostDefaults to https://cqa-console.in.exotel.com.

Call exotel_setup_guide from your client any time to see which product groups your current header configures.

Set up Exotel MCP

Pick your client and use the snippet below. All clients point at https://mcp.exotel.com/mcp and carry the same JSON Authorization header. Cursor and VS Code speak HTTP MCP natively. Claude Desktop, Claude Code, and Windsurf use the mcp-remote bridge from npm.

Replace BASE64_OF_APIKEY_APITOKEN with the base64 encoding of api_key:api_token, and fill in the other placeholder values. On macOS or Linux:

echo -n "API_KEY:API_TOKEN" | base64

The minimum-viable JSON auth header (CPaaS only) is:

{"token":"BASE64_OF_APIKEY_APITOKEN","from_number":"YOUR_EXOTEL_NUMBER","caller_id":"YOUR_EXOTEL_NUMBER","account_sid":"YOUR_ACCOUNT_SID","api_domain":"https://api.in.exotel.com","exotel_portal_url":"https://my.exotel.com"}

Do not put the API key or token in source code. Store the JSON in an environment variable or a secrets manager. See Security.

Add VoiceBot or CQA fields to the same JSON when you want those products enabled.

Once one client is connected, you can ask it for a config for another client. See Tools → Build a config for another client.

Cursor

Add the following to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project).

{
"mcpServers": {
"exotel": {
"url": "https://mcp.exotel.com/mcp",
"headers": {
"Authorization": "{\"token\":\"BASE64_OF_APIKEY_APITOKEN\",\"from_number\":\"YOUR_EXOTEL_NUMBER\",\"caller_id\":\"YOUR_EXOTEL_NUMBER\",\"account_sid\":\"YOUR_ACCOUNT_SID\",\"api_domain\":\"https://api.in.exotel.com\",\"exotel_portal_url\":\"https://my.exotel.com\"}"
}
}
}
}

Reload the window (Cmd/Ctrl + Shift + PDeveloper: Reload Window). Open Cursor Settings → MCP to confirm exotel shows as connected.

See Cursor's MCP documentation.

VS Code

Add the following to .vscode/mcp.json in your workspace.

{
"servers": {
"exotel": {
"type": "http",
"url": "https://mcp.exotel.com/mcp",
"headers": {
"Authorization": "{\"token\":\"BASE64_OF_APIKEY_APITOKEN\",\"from_number\":\"YOUR_EXOTEL_NUMBER\",\"caller_id\":\"YOUR_EXOTEL_NUMBER\",\"account_sid\":\"YOUR_ACCOUNT_SID\",\"api_domain\":\"https://api.in.exotel.com\",\"exotel_portal_url\":\"https://my.exotel.com\"}"
}
}
}
}

Reload the window. See VS Code's MCP documentation.

Claude Desktop

Add the following to your Claude Desktop config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows).

{
"mcpServers": {
"exotel": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.exotel.com/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "{\"token\":\"BASE64_OF_APIKEY_APITOKEN\",\"from_number\":\"YOUR_EXOTEL_NUMBER\",\"caller_id\":\"YOUR_EXOTEL_NUMBER\",\"account_sid\":\"YOUR_ACCOUNT_SID\",\"api_domain\":\"https://api.in.exotel.com\",\"exotel_portal_url\":\"https://my.exotel.com\"}"
}
}
}
}

You need Node.js 18+ installed, since Claude Desktop launches mcp-remote through npx. Fully quit and reopen Claude Desktop. See MCP setup for Claude Desktop.

Claude Code

Add the server from your project directory:

claude mcp add --transport http exotel https://mcp.exotel.com/mcp \
--header 'Authorization: {"token":"BASE64_OF_APIKEY_APITOKEN","from_number":"YOUR_EXOTEL_NUMBER","caller_id":"YOUR_EXOTEL_NUMBER","account_sid":"YOUR_ACCOUNT_SID","api_domain":"https://api.in.exotel.com","exotel_portal_url":"https://my.exotel.com"}'

Or edit .claude/settings.json with the same block as Claude Desktop above.

Restart the Claude Code session. See Claude Code MCP documentation.

Windsurf

Add the following to ~/.codeium/windsurf/mcp_config.json.

{
"mcpServers": {
"exotel": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.exotel.com/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "{\"token\":\"BASE64_OF_APIKEY_APITOKEN\",\"from_number\":\"YOUR_EXOTEL_NUMBER\",\"caller_id\":\"YOUR_EXOTEL_NUMBER\",\"account_sid\":\"YOUR_ACCOUNT_SID\",\"api_domain\":\"https://api.in.exotel.com\",\"exotel_portal_url\":\"https://my.exotel.com\"}"
}
}
}
}

Restart Windsurf. See Windsurf's MCP documentation.

Other MCP-compatible clients

Any client that supports MCP over Streamable HTTP can connect to https://mcp.exotel.com/mcp. If your client speaks only stdio, use the mcp-remote bridge shown in the Claude Desktop example.

Verify the connection

After the restart, ask your client:

Call exotel_setup_guide and tell me which Exotel products my credentials configure.

The response shows CPaaS / VoiceBot / CQA as configured or not configured, based on what fields you included in the JSON auth header.

Follow up with, for example:

List every tool available from the Exotel MCP server, grouped by category.

See also

  • Use cases. Worked examples across VoiceBot, SMS, voice, and quality analysis.
  • Tools reference. Every tool, resource, and prompt the server exposes.
  • Security. Credential handling, rotation, data residency.
  • Troubleshooting. Common issues and fixes.