SecretVoice

Intimate voice AI: 29 voices, 22 languages, emoji vocal cues (whisper, sigh, breathless) and multi-voice scenes.

Documentation

Direction lives in the script, not in a settings object.

Every other voice MCP tool takes text and returns audio. That is a utility. This one lets the agent act: it can whisper on one line, sigh on the next, switch to a different character, and answer in another language โ€” without a second tool call.

EmojiDirectionEmojiDirection
๐Ÿ‘‚whisper๐Ÿ’‹kiss
๐Ÿ˜ฎ๐Ÿ’จsigh๐Ÿคญchuckle
๐ŸŒฌ๏ธbreathless๐Ÿฅบtrembling
๐Ÿฅตpanting๐Ÿ˜ญsobbing
โธ๏ธpause๐Ÿขslowly

The agent writes the performance. A prompt like โ€œread this line like you are telling a secret at 2amโ€ becomes ๐Ÿ‘‚ read this lineโ€ฆ โ€” and the voice actually does it. Any emoji that is not a cue is stripped, so scripts stay readable.

Six tools, three resources.

Everything an agent needs to pick a voice, perform, and stay inside its credit budget.

ToolWhat it doesScope
list_voicesEvery voice with id and gendervoices:read
list_languagesThe 22 supported language codesvoices:read
text_to_speechText in, audio out โ€” emoji cues allowedtts:generate
generate_sceneMulti-voice scene: one clip per segment, own voice and languagetts:generate
get_balancePlan and remaining creditsaccount:read
list_historyRecent generationshistory:read

Resources for clients that read context: secretvoice://voices, secretvoice://languages, secretvoice://vocal-cues.

Two lines in a config file.

The client registers itself, you approve the scopes once, and it receives a token bound to this server. Nothing to paste, nothing to rotate.

{
  "mcpServers": {
    "secretvoice": {
      "type": "http",
      "url": "https://api.secretvoice.dev/mcp"
    }
  }
}
{
  "mcpServers": {
    "secretvoice": { "url": "https://api.secretvoice.dev/mcp" }
  }
}
{
  "servers": {
    "secretvoice": { "type": "http", "url": "https://api.secretvoice.dev/mcp" }
  }
}

Agent instructions that actually work. Tell the model what it may do with the voice, not just that a tool exists. This is the block we use:

You have SecretVoice over MCP. When the user wants audio, narration or a scene:
1. Call list_voices and pick by gender and style โ€” never guess a voice id.
2. Write the script with emoji vocal cues where the delivery should change
   (๐Ÿ‘‚ whisper, ๐Ÿ˜ฎโ€๐Ÿ’จ sigh, ๐ŸŒฌ๏ธ breathless, ๐Ÿ’‹ kiss, โธ๏ธ pause).
3. Use text_to_speech for one speaker, generate_scene for dialogue.
4. State the character count before generating: 1 credit = 1 character.

Client without dynamic registration? Mint a key in the dashboard and send it as Authorization: Bearer <key> โ€” the endpoint accepts both.

Same credits as the API. Nothing hidden.

One credit is one character. A 500-character paragraph is 500 credits, whether it comes from a script, the Studio, or an agent. A free 3-day trial covers the first 10,000 characters.

Before you connect.

  • Is this an official Anthropic server? No โ€” it is an independent MCP server published by SecretVoice.
  • Do I need an API key? No. The client registers itself and you approve the scopes once. A key still works for clients that cannot do OAuth.
  • Which languages? Twenty-two, including Turkish, Japanese, Korean, Hindi, Tamil and Thai. Ask the server with list_languages.
  • Can it do several characters in one scene? Yes โ€” generate_scene takes one segment per line, each with its own voice and language.
  • Does it stream audio? Tool calls return complete clips. For sub-200ms live conversation use the WebSocket API.
  • How do I revoke it? From your account, or via the revocation endpoint.