Skip to main content
Glama
neosapience

Typecast API MCP Server

by neosapience

typecast-api-mcp-server

MCP Server for typecast-api, enabling seamless integration with MCP clients. This project provides a standardized way to interact with Typecast API through the Model Context Protocol.

About

This project implements a Model Context Protocol server for Typecast API, allowing MCP clients to interact with the Typecast API in a standardized way.

Related MCP server: Vapi MCP Server

Supported Models

Model

Description

Emotion Control

ssfm-v30

Latest model (recommended)

Preset + Smart Mode

ssfm-v21

Stable production model

Preset only

ssfm-v30 Features

  • 7 Emotion Presets: normal, happy, sad, angry, whisper, toneup, tonedown

  • Smart Mode: AI automatically infers emotion from context using previous_text and next_text

  • 37 Languages: Extended language support

Feature Implementation Status

Feature

Status

Voice Management

Search Documentation

Get Voices (V3 API)

Get Voices use_cases filter

Get Voice (V3 API)

Recommend Voices

Text to Speech

Text to Speech (Streaming)

Text to Speech (with Timestamps)

Get My Subscription

Play Audio

Output Controls

target_lufs loudness norm

ssfm-v30 Support

Preset Mode

Smart Mode

Custom Voice

Instant / Professional Clone

List / Get / Delete Custom Voice

Quick Voice Cloning

The MCP server exposes tools for the current Custom Voice API:

  • clone_voice: creates a quick-cloned custom voice from a local WAV or MP3 file.

  • create_professional_voice: starts a professional clone; poll its status before use.

  • get_custom_voices and get_custom_voice: list voices or inspect clone status.

  • delete_cloned_voice: deletes a cloned voice ID that starts with uc_.

Instant cloning constraints:

  • Voice name must be 1-30 characters.

  • Audio sample must be WAV or MP3.

  • Audio sample must be 25 MB or smaller.

  • Use ssfm-v30 unless you have a specific compatibility reason.

Typical flow:

  1. Run clone_voice with name, audio_file_path, and optional model.

  2. Use the returned next_step_voice_id and next_step_model in text_to_speech, text_to_speech_stream, or text_to_speech_with_timestamps.

  3. Run delete_cloned_voice when the temporary cloned voice is no longer needed.

Professional cloning returns 202 Accepted. Poll get_custom_voice until its status becomes completed or failed; completion can take up to two hours.

Voice Recommendations

Use recommend_voices when you know the desired style, mood, language, or use case but do not know the exact voice ID yet. It calls GET /v1/voices/recommendations and returns candidates sorted by score.

The recommendation response intentionally contains only voice_id, voice_name, and score. If an agent needs details about a recommended voice, call get_voice for each returned ID or get_voices for a broader filtered list before using the ID in TTS.

Setup

Hosted Server

The hosted Streamable HTTP endpoint is:

https://typecast-api-docs-web-production.up.railway.app/mcp

Without authentication, the server exposes only search_documentation. Send a Typecast API key on every MCP request to unlock the Typecast API tools:

X-API-KEY: YOUR_TYPECAST_API_KEY

Authorization: Bearer YOUR_TYPECAST_API_KEY is also supported. The hosted server does not store the key. Generated audio is returned as a private, unguessable download URL that expires after one hour. play_audio remains a local-only tool because a hosted server cannot play sound on the MCP client's device.

To preserve how Typecast integration code was created, hosted clients may send both attribution headers together:

X-Typecast-Integration-Source: api-docs
X-Typecast-Generated-By: codex

Use api-page for API page onboarding and api-docs for API documentation onboarding. The legacy llms and skill values remain accepted. X-Typecast-Generated-By accepts a lowercase ASCII token up to 32 characters. The server keeps its own typecast-mcp/<version> User-Agent and appends this attribution instead of replacing it.

On the hosted server, clone_voice accepts only audio_base64 together with an audio_filename ending in .wav or .mp3. audio_file_path is available only when this MCP server runs locally.

Environment Variables

Set the following environment variables:

TYPECAST_API_KEY=<your-api-key>
TYPECAST_OUTPUT_DIR=<your-output-directory> # default: ~/Downloads/typecast_output
TYPECAST_INTEGRATION_SOURCE=<llms|skill|api-page|api-docs> # optional; set both attribution variables
TYPECAST_GENERATED_BY=<coding-agent-id>                     # optional; e.g. codex or claude-code

Usage with Claude Desktop / Cursor

You can add the following to your claude_desktop_config.json or Cursor MCP settings:

{
  "mcpServers": {
    "typecast-api-mcp-server": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/neosapience/typecast-api-mcp-server.git",
        "typecast-api-mcp-server"
      ],
      "env": {
        "TYPECAST_API_KEY": "YOUR_API_KEY",
        "TYPECAST_OUTPUT_DIR": "PATH/TO/YOUR/OUTPUT/DIR"
      }
    }
  }
}

This method automatically fetches and runs the server from GitHub without manual cloning.

Note for Linux users: If you're running on Linux, you need to add the XDG_RUNTIME_DIR environment variable to the env section:

"env": {
  "TYPECAST_API_KEY": "YOUR_API_KEY",
  "TYPECAST_OUTPUT_DIR": "PATH/TO/YOUR/OUTPUT/DIR",
  "XDG_RUNTIME_DIR": "/run/user/1000"
}

Alternative: Local Installation

If you prefer to clone and run locally:

Git Clone

git clone https://github.com/neosapience/typecast-api-mcp-server.git
cd typecast-api-mcp-server

Dependencies

This project requires Python 3.10 or higher and uses uv for package management.

# Create virtual environment and install packages
uv venv
uv pip install -e .

Local Configuration

{
  "mcpServers": {
    "typecast-api-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "/PATH/TO/YOUR/PROJECT",
        "run",
        "typecast-api-mcp-server"
      ],
      "env": {
        "TYPECAST_API_KEY": "YOUR_API_KEY",
        "TYPECAST_OUTPUT_DIR": "PATH/TO/YOUR/OUTPUT/DIR"
      }
    }
  }
}

Replace /PATH/TO/YOUR/PROJECT with the actual path where your project is located.

Manual Execution

You can also run the server manually:

uv run python app/main.py

Contributing

Contributions are always welcome! Feel free to submit a Pull Request.

License

MIT License

Available Tools

11 tools
clone_voiceCreate a quick-cloned custom voice from a local WAV or MP3 audio sampleA

Create a quick-cloned custom voice.

Calls POST /v1/voices/clone with multipart form data. Use the returned
voice_id with text_to_speech, text_to_speech_stream, or
text_to_speech_with_timestamps. Delete temporary cloned voices with
delete_cloned_voice when they are no longer needed.

Args:
    name: Display name for the cloned voice. Must be 1-30 characters.
    audio_file_path: Local WAV or MP3 sample path. Maximum file size is 25 MB.
    model: Voice cloning model. Default: ssfm-v30.
    audio_base64: Base64-encoded WAV or MP3 sample for a remote MCP server.
    audio_filename: Filename with .wav or .mp3 extension for audio_base64.

Returns:
    Dict returned by the Typecast API plus normalized handoff fields:
        voice_id, cloned_voice_id, next_step_voice_id, next_step_model.
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
modelNossfm-v30
audio_base64No
audio_filenameNovoice.wav
audio_file_pathNo

TDQS

A4.3/5.0
Behavior4/5

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

Without annotations, the description carries full burden and discloses the API endpoint, file size limits, and that the tool creates a temporary cloned voice that should be deleted. It implies mutation but does not explicitly state side effects.

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?

The description is well-structured with a summary, API detail, usage, parameter list, and returns. It is somewhat lengthy but each sentence adds value, though some consolidation could improve conciseness.

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 tool with five parameters and no output schema, the description explains all parameters, return value structure, and usage flow. It lacks mention of error handling or prerequisites but is otherwise comprehensive.

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 description coverage is 0%, but the description compensates with detailed, structured parameter explanations including constraints, default values, and usage context for all five parameters.

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 clearly states it creates a quick-cloned custom voice from a local WAV or MP3 sample, uses a specific API endpoint, and distinguishes from sibling tools like delete_cloned_voice and 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?

The description explains how to use the returned voice_id with other tools and when to delete the temporary voice, but does not explicitly state when to use this tool versus alternatives like recommend_voices or get_voices.

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

delete_cloned_voiceDelete a quick-cloned custom voice by voice IDA

Delete a quick-cloned custom voice.

Args:
    voice_id: Cloned voice ID returned by clone_voice. Must start with uc_.

Returns:
    Dict with success=true and the deleted voice_id.
ParametersJSON Schema
NameRequiredDescriptionDefault
voice_idYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations provided, so the description must cover behavioral traits. It states the action (delete) and return format, but lacks details on side effects, permissions, or reversibility. Adequate 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?

Description is concise with one purpose statement, a clear Args section, and a Returns section. No unnecessary words; every sentence provides value.

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?

For a simple delete tool with one parameter, the description fully covers the action, input validation, and return format. It is complete given the tool's complexity and lack of output schema.

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 adds value by explaining that voice_id must be a cloned voice ID starting with 'uc_' and originating from clone_voice. This compensates for the missing schema descriptions.

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 clearly states it deletes a quick-cloned custom voice, which distinguishes it from sibling tools like clone_voice (create) and get_voice (retrieve). The verb 'delete' and resource 'cloned voice' are specific.

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?

The description specifies that voice_id must start with 'uc_' and is returned by clone_voice, guiding when to use it. However, it does not explicitly state when not to use it or provide alternatives.

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

get_my_subscriptionGet the authenticated user's subscription plan, credit usage, and concurrency limitA

Get the authenticated user's subscription information.

Calls GET /v1/users/me/subscription and returns the plan tier, credits
(used / total), and concurrency limit.

Returns:
    Dict with this shape:
        {
            "plan": "free" | "lite" | "plus" | "custom",
            "credits": {"plan_credits": int, "used_credits": int},
            "limits": {"concurrency_limit": int}
        }
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Description explains it's a GET call and returns a specific dict shape. No destructive behavior, and the verb 'get' implies read-only. Lacks explicit mention of auth or rate limits, but for a simple read tool this is sufficient.

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?

Description is 4 sentences, includes the return shape in a readable format. Could be slightly shorter, but is well-structured and front-loaded.

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?

Given zero parameters and no output schema, the description provides the return shape in detail. It covers the essential behavioral aspects for a simple get tool.

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?

No parameters exist, and schema coverage is 100%. The description adds no extra parameter info, which is appropriate since there are none to document.

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?

Title and description clearly state that this tool retrieves the authenticated user's subscription plan, credit usage, and concurrency limit. It specifies the endpoint and return shape, and no sibling tool overlaps in purpose.

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?

Usage is implied: use when you need the current user's subscription info. No explicit when-not-to-use or alternative tools are mentioned, but the tool is self-contained and straightforward.

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

get_voiceGet detailed information for a specific voice by ID using V2 APIA

Get detailed information for a specific voice by ID using V2 API

Args:
    voice_id: The voice ID (e.g., 'tc_672c5f5ce59fac2a48faeaee')

Returns:
    Voice information with enhanced metadata including gender, age, use cases, and supported models with emotions.
ParametersJSON Schema
NameRequiredDescriptionDefault
voice_idYes

TDQS

A3.9/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 cover behavioral traits. It specifies it returns 'voice information with enhanced metadata', which is adequate for a read operation, but lacks explicit mention of idempotency, auth, or rate limits.

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?

The description is concise with clear sections (Args, Returns) and front-loaded purpose, but slightly redundant by repeating 'using V2 API' from the title.

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 tool with one required parameter and no output schema, the description covers purpose, input, and output fields (gender, age, etc.), which is sufficient.

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?

With 0% schema description coverage, the description adds value by defining 'voice_id' as 'The voice ID' and providing an example, though it could include format constraints.

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 clearly states 'Get detailed information for a specific voice by ID using V2 API', which is specific and distinct from siblings like 'get_voices' (listing) and 'clone_voice' (creation).

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 description implies usage when you have a specific voice ID and need details, but it does not explicitly contrast with alternatives like 'get_voices' or state when not to use this tool.

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

get_voicesGet a list of available voices using V2 API with filtering supportA

Get a list of available voices for text-to-speech using V2 API

Args:
    model: Optional filter for specific TTS models (ssfm-v21 or ssfm-v30).
    gender: Optional filter for voice gender (male or female).
    age: Optional filter for voice age group (child, teen, young_adult, middle_aged, senior).
    use_cases: Optional filter for voice use case (e.g. 'audiobook', 'narration', 'documentary').
        Pass a single use case string supported by the V2 voices endpoint.

Returns:
    List of available voices with enhanced metadata including gender, age, and use cases.
ParametersJSON Schema
NameRequiredDescriptionDefault
ageNo
modelNo
genderNo
use_casesNo

TDQS

A3.7/5.0
Behavior3/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. It mentions the V2 API and that it returns a list with metadata, but does not explicitly state it is a read-only operation, any rate limits, or caching behavior. Adequate 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.

Conciseness4/5

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

The description is structured in a clear docstring format with Args and Returns, no redundant sentences, and appropriately sized for the tool's complexity.

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?

Given 4 optional parameters, no output schema, and no annotations, the description covers the tool's purpose, parameters, and return value. It does not mention pagination or result limits, but for a filtered listing tool it is largely complete.

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 compensates well: it explains each parameter with examples (model, gender, age, use_cases) and clarifies use_cases expects a single string. This adds meaning beyond the schema's bare types.

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 clearly states the tool retrieves a list of available voices for text-to-speech, specifies the V2 API, and distinguishes itself from siblings like get_voice (singular) and recommend_voices (suggestive) through its filtering focus.

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 explicit guidance on when to use this tool versus alternatives like get_voice or recommend_voices; lacks when-not-to-use or context for selecting filters.

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

play_audioPlay the generated audio fileB

Play the audio file at the specified path

Args:
    file_path: Path to the audio file to play

Returns:
    Status message
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only says 'play'. It omits behavioral details like blocking nature, hardware dependencies, or error handling, which are critical for agent decision-making.

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 extremely concise with no wasted words, using a clear docstring format with Args and Returns.

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 tool is simple (one parameter, no nested objects) and has an output schema, so the description is adequate but lacks depth on return behavior and side effects. A more complete description would clarify if playback is synchronous or asynchronous.

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%. The description adds minimal value beyond the schema's title, restating 'Path to the audio file' without format, constraints, or examples.

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 clearly states the action ('Play') and the resource ('audio file at the specified path'). It is distinct from sibling tools like text_to_speech or clone_voice, which generate or manage audio/voices.

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 is provided on when to use this tool versus alternatives. It only states what the tool does, leaving the agent to infer usage context.

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

recommend_voicesRecommend Typecast voices from a text descriptionA

Recommend voices that match a natural-language text description.

The recommendation API returns only voice_id, voice_name, and score. Call
get_voices or get_voice with the returned IDs when you need metadata such as
supported models, emotions, gender, age, or use cases before making a TTS
request.

Args:
    query: Text description of the desired style, mood, language, use case,
        or content context.
    count: Maximum number of recommendations to return. Must be 1-10.

Returns:
    Recommended voice candidates sorted by relevance score.
ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

Although annotations are not provided, the description compensates by stating the exact return fields (voice_id, voice_name, score), that results are sorted by relevance, and the count parameter range. It also notes that the tool returns limited information, setting appropriate expectations. No contradictions with annotations (since none exist).

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 well-structured: a concise one-sentence summary, followed by a brief explanation of the limited return value, then clear parameter descriptions, and a returns clause. Every sentence adds value, and it is not verbose.

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?

Given that there is an output schema (though not detailed in the prompt) and no complex nested objects, the description covers the tool's functionality fully: input, output, post-recommendation steps, and parameter constraints. It addresses the need for further metadata retrieval, making the context complete for agent usage.

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

Parameters5/5

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

Schema description coverage is 0%, but the description adds complete parameter documentation: 'query' is described as 'Text description of the desired style, mood, language, use case, or content context', and 'count' as 'Maximum number of recommendations to return. Must be 1-10.' This fully compensates for the schema gap and adds essential meaning.

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 clearly states the verb 'Recommend' and the resource 'voices that match a natural-language text description'. It distinguishes from sibling tools like get_voices and get_voice, which retrieve metadata, by specifying that this tool only returns voice_id, voice_name, and score. The purpose is precise and unambiguous.

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

Usage Guidelines5/5

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

The description explicitly tells when to use this tool: to find voices from a text description. It also provides clear guidance on what to do next: call get_voices or get_voice with the returned IDs for full metadata before making TTS requests. This explicit 'when-to-use' and 'alternatives' guidance is excellent.

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

search_documentationSearch the Typecast API documentation without authenticationD
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

text_to_speechConvert text to speech using the specified voice and parametersA

Convert text to speech using the specified voice and parameters

Args:
    voice_id: ID of the voice to use
    text: Text to convert to speech
    model: TTS model to use (ssfm-v21 or ssfm-v30, default: ssfm-v30)
    emotion_type: For ssfm-v30: 'preset' for explicit emotion or 'smart' for context-aware inference (default: preset)
    emotion_preset: Emotion preset type. v21: normal/happy/sad/angry. v30: adds whisper/toneup/tonedown (default: normal)
    emotion_intensity: Intensity of the emotion, between 0.0 and 2.0 (default: 1.0)
    previous_text: For smart mode - previous context text for emotion inference
    next_text: For smart mode - next context text for emotion inference
    volume: Audio volume level, between 0 and 200 (default: 100)
    audio_pitch: Audio pitch adjustment, between -12 and 12 (default: 0)
    audio_tempo: Audio playback speed, between 0.5 and 2.0 (default: 1.0)
    audio_format: Audio format, either 'wav' or 'mp3' (default: wav)
    target_lufs: Optional absolute loudness normalization target in LUFS (-70.0 ~ 0.0).
        Mutually exclusive with a custom volume value on this non-streaming endpoint.

Returns:
    Local mode: path to the saved audio file.
    Remote mode: dict with audio_url and expires_in_seconds.
ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
modelNossfm-v30
volumeNo
voice_idYes
next_textNo
audio_pitchNo
audio_tempoNo
target_lufsNo
audio_formatNowav
emotion_typeNopreset
previous_textNo
emotion_presetNonormal
emotion_intensityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses important behaviors such as the mutual exclusivity between target_lufs and custom volume, default values, and the distinction between local and remote modes. However, it does not mention potential side effects like API costs or rate limits.

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?

The description is front-loaded with the purpose but then presents a lengthy bulleted parameter list. Given the complexity (13 parameters), this verbosity is justified. The structure is clear with 'Args:' and 'Returns:' sections, though it could be slightly more concise.

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?

The description covers all parameters and return values (local path or remote dict). It explains local vs remote mode and the mutual exclusivity constraint. Despite no annotations, the description is complete enough for an agent to use the tool correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It explains every parameter in detail, including valid ranges, defaults, model-specific options (e.g., emotion_preset for v21 vs v30), and context-specific parameters (previous_text, next_text). This adds significant value beyond the raw 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 begins with a clear statement: 'Convert text to speech using the specified voice and parameters.' This uses a specific verb ('convert') and resource ('text to speech'), and the detailed parameter list helps differentiate it from sibling tools like 'text_to_speech_stream' and 'text_to_speech_with_timestamps'.

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?

The description provides no guidance on when to use this tool versus its siblings (e.g., streaming or timestamp variants). It only describes parameters and does not mention trade-offs or preferred use cases.

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

text_to_speech_streamConvert text to speech with chunked streaming for low-latency deliveryA

Convert text to speech via the streaming endpoint and save the result.

Calls POST /v1/text-to-speech/stream which returns chunked audio data
in real time. The chunks are concatenated and saved as a single file.

Note: the streaming endpoint does not accept volume, but supports
target_lufs for absolute loudness normalization.

Args:
    voice_id: ID of the voice to use
    text: Text to convert to speech
    model: TTS model (ssfm-v21 or ssfm-v30, default: ssfm-v30)
    emotion_type: For ssfm-v30: 'preset' or 'smart' (default: preset)
    emotion_preset: Emotion preset name (default: normal)
    emotion_intensity: Emotion intensity, 0.0 ~ 2.0 (default: 1.0)
    previous_text: For smart mode - previous context text
    next_text: For smart mode - next context text
    audio_pitch: -12 ~ 12 (default: 0)
    audio_tempo: 0.5 ~ 2.0 (default: 1.0)
    audio_format: 'wav' or 'mp3' (default: wav)
    target_lufs: Optional absolute loudness normalization target in LUFS (-70.0 ~ 0.0)

Returns:
    Local mode: path to the saved audio file.
    Remote mode: dict with audio_url and expires_in_seconds.
ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
modelNossfm-v30
voice_idYes
next_textNo
audio_pitchNo
audio_tempoNo
target_lufsNo
audio_formatNowav
emotion_typeNopreset
previous_textNo
emotion_presetNonormal
emotion_intensityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description takes full responsibility for behavioral disclosure. It explains that the tool calls a streaming endpoint, concatenates chunks, saves the result, and returns a path or URL. It also notes limitations (no volume) and parameter constraints. It could mention auth or rate limits, but overall it provides good context.

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?

The description is well-structured with a concise intro, a note, a parameter list, and return info. It is front-loaded with the main purpose. It could be slightly trimmed (e.g., the parameter list is detailed but necessary), but overall it is efficient and clear.

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?

Given the tool's complexity (12 parameters, streaming behavior, no annotations), the description is comprehensive. It covers all parameters, return values in both modes, and a behavioral note about streaming. The presence of an output schema reduces the burden, but the description still adds value. It is complete for an AI agent to use correctly.

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

Parameters5/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. It does so thoroughly: each parameter is listed with its default value, allowed range, and in many cases additional context (e.g., 'emotion_type: For ssfm-v30: preset or smart', 'audio_pitch: -12 ~ 12'). This fully covers the semantic meaning beyond the bare 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 clearly states the action ('Convert text to speech...'), identifies the resource ('streaming endpoint'), and distinguishes it from siblings by mentioning 'streaming' and noting differences (no volume). It also specifies the HTTP endpoint, making the purpose unambiguous.

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?

The description provides a note about what the streaming endpoint does not accept (volume) and what it supports (target_lufs), which helps an agent decide when to use this tool versus alternatives. However, it does not explicitly compare to sibling tools like text_to_speech or provide explicit when-to-use/when-not-to-use guidance.

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

text_to_speech_with_timestampsConvert text to speech with word- or character-level timestamp alignment for caption generationA

Convert text to speech and return timestamp alignment for caption generation.

Calls POST /v1/text-to-speech/with-timestamps. Saves the audio file and
returns the file path together with the raw alignment payload (words and
characters arrays as returned by the server).

For non-whitespace languages such as jpn or zho, pass granularity='char'
or 'both'. With 'word' on those languages the server collapses the entire
sentence into a single word segment.

Args:
    voice_id: ID of the voice to use
    text: Text to convert to speech
    model: TTS model (default: ssfm-v30)
    granularity: 'word', 'char', or 'both'. None lets the server use its
        default (word). For jpn/zho prefer 'char' or 'both'.
    emotion_type, emotion_preset, emotion_intensity, previous_text,
    next_text, language, volume, audio_pitch, audio_tempo, audio_format:
        same shape as text_to_speech.

Returns:
    Dict:
        - local mode: 'audio_path' — path to the saved audio file
        - remote mode: 'audio_url' and 'expires_in_seconds'
        - 'words': list | None — word-level alignment when available
        - 'characters': list | None — character-level alignment when available
        - 'raw': dict — full server response with the audio bytes stripped
ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
modelNossfm-v30
volumeNo
languageNo
voice_idYes
next_textNo
audio_pitchNo
audio_tempoNo
granularityNo
target_lufsNo
audio_formatNowav
emotion_typeNopreset
previous_textNo
emotion_presetNonormal
emotion_intensityNo

TDQS

A4.1/5.0
Behavior4/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. It discloses the API endpoint, that it saves audio and returns alignment payload, and details the return dictionary structure. It also explains the behavior for different granularity values. It does not mention authentication or destructive actions, which is acceptable for a read-like TTS 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?

The description is well-structured with sections (summary, args, returns) and front-loaded with the purpose. It is somewhat long but each section adds value. Minor redundancy in repeating parameter names from 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?

Given 15 parameters, no output schema, and no annotations, the description is quite complete. It explains the return objects, the granularity nuance, and references sibling tool for parameter shapes. It could elaborate on a few more parameters, but overall it provides sufficient context for correct usage.

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 0%, but the description compensates by explaining the granularity parameter in detail (e.g., why char for certain languages) and grouping many other parameters as 'same shape as text_to_speech.' However, individual parameters like volume or audio_pitch are not explained, leaving some ambiguity.

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 clearly states 'Convert text to speech and return timestamp alignment for caption generation.' It specifies the verb (convert), resource (text to speech), and the distinguishing feature (timestamp alignment), differentiating it from the sibling text_to_speech tool.

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?

The description provides explicit guidance for non-whitespace languages (e.g., jpn, zho) recommending char or both granularity to avoid server collapsing. However, it does not explicitly state when to use the sibling text_to_speech instead, though the mention of timestamps implies the distinction.

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

TDQS

B3.2/5.0
Disambiguation4/5

Most tools have clearly distinct purposes (voice management, TTS variants, playback, subscription). However, 'search_documentation' lacks a description, making it ambiguous when to use it compared to other informational tools.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (e.g., get_voices, clone_voice, text_to_speech_stream), with no mixing of styles.

Tool Count5/5

With 11 tools covering voice management, multiple TTS modes, playback, and subscription info, the count is well-scoped for a TTS API server.

Completeness4/5

Core operations are well-covered: voice listing, cloning, deletion, TTS with streaming/timestamps, and subscription info. Missing a dedicated tool to list only cloned voices, but get_voices may cover that.

Maintenance

ActivityActive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    D
    quality
    C
    maintenance
    Provides text-to-speech capabilities through the Model Context Protocol, allowing applications to easily integrate speech synthesis with customizable voices, adjustable speech speed, and cross-platform audio playback support.
    1
    10
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables integration with Vapi APIs through function calling via the Model Context Protocol, allowing AI models to access Vapi's capabilities.
    13
    601
    57
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that wraps Volcengine's Text-to-Speech API, allowing users to generate speech from text using natural language parameters for customizing voice type, emotion, and speed.
    16
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/neosapience/typecast-api-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server