Skip to main content
Glama

FlowSpeech MCP Server

0.2.1 Security Update

Read-only tools and returned job errors reject the configured API key in diagnostic codes. Returned job errors contain only the validated code, not remote messages or extra fields. Recovery IDs and successful result links remain available.

Use FlowSpeech speech generation from an MCP client. Version 0.2.1 uses the public API v1: create a job, wait for completion, download the WAV, and save it locally.

Related MCP server: TTS-MCP

Requirements

  • Node.js 20.3 or newer.

  • A FlowSpeech developer API key from API settings.

  • Active paid Basic, Pro or Scale API access for generation. Trials do not include API access; generated speech consumes account credits.

Keep keys in your MCP client's local environment or secret manager, not in prompts or public configuration files.

Configuration

Set FLOWSPEECH_API_KEY in the environment used to launch your MCP client. A stdio configuration is:

{
  "mcpServers": {
    "flowspeech": {
      "command": "npx",
      "args": ["-y", "mcp-flowspeech-server@0.2.1"]
    }
  }
}

The MCP client must pass the key to its child process. Clients which do not inherit environment variables need a private env entry or their own secret configuration.

Variable

Meaning

Default

FLOWSPEECH_API_KEY

Required developer key

None

FLOWSPEECH_OUTPUT_DIR

Local output directory; ~/ is expanded

~/.flowspeech-mcp/audio

FLOWSPEECH_TIMEOUT_MS

Total operation deadline, at most 7200000 ms

120000

FLOWSPEECH_BASE_URL

Trusted API origin; never use an untrusted key recipient

https://flowspeech.io

HTTP is allowed only for loopback test servers. Audio downloads never include the API key. Redirects are rejected, and audio downloads are limited to 100 MiB.

Tools

Tool

Arguments

Result

flowspeech_new_request_id

None; no API key needed

Fresh UUID generated locally without network access

flowspeech_tts

Required text and request_id; optional voice (Kore), output_path

Local WAV path, job ID, request ID and usage

flowspeech_tts_multi

Required labelled text and request_id; optional voice_a (Charon), voice_b (Kore), output_path

Local WAV path and recovery IDs

flowspeech_list_voices

Optional gender: male, female or all

Current authenticated voice catalog

flowspeech_quota

None

Available, remaining and reserved credits

flowspeech_get_job

Exactly one UUID: job_id or request_id

Current job status and result; never creates work

Call flowspeech_new_request_id first and retain its request_id before invoking either generation tool. Never use a fresh UUID merely because a call was interrupted. All tools reject unknown fields and incorrect argument types at runtime. Model, source, speed and format options are unsupported. Output paths are validated and preflighted before paid submission; the final write still uses atomic no-overwrite protection in case another process creates the file meanwhile.

Two-speaker input uses one label per turn. Continuation lines belong to the preceding speaker:

Speaker1: Welcome.[pause:2s]Let's begin.
Speaker2: Thanks for inviting me.
Speaker1: What should we cover first?

Output is 24 kHz, mono, 16-bit PCM WAV. The client validates all result fields (url, mimeType, sampleRate, channels, bitsPerSample, access), usage counters, UUID correlation, RIFF length, chunk boundaries and padding, PCM format, and nonempty sample-aligned data before saving. Existing output files are never overwritten. Anyone holding a result URL can download it, so keep job results and recordings private when appropriate.

Recovery and migration

Version 0.1.0 called the retired synchronous endpoint. Upgrade the npm package and restart your MCP client. All API tools require a developer key, including voice listing; only flowspeech_new_request_id is entirely local. All five existing tool names remain available.

Breaking change in 0.2.0: both generation tools now require request_id; automatic UUID creation inside a blocking generation call has been removed. The TypeScript client's generate(input, requestId, signal?) likewise requires a caller-known UUID. UUIDs are normalized to lowercase. The client rejects responses whose request or job identity does not match the requested operation.

The server submits { "input": ... } with a UUID idempotency key, polls no faster than five seconds (including status retries), honors a longer Retry-After, and downloads result.url. A received cooldown still applies if reading the response body fails. It does not expect an API Base64 response. Transient API retries preserve the exact request ID and body, with at most five attempts per API request. Redirects and size-validation failures are not retried.

Recovery workflow:

  1. Call flowspeech_new_request_id and retain the returned UUID.

  2. Pass that UUID as request_id to generation with the intended text and voices.

  3. After a timeout or cancellation, call flowspeech_get_job with {"request_id":"YOUR_RETAINED_UUID"}. If a job ID was already returned, {"job_id":"YOUR_JOB_UUID"} is also supported.

  4. While queued, running, merging or settling, wait at least five seconds between status calls. On success, use the existing result.url for a credential-free download. Do not request another recording to retry a download.

  5. If lookup returns 404, retry the original generation with the same UUID and unchanged text and voices. To retry local saving through MCP, replay that same request with an unused output path; idempotency prevents new generation.

Caller cancellation is passed to HTTP requests, response reads and polling waits. It never sends a server-side cancellation request. MCP clients may time out earlier than FLOWSPEECH_TIMEOUT_MS (the SDK default is 60 seconds); configure their timeout as appropriate. Cancelled MCP requests may not receive a final error response, which is why retaining the UUID before submission is required. A deleted success result has no downloadable audio. A terminal failed/cancelled job requires a new UUID only when intentionally requesting a new attempt.

Development and tests

npm ci --ignore-scripts
npm test
npm run test:packed

Tests cover mocked v1 contracts, real WAV fixtures and a loopback HTTP server exercised through the built MCP stdio process. Packed tests rebuild the tarball, inspect its members and credentials patterns, compare packaged bytes with local files, and rerun the client and stdio suites against the extracted package. They never call paid production generation. Node 20 and 22 CI run both suites. See CHANGELOG.md and the public API documentation.

License

MIT

Available Tools

6 tools
flowspeech_get_jobA

Read an existing job by job UUID or caller-known request UUID without creating a recording. Supply exactly one ID.

NameRequiredDescriptionDefault
job_idNo
request_idNo

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries full burden: it does disclose the read-only nature ('without creating a recording') and the exactly-one-ID constraint, which is useful. But it omits auth requirements, what happens if the ID is unknown, and whether the returned job may still be in progress, which matters for a job-status tool.

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 short sentences, front-loaded with the action and the key constraint, with zero waste.

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

Completeness3/5

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

For a simple 2-param read tool this is close, but with no annotations, no output schema, and no parameter descriptions, the description should say more about what a job read returns (status fields?) and error behavior for unknown IDs.

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 0%, so the description must compensate, and it does: it explains that job_id is the job UUID, request_id is the caller-known request UUID, and that exactly one must be supplied (matching the oneOf). It adds genuine semantics the schema lacks, though it doesn't clarify format or how to obtain each ID.

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?

The description states a specific verb ('Read') and resource ('an existing job'), and names both lookup keys. It also implicitly distinguishes itself from the sibling TTS tools by saying 'without creating a recording', though it doesn't name those siblings explicitly.

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

Usage Guidelines3/5

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

The phrase 'without creating a recording' implies this is the non-mutating lookup path, which hints at when to use it versus flowspeech_tts. However, there is no explicit when/when-not guidance, no mention of flowspeech_new_request_id as the source of request_id, and no stated alternative.

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

flowspeech_list_voicesC

Retrieve the current voice catalog from FlowSpeech.

NameRequiredDescriptionDefault
genderNoall

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Retrieve' implies a read operation, but there is no mention of permissions, rate limits, whether results are cached, or whether the catalog is paginated — all of which matter for a listing 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?

One short sentence with no wasted words and the verb-resource pair front-loaded. It is efficient but borders on under-specified rather than deliberately terse.

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

Completeness2/5

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

With no output schema and no annotations, the description should say what the catalog contains (voice IDs, names, languages, genders) so an agent knows what it can extract. That information is absent, leaving the agent unable to plan the follow-up call to flowspeech_tts.

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

Parameters2/5

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

Schema description coverage is 0% and the single optional 'gender' parameter (enum male/female/all with default 'all') is never acknowledged in the description. The schema's enum values are self-explanatory, but the description adds nothing about what filtering means or how 'all' behaves.

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?

Specific verb (Retrieve) plus specific resource (voice catalog) from a named service. The resource is clearly distinct from sibling tools like flowspeech_tts, flowspeech_quota, and flowspeech_get_job, though the description never explicitly contrasts with them.

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

Usage Guidelines2/5

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

No guidance on when to call this versus alternatives, nor any note that it is the discovery step for voice IDs consumed by flowspeech_tts / flowspeech_tts_multi. The reader must infer that from sibling names alone.

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

flowspeech_new_request_idA

Generate a fresh request UUID locally, without network access or an API key. Keep it before starting one recording.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations present, the description does real work: it discloses that generation is local, requires no network, and needs no API key — covering the auth and side-effect questions an agent would otherwise have to guess at. It stops short of saying whether the UUID is persisted or how it relates to server-side records.

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?

Two short sentences, front-loaded with the operation and its constraints. The second sentence is worth including but its phrasing is loose enough to require a re-read.

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 zero-parameter utility with no output schema, the description covers purpose, execution environment, and timing well enough to call it correctly; the return value (a UUID string) is only implied by the word 'UUID' but is inferable.

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 there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies no configuration is needed.

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 ('Generate a fresh request UUID') plus the key execution constraint ('locally, without network access or an API key'). No sibling tool (tts, tts_multi, list_voices, quota, get_job) overlaps with this operation, so an agent can identify it unambiguously.

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

Usage Guidelines3/5

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

The second sentence ('Keep it before starting one recording') implies a call-ordering rule but is awkwardly phrased and never names which sibling operation starts a recording, nor what happens if an ID is reused. Usage is implied rather than specified.

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

flowspeech_quotaA

Read available, remaining and reserved API credits.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral load. "Read" correctly signals a non-mutating operation, but it says nothing about whether this call itself consumes credits, whether it requires authentication, or whether the numbers are cached/realtime — all relevant for a billing-adjacent endpoint. Adequate for a trivial zero-arg read, but not rich.

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?

One sentence, nine words, front-loaded with the verb and enumerating exactly the three values returned. No filler, no restatement of the tool name.

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 zero-parameter, no-output-schema tool this is close to sufficient — the description names the three returned quantities so the agent knows what to expect. Slightly short of 5 because units/format of the returned credits and any auth or rate-limit expectations are left unstated.

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, which is the baseline-4 case. The description correctly implies a global account-scoped read with no filtering knobs, consistent with 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?

Specific verb ("Read") plus a precise resource ("available, remaining and reserved API credits"), including the three credit buckets returned. Nothing in the sibling list (tts, tts_multi, list_voices, get_job, new_request_id) overlaps with a credit-balance read, so an agent can route here unambiguously.

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

Usage Guidelines3/5

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

The usage is implied by the noun "quota" — an agent would call this to check balance before or after synthesis requests — but the description never says when to call it (pre-flight check? error diagnosis? periodic polling?) or that no alternatives exist. No exclusions or triggering conditions are stated.

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

flowspeech_ttsA

Generate a WAV recording with FlowSpeech. Requires a caller-known request UUID, an API key and paid API access; consumes account credits.

NameRequiredDescriptionDefault
textYes
voiceNoKore
request_idYesRequired caller-known UUID. Get one with flowspeech_new_request_id; reuse only for unchanged text and voices.
output_pathNoOptional output WAV file path. An existing file is not overwritten.

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well by disclosing auth needs, paid access, credit consumption, and WAV output. It still omits operational behavior such as whether generation is synchronous or job-based and how failures are surfaced.

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 with the main action and requirements front-loaded. Every clause earns its place by communicating purpose, prerequisites, or cost.

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

Completeness3/5

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

The description covers the core purpose, prerequisites, and cost, which is useful. But with no output schema, it does not explain what is returned—file path, job identifier, or otherwise—and the presence of flowspeech_get_job suggests result handling may matter.

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 50%, and the description mainly restates that a caller-known request UUID is required. It does not add meaning for text, voice, or output_path beyond what the schema already provides, so it only partially compensates for the coverage gap.

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?

The description states a specific verb and output resource: generate a WAV recording with FlowSpeech. It is clear what the tool does, but it does not distinguish this single-recording tool from the sibling flowspeech_tts_multi.

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

Usage Guidelines3/5

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

It gives prerequisites—caller-known request UUID, API key, paid API access, and credit consumption—which helps determine whether the tool is usable. However, it does not say when to choose this over flowspeech_tts_multi or how to obtain the UUID without relying on the schema.

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

flowspeech_tts_multiA

Generate a two-speaker WAV recording with a caller-known request UUID. Each turn starts with Speaker1: or Speaker2:. Consumes account credits.

NameRequiredDescriptionDefault
textYes
voice_aNoCharon
voice_bNoKore
request_idYesRequired caller-known UUID. Get one with flowspeech_new_request_id; reuse only for unchanged text and voices.
output_pathNoOptional output WAV file path. An existing file is not overwritten.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that it consumes account credits and produces a WAV recording, but it does not cover permissions, failure behavior, idempotency, or what the caller receives back.

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?

The description is three short sentences, front-loaded with the core action and output format. Every sentence adds useful information: the output type, the turn-prefix format, and the credit consumption.

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

Completeness3/5

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

For a five-parameter tool with no annotations and no output schema, the description is only partially complete. It covers the output artifact and text-turn format, but omits the speaker-to-voice mapping, where the resulting WAV is written, and what the tool returns to the caller.

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 40%, so the description must compensate. It adds critical meaning for the text parameter by explaining that each turn begins with Speaker1: or Speaker2:, but it does not explain how voice_a and voice_b map to those speaker labels, nor does it clarify text formatting beyond the prefix rule.

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?

The description uses a specific verb and resource: 'Generate a two-speaker WAV recording.' The 'two-speaker' qualifier implicitly distinguishes it from the single-speaker sibling flowspeech_tts, though that sibling is not named explicitly.

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

Usage Guidelines3/5

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

Usage is implied by 'two-speaker' and the need for a caller-known request UUID, which suggests when this tool is appropriate. However, it never explicitly says when to use this instead of flowspeech_tts or what prerequisites are required beyond getting a UUID.

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. 6 tool updatesv0.2.1
    • Addedflowspeech_get_job
    • Changedflowspeech_list_voices2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / gender / description
        Removed value: -"Filter by gender. Default: \"all\""
    • Addedflowspeech_new_request_id
    • Addedflowspeech_quota
    • Changedflowspeech_tts6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / output_path / description
        Previous value: -"File path to save audio. Defaults to a timestamped file in ~/.flowspeech-mcp/audio"New value: +"Optional output WAV file path. An existing file is not overwritten."
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Required caller-known UUID. Get one with flowspeech_new_request_id; reuse only for unchanged text and voices.",
        +  "format": "uuid",
        +  "type": "string"
        +}
      • removedInput schema / properties / text / description
        Removed value: -"Text to convert to speech. Supports emotion stage directions inside ***(say <style>: text)***: e.g. \"***(say cheerfully: Hello!)***\""
      • removedInput schema / properties / voice / description
        Removed value: -"Voice name to use. Default: \"Kore\". Available: Puck, Fenrir, Zephyr, Autonoe, Laomedeia, Sadachbia, Leda, Aoede, Charon, Rasalgethi, Kore, Orus, Alnilam, Erinome, Iapetus, Schedar, Pulcherrima, Sadaltager, Umbriel, Callirrhoe, Achird, Zubenelgenubi, Algieba, Despina, Enceladus, Algenib, Sulafat, Vindemiatrix, Achernar, Gacrux"
      • changedInput schema / required
        Previous value: -[
        -  "text"
        -]New value: +[
        +  "text",
        +  "request_id"
        +]
    • Changedflowspeech_tts_multi7 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / output_path / description
        Previous value: -"File path to save audio. Defaults to a timestamped file in ~/.flowspeech-mcp/audio"New value: +"Optional output WAV file path. An existing file is not overwritten."
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Required caller-known UUID. Get one with flowspeech_new_request_id; reuse only for unchanged text and voices.",
        +  "format": "uuid",
        +  "type": "string"
        +}
      • removedInput schema / properties / text / description
        Removed value: -"Dialogue text with speaker labels. Example:\n\"Speaker1: Good morning!\nSpeaker2: Good morning! How are you?\""
      • removedInput schema / properties / voice_a / description
        Removed value: -"Voice for Speaker1. Default: \"Charon\""
      • removedInput schema / properties / voice_b / description
        Removed value: -"Voice for Speaker2. Default: \"Kore\""
      • changedInput schema / required
        Previous value: -[
        -  "text"
        -]New value: +[
        +  "text",
        +  "request_id"
        +]
  2. 3 tool updatesv0.1.0
    • First observedflowspeech_list_voices
    • First observedflowspeech_tts
    • First observedflowspeech_tts_multi

TDQS

A3.6/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct role: single-speaker TTS, two-speaker TTS, voice catalog, quota, job lookup, and local request-ID generation. The main potential overlap between tts and tts_multi is resolved by descriptions specifying single- versus two-speaker output.

Naming Consistency4/5

All tools share the flowspeech_ prefix and lowercase snake_case, making them predictable. The only minor inconsistency is that some names are verb-led (list_voices, get_job) while others are noun/acronym-led (tts, quota, new_request_id).

Tool Count5/5

Six tools is well-scoped for a focused TTS API surface. Each tool appears to serve a distinct necessary purpose without obvious redundancy.

Completeness4/5

The surface covers the core workflow: request-ID creation, single- and multi-speaker synthesis, voice discovery, quota checking, and job status lookup. Minor gaps may exist around job listing/cancellation or explicit audio retrieval, but the essential lifecycle is represented.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol server that integrates high-quality text-to-speech capabilities with Claude Desktop and other MCP-compatible clients, supporting multiple voice options and audio formats.
    11 npm
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI models to generate and play high-quality text-to-speech audio through your device's native audio system using Rime's voice synthesis API.
    1
    202 npm
    27
    -
  • A
    license
    B
    quality
    F
    maintenance
    An official Model Context Protocol (MCP) server that enables AI clients to interact with ElevenLabs' Text to Speech and audio processing APIs, allowing for speech generation, voice cloning, audio transcription, and other audio-related tasks.
    27
    1,544
    MIT