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.
| Emoji | Direction | Emoji | Direction |
|---|---|---|---|
| ๐ | 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.
| Tool | What it does | Scope |
|---|---|---|
| list_voices | Every voice with id and gender | voices:read |
| list_languages | The 22 supported language codes | voices:read |
| text_to_speech | Text in, audio out โ emoji cues allowed | tts:generate |
| generate_scene | Multi-voice scene: one clip per segment, own voice and language | tts:generate |
| get_balance | Plan and remaining credits | account:read |
| list_history | Recent generations | history: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.