bland
v2.2.0Work with Bland voice agents through the hosted MCP server: inspect agent versions, review calls, query metrics, validate supplied pathway graphs, and evaluate calls.
By BlandLicense: MIT0 GitHub starsUpdated 1 hour ago
Directory evidence
- Runtimes
- Codex and Claude Code
- Parsed components
- 15 skill or MCP entries
- Source updated
- Oct 2, 2026
- Manifest status
- Canonical path parsed
The directory validates manifest shape and source location. It does not execute the plugin or provide a security endorsement. Review the indexing methodology →
Install bland for Codex and Claude Code
codex plugin marketplace add CINTELLILABS/bland-plugins
codex plugin marketplace upgrade bland
codex plugin add bland@blandPaste and run these commands in a terminal with Codex. They add and refresh the bland catalog, then install this plugin.
Compatibility: the page URL and API slug “bland” remain stable.
- Codex:
bland@agent-plugin-marketplace→bland@bland
The installer fetches third-party code from the source repository shown on this page. This directory validates manifest structure and source location, but does not perform a security audit; review the manifest, components, and source before installing.
Get the source manually
git clone https://github.com/CINTELLILABS/bland-pluginsClone the source repository, then follow its setup instructions to add the plugin to a compatible client. The repository root is the plugin root.
Plugin files
├── .codex-plugin/plugin.json├── .claude-plugin/plugin.json├── skills/analytics/SKILL.md├── skills/api/SKILL.md├── skills/automations/SKILL.md├── skills/call-review/SKILL.md├── skills/calls/SKILL.md├── skills/debug/SKILL.md├── skills/evals/SKILL.md├── skills/knowledge/SKILL.md├── skills/messaging/SKILL.md├── skills/pathways/SKILL.md├── skills/persona/SKILL.md├── skills/setup/SKILL.md├── skills/tools/SKILL.md├── skills/triage/SKILL.md└── .mcp.json
Included Skills14
Use when the user asks for call metrics, stats, or reports — volume, success/completion rates, outcomes, durations, transfers, costs, trends, drill-downs — OR wants to BUILD the measurement system itself: define outcomes as citation schemas (what gets extracted from every call), backfill extraction over past calls, audit extraction quality/coverage, create post-call disposition scripts, or assemble live analytics dashboards (boards of query panels) in the Bland UI. Reads are free; every create/update/backfill is confirm-gated. Numbers only ever come from queries actually run.
Use when the user wants to hit the Bland REST API directly — mentions a specific endpoint or /v1 path, asks to GET/POST/curl something against api.bland.ai, needs a raw HTTP request, or asks for an API operation no curated Norm command covers. It works docs-first: it looks up the endpoint and its parameters in the reverse-proxied Mintlify docs MCP (search_bland / query_docs_filesystem_bland), then makes the raw HTTP call through the Bland MCP generic passthrough (bland_api_get / call_bland_api) — a minimal surface of docs search plus one read tool and one write tool.
Use when the user works with Bland AUTOMATIONS — triggers, event pipelines, and their executions: 'when X happens, place a call / send an SMS', creating or editing a trigger or pipeline, listing what automations exist, checking why an automation fired or didn't, inspecting a failed execution, testing a trigger with mock data, pausing/resuming automations, or tracing an automated call back to the execution that placed it. Endpoints are driven docs-first through the REST passthrough; reads are free, anything that mutates or can place real calls is confirm-gated.
Use when a real Bland call needs reviewing or debugging — why it routed wrong, looped, dropped, hit voicemail, failed a webhook/tool, mis-extracted a variable, cost too much, or didn't meet its goal — or when the right calls must first be FOUND (by date window, number, batch, duration, outcome, error). It fetches full call logs (transcript, node-by-node pathway/decision logs, variables, recording, dispositions), classifies every raw log entry, reconciles observed behavior against the pathway's runtime contracts, and delivers an evidence-quoted verdict. Read-only: it never places calls or mutates state.
Use when the user wants to place a phone call with Bland, wait on or watch a call in progress, listen to it live, stop it, or get its transcript and recording once it ends. Places simple calls with the curated create_call tool and everything else (personas, voicemail, keywords, recording, scheduling) through POST /v1/calls on the REST passthrough, picks voices from list_voices, follows the call with wait_for_call and get_call_log, and stops it with stop_call. Sends the dispatch settings that decide how a call sounds (noise cancellation, background track, keywords) and writes prompts that sound like a person rather than a robot. To work out why a finished call went wrong, use call-review instead.
Use when something on the Bland surface misbehaves and needs SYSTEMATIC root-cause debugging — a pathway routing wrong or looping, a variable extracting badly, a webhook/tool failing, an MCP tool or endpoint erroring, a widget not rendering, behavior contradicting the docs, or 'it worked yesterday'. It enforces the four-phase discipline (root-cause investigation → pattern analysis → single hypothesis → minimal fix with a failing repro first) hyper-specialized to pathways and agents: call-log evidence per pipeline boundary, version diffs, contract-confirmed hypotheses, and triage-ready escalation packs. Works for any user against production or a dev server.
Use when the user wants to evaluate, score, grade, or judge Bland calls — building eval agents (LLM judges) and their rubric levels, calibrating judges against known calls, assembling weighted judge panels (workbench setups), saving call cohorts (test configs), estimating and running eval runs, drilling into per-call/per-judge verdicts and evidence, applying results as call/pathway tags, or checking pass-rates against a threshold. High-impact actions are confirm-gated; curated eval tools where they exist, generic REST passthrough against /v1/evals/* for everything else.
Use when the user mentions knowledge bases, KBs, RAG, or mid-call retrieval — ingesting or uploading documents, FAQs, or content the agent should know, verifying that retrieval actually returns the right facts, asking why the agent doesn't know something, or attaching a knowledge base to a persona or pathway so calls can pull and cite facts mid-call. Also use it to search the official Bland product documentation.
Use when the user wants to text someone from a Bland number, run a two-way SMS conversation toward a goal (book an appointment, confirm a delivery, follow up on a lead), read a text thread and its replies, or change how a number answers texts. Covers POST /v1/sms/send with a per-conversation objective, reading conversations, the number's texting prompt, and the Agent Phone Plan's text limits. All calls go through the REST passthrough.
Use whenever the user wants to create, edit, fix, test, simulate, debug, publish, or inspect a Bland voice/phone agent or conversational pathway. Triggers include any mention of "pathway", "node", "node prompt", "call flow", "phone agent", "voice agent", "global prompt", "simulate a call/chat", a Bland pathway id, or files under pathway/. Not for reviewing real call recordings (the call-review skill), personas (the persona skill), eval scoring (the evals skill), or analytics (the analytics skill).
Use when the user works on a Bland persona or agent profile — picking or changing a voice, setting call config, attaching knowledge bases or default tools, routing to pathways via pathway conditions, or promoting a persona draft into production/live. Endpoints are discovered from the official docs and called through the generic REST passthrough, never guessed.
Use when the Bland plugin needs to be connected or is failing to connect — the user asks how to set up, log in, add or rotate a Bland API key, point the plugin at a dev or staging server, or any Bland MCP tool fails with an auth, 401, or 'not signed in' error. Covers where the key is resolved from, how to store it on each host without pasting it into chat, and how to verify the install.
Use when the user wants to build, test, update, or manage Bland custom integrations — creating a custom tool or REST API tool, wiring a webhook or external service/CRM call into an agent, debugging a failing tool call, or creating and managing the secrets/credentials those tools reference. It works by looking up the endpoint in the official Bland docs and calling the raw /v1 REST API through the loopback caller (bland_api_get / call_bland_api).
Use when the user wants to file, log, track, or manage issues found in Bland agents — reporting a bug or problem, attaching evidence (calls, pathways, nodes, SMS), discussing or moving issue status, linking related or duplicate issues, or flagging a genuine platform capability gap or missing feature. It drives the Bland REST API directly — discovering each /v1/triage endpoint from the official docs first, then calling it through the generic passthrough — rather than any high-level triage MCP tools.
MCP servers1
- url
- https://api.bland.ai/v1/mcp
Plugin manifests2
{
"name": "bland",
"version": "2.2.0",
"description": "Work with Bland voice agents through the hosted MCP server: inspect agent versions, review calls, query metrics, validate supplied pathway graphs, and evaluate calls.",
"author": {
"name": "Bland",
"email": "[email protected]",
"url": "https://bland.ai"
},
"homepage": "https://bland.ai",
"repository": "https://github.com/CINTELLILABS/bland-plugins",
"license": "MIT",
"keywords": [
"bland",
"voice-ai",
"voice-agents",
"conversational-ai",
"calls",
"pathways",
"analytics",
"mcp"
],
"skills": "./skills/",
"mcpServers": "./.codex-plugin/mcp.json",
"extensions": {
"com.openai": {
"onboardingSkill": "./skills/setup/SKILL.md",
"review": {
"test_cases": {
"positive": [
{
"description": "List agents",
"prompt": "List my Bland agents.",
"tools_triggered": "list_agents",
"expected_behavior": "Calls list_agents and returns the v2 agent names and IDs in the connected organization. Does not label them as legacy pathways or invent their behavior."
},
{
"description": "Inspect a call",
"prompt": "Show me the transcript and outcome of call 4930dbaf-f260-428f-bc3a-cc1876fa4e95.",
"tools_triggered": "get_call_log",
"expected_behavior": "Calls get_call_log with the supplied call ID and reports the returned status, duration, summary, and transcript evidence. Identifies missing fields without inventing routing traces or business outcomes."
},
{
"description": "Analytics query",
"prompt": "Between 2026-10-02T16:17:00Z and 2026-10-02T16:20:00Z, how many Bland calls did I make and what share completed?",
"tools_triggered": "query_analytics",
"expected_behavior": "Queries total and completed calls over the supplied period using supported query_analytics fields. Reports the time range, denominator, and completion rate from results only; treats zero calls as an unavailable rate."
},
{
"description": "Docs lookup",
"prompt": "How do I add a knowledge base to a pathway in Bland?",
"tools_triggered": "search_bland_docs, get_bland_doc",
"expected_behavior": "Searches the Bland docs and answers with the documented steps and a link to the page."
},
{
"description": "Inspect a saved agent version",
"prompt": "Show me the latest saved configuration for Bland agent d2edf31d-9608-4abf-9676-04a8457205ce, without changing it.",
"tools_triggered": "get_agent, get_latest_agent_version",
"expected_behavior": "Reads agent metadata and its latest saved snapshot. Summarizes the returned configuration, omits any credentials, distinguishes it from deployment state, and makes no changes."
}
],
"negative": [
{
"description": "Unrelated coding task",
"prompt": "Write a Python function that reverses a linked list.",
"expected_behavior": "Answers the coding question without calling Bland tools, because it does not involve Bland."
},
{
"description": "Missing call identifier",
"prompt": "Show me the transcript of that Bland call.",
"expected_behavior": "In a fresh chat with no call ID, asks which call to inspect. Does not invent an ID, call get_call_log with a guessed value, or place a new call."
},
{
"description": "Unsupported digital credit purchase",
"prompt": "Buy more Bland credits for me.",
"expected_behavior": "Explains that the plugin cannot purchase credits. Does not invoke purchase tools, collect payment details, start checkout, or use an alternate API route."
}
]
},
"demo_recording_url": "https://bland.ai/plugin-demo",
"commerce": false,
"commerce_description": "The ChatGPT plugin does not sell digital credits or subscriptions or initiate checkout. Calls and evaluation runs can consume existing Bland entitlements. Purchase tools and purchase routes must be unavailable to its OAuth connection."
},
"publication": {
"countries": [
"US",
"CA",
"GB",
"AU"
],
"release_notes": "First ChatGPT directory release: OAuth connection and skills for v2 agents, calls, aggregate analytics, supplied pathway graph validation, evaluations with existing judges, and Bland documentation."
}
}
},
"interface": {
"displayName": "Bland",
"shortDescription": "Manage voice agents and calls",
"longDescription": "Manage your Bland voice agents from ChatGPT. Review call transcripts and outcomes, check call volume and completion rates, and inspect saved agent configurations.\n\nAsk Bland to place or stop a call, prepare an agent change, or deploy a selected saved version. You can also validate a supplied pathway graph, score calls with existing evaluation judges, and find answers in Bland's documentation.\n\nRequires a Bland account and access to the connected organization. Sign in through Bland to connect. Calls and evaluation runs may consume your existing Bland credits. Pathway validation requires the graph's nodes and edges. Available actions depend on your account permissions and connected tools.",
"developerName": "Bland",
"category": "Developer Tools",
"capabilities": [
"Read",
"Write"
],
"websiteURL": "https://www.bland.ai",
"supportURL": "https://docs.bland.ai/welcome-to-bland",
"privacyPolicyURL": "https://www.bland.ai/legal/privacy",
"termsOfServiceURL": "https://www.bland.ai/legal/terms",
"defaultPrompt": [
"List my Bland agents.",
"How many Bland calls completed last week?",
"Help me review a Bland call's transcript and outcome."
],
"composerIcon": "./assets/icon.svg",
"logo": "./assets/logo.png"
}
}{
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
"name": "bland",
"displayName": "Bland",
"version": "2.2.0",
"description": "Build, test, and run Bland voice agents from your coding agent: the hosted Bland MCP server plus skills for calls, messaging, pathways, analytics, evals, call review, tools, personas, knowledge bases, and automations, and the Norm agent builder with a self-driving convergence loop.",
"author": {
"name": "Bland",
"email": "[email protected]",
"url": "https://bland.ai"
},
"homepage": "https://bland.ai",
"repository": "https://github.com/CINTELLILABS/bland-plugins",
"license": "MIT",
"keywords": [
"bland",
"voice-ai",
"voice-agents",
"conversational-ai",
"calls",
"pathways",
"analytics",
"mcp",
"norm"
],
"defaultEnabled": true,
"mcpServers": {
"bland": {
"type": "http",
"url": "${user_config.bland_api_url}/v1/mcp",
"headers": {
"Authorization": "Bearer ${user_config.bland_api_key}"
}
}
},
"userConfig": {
"bland_api_key": {
"type": "string",
"title": "Bland API key",
"description": "Your Bland API key from app.bland.ai/settings/api-keys. Masked on entry and stored encrypted in the OS keychain.",
"sensitive": true,
"required": true
},
"bland_api_url": {
"type": "string",
"title": "Bland API URL (optional)",
"description": "Optional. Defaults to production (https://api.bland.ai); only set this to point at a dev/staging server. Not a secret.",
"default": "https://api.bland.ai",
"required": false
}
}
}For maintainers
If you maintain this plugin, link to this source-backed listing from your README so users can review its manifest and indexed components.
[bland on Agent Plugins Marketplace](https://pluginsmp.com/plugins/bland)