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
Bearertoken — 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:
| Tool | Description |
|---|---|
listAssistants | List all voice assistants in your organization |
createAssistant | Create a new voice assistant |
getAssistant | Retrieve a specific assistant by ID |
updateAssistant | Update assistant configuration |
createOutboundCall | Initiate an outbound call |
listCalls | List calls with optional filters |
getCall | Get call details including transcript and analysis |
createCampaign | Create an outbound call campaign |
listVoices | Browse available TTS voices |
getUsage | Retrieve 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_idout; calls run in that organisation. - More than one: pass
organization_idon every call, reads included. A call without it returnsorganization_requiredwith 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)