FreeTTS
by freetts.org · remote · local (npm) · no sign-in to list tools · v1.0.5 · published by org.freetts
Text to speech in 149 languages: MP3 links from any assistant. Free without an account.
7 tools: 5 change things and 2 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things5Claude Code: ask: see these tools
- Only reads2Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http freetts https://mcp.freetts.org/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
7 tools
Changes things 5Claude Code: ask
dialogue_to_speechTurn a script with several speakers into one audio file, a different FreeTTS voice per speaker, with a pause between lines.Reads text others writeNo findings
Why it is in this group
- The input takes a statement or command to run (input.script), which can change anything it can reach.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Turn a script with several speakers into one audio file, a different FreeTTS voice per speaker, with a pause between lines. Write each line as 'Name: text'. Use it for two-host shows, interviews, scenes, language lessons with two speakers. Needs a connected FreeTTS PRO account.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
script_to_tracksRecord a script with exact timing, the way FreeTTS Script mode does: (pause 2) is exactly 2 seconds of silence, (beep), (ding) and (click) play a sound, 'CUE:' lines are read in a …Reads text others writeNo findings
Why it is in this group
- The input takes a statement or command to run (input.script), which can change anything it can reach.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Record a script with exact timing, the way FreeTTS Script mode does: (pause 2) is exactly 2 seconds of silence, (beep), (ding) and (click) play a sound, 'CUE:' lines are read in a second voice, 'TRACK: name' starts a new audio file, 'NAME: line' makes a scene with a voice per character. Returns one file with everything plus one file per track. Use it for ear prompter tracks, voiceovers timed to footage, rehearsal tracks, workout or recipe step audio. Needs a connected FreeTTS PRO account.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
suggest_voiceSuggest three FreeTTS voices for a language and a use (audiobook, tutorial, ad, news, children's story, meditation, podcast), with a short reason each.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Suggest three FreeTTS voices for a language and a use (audiobook, tutorial, ad, news, children's story, meditation, podcast), with a short reason each. Use it when the user has not named a voice.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- idempotentHint: true
text_to_speechConvert text to spoken audio with a FreeTTS voice and return a download link to the MP3 (or WAV with a FreeTTS PRO key).Reads text others writeNo findings
Why it is in this group
- The description's first verb is "convert": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Convert text to spoken audio with a FreeTTS voice and return a download link to the MP3 (or WAV with a FreeTTS PRO key). Use it when the user wants text read aloud, narrated, or saved as an audio file. Without a FreeTTS key: standard voices, up to 2,000 characters a call, a short spoken "FreeTTS" tag at the end, file kept one hour. With a key: the account's plan (PRO: HD and Signature voices, no tag, 10,000 characters a call, files kept 30 days).
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
transcribe_audioTurn a recording into text with FreeTTS speech to text.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Turn a recording into text with FreeTTS speech to text. Give a public https URL to an audio file (mp3, wav, m4a, ogg, webm). Needs a connected FreeTTS PRO account.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
- idempotentHint: true
Only reads 2Claude Code: allow
check_usageShow the FreeTTS plan behind this connection and what is left: characters today or this month, requests a minute, HD voices, watermark.No findings
Why it is in this group
- The description's first verb is "show": a word for reading.
Description, as the server wrote it Show the FreeTTS plan behind this connection and what is left: characters today or this month, requests a minute, HD voices, watermark. Use it when the user asks about limits, their plan, or why a request was refused.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- idempotentHint: true
list_voicesList FreeTTS voices for a language or a search word, with the voice id to pass to text_to_speech.No findings
Why it is in this group
- The name "list_voices" says "list": a word for reading.
Description, as the server wrote it List FreeTTS voices for a language or a search word, with the voice id to pass to text_to_speech. Says which voices are free and which need a FreeTTS PRO key (HD and Signature). Use it when the user names a language, accent or gender, or asks what voices exist.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
- idempotentHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or outbound.
- Reads private data0
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write4
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out0
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Install
Pinned to version 1.0.5. Values in angle brackets are yours to fill in.
claude mcp add --transport http freetts https://mcp.freetts.org/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__freetts__list_voices",
"mcp__freetts__check_usage"
],
"ask": [
"mcp__freetts__suggest_voice",
"mcp__freetts__text_to_speech",
"mcp__freetts__dialogue_to_speech",
"mcp__freetts__script_to_tracks",
"mcp__freetts__transcribe_audio"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as freetts. Review it before you use it.
Capability tags behind 4 rules
- mcp__freetts__text_to_speech untrusted-input
- mcp__freetts__dialogue_to_speech untrusted-input
- mcp__freetts__script_to_tracks untrusted-input
- mcp__freetts__transcribe_audio untrusted-input