Voice AI agent skills and MCP tools for Bland AI. Make phone calls, manage personas, knowledge bases, pathways, and more. Use when the user wants to build, test, or manage AI-powered phone agents.
npx @senso-ai/shipables install spencerjsmall/bland-aiBuild, deploy, and manage AI-powered phone agents from natural language. This skill provides MCP tools for the full Bland AI API and workflow guidance for common voice agent tasks.
The MCP server resolves your API key automatically:
BLAND_API_KEY environment variable (recommended)bland_auth_login (~/.config/bland-cli-nodejs/config.json)To authenticate interactively, use the bland_auth_login tool — it opens a browser to sign up or log in, then saves your API key automatically.
Manual fallback: Visit https://app.bland.ai, create an account, copy your API key from Settings > API Keys, and set BLAND_API_KEY in your environment.
After setup, validate with bland_call_list (limit: 1). A 401 means the key is invalid.
Personas bundle personality prompts, voice, tools, and config into a reusable agent. Always start by listing personas so the user can pick one:
bland_persona_list — list all personasbland_call_send with phone_number + persona_id{
"phone_number": "+14155551234",
"persona_id": "<persona_uuid>"
}
You can pass optional overrides alongside persona_id — explicit fields take priority over the persona's config (e.g., record, max_duration, metadata).
For one-off calls, use bland_call_send with task directly:
{
"phone_number": "+14155551234",
"task": "You are a friendly assistant calling to book an appointment...",
"voice": "mason",
"record": true,
"max_duration": 5
}
phone_number — E.164 format (e.g., +14155551234)persona_id, task, or pathway_id| Parameter | Description |
|---|---|
voice | Voice name or UUID |
first_sentence | Agent's opening line |
record | Record the call |
max_duration | Max length in minutes |
webhook | Post-call webhook URL |
language | Language code |
tools | Array of KB/tool IDs |
metadata | Arbitrary JSON metadata |
from | Caller ID |
start_time | Schedule call (min 5 min in advance) |
bland_call_get — Get full call details: status, transcript, recording URL, analysisbland_call_list — List recent callsbland_call_active — List in-progress callsbland_call_stop — Stop a specific callbland_call_stop_all — Stop all active callsKey response fields from bland_call_get: completed, status, call_length, concatenated_transcript, transcripts (structured), recording_url, analysis, answered_by.
Offer the user options:
bland-listen.sh script)/v1/calls/$CALL_ID/transcript/streambland_call_get until completed is truePersonas use a draft/production versioning model. Edits go to draft; promote to make live.
bland_persona_list — List all personasbland_persona_get — Full details including production and draft versionsbland_persona_create — Create new persona (both production v1 and draft v2 created)bland_persona_update — Edit the draft version (pass id, name required, plus any fields to change)bland_persona_promote — Make draft the live production versionbland_persona_delete — Soft-delete and disconnect inbound numbersname, role, description, tags, personality_prompt, orchestration_prompt, call_config (JSON string with voice, record, language, max_duration, etc.), kb_ids (JSON array of KB IDs), default_tools, pathway_conditions.
bland_persona_createbland_persona_update as neededbland_persona_getbland_persona_promotebland_call_send using persona_idKnowledge bases give agents reference material. They start in PROCESSING status — poll until COMPLETED before attaching to calls.
bland_knowledge_create — Create from text (type: "text") or URLs (type: "web")bland_knowledge_get — Check status and details (poll until COMPLETED)bland_knowledge_list — List all KBsbland_knowledge_delete — Soft-deletePass KB IDs in the tools array when creating a call:
{
"phone_number": "+14155551234",
"task": "Answer questions using your knowledge base.",
"tools": ["KB-01H8X9QK5R2N7P3M6Z8W4Y1V5T"]
}
bland_pathway_list — List pathwaysbland_pathway_get — Get pathway detailsbland_pathway_create — Create pathwaybland_pathway_chat — Chat with pathway interactivelybland_pathway_node_test — Test individual nodebland_number_list — List your phone numbersbland_number_buy — Purchase a new numberbland_voice_list — List available voicesUse bland_sms_send to send outbound SMS or WhatsApp messages:
{
"user_number": "+14155551234",
"agent_number": "+18005551234",
"agent_message": "Your appointment is confirmed for tomorrow at 2pm."
}
Set channel: "whatsapp" for WhatsApp. Supports AI-generated responses via pathway_id or persona_id.
bland_tool_test — Test a custom toolbland_audio_generate — Generate TTS audioFor operations requiring persistent connections (SSE, WebSocket) that can't go through MCP:
| Script | Purpose |
|---|---|
bin/bland-monitor.sh | SSE stream of active call status updates |
bin/bland-poll.sh <call_id> | Poll until call completes (adaptive intervals) |
bin/bland-play.sh <call_id> | Download and play recording |
bin/bland-listen.sh <call_id> | Live audio via WebSocket |
These scripts read BLAND_API_KEY from the environment. Dependencies: curl, jq. Live listen also requires websocat and sox.
For additional operations, the Bland CLI (npm install -g bland-cli) provides interactive management of calls, pathways, and configuration.