VoiceDock

Build and manage voice AI agents for real phone lines: assistants, calls, numbers and campaigns.

Hosted MCP Server

npx add-mcp 'https://mcp.hmsovereign.com/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

MCP Server

Connect AI coding assistants like Claude Code and Cursor to your VoiceDock account via the hosted Model Context Protocol server — just sign in, no API key to paste.

VoiceDock exposes a hosted Model Context Protocol (MCP) server at mcp.hmsovereign.com. This lets AI assistants — including Claude, Claude Code, Cursor, and any other MCP-compatible tool — interact with your VoiceDock account directly, without leaving your environment.

Once connected, your AI assistant can list assistants, initiate calls, check usage, manage campaigns, and perform any other operation available in the API — all through natural language.

Endpoint

https://mcp.hmsovereign.com/mcp

The server builds its tools from the VoiceDock OpenAPI spec — one tool per API endpoint, carrying that endpoint's own parameters and descriptions. There is no tool list to configure or maintain on your side.

The set is built when the server starts and is fixed for as long as that process runs, so a newly released endpoint becomes available once we have restarted the server. That is on us, not on you: nothing in your client triggers it.

Authentication

The MCP server is an OAuth 2.1 resource server. You connect with just the URL above — no key to copy. Your client discovers the sign-in flow automatically, opens a browser where you log in with your VoiceDock account and approve access, and then works with every organisation your account belongs to. Behind the scenes we map your account to each organisation's credentials; you never handle an API key. See Working with more than one organisation.

Tip: Prefer a static token (CI, scripts, servers)? A raw organisation API key still works as a Bearer token — see Legacy: API key below.

Setup

Claude Code / Cursor / Claude Desktop

Add the endpoint and let the client run the sign-in flow:

{
  "mcpServers": {
    "voicedock": {
      "type": "http",
      "url": "https://mcp.hmsovereign.com/mcp"
    }
  }
}

The first time you connect, a browser opens: sign in with your VoiceDock account and click Allow on the consent screen. That's it — the tools appear in your assistant.

  • Claude Desktop: Settings → Connectors → Add custom connector → paste the URL.
  • Claude Code: claude mcp add --transport http voicedock https://mcp.hmsovereign.com/mcp (or add the JSON above).
  • Cursor: MCP settings → add the JSON above.

Other MCP clients

Any client that supports the MCP Streamable HTTP transport and OAuth can connect with the URL alone:

  • URL: https://mcp.hmsovereign.com/mcp
  • Transport: Streamable HTTP
  • Auth: OAuth 2.1 (the server advertises its authorization server via protected-resource metadata; clients register dynamically and prompt you to sign in)

Legacy: API key

If your client can't run an OAuth flow, or you're wiring this into a server or CI job, pass an organisation API key as a bearer token instead:

{
  "mcpServers": {
    "voicedock": {
      "type": "http",
      "url": "https://mcp.hmsovereign.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Find your API key in the dashboard under Developer → REST API. An API key always belongs to one organisation, so the organization_id parameter described below does not apply to it; passing it returns invalid_request.

Available Tools

The MCP server exposes all VoiceDock API endpoints as tools — one tool per endpoint. Examples:

ToolDescription
listAssistantsList all voice assistants in your organization
createAssistantCreate a new voice assistant
getAssistantRetrieve a specific assistant by ID
updateAssistantUpdate assistant configuration
createOutboundCallInitiate an outbound call
listCallsList calls with optional filters
getCallGet call details including transcript and analysis
createCampaignCreate an outbound call campaign
listVoicesBrowse available TTS voices
getUsageRetrieve usage and billing data

The full list of tools mirrors the API reference.

Clearing a field

Leaving a parameter out of a tool call and passing it as empty are the same thing over MCP, so a tool cannot express "set this field to null " the way the REST API can. Tools whose endpoint has fields that accept null therefore carry one extra parameter, clear_fields: a list of field names to empty out.

updateNumber(id="NUMBER_ID", clear_fields=["workflow_id"])

That is how you detach a workflow from a phone number — the step deleteWorkflow asks for when it refuses with a 409. A field can be given a value or listed in clear_fields, not both, and only fields the specification marks as nullable are accepted.

Example Usage

Once connected, you can ask your AI assistant to perform tasks in plain language:

"Create a new assistant called 'Support Bot' with a friendly greeting and GPT-4o as the language model."

"List all calls from this week and summarize the outcomes."

"Start an outbound call to +31612345678 using assistant ID xyz."

"Show me my usage for the last 30 days."

Working with more than one organisation

A connection made by signing in reaches every organisation your account is a member of. The extra tool listOrganizations returns them, with the id, the name and your role in each:

listOrganizations()

Every other tool takes an optional organization_id that selects the organisation the call runs in:

listAssistants(organization_id="ORGANIZATION_ID")
  • One organisation: leave organization_id out; calls run in that organisation.
  • More than one: pass organization_id on every call, reads included. A call without it returns organization_required with the list of your organisations, and nothing is read or changed.
  • An organisation you are not a member of returns organization_not_accessible, with the same list.

Results name the organisation they came from, with the API response under result:

{
  "organization": { "id": "ORGANIZATION_ID", "name": "Acme Dental" },
  "result": { "...": "..." }
}

Your assistant can check that name before it acts on what it read. Connections with an API key keep the plain response, since the key already fixes the organisation.

Security

  • OAuth 2.1 with your own account — no long-lived key to copy, share, or leak. Access is tied to your VoiceDock login, shown on an explicit consent screen, and revocable from your client at any time.
  • The MCP server is stateless — no session data is retained between requests.
  • Every tool call runs in one organisation you are a member of, named in the call and in its result (for the legacy path: the organisation of your API key). Membership is checked on every call, so removing someone from an organisation ends their access through the MCP server straight away.
  • The organisation you select in the dashboard has no effect on the MCP server. Switching there does not move a connected assistant to another organisation.
  • Traffic is TLS-only and the token is never logged by the MCP server.
  • Only approve connections you started yourself. The consent screen names the app requesting access — if you don't recognise it, click Deny.

Troubleshooting

The browser sign-in doesn't open

Make sure your client supports remote MCP servers with OAuth (recent Claude Desktop, Claude Code, and Cursor do). If it can't, use the legacy API-key method instead.

Tools not appearing after connecting

Reconnect the server so the client re-fetches the tool list — clients cache it, and a stale cache is the usual cause.

If a tool is still missing and it covers an endpoint we released recently, the tool list on our side has not been rebuilt yet. Reconnecting does not help with that, and neither does anything else in your client: get in touch and we will restart the server.

For the legacy path, verify your API key is valid:

curl https://api.hmsovereign.com/api/v1/assistants \
  -H "Authorization: Bearer YOUR_API_KEY"

Server unavailable

Check status.voicedock.ai for current platform status.


Note: The MCP server is read/write — connected AI assistants can create, update, and delete resources on your behalf. Approve only trusted apps on the consent screen, and keep any legacy API key to trusted environments.

[

BYOK Setup

Bring Your Own Key allows you to use your own API keys for AI providers, giving you control over costs and model access.

](https://doc.voicedock.ai/docs/integrations/byok-setup)[

xAI Grok Integration

Use xAI Grok Realtime API for speech-to-speech conversation with sub-700ms latency.

](https://doc.voicedock.ai/docs/integrations/xai-grok-integration)