> ## Documentation Index
> Fetch the complete documentation index at: https://www.bolna.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Tool list

> Every tool the Bolna MCP server exposes, grouped by agents, calls, batches, dispositions, knowledgebases, phone numbers, SIP trunks, and more.

116 tools. 114 are backed one-to-one by the [Bolna REST API](/docs/api-reference/introduction) and act on your account. The remaining 2 (`search_docs`, `get_doc`) read Bolna's public documentation instead — no account data involved.

| Type | Meaning |
| - | - |
| `Read` | Looks something up. No side effects. |
| `Write` | Creates or changes something. Reversible or low-risk (e.g. `create_agent` just adds a new agent). |
| `Write ⚠` | Flagged **destructive** in the tool's own definition (`destructiveHint: true`) — irreversible, or has a real-world effect like spending balance or breaking something still in use. Most clients pause for your confirmation before running these. |

The 43 `⚠` tools are `update_agent`, `delete_agent`, `stop_agent_queued_calls`, `start_outbound_call`, `stop_call`, `schedule_batch`, `stop_batch`, `delete_batch`, `update_disposition`, `delete_disposition`, `update_extraction_category`, `delete_extraction_category`, `buy_phone_number`, `delete_phone_number`, `unlink_inbound_agent`, `update_trunk`, `delete_trunk`, `remove_trunk_gateway`, `remove_trunk_carrier_ip`, `remove_number_from_trunk`, `assign_trunk_number_agent`, `start_trunk_test_call`, `disarm_trunk_inbound_test`, `update_sip_trunk`, `delete_sip_trunk`, `remove_trunk_number`, `update_sub_account`, `delete_sub_account`, `remove_provider`, `delete_knowledgebase`, `rename_workflow`, `update_workflow_settings`, `delete_workflow`, `save_workflow_draft`, `publish_workflow`, `run_workflow`, `delete_workflow_campaign`, `start_workflow_campaign`, `pause_workflow_campaign`, `resume_workflow_campaign`, `abort_workflow_campaign`, `cancel_workflow_execution`, and `update_graph_agent` — see each one's row below for what makes it destructive.

## Calling tools with a different account

Every tool below also accepts an optional `api_key` argument. Pass it on any single call to run that call against a different account than the one your client connected with — without reconnecting.

This is for [sub-accounts](/docs/api-reference/sub-accounts/overview): call `list_sub_accounts` to get a sub-account's key (`sa-...`), then pass it as `api_key` on any later tool call to act as that sub-account for just that call. A sub-account key also works as the primary connection credential from the start, exactly like a main account's `bn-...` key — see the [Quickstart](/docs/mcp-quickstart).

## Agents

| Tool | Type | Description | API |
| - | - | - | - |
| `list_agents` | Read | List agents in the account — ID, name, status, created date | [List Agents](/docs/api-reference/agent/v2/get_all) |
| `get_agent` | Read | Full config of one agent — prompts, LLM, voice, telephony, tools | [Get Agent](/docs/api-reference/agent/v2/get) |
| `create_agent` | Write | Create a new agent, returns its ID | [Create Agent](/docs/api-reference/agent/v2/create) |
| `update_agent` | Write ⚠ | Patch an agent's name, prompts, welcome message, webhook, or voice | [Patch Update](/docs/api-reference/agent/v2/patch_update) |
| `delete_agent` | Write ⚠ | Permanently delete an agent and its history | [Delete Agent](/docs/api-reference/agent/v2/delete) |
| `stop_agent_queued_calls` | Write ⚠ | Cancel every queued or scheduled call for one agent | [Stop Agent Queued Calls](/docs/api-reference/agent/v2/stop) |

## Calls & executions

| Tool | Type | Description | API |
| - | - | - | - |
| `start_outbound_call` | Write ⚠ | Place a real outbound call, spends account balance | [Make Call](/docs/api-reference/calls/make) |
| `stop_call` | Write ⚠ | Cancel a single queued or scheduled call | [Stop Call](/docs/api-reference/calls/stop_call) |
| `list_agent_executions` | Read | Call history for one agent, defaults to the last 7 days | [Get Executions](/docs/api-reference/executions/get_executions) |
| `get_execution` | Read | Full call detail — transcript, status, cost, telephony data | [Get Execution](/docs/api-reference/executions/get_execution) |
| `get_execution_raw_logs` | Read | Raw per-component pipeline logs for one call — transcriber, LLM, synthesizer timing | [Raw Logs](/docs/api-reference/executions/get_execution_raw_logs) |
| `list_batch_executions` | Read | Every call execution within one batch | [Batch Executions](/docs/api-reference/executions/get_batch_executions) |

## Batches

| Tool | Type | Description | API |
| - | - | - | - |
| `list_batches` | Read | Batch campaigns for one agent — status and schedule | [Get Batches](/docs/api-reference/batches/get_batches) |
| `create_batch` | Write | Create a batch of outbound calls from a recipient list | [Create Batch](/docs/api-reference/batches/create) |
| `get_batch` | Read | One batch's status, schedule, and contact counts | [Get Batch](/docs/api-reference/batches/get_batch) |
| `schedule_batch` | Write ⚠ | Start calling every recipient in a batch, spends account balance | [Schedule Batch](/docs/api-reference/batches/schedule) |
| `stop_batch` | Write ⚠ | Halt a running or scheduled batch | [Stop Batch](/docs/api-reference/batches/stop) |
| `delete_batch` | Write ⚠ | Permanently delete a batch and its recipient list | [Delete Batch](/docs/api-reference/batches/delete) |

## Dispositions

Dispositions turn a call transcript into structured, typed data — lead qualified, appointment time, sentiment — surfaced as `extracted_data` on executions and webhook payloads.

| Tool | Type | Description | API |
| - | - | - | - |
| `list_dispositions` | Read | Dispositions configured for one agent | [List Dispositions](/docs/api-reference/dispositions/list) |
| `get_disposition` | Read | One disposition's field type, validation, and prompt | [Get Disposition](/docs/api-reference/dispositions/get) |
| `create_disposition` | Write | Add a single disposition to an agent | [Create Disposition](/docs/api-reference/dispositions/create) |
| `bulk_create_dispositions` | Write | Add several dispositions to an agent in one call | [Bulk Create Dispositions](/docs/api-reference/dispositions/bulk-create) |
| `update_disposition` | Write ⚠ | Change a disposition's field, validation, or prompt | [Update Disposition](/docs/api-reference/dispositions/update) |
| `delete_disposition` | Write ⚠ | Permanently delete a disposition | [Delete Disposition](/docs/api-reference/dispositions/delete) |
| `test_dispositions` | Write | Run an agent's dispositions against a sample transcript and preview the extracted output | [Test Dispositions](/docs/api-reference/dispositions/test) |

## Extraction categories

A category is the set of dispositions evaluated together in one LLM pass per call, run on the category's model. Each disposition belongs to one category.

| Tool | Type | Description | API |
| - | - | - | - |
| `list_extraction_categories` | Read | An agent's extraction categories, with the dispositions inside each | [List Extraction Categories](/docs/api-reference/extraction-categories/list) |
| `create_extraction_category` | Write | Add a category to an agent, with the model that runs its LLM pass | [Create Extraction Category](/docs/api-reference/extraction-categories/create) |
| `update_extraction_category` | Write ⚠ | Rename a category or change its model | [Update Extraction Category](/docs/api-reference/extraction-categories/update) |
| `delete_extraction_category` | Write ⚠ | Permanently delete a category and every disposition inside it | [Delete Extraction Category](/docs/api-reference/extraction-categories/delete) |

## Knowledgebase (RAG)

| Tool | Type | Description | API |
| - | - | - | - |
| `list_knowledgebases` | Read | Every knowledgebase on the account | [List All Knowledgebases](/docs/api-reference/knowledgebase/get_knowledgebases) |
| `get_knowledgebase` | Read | One knowledgebase's file name, status, and settings, by ID | [Get Knowledgebase](/docs/api-reference/knowledgebase/get_knowledgebase) |
| `create_knowledgebase` | Write | Create a knowledgebase by scraping a URL for RAG. Processing is async — check progress with `get_knowledgebase` | [Create Knowledgebase](/docs/api-reference/knowledgebase/create) |
| `delete_knowledgebase` | Write ⚠ | Permanently delete a knowledgebase | [Delete Knowledgebase](/docs/api-reference/knowledgebase/delete) |

<Note>
  `create_knowledgebase` only accepts a URL to scrape — the Bolna API also supports uploading a PDF directly, but a raw file doesn't map cleanly to a chat tool argument. For PDF-based knowledgebases, use the [dashboard](https://platform.bolna.ai) or call the [Create Knowledgebase API](/docs/api-reference/knowledgebase/create) directly.
</Note>

## Phone numbers & inbound

| Tool | Type | Description | API |
| - | - | - | - |
| `list_phone_numbers` | Read | Phone numbers on the account and their linked agent | [Get All](/docs/api-reference/phone-numbers/get_all) |
| `search_phone_numbers` | Read | Search available numbers to buy, by country or pattern | [Search Phone Numbers](/docs/api-reference/phone-numbers/search) |
| `buy_phone_number` | Write ⚠ | Purchase a phone number, spends account balance (flat \$5/month) | [Buy Phone Numbers](/docs/api-reference/phone-numbers/buy) |
| `delete_phone_number` | Write ⚠ | Permanently release a phone number back to the pool | [Delete Phone Numbers](/docs/api-reference/phone-numbers/delete) |
| `setup_inbound_agent` | Write | Route inbound calls on a number to an agent, with an optional IVR | [Set Inbound Agent](/docs/api-reference/inbound/agent) |
| `unlink_inbound_agent` | Write ⚠ | Remove the inbound routing from a phone number | [Remove Inbound Agent](/docs/api-reference/inbound/unlink) |

## SIP trunks

For connecting your own carrier over a [SIP trunk](/docs/sip-trunking/overview) — Plivo, Telnyx, Twilio, Exotel, Vobiz, Vonage, or any standards-based SIP carrier.

| Tool | Type | Description | API |
| - | - | - | - |
| `list_trunks` | Read | SIP trunks on the account, with health, gateways, carrier IPs and numbers | [List SIP Trunks](/docs/api-reference/trunks/list) |
| `get_trunk` | Read | One trunk's settings, health, active calls, gateways, carrier IPs and numbers | [Get SIP Trunk](/docs/api-reference/trunks/get) |
| `create_trunk` | Write | Create a SIP trunk for your own carrier, optionally with its gateways and carrier IPs | [Create SIP Trunk](/docs/api-reference/trunks/create) |
| `update_trunk` | Write ⚠ | Change a trunk's settings or carrier credentials; can switch off every call on the trunk | [Update SIP Trunk](/docs/api-reference/trunks/update) |
| `delete_trunk` | Write ⚠ | Permanently delete a trunk with its gateways, carrier IPs and numbers | [Delete SIP Trunk](/docs/api-reference/trunks/delete) |
| `add_trunk_gateway` | Write | Add an outbound gateway, the carrier SIP host Bolna sends calls to | [Add Gateway](/docs/api-reference/trunks/add_gateway) |
| `remove_trunk_gateway` | Write ⚠ | Remove an outbound gateway, so outbound calls stop using it | [Remove Gateway](/docs/api-reference/trunks/remove_gateway) |
| `add_trunk_carrier_ip` | Write | Allow a carrier signalling IP or CIDR to send inbound calls | [Add Carrier IP](/docs/api-reference/trunks/add_carrier_ip) |
| `remove_trunk_carrier_ip` | Write ⚠ | Stop accepting inbound calls from a carrier IP | [Remove Carrier IP](/docs/api-reference/trunks/remove_carrier_ip) |
| `add_number_to_trunk` | Write | Add a number your carrier routes to the trunk, optionally with the agent that answers it | [Add Number](/docs/api-reference/trunks/add_number) |
| `remove_number_from_trunk` | Write ⚠ | Remove a number from a trunk; inbound calls to it are refused | [Remove Number](/docs/api-reference/trunks/remove_number) |
| `assign_trunk_number_agent` | Write ⚠ | Set or clear the agent that answers a trunk number's inbound calls | [Assign Agent](/docs/api-reference/trunks/assign_agent) |
| `list_trunk_calls` | Read | Recent calls on a trunk's numbers, with outcome and SIP code | [List Calls](/docs/api-reference/trunks/list_calls) |
| `get_trunk_connection_details` | Read | Bolna's SIP domain, IPs, port, transports and RTP port range to configure at your carrier | [Connection Details](/docs/api-reference/trunks/connection_details) |
| `start_trunk_test_call` | Write ⚠ | Ring a real phone through the trunk with an echo test, no agent involved; your carrier may bill it | — |
| `get_trunk_test_call` | Read | State, SIP status and hangup cause of an outbound test call | — |
| `arm_trunk_inbound_test` | Write | Answer the trunk's next inbound call with an echo test instead of an agent | — |
| `get_trunk_inbound_test` | Read | Whether the trunk is armed for an inbound test, and how the test call went | — |
| `disarm_trunk_inbound_test` | Write ⚠ | Cancel an inbound test; a test call already in progress is marked failed | — |

## Legacy SIP trunks (deprecated)

These tools keep working for Legacy SIP trunks. Use the [SIP trunk tools](#sip-trunks) for new setups, and see [Migrate to SIP trunks](/docs/migrating-to-sip-trunks/overview) to move an existing trunk.

| Tool | Type | Description | API |
| - | - | - | - |
| `create_sip_trunk` | Write | Register a legacy SIP trunk with its gateway and auth settings. For new setups use `create_trunk` | [Create SIP Trunk](/docs/api-reference/sip-trunks/create) |
| `get_sip_trunk` | Read | One legacy trunk's gateway, auth, and transport config. For new setups use `get_trunk` | [Get SIP Trunk](/docs/api-reference/sip-trunks/get) |
| `list_sip_trunks` | Read | Legacy SIP trunks on the account. For new setups use `list_trunks` | [List SIP Trunks](/docs/api-reference/sip-trunks/get_all) |
| `update_sip_trunk` | Write ⚠ | Change a legacy trunk's gateway, auth, or transport settings. For new setups use `update_trunk` | [Update SIP Trunk](/docs/api-reference/sip-trunks/update) |
| `delete_sip_trunk` | Write ⚠ | Permanently delete a legacy SIP trunk. For new setups use `delete_trunk` | [Delete SIP Trunk](/docs/api-reference/sip-trunks/delete) |
| `add_trunk_number` | Write | Attach a DID number to a legacy trunk. For new setups use `add_number_to_trunk` | [Add Number to Trunk](/docs/api-reference/sip-trunks/add_number) |
| `remove_trunk_number` | Write ⚠ | Detach a DID number from a legacy trunk. For new setups use `remove_number_from_trunk` | [Remove Number from Trunk](/docs/api-reference/sip-trunks/remove_number) |
| `list_trunk_numbers` | Read | DID numbers attached to one legacy trunk. For new setups use `get_trunk` | [List Numbers on Trunk](/docs/api-reference/sip-trunks/list_numbers) |

## Sub-accounts

Enterprise feature — isolated workspaces with their own auto-provisioned API key (`sa-...`), agents, calls, and phone numbers, for agencies, multi-tenant platforms, or regulated data boundaries.

| Tool | Type | Description | API |
| - | - | - | - |
| `create_sub_account` | Write | Create a sub-account and provision its API key | [Create Sub-Account](/docs/api-reference/sub-accounts/create) |
| `list_sub_accounts` | Read | Sub-accounts on the account, including their API keys | [List Sub-Accounts](/docs/api-reference/sub-accounts/get_all) |
| `update_sub_account` | Write ⚠ | Patch a sub-account's name or settings | [Patch Update](/docs/api-reference/sub-accounts/patch_update) |
| `delete_sub_account` | Write ⚠ | Permanently delete a sub-account and everything inside it | [Delete Sub-Account](/docs/api-reference/sub-accounts/delete) |
| `get_sub_account_usage` | Read | Call volume and cost for one sub-account | [Track Usage](/docs/api-reference/sub-accounts/usage) |
| `get_all_sub_accounts_usage` | Read | Usage for every sub-account on the account, in one call | [All Usage](/docs/api-reference/sub-accounts/all_usage) |

## Voice & providers

| Tool | Type | Description | API |
| - | - | - | - |
| `list_tts_providers` | Read | Text-to-speech providers and models available to the account | [List TTS Providers and Models](/docs/api-reference/voice/get_providers) |
| `list_voices` | Read | Voices available across connected TTS providers | [List Voices](/docs/api-reference/voice/get_all) |
| `list_providers` | Read | Telephony, LLM, transcriber, and TTS providers connected to the account | [List Providers](/docs/api-reference/providers/get) |
| `remove_provider` | Write ⚠ | Disconnect a provider's credentials — breaks any agent still using it | [Remove a Provider](/docs/api-reference/providers/remove) |

## Violations

| Tool | Type | Description | API |
| - | - | - | - |
| `list_violations` | Read | Flagged call violations — content policy, regulatory, or fraud — optionally filtered by status (`pending`/`accepted`/`rejected`/`submitted`), paginated | [List Violations](/docs/api-reference/violations/list) |

## Workflows

Multi-step, per-contact automations — call an agent, branch on the outcome, wait, call an API, wait for a callback from your own system, message over WhatsApp, retry, and so on — distinct from a single agent's own conversation. A workflow is edited as a draft, then published as an immutable version before it can run.

| Tool | Type | Description | API |
| - | - | - | - |
| `create_workflow` | Write | Create a new, empty, unpublished workflow — returns its ID | [Create Workflow](/docs/api-reference/workflows/create) |
| `list_workflows` | Read | List workflows in the account, optionally filtered by name | [List Workflows](/docs/api-reference/workflows/list) |
| `get_workflow` | Read | A workflow's status plus its full draft and published version history | [Get Workflow](/docs/api-reference/workflows/get) |
| `rename_workflow` | Write ⚠ | Rename an existing workflow | [Update Workflow](/docs/api-reference/workflows/update) |
| `update_workflow_settings` | Write ⚠ | Set, change or remove the workflow's execution webhook URL and headers — a merge patch, so header values come back masked and you only send what changes | [Update Workflow](/docs/api-reference/workflows/update) |
| `test_workflow_webhook` | Write | Send one sample execution webhook to the saved URL and report how the receiver answered | [Test Webhook](/docs/api-reference/workflow-webhooks/test) |
| `delete_workflow` | Write ⚠ | Permanently delete a workflow, including its draft and every published version | [Delete Workflow](/docs/api-reference/workflows/delete) |
| `get_workflow_draft` | Read | The current editable draft node graph and its revision number | [Get Workflow Draft](/docs/api-reference/workflows/get-draft) |
| `save_workflow_draft` | Write ⚠ | Overwrite the draft's node graph — requires the current revision, to avoid clobbering concurrent edits | [Save Workflow Draft](/docs/api-reference/workflows/save-draft) |
| `validate_workflow` | Read | Check the saved draft for errors before publishing | [Validate Workflow](/docs/api-reference/workflows/validate) |
| `publish_workflow` | Write ⚠ | Freeze the draft as a new immutable published version | [Publish Workflow](/docs/api-reference/workflows/publish) |
| `get_workflow_version` | Read | A specific published version's full node graph | [Get Workflow Version](/docs/api-reference/workflows/get-version) |
| `run_workflow` | Write ⚠ | Run a single contact through the latest published version — places real calls or messages | [Run Workflow](/docs/api-reference/workflows/run) |
| `list_workflow_node_types` | Read | Every node type the workflow engine supports, with its config parameters | [Workflow Node Types](/docs/api-reference/workflows/node-types) |
| `get_workflow_callback` | Read | A callback node's URL and signing secret, and optionally the last payload it received in the past 30 minutes | [Get Callback URL](/docs/api-reference/workflows/get-callback), [Get Last Callback](/docs/api-reference/workflows/get-last-callback) |

## Workflow campaigns

Runs many contacts through one pinned, published workflow version — the workflow equivalent of a batch running many contacts through one agent.

| Tool | Type | Description | API |
| - | - | - | - |
| `create_workflow_campaign` | Write | Create a campaign pinned to a workflow's published version, starting in draft with no entries | [Create Workflow Campaign](/docs/api-reference/workflow-campaigns/create) |
| `list_workflow_campaigns` | Read | List campaigns, optionally filtered by workflow, status, or kind | [List Workflow Campaigns](/docs/api-reference/workflow-campaigns/list) |
| `get_workflow_campaign` | Read | A campaign's status and totals, plus entry and validation-error breakdowns | [Get Workflow Campaign](/docs/api-reference/workflow-campaigns/get) |
| `delete_workflow_campaign` | Write ⚠ | Delete an empty draft campaign that hasn't started | [Delete Workflow Campaign](/docs/api-reference/workflow-campaigns/delete) |
| `upload_workflow_campaign_entries` | Write | Add contacts to a campaign — anything beyond the standard fields goes in `custom_fields` | [Upload Campaign Entries](/docs/api-reference/workflow-campaigns/upload-entries) |
| `list_workflow_campaign_entries` | Read | List a campaign's uploaded contacts, optionally filtered by status | [List Campaign Entries](/docs/api-reference/workflow-campaigns/list-entries) |
| `get_workflow_campaign_entries_template` | Read | The CSV header row the campaign's pinned version expects for entry uploads | [Campaign Entries Template](/docs/api-reference/workflow-campaigns/entries-template) |
| `start_workflow_campaign` | Write ⚠ | Start dispatching a campaign's pending entries as real calls or messages, spends account balance | [Start Workflow Campaign](/docs/api-reference/workflow-campaigns/start) |
| `pause_workflow_campaign` | Write ⚠ | Pause a running campaign's dispatching | [Pause Workflow Campaign](/docs/api-reference/workflow-campaigns/pause) |
| `resume_workflow_campaign` | Write ⚠ | Resume a paused campaign's dispatching | [Resume Workflow Campaign](/docs/api-reference/workflow-campaigns/resume) |
| `abort_workflow_campaign` | Write ⚠ | Permanently terminate a campaign — cannot be undone | [Abort Workflow Campaign](/docs/api-reference/workflow-campaigns/abort) |
| `list_workflow_campaign_executions` | Read | List a campaign's per-contact executions, optionally filtered by status or outcome | [List Campaign Executions](/docs/api-reference/workflow-campaigns/list-executions) |
| `get_workflow_campaign_report` | Read | Aggregated execution, termination, and per-node funnel counts for a campaign | [Workflow Campaign Report](/docs/api-reference/workflow-campaigns/report) |

## Workflow executions

A single contact's run through a workflow, created by `run_workflow` or a campaign.

| Tool | Type | Description | API |
| - | - | - | - |
| `get_workflow_execution` | Read | Current node, node-by-node history, and recent timeline events for one contact's run | [Get Workflow Execution](/docs/api-reference/workflow-executions/get) |
| `cancel_workflow_execution` | Write ⚠ | Terminate a running execution for a single contact | [Cancel Workflow Execution](/docs/api-reference/workflow-executions/cancel) |
| `resend_workflow_webhook` | Write | Queue a finished execution's webhook again, with the payload it originally sent | [Resend Webhook](/docs/api-reference/workflow-webhooks/resend) |

## Graph agents

[Graph agents](/docs/graph-agent/introduction) are node-based voice flows: each node is one step of the conversation, and edges route between nodes by intent, by rules on context variables, or on events your backend sends during the call. There's no separate graph-agent API. A graph agent is a regular agent whose graph lives under `tools_config.llm_agent.llm_config`, so these tools are typed wrappers over the [Agent API](/docs/api-reference/agent/v2/create), plus the event-injection endpoint.

`create_graph_agent` and `update_graph_agent` check the graph against the same rules as the editor's [Validation](/docs/graph-agent/validation) before saving, and send nothing to Bolna if there are errors. Warnings come back with the result.

| Tool | Type | Description | API |
| - | - | - | - |
| `create_graph_agent` | Write | Create a graph agent from nodes and edges. Transcriber, voice, and telephony default to Deepgram nova-3, ElevenLabs turbo v2.5, and Plivo, and can be overridden | [Create Agent](/docs/api-reference/agent/v2/create) |
| `get_graph_agent` | Read | A graph agent's nodes, edges, and routing settings, plus a validation report | [Get Agent](/docs/api-reference/agent/v2/get) |
| `update_graph_agent` | Write ⚠ | Replace the graph, or add, replace, and remove nodes and change routing settings. Voice, transcriber, and telephony are kept | [Update Agent](/docs/api-reference/agent/v2/update) |
| `validate_graph_agent` | Read | Check a graph, or a saved agent, against the editor's validation rules without saving | — |
| `send_graph_agent_event` | Write | Push a named event into a live call. If the current node has a matching event edge, the agent moves to the next node and speaks without waiting for the caller | [Event injection](/docs/graph-agent/event-injection) |

<Note>
  `update_graph_agent` saves by replacing the agent's full config (PUT), because a partial update can't change the graph. If someone edits the agent in the dashboard between the tool reading it and saving it, their edit is overwritten.
</Note>

## Account

| Tool | Type | Description | API |
| - | - | - | - |
| `get_user_info` | Read | Account profile, wallet balance, concurrency limits | [User Info](/docs/api-reference/user/info) |

## Documentation

These two don't touch your account at all — they read Bolna's own docs, so the assistant can look things up instead of guessing.

| Tool | Type | Description | Source |
| - | - | - | - |
| `search_docs` | Read | Searches Bolna's documentation index ([`llms.txt`](https://www.bolna.ai/docs/llms.txt)) and returns ranked matches with title, URL, and description | `llms.txt` |
| `get_doc` | Read | Fetches a documentation page's full Markdown content, given a bare path (e.g. `/docs/mcp`) or a full URL | `www.bolna.ai/docs/*.md` |

Not connected yet? See the [Quickstart](/docs/mcp-quickstart) for setup and troubleshooting.

<Card title="Bolna MCP server repository" icon="github" href="https://github.com/bolna-ai/mcp">
  Full source, endpoint-verification notes, and issue tracker
</Card>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.