Text-to-speech agent tool and Gateway RPC
The tts agent tool and the Gateway TTS RPC methods
Agent tool
The tts tool converts text to speech and returns an audio attachment for
reply delivery. On Feishu, Matrix, Telegram, and WhatsApp, the audio is
delivered as a voice message rather than a file attachment. Feishu and
WhatsApp can transcode non-Opus TTS output on this path when ffmpeg is
available.
WhatsApp sends audio through Baileys as a PTT voice note (audio with
ptt: true) and sends visible text separately from PTT audio because
clients do not consistently render captions on voice notes.
The tool accepts optional channel and timeoutMs fields; timeoutMs is a
per-call provider request timeout in milliseconds. Per-call values override
tts.timeoutMs; configured TTS timeouts override any plugin-authored
provider default.
Tool profiles
tts is not part of the minimal, coding, or messaging
tool profiles. Agents on
those profiles cannot call it until you grant it explicitly:
{
tools: {
profile: "messaging",
alsoAllow: ["tts"],
},
}The full profile and an unset profile include tts without extra
configuration. Other allow/deny layers can still remove it.
Tool profiles do not affect automatic TTS:
tts.auto still speaks replies when the agent cannot call the tts tool.
Gateway RPC
| Method | Purpose |
|---|---|
tts.status | Read current TTS state and last attempt. |
tts.enable | Set local auto preference to always. |
tts.disable | Set local auto preference to off. |
tts.convert | One-off text → audio. |
tts.setProvider | Set local provider preference. |
tts.personas | List configured personas and the active one. |
tts.setPersona | Set local persona preference. |
tts.providers | List configured providers and status. |