# ExotelMCP

> A Model Context Protocol (MCP) server that provides seamless integration between Claude AI and Exotel's communication APIs for SMS and voice calling services, plus quick audio tools.

- **Type:** MCP server
- **Install:** `agentstack add mcp-exotel-exotelmcp`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [exotel](https://agentstack.voostack.com/s/exotel)
- **Installs:** 0
- **Category:** [Communication](https://agentstack.voostack.com/c/communication)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [exotel](https://github.com/exotel)
- **Source:** https://github.com/exotel/ExotelMCP

## Install

```sh
agentstack add mcp-exotel-exotelmcp
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# ExotelMCP

A Model Context Protocol (MCP) server that provides seamless integration between Claude AI and Exotel's communication APIs for SMS and voice calling services, plus quick audio tools.

## Features

- 📱 **SMS Services**: Send single, bulk, and dynamic SMS messages with DLT compliance
- ☎️ **Voice Calling**: Initiate voice calls, connect numbers, and integrate with call flows
- 📊 **Status Tracking**: Real-time delivery status and callback management
- 🎵 **Quick Audio Tools**: One-click audio playback, download, and web player access
- 🔍 **Conversational Intelligence**: AI-powered quality analysis of 100% of conversations across voice and digital channels
- 🤖 **VoiceBot**: Create, manage, and place AI-powered outbound calls with VoiceBots
- 🔐 **Secure Authentication**: Per-user token-based authentication via Authorization header
- 🤖 **Claude AI Integration**: Direct integration with Claude through MCP protocol

## Table of Contents

- [Prerequisites](#prerequisites)
- [Configuration](#configuration)
- [Usage](#usage)
- [API Services](#api-services)
- [Authentication](#authentication)
- [Support](#support)

## Prerequisites

Before using the Exotel MCP Server, ensure you have:

- **Claude Desktop App**: Latest version installed
- **Node.js and npm**: Required for MCP remote connection
- **Exotel Account**: Active account with API credentials
- **MCP Remote Package**: Install if not already available

### Installing MCP Remote

If you don't have `mcp-remote` installed, run:

```bash
npm install -g mcp-remote
```

Verify installation:
```bash
npm list -g mcp-remote
```

### Claude Desktop Configuration

To integrate ExotelMCP with Claude, add the following configuration to your Claude desktop settings:

**Location**: Claude Desktop → Settings → Developer → Edit Config

```json
{
  "mcpServers": {
    "exotel": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp.exotel.com/mcp",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "{'token':'YOUR_EXOTEL_TOKEN','from_number':'YOUR_FROM_NUMBER','dlt_temp':'YOUR_DLT_TEMPLATE','dlt_entity':'YOUR_DLT_ENTITY','caller_id':'YOUR_CALLER_ID','api_domain':'https://YOUR_SUB_DOMAIN','account_sid':'YOUR_ACCOUNT_SID','exotel_portal_url':'YOUR_EXOTEL_DASHBOARD_BASE_URL','cqa_api_key':'YOUR_CQA_API_KEY','cqa_account_id':'YOUR_CQA_ACCOUNT_ID','cqa_host':'https://cqa-console.in.exotel.com','voicebot_api_key':'YOUR_VOICEBOT_API_KEY','voicebot_api_token':'YOUR_VOICEBOT_API_TOKEN','voicebot_account_id':'YOUR_VOICEBOT_ACCOUNT_ID','calls_api_key':'YOUR_CALLS_API_KEY','calls_api_token':'YOUR_CALLS_API_TOKEN','calls_account_id':'YOUR_CALLS_ACCOUNT_ID','calls_base_url':'https://api.exotel.com'}"
      }
    }
  }
}
```

### Required Credentials

Replace the placeholder values with your actual Exotel credentials:

#### **YOUR_EXOTEL_TOKEN**: Base64 Encoded API Credentials

This token is created by encoding your Exotel API Key and Secret in Base64 format.

**Step 1: Get your API credentials from Exotel Dashboard**
1. Log into your [Exotel Dashboard](https://my.exotel.com/)
2. Navigate to **Settings** → **API Settings**
3. Copy your **API Key** and **API Secret**

**Step 2: Create the Base64 token**

Format: `api_key:api_secret` (colon-separated)

**Example**: If your API Key is `abc123` and API Secret is `xyz789`, combine them as: `abc123:xyz789`

**Step 3: Encode to Base64**

You can use any of these methods:

**Online Tool:**
- Visit [base64encode.org](https://www.base64encode.org/)
- Enter your `api_key:api_secret` string
- Copy the encoded result

**Command Line (Mac/Linux):**
```bash
echo -n "your_api_key:your_api_secret" | base64
```

**Command Line (Windows):**
```powershell
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("your_api_key:your_api_secret"))
```

#### **Other Required Values:**

- **YOUR_FROM_NUMBER**: Your registered Exotel phone number (from Dashboard → Numbers)
- **YOUR_DLT_TEMPLATE**: DLT template ID for SMS compliance (from Dashboard → DLT)
- **YOUR_DLT_ENTITY**: DLT entity ID for SMS compliance (from Dashboard → DLT)
- **YOUR_CALLER_ID**: Your registered caller ID (from Dashboard → Numbers)
- **YOUR_ACCOUNT_SID**: Your Exotel account SID (from Dashboard → API Settings)
- **YOUR_SUB_DOMAIN**: Your Exotel account SubDomain (from Dashboard → API Settings)
- **YOUR_EXOTEL_DASHBOARD_BASE_URL**: Your Exotel Dashboard base url

#### **Conversational Intelligence Credentials:**

- **YOUR_CQA_API_KEY**: API key generated from the **Conversational Intelligence console**
- **YOUR_CQA_ACCOUNT_ID**: Your account ID (visible in the Conversational Intelligence console)
- **YOUR_CQA_HOST**: Host URL (default: `https://cqa-console.in.exotel.com`)

> **Note**: Conversational Intelligence credentials are only required if you plan to use the quality analysis tools. SMS and Voice tools work independently.

#### **VoiceBot Credentials:**

- **YOUR_VOICEBOT_API_KEY**: API key from the VoiceBot platform
- **YOUR_VOICEBOT_API_TOKEN**: API token from the VoiceBot platform
- **YOUR_VOICEBOT_ACCOUNT_ID**: Your VoiceBot account ID (e.g. `ameyo5m`)
- **YOUR_CALLS_API_KEY**: Exotel CPaaS API key for placing bot-powered calls
- **YOUR_CALLS_API_TOKEN**: Exotel CPaaS API token for placing bot-powered calls
- **YOUR_CALLS_ACCOUNT_ID**: Exotel CPaaS account SID for calls (can differ from VoiceBot account)
- **calls_base_url**: Exotel Calls API base URL (default: `https://api.exotel.com`)

> **Note**: VoiceBot credentials are only required if you plan to use the VoiceBot tools. The VoiceBot management API (list/create/delete bots) uses `voicebot_*` credentials, while placing actual calls uses `calls_*` credentials.

## Usage

Once configured, you can use Claude to interact with Exotel services using natural language commands. Simply describe what you want to do, and Claude will handle the API calls through the MCP server.

**Example Commands:**
- "Send an SMS to +919999999999 saying 'Hello from Claude!'"
- "Call +919999999999"
- "Check the delivery status of my last SMS"
- "Connect +919999999999 with +919888888888"

**Audio Commands:**
- "Play audio from https://example.com/song.mp3"
- "Open the audio player interface"
- "Download audio from https://example.com/podcast.mp3"

**Conversational Intelligence -- Setup Commands:**
- "Login to CQA as admin@exotel.com on tenant my_tenant"
- "Create a quality profile called 'Support Evaluation' with category 'Communication', sub-category 'Clarity', and KPIs: 'Clear Speech' (Yes/No, options: Yes=1/No=0), 'Professional Tone' (Yes/No, options: Yes=1/No=0)"
- "Create a CQA API key called 'my-api-key'"
- "Create an assignment rule that routes calls with source 'support' to quality profile {profile_id}"

**Conversational Intelligence -- Analysis Commands:**
- "Ingest this call recording for quality analysis: https://storage.example.com/call-001.wav"
- "Check the status of interaction call-2026-04-01-001"
- "Get the quality analysis results for analysis a1b2c3d4"
- "Submit this CSV file for bulk ingestion: https://s3.example.com/calls.csv"
- "Track the progress of ingestion job abc123"

**VoiceBot Commands:**
- "List all my VoiceBots"
- "Create a VoiceBot that handles customer support for order tracking"
- "Call +919999999999 using my customer support bot"
- "Get the status of the last bot call"
- "List available phone numbers on my account"

## API Services

### SMS Services

#### Send Individual SMS
Send a single SMS message to a specific phone number with DLT compliance.

**Example**: 
```
Send an SMS to +919999999999 with message "Hello from Claude!" using DLT template 1107160086208866373 and entity 1101428740000012125
```

#### Send Bulk SMS (Same Message)
Send the same message to multiple recipients at once.

**Example**: 
```
Send "Welcome to our service!" to these numbers: +919999999999, +919888888888, +919777777777
```

#### Send Dynamic Bulk SMS
Send personalized messages to multiple recipients with different content for each.

**Example**: 
```
Send personalized messages: "Hello John" to +919999999999 and "Hello Jane" to +919888888888
```

### Voice Services

#### Make Voice Call
Initiate a voice call to any phone number using your registered Exotel number.

**Example**: 
```
Call +919999999999 from my registered number
```

#### Connect Two Numbers
Bridge two phone numbers in a single call, connecting them together.

**Example**: 
```
Connect +919999999999 with +919888888888 in a conference call
```

#### Call Flow Integration
Connect a phone number to a predefined Exotel call flow or IVR system.

**Example**: 
```
Connect +919999999999 to call flow app_id 12345
```

### Status & Tracking Services

#### Check SMS Delivery Status
Get real-time delivery status and details for sent SMS messages.

**Example**: 
```
Check the delivery status of SMS sent to +919999999999
```

#### Check Voice Call Status
Retrieve call details, duration, and status for voice calls.

**Example**: 
```
Get call details for calls made to +919999999999
```

#### Get Call History
Retrieve bulk call details and history for analysis.

**Example**: 
```
Get all call details made from +919999999999
```

#### Number Information
Get metadata and information about phone numbers.

**Example**: 
```
Get information about phone number +919999999999
```

### Audio Services

#### Quick Audio Tools
Quick one-click audio playback and management tools.

##### Quick Play Audio
Get instant clickable links to play any audio URL in your browser.

**Example**: 
```
Play audio from https://example.com/song.mp3
```

##### Open Audio Player
Access the web-based audio player interface for full control.

**Example**: 
```
Open the audio player interface
```

##### Quick Download
Get direct download links for any audio file.

**Example**: 
```
Download audio from https://example.com/song.mp3
```

### Conversational Intelligence Services

Exotel [Conversational Intelligence](https://exotel.com/products/conversation-quality-analysis/) analyzes 100% of customer conversations across voice and digital channels using AI, delivering real-time quality intelligence. The platform reviews thousands of conversations in minutes, maintaining over 90% accuracy in objective evaluations — replacing manual sampling with continuous, automated QA at scale.

**Authentication:** CQA tools use two authentication methods:
- **Setup tools** (login, quality profiles, API keys, assignment rules) use JWT authentication obtained via the login tool -- no pre-configured credentials needed
- **Ingestion & analysis tools** (ingest, status, results) use your `cqa_api_key` configured in the MCP auth header

**API key**: Generate your API key from the **Conversational Intelligence console** or via the `exotel_cqa_create_api_key` MCP tool, then provide it as `cqa_api_key` in the MCP configuration.

#### Login
Authenticate with CQA to get a JWT token required for setup operations (quality profiles, API keys, assignment rules).

**Example**:
```
Login to CQA as admin@exotel.com on tenant exotel_support
```

#### Create Quality Profile
Create a complete quality profile with categories, sub-categories, and KPIs in a single call. The profile is automatically created with AI analysis enabled.

**Example**:
```
Create a quality profile called "Support Evaluation" with category "Communication", sub-category "Clarity", and KPIs: "Clear Speech" (Yes/No, options: Yes=1/No=0), "Professional Tone" (Yes/No, options: Yes=1/No=0)
```

> **Supported KPI types:** Yes/No, Selection, Rating, Text
>
> **Options are REQUIRED** for Yes/No, Selection, and Rating types. Each option needs `label` (string) and `weightage` (integer). Rating options also need `type: "STAR"`. Text KPIs do not support options.
>
> **Additional optional KPI fields:** `is_scoring_allowed`, `is_critical`, `is_mandatory`, `is_comment_mandatory`, `is_dispute_allowed`, `criticality_level`. All fields provided in `categoriesJson` are passed through to the API.
>
> **Partial failure handling:** If a sub-step (category, sub-category, or KPI creation) fails, the tool returns a partial result containing the `profile_id` and any categories created before the failure, along with a recovery hint.

#### Create API Key
Generate an API key for programmatic ingestion and analysis. Keys are scoped to the account.

**Example**:
```
Create a CQA API key called "support-api-key"
```

> **Note**: There is a per-tenant limit on active API keys (currently 2). A 409 response means the limit is reached -- revoke an existing key first.

#### Create Assignment Rule
Create a rule that routes interactions to quality profiles based on metadata filters (e.g., route all calls with `source=support` to a specific quality profile).

**Example**:
```
Create an assignment rule that routes calls with source "support" to quality profile a1b2c3d4-e5f6-7890-abcd-ef1234567890 at 100% sampling
```

> **`filterGroupJson` is REQUIRED.** The tool will return an error if no filter is provided.
>
> **Supported filter operators:** IS, IS_NOT, CONTAINS, NOT_CONTAINS, GREATER_THAN, LESS_THAN, GREATER_OR_EQUAL, LESS_OR_EQUAL

#### Ingest Single Interaction
Submit a single call recording or transcript for quality analysis. Provide at least one of `audioUrl`, `transcriptUrl`, or inline `transcriptText` (max 200KB).

**Example**:
```
Ingest interaction call-001 (voice channel) with audio at https://s3.example.com/call-001.wav in English
```

#### Quality Profile / Rule / API Key Management
JWT setup tools also support list/get/update/delete/duplicate for profiles, list/update/delete for assignment rules, list/revoke for API keys, metadata config, and list analyses.

Destructive tools (`delete_*`, `revoke_api_key`) require `confirm=true`. Empty KPI wipe on profile update requires `confirmWipeKpis=true`. `accountId` must match `cqa_account_id` in the MCP auth header when that header field is set.

#### Ingest Batch
Submit up to 100 interactions as a single batch job.

**Example**:
```
Ingest a batch of 3 voice interactions for quality analysis
```

#### Ingest File
Submit a CSV file containing multiple interactions for bulk analysis.

**Example**:
```
Submit https://s3.example.com/calls.csv as a CSV file for quality analysis ingestion
```

#### Get Interaction Status
Check the processing status of an ingested interaction.

**Example**:
```
Check the status of interaction call-2026-04-01-001
```

#### Track Job
Monitor the progress of a batch or file ingestion job.

**Example**:
```
Track ingestion job d4f5a6b7-c8d9-4e0f-a1b2-c3d4e5f6a7b8
```

#### Get Analysis Results
Retrieve the full quality scoring breakdown for a completed analysis.

**Example**:
```
Get the quality analysis for analysis ID a1b2c3d4-e5f6-7890-abcd-ef1234567890
```

### VoiceBot Services

Create and manage AI-powered VoiceBots that handle entire phone conversations autonomously.

#### List VoiceBots
List all VoiceBots on your account with pagination and status filtering.

**Example**:
```
List all my active VoiceBots
```

#### Create VoiceBot
Create a new VoiceBot by describing its personality and purpose in natural language.

**Example**:
```
Create a VoiceBot that handles customer support for Acme Corp. It should be friendly, help with order tracking, and offer to escalate to a human agent if needed.
```

#### Place Outbound Bot Call
Place a phone call powered by a VoiceBot — the bot handles the entire conversation.

**Example**:
```
Call +919999999999 using my order-confirmation bot
```

#### Get Call Details
Check the status, duration, and recording URL of a bot-powered call.

**Example**:
```
Get details of call abc123def456
```

#### List Phone Numbers
List all phone numbers (DIDs) available on the account for use as caller IDs.

**Example**:
```
What phone numbers are available on my account?
```

#### List Recent Calls
View recent call history with status and outcomes.

**Example**:
```
Show me the last 5 bot calls
```

## Authentication

The Exo

…

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [exotel](https://github.com/exotel)
- **Source:** [exotel/ExotelMCP](https://github.com/exotel/ExotelMCP)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-exotel-exotelmcp
- Seller: https://agentstack.voostack.com/s/exotel
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
