# Bland MCP connector

The Bland connector brings your AI phone calls, recordings, transcripts and voices into Claude, ChatGPT, Cursor and the Elaichi Agent, so your team can place, review and stop Bland calls from the tools they already use.

Source: https://elaichi.ai/connectors/bland/

## Facts

| | |
| --- | --- |
| Application | Bland |
| Category | Voice |
| AI tools | 133 |
| Authentication | Connects with an API key |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. 133 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Bland is connected

- Summarize yesterday's Bland calls by outcome.
- Pull the corrected transcript for last night's longest call.
- Which Bland calls are active right now?

## Connect Bland in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Bland.
2. Optionally set Share with, then press Connect.
3. Paste a Bland API key. One person generates a token in Bland and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Bland tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Bland to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Bland to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Bland to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Bland to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Bland tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Bland through Elaichi

### Call a fresh lead the moment it arrives

Sales. Kick off a Bland call down an existing pathway to a new lead, then ask for the transcript and a summary of what they said once the call ends.

### Find out how a callback went

Support. Pull up a specific Bland call, read the corrected transcript, and check whether the customer's issue was resolved or needs a human follow up.

### See what is on the phones right now

Operations. List every active Bland call, listen in on one that looks stuck, transfer it to a person, or stop all active calls if a campaign was launched by mistake.

### Review recordings without opening a dashboard

Quality. Ask for yesterday's Bland calls, run the analysis on the ones that ran long, and collect the recordings that need a second listen.

### Pick and tune the voice for a campaign

Marketing. Compare the Bland voices available on your account, rate the ones you tested, rename the finalists, and adjust the settings before an outbound push.

### Keep post-call results flowing downstream

Engineering. Check which Bland post-call webhooks are set up, add one for a new system, and resend a delivery that your CRM missed.

## Frequently asked questions

### How do I connect Bland to Claude?

Connect Bland in Elaichi first: choose the Bland connector, paste in your Bland API key, and it is ready. Then in Claude open Customize, then Connectors, then Add, and paste the Elaichi endpoint https://api.elaichi.ai/mcp. There is no OAuth application to register in Bland and no client ID or secret to generate.

### Does Bland work with ChatGPT and Cursor as well as Claude?

Yes. Once Bland is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent. You connect Bland once and every client picks it up.

### What can an AI agent actually do with my Bland data?

An agent can place a Bland call down one of your pathways, list active and past calls, pull a recording or corrected transcript, run the call analysis, listen in, transfer a live call to a person, or stop a call. It can also manage your Bland voices and post-call webhooks and check your account details. Because Bland exposes a lot of actions, short concrete asks such as "stop all active calls" work better than long paragraphs.

### Does connecting Bland give the AI my whole account?

The agent only gets what the Bland API key you connected can already reach, nothing more. Elaichi can then narrow that further, for example allowing your team to read Bland transcripts and recordings but not place or stop calls. Elaichi never widens access beyond what the key itself allows.

### Can my team share one Bland connection?

Yes. One person connects Bland with the API key and shares the connection with a team in Elaichi, and nobody else ever sees or handles that key. Each teammate still signs in to Elaichi as themselves, so every Bland call placed or recording pulled is logged under their own name.

### Can I stop an agent from deleting voices or stopping calls in Bland?

Yes. Restrictions in Elaichi work per action, so you can block deleting Bland voices, stopping calls or placing new ones while leaving transcripts and recordings open. A blocked action is never shown to Claude, ChatGPT or Cursor at all, so no prompt, however worded, can reach it.

### What happens to a Bland connection when someone leaves?

When you offboard a person in Elaichi, their access to Bland through every AI client ends at once. If they had shared a Bland connection with a team, it keeps working for everyone else. If you want Bland gone entirely, disconnecting it once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client together.

## All 133 Bland tools

Every tool below is callable through https://api.elaichi.ai/mcp once Bland is connected, subject to the toolbox it is in and the restrictions on the caller.

- **Bland calls send simple pathway** (Send). Send a call using a conversational pathway in Bland AI. The phone number is dialed and the specified pathway guides the conversation. Returns: status, call_id. Required: phone_number, pathway_id. Country code defaults to +1 if not specified; use E.164 format for best results.
- **Bland calls analyze** (Action). Analyze a completed call with AI in Bland AI using a goal and a set of questions. Returns: status, message, answers, credits_used, metadata. Required: call_id, goal, questions. Each question is an array of [question_text, expected_answer_type]; unanswerable questions default to null.
- **Bland calls stop** (Stop). Stop an active call in Bland AI by call_id. Returns: status, message. Required: call_id.
- **Bland calls listen** (Action). Start a live listen session for an active call in Bland AI, returning a WebSocket URL for real-time audio streaming. Returns: status, data, errors. Required: call_id. Live listen must be enabled in organization preferences and the call must be in active status.
- **Bland calls stop all active** (Stop). Stop all active calls in Bland AI for the authenticated organization. Returns: status, message, num_calls. The operation is asynchronous and may take some time to complete.
- **Bland calls transfer active** (Action). Transfer an active Bland call to a different phone number while the call is in progress. Returns: data, errors. Required: call_id, transfer_number. Only calls in queue_status "started" are eligible.
- **List all Bland calls** (List). List Bland calls with optional filtering by date range, phone number, status, batch, and campaign. Returns: call_id, created_at, call_length, to, from, completed, queue_status, error_message, answered_by, batch_id.
- **Bland calls list active** (List). List all currently active (queued and in-progress) Bland calls. Returns: call_id, user_id, from, to, objective, pathway_id, start_time, international, status, timestamp.
- **Get single Bland call by ID** (Get). Get detailed information, metadata, and transcripts for a specific Bland call by id. Returns the full call object including call_id, to, from, status, transcripts, summary, created_at, and price. Required: id.
- **Bland calls get event stream** (Get). Get the stream of events that occurred during a specific Bland call. Returns: level, message, category, call_id, timestamp. Required: call_id.
- **Bland calls get recording** (Get). Retrieve the audio recording stream for a Bland call by call_id. Returns: status, message. The audio format defaults to WAV. Required: call_id.
- **Bland calls get corrected transcript** (Get). Get the corrected transcript from a Bland call's recording with enhanced speaker diarization, speaker labels, and confidence scores. Returns: corrected, status, message, aligned, original. Required: call_id. The aligned field is deprecated; use corrected instead.
- **Bland calls get transcript stream token** (Get). Generate a short-lived WebSocket URL for streaming a Bland call's post-transfer transcript. Returns: data, errors. Required: call_id. The call must have been created with include_post_transfer_transcript set to true. The URL credential expires in 5 minutes.
- **List all Bland postcall webhooks** (List). List post call webhooks in Bland. Returns: call_id, payload, url, user_id, created_at, metadata.
- **Create a Bland postcall webhook** (Create). Create and send post call webhooks for one or more calls in Bland. Returns: metadata. Required: call_ids, webhook_url. Webhooks are sent immediately; returns an error if a call already has a webhook configured.
- **Bland postcall webhooks resend** (Resend). Resend post call webhooks for one or more calls in Bland. Returns: metadata. Required: call_ids. Can only resend webhooks that were previously sent when calls completed; webhooks are re-sent to the same URL.
- **Bland account get details** (Get). Get the authenticated account's details in Bland, including account status, billing balance, and total call count. Returns: status, billing, total_calls.
- **List all Bland voices** (List). List all voices available to your Bland account, including curated defaults, cloned voices, and library additions. Returns: id, name, description, public, tags, user_id, voice_id, service, finetuned, is_creator_voice, ratings, total_ratings, average_rating, my_rating, creator_display_name.
- **Get single Bland voice by ID** (Get). Get a single Bland voice by id (accepts UUID or curated voice name). Returns: id, status, message. Required: id.
- **Bland voices get settings** (Get). Get synthesis defaults and valid tuning ranges for a Bland voice you own. Returns: consistency, expressiveness, service, limits, boost_language_consistency. Required: voice_id.
- **Bland voices update settings** (Update). Update synthesis defaults on a Bland voice you own — set consistency, expressiveness, or boost_language_consistency. Returns: consistency, expressiveness, service, boost_language_consistency. Required: voice_id. At least one body field must be provided.
- **Bland voices rename** (Action). Rename a voice clone in your Bland library. Returns: name, voice_id. Required: voice_id, name. Only org-owned voices can be renamed; default and shared voices return 403. Name must be 1-30 characters and unique within your library.
- **Bland voices rate** (Action). Rate a voice in the Bland library with a 1-5 star rating. Returns: status, total_ratings, average_rating. Required: voice_id, rating. Each caller can have at most one active rating per voice; sending a new rating overwrites the previous one.
- **Delete a Bland voice by ID** (Delete). Soft-delete a voice from your Bland library. Returns: status, message. Required: id. Only org-owned voices can be deleted; default, unadded public-library, and other-org voices return 400.
- **Bland voices check name availability** (Action). Check whether a proposed voice name is available in your Bland org's library before cloning. Returns: status, result, message. Required: name. Names are scoped per org and case-insensitive.
- **Bland voices list shared** (List). List publicly-shared voices in the Bland library catalog for discovery and voice-picker UIs. Returns: id, name, description, service, is_creator_voice, ratings, rating_count, rating_avg, trending_score, tags, created_at, public, creator_display_name, creator_fee_cents_per_1k, creator_fee_cents_per_10k.
- **Bland voices add library** (Add). Add a shared library voice from the Bland voice library to your org. Returns: status, message, voice. Required: add_id. Throttled to 30 add operations per minute per org.
- **Bland voices clone** (Action). Clone a voice in Bland from one or more audio samples using the BTTS V3 (default) or V2 engine. Returns: voice_id, name. Required: name, audio_samples. Each engine requires exactly 1 audio file (~10 seconds, max 10 MB). gender accepts male or female.
- **Bland voices bulk update** (Update). Update default consistency, expressiveness, or boost config on a Bland voice clone. Returns: status, message, voice. Required: voice_id.
- **Bland tts speak** (Action). Synthesize text into a WAV audio file using a Bland TTS voice in Bland. Deprecated — new integrations should use Synthesize Speech (v2). Set stream: true to receive audio as a chunked response. Returns binary WAV audio (Content-Type: audio/x-wav) with x-latency and x-cost headers. Required: text, voice_id.
- **Bland tts stream** (Action). Stream synthesized speech audio to the client as it is generated using Transfer-Encoding: chunked in Bland. Deprecated — new integrations should use Synthesize Speech (v2). Optimized for low time-to-first-byte (live previews, voice assistants, IVRs). Returns chunked binary WAV audio (Content-Type: audio/x-wav) with a placeholder WAV header followed by PCM16 data. Required: text, voice_id.
- **Bland tts mint stream token** (Action). Mint a short-lived JWT scoped to your Bland account for browser clients to open the Stream Speech WebSocket without exposing the long-lived API key. Deprecated — new integrations should use Synthesize Speech (v2). Returns: data, errors. Tokens are valid for 5 minutes.
- **List all Bland tts generations** (List). List TTS generations in Bland. Returns: id, org_id, user_id, text, voice_id, output_format, latency_ms, cost, created_at. Optional filter: voice_id.
- **Get single Bland tts generation by ID** (Get). Get a single TTS generation in Bland by id. Returns: id, org_id, user_id, text, voice_id, output_format, audio_data, latency_ms, cost, created_at. Required: id. Pass format=audio to receive raw WAV binary instead of metadata JSON.
- **List all Bland tts models** (List). List Bland TTS models available for synthesis and voice cloning. Returns: model_id, display_name, description, sample_rates, max_characters, can_clone, languages, is_recommended. Results are cached for up to 5 minutes.
- **List all Bland voice samples** (List). List training samples attached to a Bland voice clone. Returns: id, voice_id, transcription, duration_seconds, audio_data, created_at. Required: voice_id. Only org-owned voices return samples; default voices return an error and V2/V3 voices return an empty array.
- **Bland voice samples add** (Add). Append audio training samples to a Bland voice clone, retraining the voice on the expanded sample set. Returns: status, samples. Required: voice_id, audio_samples. Only BTTS V1 voices accept additional samples (max 5 total); V2 and V3 voices do not.
- **Get single Bland voice sample by ID** (Get). Get a single training sample for a Bland voice clone as raw WAV audio by default, or JSON metadata with base64 audio when format is json. Returns: id, voice_id, transcription, duration_seconds, audio_data, created_at. Required: voice_id, id.
- **Bland voice samples bulk update** (Update). Update transcribed text for one or more training samples on a Bland voice clone. Returns: samples. Required: voice_id, samples.
- **Bland voice samples bulk delete** (Delete). Remove training samples from a Bland voice clone and retrain against the remaining samples. Returns: status, samples. Required: id, sample_ids. Removing all samples makes the voice unusable for synthesis.
- **List all Bland pathways** (List). List all conversational pathways in Bland. Returns: name, description, nodes, edges.
- **Get single Bland pathway by ID** (Get). Get a single conversational pathway in Bland by id. Returns: name, description, nodes, edges. Required: id.
- **Bland pathways get session token** (Get). Get a pathway session token in Bland for pathway chat access. The token expires after 1 hour. Returns: token, expires_at.
- **Create a Bland pathway** (Create). Create a new conversational pathway in Bland. Returns: status, pathway_id. Required: name.
- **Update a Bland pathway by ID** (Update). Update a conversational pathway's fields in Bland by id, including name, description, nodes, and edges. Returns: status, message, pathway_data. Required: id.
- **Delete a Bland pathway by ID** (Delete). Delete a Bland pathway by id. Returns: status, message. Required: id.
- **Bland pathways generate** (Generate). Generate a Bland pathway from a prompt. Queues generation asynchronously and returns a jobId for polling via the generation status endpoint. Returns: jobId. Required: input_prompt. Prompt must be at least 100 characters and 8000 or fewer for non-enterprise organizations.
- **Bland pathways get generation status** (Get). Get the status of a Bland pathway generation job. Returns: ready, pathway_id, error. Required: statu_id. Poll until ready is true; pathway_id is present on success, error is present on failure.
- **Create a Bland pathway chat** (Create). Create a new pathway chat instance in Bland for sending and receiving messages. Returns: chat_id, message, variables. Required: pathway_id.
- **Bland pathway chat send message** (Send). Send a message to an existing pathway chat in Bland. Returns: chat_id, assistant_responses, current_node_id, current_node_name, chat_history, pathway_id, pathway_version, use_candidate_model, variables, completed. Required: chat_id.
- **Bland pathway chat get history** (Get). Get the conversation history for a pathway chat in Bland. Returns an array of message objects, each containing role and content. Required: chat_id.
- **List all Bland pathway versions** (List). List all versions of a specific Bland pathway. Returns: id, version_number, created_at, name, is_latest. Required: pathway_id.
- **Get single Bland pathway version by ID** (Get). Get a specific Bland pathway version by id. Returns: id, created_at, name, nodes, edges, version_number, is_latest. Required: pathway_id, id. Use 0 for id to retrieve the live pathway.
- **Bland pathway versions promote** (Action). Promote a Bland pathway version to staging or production. Returns: message. Required: pathway_id, version_id. Environment defaults to production.
- **Create a Bland pathway version** (Create). Create a new version of a Bland pathway with a name, nodes, and edges. Returns: created_at, id, name, version_number. Required: pathway_id, name, nodes, edges.
- **Update a Bland pathway version by ID** (Update). Update a specific Bland pathway version's name, nodes, and edges. Returns: status, message. Required: pathway_id, id, name, nodes, edges.
- **Delete a Bland pathway version by ID** (Delete). Delete a specific version of a Bland pathway. Returns: status, message. Required: pathway_id, id.
- **List all Bland pathway folders** (List). List all pathway folders in Bland. Returns: id, name, parent_folder_id. Folders can be nested via parent_folder_id.
- **Bland pathway folders list pathways** (List). List pathways within a specific pathway folder in Bland. Returns: id, name, description, created_at. Required: folder_id.
- **Create a Bland pathway folder** (Create). Create a new pathway folder in Bland. Returns: folder_id, name, parent_folder_id. Required: name.
- **Delete a Bland pathway folder by ID** (Delete). Delete a pathway folder in Bland by id. Returns: folder_id. Required: id.
- **Update a Bland pathway folder by ID** (Update). Update a pathway folder in Bland by id. Returns: folder_id, name, parent_folder_id. Required: id, name.
- **Bland pathway folders move pathway** (Move). Move a pathway to a different folder or to the root level in Bland. Returns: pathway_id, old_folder_id, new_folder_id. Required: pathway_id.
- **Bland knowledge bases upload file** (Upload). Upload a file to create a knowledge base in Bland for providing contextual information to AI agents. Returns: id, name, description, status, type, created_at, updated_at, file. Required: type, file. Supported formats include PDF, Word documents, and text files.
- **List all Bland knowledge bases** (List). List all knowledge bases in your Bland organization with pagination support. Returns: id, name, description, status, type, created_at, updated_at, file. Max 100 items per page.
- **Get single Bland knowledge base by ID** (Get). Get detailed information about a specific Bland knowledge base by id, including its current status, metadata, and file information. Returns: id, name, description, status, type, created_at, updated_at, file. Required: id.
- **Update a Bland knowledge base by ID** (Update). Update the name and/or description of an existing Bland knowledge base. Only metadata is modified, not the knowledge base content. Returns: id, name, description, status, type, created_at, updated_at, file. Required: id.
- **Delete a Bland knowledge base by ID** (Delete). Soft delete a Bland knowledge base by id, marking its status as DELETED. The data is retained but becomes inaccessible. Returns: success, message, knowledge_base_id. Required: id.
- **Bland knowledge bases discover sitemap URLS** (Action). Discover available URLs from a website's sitemap in Bland. Useful for finding all pages before creating a web scraping knowledge base. Returns: urls, sitemap_url. Required: url.
- **Bland knowledge bases chat** (Action). Query a Bland knowledge base using natural language with conversational message history. Returns: response, context, sources. Required: messages, knowledge_base_id.
- **Bland numbers purchase** (Action). Purchase a new inbound phone number in Bland ($15/mo). Returns the created number object including phone_number, created_at, prompt, webhook, voice_id, max_duration, record, and reduce_latency. Provide either area_code with optional country_code, or an exact phone_number to override area_code.
- **Update a Bland number by ID** (Update). Update an inbound number's agent settings and prompt in Bland. Returns: created_at, phone_number, prompt, webhook, voice_id, dynamic_data, max_duration, interruption_threshold, first_sentence, reduce_latency, transfer_phone_number, voice_settings, record, id, blocked_number, is_global, inbound_number, org_id, reason, is_active, updated_at. Required: phone_number, prompt. Setting pathway_id…
- **Bland numbers update label** (Update). Update the label for an inbound phone number in Bland. Returns: message, phone_number, label. Required: phone_number, newLabel. Max label length is 150 characters; set to an empty string to clear the label.
- **List all Bland numbers** (List). List all inbound phone numbers configured for your Bland account. Returns: created_at, phone_number, prompt, webhook, voice_id, dynamic_data, max_duration, interruption_threshold, first_sentence, reduce_latency, transfer_phone_number, voice_settings, record, id, blocked_number, is_global, inbound_number, org_id, reason, is_active, updated_at.
- **Get single Bland number by ID** (Get). Get settings for a specific inbound phone number in Bland. Returns: created_at, phone_number, prompt, webhook, voice_id, dynamic_data, max_duration, interruption_threshold, first_sentence, reduce_latency, transfer_phone_number, voice_settings, record. Required: phone_number.
- **Bland numbers create session** (Create). Create an inbound session token in Bland AI that can be used to pass variables to inbound calls via the x-bland-session-id SIP header. Returns: token, expires_at. Required: phone_number.
- **Bland blocked numbers create rules** (Create). Create block rules in Bland to prevent specific phone numbers from reaching your inbound numbers. Returns: created_count, blocks. Required: numbers, is_global. Maximum 10 numbers per request; is_global and inbound_number are mutually exclusive.
- **Bland blocked numbers list rules** (List). List block rules in Bland, optionally filtered by inbound number or active status. Returns: blocks, total_count, filters. If inbound_number is omitted, only global block rules are returned. active_only defaults to true.
- **Bland blocked numbers get rule** (Get). Get a single block rule in Bland by its ID. Returns: id, blocked_number, is_global, inbound_number, org_id, reason, is_active, created_at, updated_at. Required: blocked_number_id.
- **Bland blocked numbers delete rule** (Delete). Delete a block rule in Bland by its ID. Returns: message, deleted_block_id. Required: blocked_number_id.
- **Bland blocked numbers edit rule** (Action). Update an existing block rule in Bland, modifying its reason or active status. Returns: id, blocked_number, is_global, inbound_number, org_id, reason, is_active, created_at, updated_at. Required: blocked_number_id. Only reason and is_active can be updated; phone number and scope are immutable after creation.
- **Create a Bland widget** (Create). Create a new chat/voice widget in Bland. Returns the created widget including id, pathway_id, agent_id, allowed_domains, messages_per_minute, config, webhook_url, created_at, and updated_at. Required: allowed_domains, messages_per_minute, config. Either pathway_id or agent_prompt must be provided.
- **List all Bland widgets** (List). List all widgets associated with your Bland account. Returns each widget's id, pathway_id, agent_id, agent_prompt, allowed_domains, messages_per_minute, config, webhook_url, created_at, and updated_at.
- **Get single Bland widget by ID** (Get). Get a single Bland widget by id. Returns the widget object including id, pathway_id, agent_id, agent_prompt, allowed_domains, messages_per_minute, config, webhook_url, created_at, and updated_at. Required: id.
- **Update a Bland widget by ID** (Update). Update an existing Bland widget by id. Returns: id, pathway_id, agent_id, allowed_domains, messages_per_minute, config, webhook_url, created_at, updated_at. Required: id. pathway_id must be defined if agent_prompt is null and vice versa.
- **Bland widgets list threads** (List). List conversation threads for a Bland widget. Returns: id, created_at, ended_at, live_agent_handoff_at, visitor_id, messages, pathway_id, agent_id, allowed_domains, messages_per_minute, config, updated_at. Required: widget_id.
- **Bland widgets send live agent message** (Send). Send a live agent message or end a conversation in a Bland widget thread. For MESSAGE requests, returns the created message (id, content, sender_type, created_at). For END_CONVERSATION requests, returns the updated thread (id, ended_at, live_agent_handoff_at, visitor_id, language). Required: widget_id, thread_id, type.
- **List all Bland contacts** (List). List Bland contacts with pagination. Returns: id, org_id, name, metadata, created_at, updated_at, identifiers, memories, contact, created. Max 200 per page.
- **Bland contacts find** (Action). Find a Bland contact by phone_number, email, or external_id. Returns: id, org_id, name, metadata, created_at, updated_at, identifiers, memories, contact, created. At least one of phone_number, email, or external_id must be provided.
- **Get single Bland contact by ID** (Get). Get a single Bland contact by id. Returns: id, org_id, name, metadata, created_at, updated_at, identifiers, memories. Required: id.
- **Bland contacts resolve** (Action). Find or create a Bland contact by identifiers, optionally scoping memory to a persona or agent. Returns: contact, created. At least one of phone_number, email, or external_id must be provided.
- **Update a Bland contact by ID** (Update). Update a Bland contact's name, email, external_id, or metadata by id. Returns: id, org_id, name, metadata, created_at, updated_at. Required: id.
- **Bland contacts merge** (Merge). Merge a duplicate contact into a primary contact in Bland, transferring all calls, SMS conversations, and memory data from the duplicate to the primary. Returns: id, org_id, name, metadata, created_at, updated_at. Required: primary_contact_id, duplicate_contact_id. Cannot merge a contact with itself or contacts from different organizations.
- **Bland memory create contact memory** (Create). Create or retrieve a contact memory in Bland AI — if a memory already exists for the contact, the existing record is returned instead. Returns the memory object (id, org_id, contact_id, summary, facts, recent_messages, open_items, memory_history, created_at, updated_at) and a created flag. Required: contact_id. Either persona_id or agent_number must be provided.
- **Bland memory get contact memory** (Get). Get a contact memory in Bland AI by contact_id. Returns: id, org_id, contact_id, persona_id, agent_number, summary, facts, recent_messages, open_items, memory_history, created_at, updated_at, memory, created. Required: contact_id.
- **Bland memory list messages** (List). List recent messages for a contact memory in Bland AI. Returns: memory, created. Required: contact_id.
- **Bland memory update facts** (Update). Update structured facts for a contact memory in Bland AI. New keys are added and existing keys are updated. Returns: id, org_id, contact_id, persona_id, agent_number, summary, facts, recent_messages, open_items, memory_history, created_at, updated_at, memory, created. Required: contact_id, facts.
- **Bland memory get context** (Get). Get the memory context for a contact in Bland, including recent cross-channel messages, a rolling summary, contact facts, extracted entities, and open items. Returns: contact_id, recentMessages, summary, contactFacts, entities, openItems. Required: contact_id. Either persona_id or agent_number must also be provided.
- **Bland memory get changes** (Get). Get memory change history for a call or SMS conversation in Bland, showing the initial memory state, changes made during the interaction, and a historical record of updates. Returns: initial_memory, changes, memory_history, memory, created. Required: one of call_id or conversation_id.
- **Bland memory reset** (Action). Permanently reset all memory data (recent messages, summary, facts, entities) for a contact/persona pair in Bland. This action is irreversible. Returns: success. Required: contact_id. Either persona_id or agent_number must also be provided.
- **Bland memory enable** (Enable). Enable or disable memory for a pathway or persona in Bland, automatically refreshing entity schemas when enabled. Returns: message. Required: memory_enabled. Exactly one of pathway_id (with version_number) or persona_id (with version_id) must be provided.
- **Bland memory bulk update** (Update). Update the conversation summary for a contact memory in Bland AI. The new summary replaces the existing one. Returns: id, org_id, contact_id, persona_id, agent_number, summary, summary_updated_at, facts, recent_messages, open_items, memory_history, created_at, updated_at, memory, created. Required: contact_id, summary.
- **List all Bland tools** (List). List custom tools in Bland. Returns each tool with tool_id, label, tool (configuration object with name, description, url, method, body, input_schema, response, timeout), and a public flag.
- **Get single Bland tool by ID** (Get). Get a single custom tool by id in Bland. Returns: tool_id, label, tool, public. Required: id.
- **Create a Bland tool** (Create). Create a custom tool in Bland. Returns: status, tool_id. Required: name, description, url.
- **Update a Bland tool by ID** (Update). Update an existing custom tool by id in Bland. Returns: status, tool_id. Required: id.
- **Delete a Bland tool by ID** (Delete). Delete a custom tool by id in Bland. Returns: status, message. Required: id.
- **List all Bland widget custom components** (List). List Bland widget custom components. Returns: id, org_id, widget_id, pathway_id, pathway_node, width, height, variables, iframe_url, created_at, updated_at.
- **Create a Bland widget custom component** (Create). Create a Bland widget custom component. Returns: id, created_at, updated_at. Required: widget_id, pathway_id, pathway_node, width, height, variables, iframe_url.
- **Update a Bland widget custom component by ID** (Update). Update a Bland widget custom component by id. Returns: id, org_id, widget_id, pathway_id, pathway_node, width, height, variables, iframe_url, created_at, updated_at. Required: id.
- **Delete a Bland widget custom component by ID** (Delete). Delete a Bland widget custom component by id. Returns an empty 204 response on success. Required: id.
- **Bland accounts create encrypted key** (Create). Create an encrypted key in Bland for BYOT (Bring Your Own Twilio) integration. The generated key can be passed as the `encrypted_key` header on call endpoints to send calls from your own Twilio account. Returns the created encrypted key object.
- **List all Bland personas** (List). List all personas in your Bland organization. Returns: id, name, role, description, tags, image_url, created_at, updated_at, deleted_at, user_id, current_production_version_id, current_draft_version_id, inbound_numbers, current_production_version, current_draft_version. Max 100 per page.
- **Get single Bland persona by ID** (Get). Get a single Bland persona by id. Returns: id, created_at, updated_at, deleted_at, success, message. Required: id.
- **Create a Bland persona** (Create). Create a new persona in Bland with optional call configuration, prompts, tools, pathway conditions, and knowledge base attachments. Returns: id, name, role, description, tags, image_url, created_at, updated_at, deleted_at, user_id, current_production_version_id, current_draft_version_id, current_production_version, current_draft_version. Required: name.
- **Delete a Bland persona by ID** (Delete). Delete a Bland persona by id. Returns: success, message. Required: id. A persona currently in use by phone numbers cannot be deleted until it is removed from those numbers.
- **List all Bland persona versions** (List). List all versions of a Bland AI persona, ordered by version number (newest first). Returns: id, persona_id, version_type, version_number, orchestration_prompt, personality_prompt, pathway_conditions, kb_ids, call_config, default_tools, promoted_from_version_id, promoted_at, promoted_by, created_at, updated_at. Required: persona_id.
- **Get single Bland persona version by ID** (Get). Get a specific version of a Bland AI persona by id. Returns: id, persona_id, version_type, version_number, orchestration_prompt, personality_prompt, pathway_conditions, kb_ids, call_config, default_tools, promoted_from_version_id, promoted_at, promoted_by, created_at, updated_at. Required: persona_id, id.
- **List all Bland prompts** (List). List all prompts in Bland. Returns: id, prompt, name, last_updated.
- **Get single Bland prompt by ID** (Get). Get a single prompt by id in Bland. Returns: id, prompt, name, last_updated. Required: id.
- **Create a Bland prompt** (Create). Create a new prompt in Bland. Returns: id, prompt, name. Required: prompt.
- **List all Bland sms numbers** (List). List all SMS-enabled phone numbers and their inbound SMS configurations in Bland. Returns: phone_number, sms_config, conversation_count. SMS is only available on Enterprise plans.
- **List all Bland sms conversations** (List). List SMS conversations in Bland with optional sorting and filtering. Returns: id, created_at, updated_at, message.
- **Get single Bland sms conversation by ID** (Get). Get a single SMS conversation by id in Bland, including full message history and disposition logs. Returns: id, created_at, updated_at, message. Required: id.
- **Bland sms conversations delete messages** (Delete). Delete specific messages from an SMS conversation in Bland by message ID. Returns: message, deleted_count. Required: id, message_ids.
- **Bland sms conversations get webhook** (Get). Get the post-conversation webhook data for an SMS conversation in Bland. Returns: conversation_id, url, payload, created_at, user_id, metadata. Required: conversation_id.
- **Bland sms conversations bulk delete** (Delete). Delete an SMS conversation and all associated messages in Bland. Returns: message. Required: id.
- **Bland sip get config** (Get). Get SIP trunk configuration for a phone number in Bland. Returns inbound and outbound configuration objects, each including number, id, org_id, direction, sip_endpoint, options, headers, created_at, and updated_at. Required: phone_number (E.164 format).
- **Bland sip list numbers** (List). List SIP-provisioned phone numbers in Bland. Returns: sip_endpoint, inbound, outbound.
- **Bland sip get calls** (Get). Get SIP call logs for a phone number in Bland. Returns call records including call_id, direction, from, to, status, sip_code, duration_seconds, started_at, ended_at, and source_ip. Required: phone_number (E.164 format).
- **List all Bland audit logs** (List). List audit log events for your Bland organization, ordered newest first. Returns: id, org_id, actor_id, event_type, resource_type, resource_id, metadata, created_at. Audit logs are an enterprise feature not available on all accounts.
- **Bland organizations list members** (List). List members of an organization in Bland. Returns: org_id, user_id, permissions, is_owner, is_org_creator, joined_at, first_name, last_name, combo_id, org_slug, org_display_name, member_email, member_phone_number, id, org_plan, org_creation_date, kyc_level, placement_group, is_deleted, is_stripe_overdue, is_suspended, org_rate_limit, org_type, entitlements, preferences.
- **List all Bland organizations** (List). List the Bland organizations the authenticated user belongs to. Takes no parameters. Returns an array of Organization objects with: id, org_slug, org_display_name, org_image_url, org_plan, org_creation_date, kyc_level, placement_group, is_deleted, is_stripe_overdue, is_suspended, org_rate_limit, org_type, entitlements, preferences.
