# MCP server overview

> Ody's Model Context Protocol server lets Claude, ChatGPT, Cursor and any MCP client work the business phone: inbox, texts, numbers, 10DLC, AI calls and the agent.

Source: https://dev.ody.co/mcp/overview

Ody runs a hosted [Model Context Protocol](https://modelcontextprotocol.io) server at:

```text
https://api.ody.co/v1/mcp
```

Connect any MCP-capable assistant (Claude, ChatGPT, Cursor, your own agent built on the OpenAI or Anthropic APIs) with an Ody API key. The assistant gets **20 tools** for working the workspace: reading and replying to conversations, managing contacts, searching message history, buying numbers, filing 10DLC, placing outbound AI calls and configuring the AI agent.

## MCP or REST?

| | MCP | REST API |
|---|---|---|
| Who calls it | An LLM, choosing tools as it goes | Your code, in a fixed order |
| Best for | Assistants, copilots, ad-hoc "do this for me" requests, agent prototypes | Integrations, syncs, backends, anything deterministic |
| Surface | 20 task-shaped tools | 35 endpoints |
| Auth, scopes, limits | Same key, same scopes, same 600 req/min | Same |
| Data and billing | Identical. Both call the same code, so a text sent over MCP is the same as one sent over REST | Identical |

Both are thin layers over the same code the Ody app uses. Neither can do anything the key's creator couldn't do in the app.

## What an assistant can do

| Area | Tools |
|---|---|
| Orient | `workspace_summary` |
| Contacts | `list_contacts`, `create_contact`, `update_contact`, `delete_contact` |
| Conversations | `list_conversations`, `get_conversation`, `set_conversation_status`, `search_messages`, `wait_for_message` |
| Texting | `send_message` |
| Numbers and 10DLC | `list_numbers`, `search_numbers`, `buy_number`, `get_messaging_status`, `submit_10dlc_registration` |
| Calls and agent | `place_call`, `get_agent`, `configure_agent`, `connect_agent_to_number` |

Full schemas and examples are in the [tool reference](https://dev.ody.co/mcp/tools).

## Good to know

- **Scoped tool lists.** `tools/list` only returns the tools the key's [scopes](https://dev.ody.co/get-started/scopes) allow. A key with only read scopes gives you a genuinely read-only assistant: the write tools never reach the model.
- **Safe rehearsal.** With an `ody_test_…` key, every tool behaves the same, but sends, purchases, calls and publishing are simulated. See [Test mode](https://dev.ody.co/get-started/test-mode).
- **Human in the loop.** Each tool carries MCP annotations (`readOnlyHint`, `destructiveHint`, `openWorldHint`), so clients can auto-run reads and ask before writes. See [Safety and permissions](https://dev.ody.co/mcp/safety).
- **Live SMS conversations.** `wait_for_message` long-polls for up to 25 seconds, so an assistant can text someone, wait for the answer and reply. See [Run a live SMS agent](https://dev.ody.co/guides/live-sms-agent).
- **Tools only.** The server offers tools. It doesn't offer resources, prompts, sampling or server-initiated streams.

- [**Connect a client**](https://dev.ody.co/mcp/connect) — Cursor, Claude Code, Claude Desktop, VS Code, the OpenAI Responses API, and custom clients.
- [**Tool reference**](https://dev.ody.co/mcp/tools) — All 20 tools: inputs, scopes, annotations, test-mode behaviour.
- [**Safety and permissions**](https://dev.ody.co/mcp/safety) — Scopes, money-spending tools, confirmations and auditing.
- [**Protocol details**](https://dev.ody.co/mcp/protocol) — Transport, versions, errors, and raw JSON-RPC with cURL.
