Skip to main content
Glama

FreeTTS MCP server

Text to speech inside Claude, ChatGPT, Cursor, VS Code, Codex, Windsurf, Gemini CLI and any other MCP client. One remote server, nothing to install:

https://mcp.freetts.org/mcp

Ask your assistant to read something aloud, and it calls FreeTTS and hands you an MP3 link.

What it does

Tool

What it does

Needs

text_to_speech

Text in, MP3 link out. 2,253 voices in 149 languages.

Nothing. Free without an account.

list_voices

Voices for a language or search word, with ids.

Nothing

suggest_voice

Three voices for a language and a use, with reasons.

Nothing

check_usage

Plan and characters left.

Nothing

dialogue_to_speech

Name: line script, a voice per speaker, one file.

FreeTTS PRO

script_to_tracks

Script mode: exact (pause 2), (beep), (ding), TRACK: files, CUE: voice, scenes.

FreeTTS PRO

transcribe_audio

A public audio URL in, text out.

FreeTTS PRO

Free without a key: standard voices, 2,000 characters a call and a day per connection, 10 requests a minute, a short spoken "FreeTTS" tag at the end, files kept one hour.

With a FreeTTS key (free account or PRO): the account's plan. PRO: HD and Signature voices, no tag, 10,000 characters a call, 1,000,000 a month, WAV, files kept 30 days, and the dialogue, Script mode and transcription tools. Keys: freetts.org/dashboard (API keys).

Related MCP server: MCP Voice Soundboard

Add it to your client

Claude Code

claude mcp add --transport http freetts https://mcp.freetts.org/mcp

With a key: add --header "Authorization: Bearer ft_live_...", or run /mcp inside a session to connect with the sign-in flow.

Claude (web, desktop, mobile): Settings, Connectors, Add custom connector, paste https://mcp.freetts.org/mcp. Free tools work at once; when a tool needs your account Claude shows Connect.

Cursor: Install in Cursor, or in ~/.cursor/mcp.json:

{ "mcpServers": { "freetts": { "url": "https://mcp.freetts.org/mcp" } } }

VS Code: Install in VS Code, or in .vscode/mcp.json:

{ "servers": { "freetts": { "type": "http", "url": "https://mcp.freetts.org/mcp" } } }

Codex CLI and ChatGPT desktop

codex mcp add freetts --url https://mcp.freetts.org/mcp

ChatGPT (web): Settings, Apps (Developer Mode), add https://mcp.freetts.org/mcp.

Windsurf, ~/.codeium/windsurf/mcp_config.json:

{ "mcpServers": { "freetts": { "serverUrl": "https://mcp.freetts.org/mcp" } } }

Any other client: use https://mcp.freetts.org/mcp as the server URL (Streamable HTTP). To use your account without the sign-in flow, send your key as Authorization: Bearer ft_live_... or x-api-key: ft_live_....

Full guide with copy buttons: freetts.org/developers/mcp.

Sign-in (OAuth)

The server is an OAuth 2.1 authorization server (PKCE, dynamic client registration, client ID metadata documents, RFC 9728 and 8414 metadata). Free tools need no sign-in. When a client calls a tool that needs your account, the server answers 401 and the client shows its Connect flow; the page asks for a FreeTTS API key from your dashboard and binds the connection to it. Delete the key in the dashboard to disconnect every assistant that used it.

Privacy

The text you send is sent to FreeTTS and its speech providers exactly as from the website, under the FreeTTS privacy policy. Calls without a key are metered by the caller's IP address. The server logs tool name, plan, character count, client name and outcome, never the text.

Run it locally (stdio)

The same server also runs on your own machine, for clients that start local servers or when you would rather keep a key in a local config. It talks to the public FreeTTS API with your own key. Get one at freetts.org/dashboard (API keys; a free account has one).

FREETTS_API_KEY=ft_live_... npx -y @freetts/mcp

Claude Desktop, Cursor, Cline, Windsurf and similar clients:

{
  "mcpServers": {
    "freetts": {
      "command": "npx",
      "args": ["-y", "@freetts/mcp"],
      "env": { "FREETTS_API_KEY": "ft_live_..." }
    }
  }
}

Without a key it still starts: list_voices, suggest_voice, the prompts and the resources work, and making audio asks for a key. The hosted server at https://mcp.freetts.org/mcp needs no key at all.

From source: npm install && npm run build && node dist/stdio.js. Node.js 20 or later.

The hosted server itself (dist/index.js) runs next to the FreeTTS API on FreeTTS's own machines and is not meant to be self-hosted; the code is here so you can read exactly what it does.

License: MIT.

Available Tools

7 tools
check_usageCheck FreeTTS usage and planA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds behavioral value by naming what the response reveals (quota counters and plan entitlements) and framing it as a diagnostic for refused requests. It does not mention auth or rate-limit constraints on the check itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with the capability front-loaded and the usage triggers appended. Every clause earns its place; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must carry the return-value burden, and it enumerates the returned fields explicitly. Combined with the read-only annotations and zero-param schema, an agent has everything needed to select and call this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly implies a parameterless, connection-scoped lookup ('behind this connection'), matching the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Show) plus resource (the FreeTTS plan behind this connection) and enumerates the concrete quota dimensions returned (characters today/month, requests per minute, HD voices, watermark). This clearly distinguishes it from the sibling tools, all of which generate or transform audio rather than report plan state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit triggers: user asks about limits, their plan, or why a request was refused. The refusal-diagnosis case is a genuinely useful routing signal. No alternatives or when-not conditions are named, which is a minor gap since no sibling overlaps functionally.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dialogue_to_speechDialogue to speech (two or more voices)A
Idempotent
Inspect

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.

NameRequiredDescriptionDefault
scriptYesLines like 'Abd: Tonight we cook shakshuka.' one per line. Names before the colon.
voicesNoSpeaker name to FreeTTS voice id, like {"Abd": "en-US-AndrewNeural", "Guest": "en-US-EmmaNeural"}. Unnamed speakers get a voice each.
languageNoLanguage of the lines when no voices are given.
pause_msNoSilence between lines in milliseconds. Default 600.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true, openWorldHint=true), and the description adds a genuinely useful prerequisite: a connected FreeTTS PRO account. However it says nothing about the output artifact beyond 'one audio file' — no return value, download location, or failure behavior for unnamed speakers, which is the main behavioral gap for a write tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the core transformation, then format, then use cases, then the prerequisite. Every sentence carries weight, though 'with a pause between lines' mildly duplicates pause_ms in the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter tool with 100% schema coverage, existing annotations, and no output schema, the description covers purpose, input format, typical use cases, and the account prerequisite. The only real omission is what the caller gets back / where the rendered audio lives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so script, voices, language and pause_ms are all documented in the schema itself, including the 'Name: text' format and the default 600ms pause. The description restates the script convention and the pause behavior but adds no syntax or default information beyond the schema, which is the baseline 3 case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Turn a script with several speakers into one audio file') plus the defining behavior — a different voice per speaker with pauses between lines. The 'one audio file' framing implicitly separates it from script_to_tracks, so an agent can route multi-speaker requests correctly without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete use cases ('two-host shows, interviews, scenes, language lessons with two speakers') and a prerequisite ('Needs a connected FreeTTS PRO account'). It stops short of naming alternatives such as text_to_speech for single-voice input or script_to_tracks, so the exclusions are left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_voicesList FreeTTS voicesA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
limitNoHow many to return. Default 15.
genderNoFilter by gender.
searchNoA word to match in the voice name or personality, like 'Andrew', 'calm' or 'news'.
languageNoLanguage or locale, like 'German', 'de-DE', 'Spanish (Mexico)' or 'en'. Empty lists every language.
free_onlyNoOnly voices that work without a FreeTTS key.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/closed-world, so the safety bar is covered. The description adds genuinely new behavioral context: results indicate which voices are free versus which require a FreeTTS PRO key, and name the paid tiers (HD, Signature).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: what it returns first with its downstream use, then when to call it. No filler and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully describes the return content (voice ids plus free/PRO indication). It does not mention pagination or the default limit behavior, but the schema covers the limit parameter, so the gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents limit, gender, search, language and free_only with examples. The description reinforces the language/search/free-vs-paid axes but adds no syntax or format detail beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List FreeTTS voices') and adds the payload value ('the voice id to pass to text_to_speech'), so an agent knows what it gets back. It does not explicitly separate itself from the close sibling suggest_voice, which keeps it short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete trigger conditions: user names a language, accent or gender, or asks what voices exist. Clear context for invocation, but no explicit exclusions or disambiguation against suggest_voice, which also deals with voice choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

script_to_tracksScript to timed tracks (Script mode)A
Idempotent
Inspect

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.

NameRequiredDescriptionDefault
speedNoPercent slower or faster for the main lines. Default 0.
scriptYesThe script text. See freetts.org/text-to-speech-for-actors for the syntax.
my_partNoIn a scene, the character you play: their lines become timed gaps for you to say them.
count_inNoSpoken count-in before each track, one number a second. Default none.
cue_voiceNoVoice for CUE: lines and [bracketed] words. Default Aria.
track_endNoAfter the last line of each track: nothing, a long beep, or the word End. Default none.
line_voiceNoVoice for the main lines: a steady voice name or id (Guy, Andrew, Ava, Aria, Jenny, Brian, Emma, Sonia, Ryan, Libby, Natasha, William, Clara, Liam...). Default Guy.
sentence_pause_msNoSilence after each sentence. Default 500.
paragraph_pause_msNoSilence after each paragraph. Default 1000.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (non-destructive, idempotent, open-world), and the description adds behavior the annotations cannot: the required PRO account and the return shape (one combined file plus per-track files), which matters since no output schema exists. It stops short of describing failure modes or file formats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a dense two-sentence block that front-loads the core behavior and syntax, then the outputs, then the account requirement. Nothing is obviously redundant, though the syntax enumeration is lengthy and slightly crowds out the routing guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter, non-read-only tool with no output schema, the description covers the essentials an agent needs: purpose, syntax conventions, output artifacts, account prerequisite, and example scenarios. Only light gaps remain around error behavior and how parameter interactions (e.g., my_part with NAME:) resolve.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema by documenting the script body syntax ((pause 2), (beep), (ding), (click), 'CUE:', 'TRACK: name', 'NAME: line'), which is the central input semantics for the required parameter and is only referenced by URL in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Record a script with exact timing'), and immediately clarifies the exact output shape: one combined file plus one file per track. It also implicitly distinguishes itself from siblings like text_to_speech and dialogue_to_speech by framing itself as the multi-line, timed 'Script mode' recorder.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete, varied use cases (ear prompter tracks, voiceovers timed to footage, rehearsal tracks, workout/recipe step audio) and states the prerequisite of a connected FreeTTS PRO account. It does not explicitly say when to prefer this over sibling dialogue_to_speech, which keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_voiceSuggest a FreeTTS voiceA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
useNoWhat the audio is for, in a few words.
genderNo
languageYesLanguage or locale, like 'English (US)', 'de-DE' or 'Portuguese (Brazil)'.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, closed-world), so the description's added contribution is the return shape: exactly three candidates, each with a rationale. That output-cardinality detail is genuinely useful given there is no output schema, though latency/cost behavior is unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with what the tool returns followed by the when-to-use condition. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully describes the return (three voices plus reasons) and names the triggering condition. The only real gap is the gender filter, which is neither mentioned in the description nor fully documented in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, and the description enriches the vague 'in a few words' use parameter by enumerating concrete use categories (audiobook, tutorial, ad, news, children's story, meditation, podcast). However, it says nothing about the gender parameter or its enum, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (suggest), resource (FreeTTS voices), cardinality (three), and the dimensions it varies over (language, use), plus what it returns (a short reason each). This is readily distinguishable from list_voices or text_to_speech.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use it when the user has not named a voice" gives a clear selection condition and implicitly separates it from a lookup-style sibling like list_voices. It stops short of naming an alternative tool explicitly, so it is not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

text_to_speechText to speech (FreeTTS)A
Idempotent
Inspect

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

NameRequiredDescriptionDefault
textYesThe text to read. Plain text; SSML is not needed.
speedNoPercent slower (negative) or faster (positive). Default 0.
voiceNoA FreeTTS voice id from list_voices, like en-US-JennyNeural (a short name like 'Jenny' also works). If empty, a good standard voice for the language is chosen.
formatNomp3 (default) or wav (FreeTTS PRO).
languageNoLanguage of the text when no voice is given, like 'German' or 'pt-BR'.
include_audioNoAlso return the audio bytes in the result (large). Default false; the link is enough for most clients.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (which only say it is a non-read-only, open-world, idempotent, non-destructive call) by disclosing tiered behavior: 2,000-char cap and a spoken 'FreeTTS' tag with 1-hour retention without a key, versus HD voices, no tag, 10,000 chars and 30-day retention with a PRO key. This is exactly the operational context an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose, then usage trigger, then tier constraints in a single dense paragraph. No filler sentences; every clause carries either routing or limit information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still explains the return value (download link, optionally audio bytes via include_audio) and the retention/limit differences per tier. For a 6-param tool with 100% schema coverage, nothing material is left unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (baseline 3), and the description adds real value on top: it clarifies that the effective character limit is tier-dependent (2,000 vs 10,000) even though the schema advertises maxLength 30000, and that format=wav requires PRO. It ties voice/format defaults to the key tier without restating every field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (convert text to spoken audio) plus the concrete return artifact (download link to MP3/WAV). It is distinguishable from siblings like dialogue_to_speech and script_to_tracks because it explicitly handles a single block of text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear trigger conditions ('when the user wants text read aloud, narrated, or saved as an audio file') and implicitly the multi-voice sibling dialogue_to_speech. However, it never explicitly says when NOT to use it versus dialogue_to_speech or script_to_tracks, so the agent must infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transcribe_audioTranscribe audio (speech to text)A
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
languageNoLanguage of the recording, like 'en-US', 'de-DE', 'Arabic' or 'es', or 'auto' to detect it (default).
audio_urlYesPublic https URL of the audio file.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered. The description adds meaningful context beyond them: an account/entitlement requirement (PRO) and the no-auth-free constraint of needing a publicly reachable https URL.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with zero filler, and the core purpose is front-loaded before prerequisites. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter read tool with no output schema, the description covers purpose, constraints and formats adequately. It does not describe the return shape (e.g., transcript text/timestamps), a minor omission given no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description goes further by enumerating accepted audio formats (mp3, wav, m4a, ogg, webm), which the schema does not specify, adding real value for the audio_url parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Turn a recording into text') and names the provider (FreeTTS speech to text). It is unambiguously distinguishable from TTS-oriented siblings like text_to_speech and dialogue_to_speech, which operate in the opposite direction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear preconditions: a public https URL to an audio file and a connected FreeTTS PRO account. It does not explicitly name an alternative tool or exclusion, but the direction of conversion makes alternatives self-evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv1.0.5
    • First observedcheck_usage
    • First observeddialogue_to_speech
    • First observedlist_voices
    • First observedscript_to_tracks
    • First observedsuggest_voice
    • First observedtext_to_speech
    • First observedtranscribe_audio

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation4/5

Most tools have distinct purposes (voice discovery, synthesis, transcription, usage), but list_voices vs suggest_voice both revolve around voice selection, and dialogue_to_speech vs script_to_tracks both produce multi-speaker audio from a script. Descriptions do help distinguish them (simple list vs curated recommendation; plain multi-speaker dialogue vs timed/cue/track scripting), so overlap is manageable.

Naming Consistency5/5

All seven names follow a clean snake_case verb_noun pattern (suggest_voice, text_to_speech, check_usage, dialogue_to_speech, script_to_tracks, transcribe_audio, list_voices). The convention is predictable throughout with no style deviations.

Tool Count5/5

Seven tools is well-scoped for a TTS service, covering discovery, synthesis variants, transcription, and quota checks. Each tool earns its place without redundancy or thin coverage.

Completeness4/5

The surface covers the core lifecycle: voice discovery, text/dialogue/script synthesis, transcription, and usage limits. Minor gaps exist (no voice detail/exploration beyond list/suggest, no job status or audio management for long-running outputs), but the main workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers