bland-cli 0.2.8 → 0.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -126,9 +126,9 @@ nodes:
126
126
  Greet the customer warmly. Ask how you can help them today.
127
127
  edges:
128
128
  - target: identify_issue
129
- condition: "Customer describes their problem"
129
+ label: "Customer describes their problem"
130
130
  - target: transfer_human
131
- condition: "Customer asks for a human"
131
+ label: "Customer asks for a human"
132
132
 
133
133
  identify_issue:
134
134
  type: default
@@ -140,9 +140,9 @@ nodes:
140
140
  description: "billing, technical, or general"
141
141
  edges:
142
142
  - target: billing_help
143
- condition: "issue_type is billing"
143
+ label: "Issue is about billing"
144
144
  - target: tech_help
145
- condition: "issue_type is technical"
145
+ label: "Issue is technical"
146
146
 
147
147
  billing_help:
148
148
  type: default
@@ -428,7 +428,7 @@ Add to your Claude Code config:
428
428
  "mcpServers": {
429
429
  "bland": {
430
430
  "command": "npx",
431
- "args": ["@bland-ai/cli", "mcp"]
431
+ "args": ["bland-cli", "mcp"]
432
432
  }
433
433
  }
434
434
  }
@@ -438,6 +438,8 @@ Add to your Claude Code config:
438
438
 
439
439
  | Tool | What it does |
440
440
  |------|-------------|
441
+ | `bland_guide_list` | List all available guides (start here) |
442
+ | `bland_guide_get` | Read a specific guide by slug |
441
443
  | `bland_call_send` | Make a phone call |
442
444
  | `bland_call_list` | List recent calls |
443
445
  | `bland_call_get` | Get call details and transcript |
@@ -455,6 +457,71 @@ Add to your Claude Code config:
455
457
  | `bland_knowledge_list` | List knowledge bases |
456
458
  | `bland_audio_generate` | Generate TTS audio |
457
459
 
460
+ ## For LLMs
461
+
462
+ The CLI ships with a built-in guide system designed to give LLMs (Claude, Cursor, GPT, etc.) the context they need to build good pathways — not just call the API, but actually understand how phone conversations work.
463
+
464
+ ### How it works
465
+
466
+ When an LLM connects via MCP, it receives:
467
+
468
+ 1. **`instructions`** — a condensed overview of the Bland platform, pathway architecture, common mistakes, and recommended workflow. This loads automatically on connect.
469
+ 2. **`bland_guide_list` / `bland_guide_get`** — tools to pull long-form guides on demand for deeper context.
470
+
471
+ The guides are also available to humans via the CLI:
472
+
473
+ ```bash
474
+ bland guide # List all guides
475
+ bland guide phone-tone # Writing natural phone prompts
476
+ bland guide pathways # Node/edge architecture and execution model
477
+ bland guide tools # Webhook and custom tools on nodes
478
+ bland guide testing # Chat, simulate, node tests
479
+ bland guide variables # Extracting and using caller data
480
+ ```
481
+
482
+ ### What the guides cover
483
+
484
+ | Guide | What it teaches |
485
+ |-------|----------------|
486
+ | `phone-tone` | How to write prompts that sound like a real person on the phone — not a chatbot. Covers back-channeling, brevity, empathy, and topic transitions. |
487
+ | `pathways` | How the conversation graph works: nodes, edges, global nodes, variables, the global prompt, and the execution model. |
488
+ | `tools` | Attaching webhook and custom tools to nodes for real-time data (check availability, look up orders). Covers `speech`, `behavior`, and `response_data`. |
489
+ | `testing` | The full testing workflow: `pathway chat` for interactive testing, `simulate` for end-to-end AI personas, `node-test` for stress-testing individual nodes. |
490
+ | `variables` | Extracting structured data from natural conversation with `extract_variables`, using `{{curly_braces}}` in prompts, and `spelling_precision` for names/emails. |
491
+
492
+ ### Why this matters
493
+
494
+ LLMs building pathways make predictable mistakes:
495
+ - Writing edge labels as boolean conditions (`if intent == "booking"`) instead of natural language (`Caller wants to book an appointment`)
496
+ - Making prompts too verbose and chat-like instead of concise and phone-natural
497
+ - Forgetting global nodes for edge cases callers will absolutely hit
498
+ - Not setting a global prompt for tone, so every node sounds different
499
+ - Building without testing — the guides teach `pathway chat --verbose` first, real calls second
500
+
501
+ The guide system fixes this by giving the LLM opinionated, Bland-specific knowledge before it starts writing. It's the difference between an LLM that can call the API and one that actually builds good phone agents.
502
+
503
+ ### Default phone tone
504
+
505
+ When you scaffold a new pathway with `bland pathway init`, the global prompt comes pre-loaded with phone-tone instructions:
506
+
507
+ ```yaml
508
+ global:
509
+ prompt: |
510
+ Sound natural and midwestern. Everything you say is spoken aloud on a phone call.
511
+ Play this game silently for every reply: what is the most accurate response,
512
+ then how can I reduce it to the fewest words without sounding rude?
513
+ Never recontextualize — no 'just to confirm', 'you said', 'got it'.
514
+ Use 'gotcha', 'yup', 'cool'.
515
+ Back-channel freely: 'mhmm', 'uh huh', 'right'.
516
+ Acknowledge emotions in stride.
517
+ Topic transitions are natural breaks — slightly more formal.
518
+ Within a topic, keep it tight.
519
+ After collecting one field, move immediately: 'And last?' not
520
+ 'Could you also provide your last name?'
521
+ ```
522
+
523
+ This sets the baseline voice for every node. LLMs using the MCP tools will also receive this guidance through the `phone-tone` guide.
524
+
458
525
  ## Local Webhook Development
459
526
 
460
527
  Forward Bland webhooks to your local dev server without ngrok:
package/dist/index.js CHANGED
@@ -26,7 +26,7 @@ const program = new Command();
26
26
  program
27
27
  .name("bland")
28
28
  .description("The official Bland AI command-line interface")
29
- .version("0.2.8");
29
+ .version("0.2.10");
30
30
  // Register all command groups
31
31
  registerAuthCommand(program);
32
32
  registerCallCommand(program);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,8CAA8C,CAAC;KAC3D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,8BAA8B;AAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAE9B,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,8CAA8C,CAAC;KAC3D,OAAO,CAAC,QAAQ,CAAC,CAAC;AAErB,8BAA8B;AAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAE9B,OAAO,CAAC,KAAK,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bland-cli",
3
- "version": "0.2.8",
3
+ "version": "0.2.10",
4
4
  "description": "The official Bland AI command-line interface",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",