MCP Server

Connect your Dextel account to Claude — or any Model Context Protocol client — and work with your agents, contacts and calls in natural language.

Claude Code

claude mcp add dextel --env DEXTEL_API_KEY=sk_live_... -- npx -y dextelai-mcp

Claude Desktop

Add the server to claude_desktop_config.json, then restart the app.

claude_desktop_config.json
{
  "mcpServers": {
    "dextel": {
      "command": "npx",
      "args": ["-y", "dextelai-mcp"],
      "env": {
        "DEXTEL_API_KEY": "sk_live_..."
      }
    }
  }
}

Once connected, ask it things like:

"How many calls did we take last week?"
"Show me contacts added since Monday."
"Which of my AI agents are inactive?"
"Summarise the last 20 calls and flag anything that needs a human's attention."

Writes are off by default

Out of the box the server exposes read-only tools. Creating, updating and deleting are not merely blocked — those tools are not registered at all, so a model cannot invoke them by accident.

"env": {
  "DEXTEL_API_KEY": "sk_live_...",
  "DEXTEL_MCP_ALLOW_WRITES": "true"
}

Think before enabling writes

An agent exploring a production tenant should not be able to delete a contact because a prompt wandered. Turn writes on when you specifically want the model to make changes — and consider pointing it at a test sub-account first.

Tools

Read tools (always available) — for each of agents, contacts, calendars, appointments, knowledge_bases, custom_tools, phone_numbers, number_pools, calls and workflows, there is a dextel_list_* and a dextel_get_* tool.

There is also dextel_list_all, which walks every page of a collection and returns the combined array — capped, and it reports truncatedwhen it stops early so the model knows it hasn't seen everything. Plus dextel_get_agency, dextel_list_sub_accounts and dextel_get_sub_account, which need an agency key.

Write tools (only with DEXTEL_MCP_ALLOW_WRITES=true) — dextel_create_*, dextel_update_* and dextel_delete_*, for the resources that support them. Read-only resources such as calls and phone_numbers never gain write tools regardless of the setting.

Safety annotations

Every tool is annotated so a client can auto-approve safe reads and prompt before anything destructive: list and get tools carry readOnlyHint, delete tools carry destructiveHint, and update and delete carry idempotentHint.

API key scope

A sub-account key reaches agents, contacts, calendars, appointments and calls. An agency key reaches the three agency tools. The tenant is derived from the key, so no account ids are ever passed. Calling an agency tool with a sub-account key returns a readable permission error rather than failing the session.

Environment

DEXTEL_API_KEY is required — create one under API Keys. DEXTEL_MCP_ALLOW_WRITES defaults to false. DEXTEL_BASE_URL defaults to https://api.dextelai.com/api/v1.

Troubleshooting

The server won't start. With no DEXTEL_API_KEYit exits immediately and prints the reason to stderr — check your client's MCP logs.

"The Dextel API key was rejected." The key is wrong, revoked, or from a different environment.

The model can't create anything. Expected — set DEXTEL_MCP_ALLOW_WRITES=true.

Agency tools return a permission error. You are using a sub-account key.

API errors are returned to the model as readable text rather than thrown, so it can react sensibly — "rate limited, retry in 30s" — instead of the conversation failing outright.