# MCP: MoreVoice for AI agents

> Two Model Context Protocol servers: the docs MCP server, which lets Claude, Cursor or any AI assistant search and read these docs while it writes your integration, and MoreVoice's own MCP server, which lets an AI agent build assistants, place calls and read results with your API key.

The [Model Context Protocol](https://modelcontextprotocol.io) lets an AI assistant use tools that a server offers. MoreVoice has two MCP servers, for two jobs:

| | The docs MCP server | The MoreVoice MCP server |
| --- | --- | --- |
| What it does | Searches and reads these docs and the help centre. | Acts on your organisation: assistants, calls, campaigns, the do-not-call list, events. |
| Who uses it | You, while an AI assistant helps you write code. | An AI agent that runs MoreVoice for you. |
| Address | `https://docs.morevoice.ai/mcp` | `/mcp` on the API |
| Key | None: it reads public docs only. | Your API key, with its scopes. |

## The docs MCP server

Connect `https://docs.morevoice.ai/mcp` to Claude, Cursor, VS Code or any MCP client, and your assistant looks things up in these docs instead of guessing. It needs no account or key. [Build with AI](https://docs.morevoice.ai/get-started/build-with-ai/#the-docs-mcp-server) has the setup for each client, the tools it offers, and the other ways to give an assistant the docs: `llms.txt`, a Markdown version of every page, and the OpenAPI description.

## The MoreVoice MCP server

The MoreVoice MCP server turns the API into tools an AI agent can call: "create an assistant that books appointments in Hebrew", "call these three test numbers and summarise how it went", "which campaigns are blocked, and why?". Each tool is one API operation, named after it, described from the [API reference](https://docs.morevoice.ai/api/), and run **through the API with the caller's own key**, so everything that applies to an API client applies to the agent.

> **Coming soon: The hosted endpoint is coming**
>
> The tools below are ready; the endpoint that serves them over Streamable HTTP is switched on with the API beta's MCP release.

- **Scopes.** The agent sees only the tools its key's scopes allow. Give it a [restricted key](https://docs.morevoice.ai/get-started/authentication/) with just what the job needs.
- **Test mode.** With a test key, calls are simulated on the virtual carrier and nothing is billed: the right place for an agent to learn.
- **Safety switch.** Tools that change data or reach people (placing calls, starting campaigns, deleting) are listed only when the organisation has the `mcp_risky_tools` setting turned on. Read-only tools are always available.
- **Limits and logs.** Rate limits, idempotency and compliance checks apply, and every request appears in the API request log with the key that made it.

The tools it will offer: one per API operation, named after its operation ID. A key sees only the tools its scopes allow.

| Tool | What it does | Scopes | Kind |
| --- | --- | --- | --- |
| `assistants_list` | List assistants | `assistants:read` | Reads |
| `assistants_retrieve` | Retrieve an assistant | `assistants:read` | Reads |
| `assistants_create` | Create an assistant | `assistants:write` | Changes data · needs `mcp_risky_tools` |
| `assistants_update` | Update an assistant | `assistants:write` | Changes data · needs `mcp_risky_tools` |
| `assistants_duplicate` | Duplicate an assistant | `assistants:write` | Changes data · needs `mcp_risky_tools` |
| `assistants_delete` | Delete an assistant | `assistants:write` | Changes data (destructive) · needs `mcp_risky_tools` |
| `calls_list` | List calls | `calls:read` | Reads |
| `calls_retrieve` | Retrieve a call | `calls:read` | Reads |
| `calls_retrieve_transcript` | Retrieve a call's transcript | `calls:read` | Reads |
| `calls_retrieve_summary` | Retrieve a call's summary | `calls:read` | Reads |
| `calls_create` | Create an outbound call | `calls:write` | Reaches people · needs `mcp_risky_tools` |
| `calls_hangup` | Hang up a call | `calls:write` | Changes data (destructive) · needs `mcp_risky_tools` |
| `campaigns_list` | List campaigns | `campaigns:read` | Reads |
| `campaigns_retrieve` | Retrieve a campaign | `campaigns:read` | Reads |
| `campaigns_stats` | Retrieve a campaign's results | `campaigns:read` | Reads |
| `campaigns_preflight` | Check whether a campaign can start | `campaigns:read` | Reads |
| `campaigns_contacts_list` | List a campaign's contacts | `contacts:read` | Reads |
| `campaigns_create` | Create a campaign | `campaigns:write` | Changes data · needs `mcp_risky_tools` |
| `campaigns_update` | Update a campaign | `campaigns:write` | Changes data · needs `mcp_risky_tools` |
| `campaigns_contacts_create` | Add contacts to a campaign | `contacts:write` | Changes data · needs `mcp_risky_tools` |
| `campaigns_start` | Start a campaign | `campaigns:write` | Reaches people · needs `mcp_risky_tools` |
| `campaigns_pause` | Pause a campaign | `campaigns:write` | Changes data · needs `mcp_risky_tools` |
| `campaigns_resume` | Resume a paused campaign | `campaigns:write` | Reaches people · needs `mcp_risky_tools` |
| `campaigns_cancel` | Cancel a campaign | `campaigns:write` | Changes data (destructive) · needs `mcp_risky_tools` |
| `dnc_check` | Check numbers before calling | `dnc:read`, `consents:read` | Reads |
| `dnc_retrieve` | Retrieve a do-not-call entry | `dnc:read` | Reads |
| `dnc_create` | Add numbers to the do-not-call list | `dnc:write` | Changes data · needs `mcp_risky_tools` |
| `webhook_endpoints_list` | List webhook endpoints | `webhooks:read` | Reads |
| `events_list` | List events | `events:read` | Reads |

> **An agent that can place calls**
>
> An AI agent with a live key and the risky tools turned on can call real people. Keep live keys away from agents you are still testing, prefer narrow scopes, and review what the agent proposes before it runs anything that dials. MoreVoice's compliance checks still apply to every call it places.
