--- title: MCP (AI agents) | revox description: Connect AI agents and LLMs to Revox via the Model Context Protocol --- Revox exposes a **generic MCP server** that mirrors the full REST API as MCP tools. Use it to place calls, manage assistants, run campaigns, and more. ## MCP server URL Use the **`/mcp`** endpoint (streamable HTTP) with your favorite tools — e.g. **OpenClaw**, **Cursor**, **Postman**, or any MCP client. **MCP endpoint:** `https://www.getrevox.com/api/mcp-servers/generic/mcp` ## Authentication Use your **Revox API key** (same as the REST API). Send it as a Bearer token on every MCP request. - **Header:** `Authorization: Bearer YOUR_API_KEY` - Get your API key: [Dashboard](https://getrevox.com/dashboard) → **API Keys** Keep your API key secure. Do not expose it in client-side code or public repos. ## Tools (overview) The server exposes the same capabilities as the REST API, as MCP tools. Main tools for voice workflows: | Tool | Description | | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `revox_create_campaign` | Create a campaign (assistant, contact list, schedule). The primary way to launch bulk outbound calls. | | `revox_get_campaign` | Get campaign by ID — status, progress, and analytics. | | `revox_list_campaigns` | List campaigns (paginated). | | `revox_make_call` | Place a single call (phone number, custom prompt). Voice is auto-selected from the phone number’s country; override with `voice_provider`/`voice_id`. | | `revox_get_call` | Get call by ID. Use to poll once, or see `revox_wait_for_call` for periodic updates. | | `revox_wait_for_call` | Poll a call by ID every few seconds; receive status via **notifications/message** until complete. | | `revox_get_call_history` | List calls (paginated). | | `revox_list_assistants` | List assistants. | | `revox_get_assistant` | Get assistant by ID. | | `revox_create_assistant` | Create an assistant (name, prompt, optional voice for accent/language). | | `revox_auth_status` | Check if the API key is valid. | Additional tools cover phone numbers, voices, users, billing, and Nango integrations. ## Voice selection ### Automatic voice selection (calls) When you place a call with **`revox_make_call`**, the voice is **automatically selected** based on the target phone number’s country. For example, calling a `+33…` (France) number picks a French voice, `+49…` (Germany) picks German, and so on. No extra parameters are needed — just pass the `phone_number` and `prompt`. You can override this by explicitly passing `voice_provider` and `voice_id`. ### Manual voice selection (assistants) When you **create an assistant** with **`revox_create_assistant`**, set **`voice_provider`** and **`voice_id`** so the voice matches the language of your prompt (e.g. French prompt → French voice). If you omit them, the default is an American English voice. 1. Call **`revox_list_voices`** to get available voices; filter by `language` (e.g. `"fr"` for French). 2. In **`revox_create_assistant`**, pass `voice_provider` (e.g. `"cartesia"`) and `voice_id` (the ID from the list). Example for French: Cartesia voice ID `a249eaff-1e96-4d2c-b23b-12efa4f66f41`. 3. Use **`revox_update_assistant`** with `voice_provider` and `voice_id` to change an existing assistant’s voice. Tool names follow the pattern `revox__` (e.g. `revox_create_campaign`, `revox_list_phone_numbers`). ## Call status (no webhooks in MCP) MCP does not support server-initiated webhooks. After **`revox_make_call`** you get a `call.id`; to know when the call is done: 1. **Poll:** Call **`revox_get_call`** with that ID repeatedly until the call status indicates completion. 2. **Periodic updates:** Call **`revox_wait_for_call`** with the call ID. The server polls every few seconds (default 5), sends each status to the client via **`notifications/message`**, and returns the final call when the call completes (or on timeout/abort). 3. **Revox webhooks:** When placing a call with a custom assistant, you can set `webhook_url` on the assistant. Revox will HTTP POST to that URL when the call ends. Your own server can then notify the agent or user. ## Example: place a call and get completion 1. Call **`revox_make_call`** with `phone_number` and `prompt`. The voice is automatically matched to the phone number’s country (e.g. a French number gets a French voice). To override, pass `voice_provider` and `voice_id` explicitly (use **`revox_list_voices`** to find IDs). 2. From the response, read `call.id`. 3. Either call **`revox_get_call`** with that `id` repeatedly until completed, or call **`revox_wait_for_call`** once to receive periodic status updates and the final result. 4. Use the call result (e.g. transcript, recording) as needed. ## REST API reference For request/response shapes and optional parameters, see the [API Reference](/api/index.md). The MCP tool inputs map to the same request bodies and query parameters — see [Campaigns](/api/resources/campaigns/methods/create/index.md), [Calls](/api/resources/call/methods/create/index.md), [Assistants](/api/resources/assistants/methods/create/index.md), and [Voices](/api/resources/voices/methods/list/index.md).