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.

When to use it

Reach for bland-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

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 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