Skip to main content
bland-tts is a focused text-to-speech and voice toolkit for Bland AI. Three modes ship in one package: a CLI, a Node library (BlandTtsClient), and an MCP server.

bland-tts vs. bland-cli

bland-cli is the full kitchen sink — calls, pathways, scenarios, knowledge bases, personas, batch campaigns. Big install, broad surface. bland-tts is for projects that just need speech: a podcast generator, a voice notification system, an experimentation harness for prompt phrasing. Tiny dependency footprint (chalk, commander, ora). Library-first design means you can drop the MCP server and import BlandTtsClient directly. If you need the full Bland API surface, use bland-cli. If you only need speech synthesis and voice management, use bland-tts.

Install

Requirements: Node.js 20+

Authentication

Set your Bland API key in the environment:
You can also pass apiKey directly to the BlandTtsClient constructor when using the library.

Default voices

When you call speak() without specifying a voice, one is picked at random from:
  • Karen
  • Valentine Experimental
  • Willow
To lock a single default for a process, pass defaultVoice to the client constructor. To opt out and let the server choose, pass defaultVoice: null. The CLI surfaces which voice was actually used (voice_used in --json, dimmed line otherwise).

CLI

Every command supports --json for scripting.

Library

Library API

All methods throw BlandApiError (with .status and .body) on API failures.

MCP server

Hook into Claude Code, Cursor, Claude Desktop, Windsurf, and other MCP-compatible clients. (This server covers TTS only. For account-wide tools like calls, pathways, and analytics, see the Bland MCP server.) Add to ~/.config/claude-code/mcp.json (or your client’s equivalent):

Tools exposed

Voice cloning is intentionally CLI-only since multipart file uploads aren’t well-suited to stdio JSON-RPC. Use bland-tts clone <name> <files...> for that.

Environment Variables


Docs for agents: llms.txt