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.
When to use it
Reach forbland-tts on projects that need speech and nothing else: a podcast generator, a voice notification system, an experimentation harness for prompt phrasing. The dependency footprint is small (chalk, commander, ora), and the design is library-first, so you can ignore the CLI and MCP server and import BlandTtsClient on its own.
It covers synthesis, voice listing, cloning, voice management, and stored generations, and nothing beyond them.
Install
Authentication
Set your Bland API key in the environment:apiKey directly to the BlandTtsClient constructor when using the library.
Default voices
When you callspeak() without specifying a voice, one is picked at random from:
- Karen
- Valentine Experimental
- Willow
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
--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 exposes the package’s TTS and voice tools only. 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