Bolna MCP Server
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Bolna MCP ServerCreate an AI voice agent to make outbound sales calls"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Bolna MCP Server
Remote MCP server (Streamable HTTP) wrapping the Bolna voice
AI REST API (https://api.bolna.ai): 57 tools covering nearly every documented
Bolna endpoint, TypeScript, deployed on Vercel via mcp-handler.
Live at mcp.bolna.ai — that page has the same connect instructions below with copy-paste buttons for each client.
MCP is an open protocol, not Claude-specific — this server works with any MCP-compatible client: Claude, Codex, Cursor, Windsurf, Zed, and others.
Endpoint corrections found while verifying tool paths against the live Bolna
docs are documented in the comment block at the top of
src/tools/index.ts.
Sub-accounts and switching between accounts
Sub-account API keys (format sa-...) work exactly like a main account's key
(bn-...) — connect a separate client/connector with a sub-account's key as
the Bearer token to work entirely within that sub-account.
To switch accounts within a single connected session instead of
reconnecting, every tool also accepts an optional api_key argument that
overrides the connection's own credential for just that call. Get a
sub-account's key from list_sub_accounts' api_key field, then pass it to
any tool call to run that call against that sub-account instead of the main
account — e.g. "list agents in sub-account X" resolves to calling
list_sub_accounts, finding X's key, then list_agents with that key passed
as api_key.
Related MCP server: VoIPbin MCP Server
Available tools
57 tools across 14 categories. "Write" tools flagged Destructive modify, remove, or spend money and typically prompt for confirmation in MCP clients that respect tool annotations.
Agents & calls
Tool | Type | Description |
| Read | List agents in the account (id, name, status, created_at). Paginated. |
| Read | Full config of one agent by ID. |
| Write | Create a new agent. Returns its ID. |
| Write, Destructive | Patch an existing agent's name, prompts, welcome message, webhook, or voice settings. |
| Write, Destructive | Permanently delete an agent. Irreversible. |
| Write, Destructive | Cancel every queued call for an agent. |
| Write, Destructive | Place a real outbound call from an agent. Spends account balance. |
| Write, Destructive | Cancel a queued or scheduled call. |
Executions
Tool | Type | Description |
| Read | Call history for one agent. Paginated, defaults to the last 7 days. |
| Read | Full details of one call: transcript, status, cost, telephony data. |
| Read | Raw pipeline logs (transcriber/LLM/synthesizer) for a call. |
| Read | Every call execution within a batch. Paginated. |
Batches
Tool | Type | Description |
| Write | Create a batch of outbound calls from a list of recipients. |
| Read | A batch's status, schedule, and contact counts. |
| Read | Call batches for one agent. |
| Write, Destructive | Schedule a batch to start calling. Spends account balance. |
| Write, Destructive | Halt a running or queued batch. |
| Write, Destructive | Permanently delete a batch. |
Dispositions (structured call extraction)
Tool | Type | Description |
| Read | List dispositions, optionally scoped to an agent. |
| Read | Retrieve a single disposition. |
| Write | Create a disposition linked to an agent. |
| Write | Atomically create multiple dispositions for one agent. |
| Write, Destructive | Update a disposition (may fork a private copy — Bolna's copy-on-write). |
| Write, Destructive | Permanently delete a disposition. |
| Read | Run an agent's dispositions against a sample transcript. |
Phone numbers & inbound
Tool | Type | Description |
| Read | Phone numbers on the account. |
| Read | Search phone numbers available for purchase. |
| Write, Destructive | Purchase a phone number. Real recurring charge. |
| Write, Destructive | Remove a phone number and stop its billing. |
| Write | Route inbound calls on a number to an agent, optionally with an IVR menu. |
| Write, Destructive | Remove inbound routing from a number. |
SIP trunks (bring your own telephony)
Tool | Type | Description |
| Write | Create a SIP trunk with gateway and auth config. |
| Read | Full details of a SIP trunk. |
| Read | All SIP trunks on the account. |
| Write, Destructive | Partially update a SIP trunk. |
| Write, Destructive | Permanently delete a trunk and its gateways/numbers. |
| Write | Add a DID phone number to a trunk. |
| Write, Destructive | Remove a number from a trunk. |
| Read | Numbers assigned to a trunk. |
Sub-accounts (enterprise)
Tool | Type | Description |
| Write | Create an isolated sub-account workspace. Requires org admin access. |
| Read | All sub-accounts in the organization. |
| Write, Destructive | Update a sub-account's name or concurrency limits. |
| Write, Destructive | Permanently delete a sub-account and all its data. |
| Read | Usage and cost breakdown for one sub-account. |
| Read | Usage and cost breakdown for every sub-account. |
Voice & providers
Tool | Type | Description |
| Read | TTS providers and models Bolna supports. |
| Read | Voices available for a TTS provider/model. |
| Read | Third-party providers configured on the account (secrets masked). |
| Write, Destructive | Remove a configured provider by name. |
Knowledgebase (RAG)
Tool | Type | Description |
| Write | Create a knowledgebase by scraping a URL. PDF upload isn't supported here. |
| Read | A knowledgebase's file name, status, and settings. |
| Read | All knowledgebases on the account. |
| Write, Destructive | Permanently delete a knowledgebase. |
Violations
Tool | Type | Description |
| Read | List flagged call violations, optionally filtered by status. Paginated. |
Account & documentation
Tool | Type | Description |
| Read | Account profile, wallet balance, concurrency limits. |
| Read | Search the Bolna documentation site for matching pages. |
| Read | Fetch the full markdown content of a Bolna documentation page. |
Not exposed as a tool, all for the same reason — each needs either a raw file upload or a third-party secret as its request body, neither of which maps cleanly to a tool argument or belongs in a chat conversation:
POST /providers(add a provider) — takes a third-party credential (e.g. a Twilio auth token)POST /knowledgebasewith a PDF file (the URL variant is supported, above)POST /violations/submit— takes an evidence screenshot/document
Install & use
Prerequisite: your own Bolna API key (from the Bolna dashboard). Every
client below needs the same two things: the server URL
(https://mcp.bolna.ai/api/mcp) and that key as a Bearer token.
Claude Code
One command:
./scripts/connect.shor the equivalent by hand:
claude mcp add --transport http bolna https://mcp.bolna.ai/api/mcp \
--header "Authorization: Bearer <your BOLNA_API_KEY>" \
--scope useror by hand-editing ~/.claude.json (or .mcp.json for a project-scoped copy):
{
"mcpServers": {
"bolna": {
"type": "http",
"url": "https://mcp.bolna.ai/api/mcp",
"headers": {
"Authorization": "Bearer <your BOLNA_API_KEY>"
}
}
}
}Claude Desktop
Desktop's config only understands locally-run (stdio) servers, so reaching a
remote HTTP server with a custom header needs the
mcp-remote bridge, which runs
locally and forwards the header on your behalf. Add this to
claude_desktop_config.json:
{
"mcpServers": {
"bolna": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.bolna.ai/api/mcp",
"--header",
"Authorization: Bearer <your BOLNA_API_KEY>"
]
}
}
}Restart Claude Desktop after editing the config.
Codex CLI
Reads the key from an environment variable rather than the config file:
export BOLNA_API_KEY="<your BOLNA_API_KEY>"
codex mcp add bolna \
--url https://mcp.bolna.ai/api/mcp \
--bearer-token-env-var BOLNA_API_KEYCursor
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"bolna": {
"url": "https://mcp.bolna.ai/api/mcp",
"headers": {
"Authorization": "Bearer <your BOLNA_API_KEY>"
}
}
}
}Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"bolna": {
"serverUrl": "https://mcp.bolna.ai/api/mcp",
"headers": {
"Authorization": "Bearer <your BOLNA_API_KEY>"
}
}
}
}Zed
Add to settings.json. Zed doesn't support environment-variable
interpolation in headers yet, so the key goes in directly:
{
"context_servers": {
"bolna": {
"url": "https://mcp.bolna.ai/api/mcp",
"headers": {
"Authorization": "Bearer <your BOLNA_API_KEY>"
}
}
}
}Claude Desktop (extension)
Instead of the mcp-remote bridge above, you can install this as a proper
Desktop Extension (.mcpb) —
a local, stdio-based build of the same 57 tools, packaged with a manifest so
Claude Desktop can install it with one click and prompt you for your API key
itself (no config file editing).
Build it from source:
npm run package:mcpb # bundles src/stdio.ts, packs mcpb/ into bolna-mcp.mcpbThen double-click bolna-mcp.mcpb, or drag it into Claude Desktop's
Settings → Extensions, and enter your Bolna API key when prompted.
This local build talks directly to api.bolna.ai using only the raw API key
path in src/lib/auth.ts — OAuth is specific to the
remote server and isn't used here.
Any other MCP client
Point it at:
URL: https://mcp.bolna.ai/api/mcp
Header: Authorization: Bearer <your BOLNA_API_KEY>claude.ai web/mobile
This server now implements real OAuth (via Bolna's Supabase-backed authorization server), so claude.ai's own "Add custom connector" flow (Settings → Connectors) should work with just the URL — no manually pasted token needed, since claude.ai handles the login/consent redirect itself the same way Claude Code does. This hasn't been separately verified on claude.ai web/mobile specifically yet (only Claude Code's CLI flow has been tested end-to-end so far) — the CLI/config options above remain the proven paths in the meantime.
Try it
After connecting, start a new conversation and ask something like:
"List my Bolna agents"
"What's my Bolna wallet balance?"
"Call +1... using my [agent name] agent"
Auth
Two ways to connect:
OAuth — sign in through Bolna's own login (Supabase-backed). This is what claude.ai's custom-connector UI and Claude Code's
Authenticateprompt use automatically; no manual token needed.Raw API key — pass your own Bolna API key as a Bearer token in the
Authorizationheader, per the client examples above.
Either credential is verified before being forwarded to api.bolna.ai — see
the comment block at the top of src/lib/auth.ts for how.
For local development, set BOLNA_API_KEY in .env and omit the header —
the server falls back to it automatically.
Local dev
npm install
cp .env.example .env # then fill in BOLNA_API_KEY
npm run dev # or: vercel devThe MCP endpoint is served at http://localhost:3000/api/mcp.
Deploy
Deployed under the Bolna AI Vercel team, aliased to mcp.bolna.ai:
vercel deploy --prod --scope bolna-aiSet BOLNA_API_KEY as a Vercel environment variable only if you want a
server-wide fallback for testing; production callers should supply their own
key via the Authorization header.
Test with MCP Inspector
npx @modelcontextprotocol/inspectorIn the Inspector UI, connect with:
Transport: Streamable HTTP
URL:
http://localhost:3000/api/mcp(or your deployed URL +/api/mcp)Header:
Authorization: Bearer <your Bolna API key>(optional locally ifBOLNA_API_KEYis set in.env)
Then use the Inspector's "List Tools" and "Call Tool" panels to exercise each of the 13 core tools with valid and invalid input.
Privacy Policy
See mcp.bolna.ai/privacy.
License
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for BubblyPhone that lets AI assistants make real phone calls, manage AI voice agents, buy phone numbers in 30+ countries, and track billing. Supports 20 tools for full telephony control.20111MIT

VoIPbin MCP Serverofficial
AlicenseBqualityCmaintenanceAn MCP server that enables AI assistants to interact with the VoIPbin CPaaS platform, exposing tools for managing calls, flows, messaging, conferencing, and more.521MIT- AlicenseCqualityBmaintenanceMCP server that exposes the complete Libredesk REST API (54 endpoints) as tools, enabling natural language management of conversations, contacts, agents, teams, and more for the open-source customer support desk.54113MIT
- FlicenseAqualityBmaintenanceAn MCP server that wraps the UTEL IP-telephony REST API as MCP tools, enabling LLM agents to make authenticated HTTP requests to the UTEL API via a simple tool interface.1
Related MCP Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
Official MCP server for OmniDimension. Drive voice agents, dispatch calls, and run bulk campaigns.
Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bolna-ai/mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server