{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_qkrgf9faxfzc","handle":"ttsforfree","url":"https://wellknown.network/agents/ttsforfree","links":{"self":"https://wellknown.network/agents/ttsforfree/record.json","html":"https://wellknown.network/agents/ttsforfree","markdown":"https://wellknown.network/agents/ttsforfree/record.md","api":"https://wellknown.network/api/v1/agents/ttsforfree","status":"https://wellknown.network/api/v1/agents/ttsforfree/status","claim":"https://wellknown.network/agents/ttsforfree/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/ttsforfree/claim.json","badge":"https://wellknown.network/agents/ttsforfree/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/ttsforfree/history","tools":"https://wellknown.network/api/v1/agents/ttsforfree/tools"},"ard":{"identifier":"urn:air:api.ttsforfree.com:server:ttsforfree","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"TTSForFree","summary":"Generate AI voices, text-to-speech, subtitles, transcription, and video localization.","description":"Generate AI voices, text-to-speech, subtitles, transcription, and video localization.","publisher":{"name":"CalmNguyen","url":null},"homepage":"https://ttsforfree.com","repository":"https://github.com/CalmNguyen/ttsforfree-mcp","version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.ttsforfree.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-22T17:09:59.037206Z","publishedAt":"2026-10-22T17:09:59.037206Z","registryName":"io.github.CalmNguyen/ttsforfree"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.translation","name":"Translation","confidence":1,"provenance":"derived"},{"slug":"content.localization","name":"Localization","confidence":1,"provenance":"derived"},{"slug":"media.speech-synthesis","name":"Speech Synthesis","confidence":1,"provenance":"derived"},{"slug":"media.speech-recognition","name":"Speech Recognition","confidence":1,"provenance":"derived"},{"slug":"media.video-editing","name":"Video Editing","confidence":0.949,"provenance":"derived"},{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":0.525,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"},{"slug":"documents.conversion","name":"Document Conversion","confidence":0.51,"provenance":"derived"}],"categories":["commerce","content","documents","media"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 6h ago.","lastOkAt":"2026-10-27T16:24:55.376Z","lastProbedAt":"2026-10-27T16:24:55.376Z","statusComputedAt":"2026-10-27T16:29:18.980Z","reliability30d":{"probes":7,"successRate":1,"p50Ms":757,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":7,"ok":7,"authBoundaryOk":0,"serviceOk":7,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-27T16:24:55.376Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":313,"error":null,"detail":{"tools":[{"name":"list_languages","description":"List every language supported by TTSForFree text-to-speech. Returns language codes to pass to list_voices."},{"name":"list_voices","description":"Search the AI voice catalog for one language. Each result has a `voice` token (v1:...) - pass it unchanged as `voice` to text_to_speech, multi_voice_to_speech o"},{"name":"get_voice_details","description":"Get full metadata for one voice token: persona, use case, accent, pitch, styles, preview audio and credit cost."},{"name":"list_my_custom_voices","description":"List the user's personal voices created with Voice Design (from a text prompt) or Voice Clone (from an audio sample), plus the remaining custom-voice quota. Use"},{"name":"list_favorite_voices","description":"List the voices the user marked as favorites, in their saved order. Check this first when the user did not name a voice."},{"name":"add_favorite_voice","description":"Save a voice to the user's favorites (only when the user asks)."},{"name":"remove_favorite_voice","description":"Remove a voice from the user's favorites (only when the user asks)."},{"name":"design_custom_voice","description":"Create a new personal AI voice from a natural-language description (Gemini Voice Design). Uses one slot of the user's custom-voice quota - confirm with the user"},{"name":"get_account_status","description":"Show the user's plan tier, remaining characters/credits, max characters per request, max blocks per multi-voice/SRT job and API rate limits. Call before large j"},{"name":"text_to_speech","description":"Convert one text into one MP3 with one voice. Use for narration, voiceover scripts, articles, lessons, announcements or any audio whose length can follow the sp"},{"name":"multi_voice_to_speech","description":"Render ordered segments, each with its own voice, into ONE merged MP3. Use for podcasts, dialogues, interviews, audio dramas or explainer videos with several sp"},{"name":"srt_to_speech","description":"Create ONE MP3 that follows a subtitle timeline: every cue starts at its timestamp and speech speed auto-fits the cue duration. Use for video voiceover, dubbing"},{"name":"get_job_status","description":"Check a speech job created earlier. Returns status (PENDING | SUCCESS | ERROR) and audio_url once SUCCESS. Never guess or fetch an audio URL before SUCCESS."},{"name":"list_recent_jobs","description":"List the user's most recent speech jobs with status and audio URLs, to reuse earlier audio instead of paying again."},{"name":"get_job_detail","description":"Get a multi_voice_to_speech or srt_to_speech job with every segment: text, voice and its own audio_url, plus the merged audio. Use it to build captions or a Rem"},{"name":"create_upload_url","description":"Get a one-time URL to upload a local video or audio file (mp4, mov, webm, mkv, mp3, wav, m4a...) up to 2 GB. Upload with HTTP PUT of the raw bytes, e.g. `curl -"},{"name":"transcribe_media","description":"Speech-to-text for an uploaded video or audio file: returns timestamped SRT (the timeline to rewrite, translate or re-voice with srt_to_speech). Credits are cha"},{"name":"get_transcription","description":"Check a transcribe_media job and get its SRT once finished."},{"name":"estimate_video_localization","description":"Estimate the credits to dub one video into one or more languages (speech-to-text + translation + voice + video merge) before running localize_video. Pass video_"},{"name":"localize_video","description":"Full automatic dubbing of an uploaded video: transcribe once, translate, voice every target language with its own voice and render a dubbed video per language. "},{"name":"get_localization_status","description":"Status of localize_video jobs: current step, and when Completed the dubbed audio_url, final_video_url and translated SRT for each language."}],"toolCount":21,"toolsHash":"7ceeaf0c40b9724cabb506f5ccd1af7196194a777e3dbafdcd7f0320a78d815d","serverName":"ttsforfree","capabilities":["tools","prompts"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-27T09:24:57.339Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":805,"error":null,"detail":{"tools":[{"name":"list_languages","description":"List every language supported by TTSForFree text-to-speech. Returns language codes to pass to list_voices."},{"name":"list_voices","description":"Search the AI voice catalog for one language. Each result has a `voice` token (v1:...) - pass it unchanged as `voice` to text_to_speech, multi_voice_to_speech o"},{"name":"get_voice_details","description":"Get full metadata for one voice token: persona, use case, accent, pitch, styles, preview audio and credit cost."},{"name":"list_my_custom_voices","description":"List the user's personal voices created with Voice Design (from a text prompt) or Voice Clone (from an audio sample), plus the remaining custom-voice quota. Use"},{"name":"list_favorite_voices","description":"List the voices the user marked as favorites, in their saved order. Check this first when the user did not name a voice."},{"name":"add_favorite_voice","description":"Save a voice to the user's favorites (only when the user asks)."},{"name":"remove_favorite_voice","description":"Remove a voice from the user's favorites (only when the user asks)."},{"name":"design_custom_voice","description":"Create a new personal AI voice from a natural-language description (Gemini Voice Design). Uses one slot of the user's custom-voice quota - confirm with the user"},{"name":"get_account_status","description":"Show the user's plan tier, remaining characters/credits, max characters per request, max blocks per multi-voice/SRT job and API rate limits. Call before large j"},{"name":"text_to_speech","description":"Convert one text into one MP3 with one voice. Use for narration, voiceover scripts, articles, lessons, announcements or any audio whose length can follow the sp"},{"name":"multi_voice_to_speech","description":"Render ordered segments, each with its own voice, into ONE merged MP3. Use for podcasts, dialogues, interviews, audio dramas or explainer videos with several sp"},{"name":"srt_to_speech","description":"Create ONE MP3 that follows a subtitle timeline: every cue starts at its timestamp and speech speed auto-fits the cue duration. Use for video voiceover, dubbing"},{"name":"get_job_status","description":"Check a speech job created earlier. Returns status (PENDING | SUCCESS | ERROR) and audio_url once SUCCESS. Never guess or fetch an audio URL before SUCCESS."},{"name":"list_recent_jobs","description":"List the user's most recent speech jobs with status and audio URLs, to reuse earlier audio instead of paying again."},{"name":"get_job_detail","description":"Get a multi_voice_to_speech or srt_to_speech job with every segment: text, voice and its own audio_url, plus the merged audio. Use it to build captions or a Rem"},{"name":"create_upload_url","description":"Get a one-time URL to upload a local video or audio file (mp4, mov, webm, mkv, mp3, wav, m4a...) up to 2 GB. Upload with HTTP PUT of the raw bytes, e.g. `curl -"},{"name":"transcribe_media","description":"Speech-to-text for an uploaded video or audio file: returns timestamped SRT (the timeline to rewrite, translate or re-voice with srt_to_speech). Credits are cha"},{"name":"get_transcription","description":"Check a transcribe_media job and get its SRT once finished."},{"name":"estimate_video_localization","description":"Estimate the credits to dub one video into one or more languages (speech-to-text + translation + voice + video merge) before running localize_video. Pass video_"},{"name":"localize_video","description":"Full automatic dubbing of an uploaded video: transcribe once, translate, voice every target language with its own voice and render a dubbed video per language. "},{"name":"get_localization_status","description":"Status of localize_video jobs: current step, and when Completed the dubbed audio_url, final_video_url and translated SRT for each language."}],"toolCount":21,"toolsHash":"7ceeaf0c40b9724cabb506f5ccd1af7196194a777e3dbafdcd7f0320a78d815d","serverName":"ttsforfree","capabilities":["tools","prompts"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-27T02:23:02.264Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":735,"error":null,"detail":{"tools":[{"name":"list_languages","description":"List every language supported by TTSForFree text-to-speech. Returns language codes to pass to list_voices."},{"name":"list_voices","description":"Search the AI voice catalog for one language. Each result has a `voice` token (v1:...) - pass it unchanged as `voice` to text_to_speech, multi_voice_to_speech o"},{"name":"get_voice_details","description":"Get full metadata for one voice token: persona, use case, accent, pitch, styles, preview audio and credit cost."},{"name":"list_my_custom_voices","description":"List the user's personal voices created with Voice Design (from a text prompt) or Voice Clone (from an audio sample), plus the remaining custom-voice quota. Use"},{"name":"list_favorite_voices","description":"List the voices the user marked as favorites, in their saved order. Check this first when the user did not name a voice."},{"name":"add_favorite_voice","description":"Save a voice to the user's favorites (only when the user asks)."},{"name":"remove_favorite_voice","description":"Remove a voice from the user's favorites (only when the user asks)."},{"name":"design_custom_voice","description":"Create a new personal AI voice from a natural-language description (Gemini Voice Design). Uses one slot of the user's custom-voice quota - confirm with the user"},{"name":"get_account_status","description":"Show the user's plan tier, remaining characters/credits, max characters per request, max blocks per multi-voice/SRT job and API rate limits. Call before large j"},{"name":"text_to_speech","description":"Convert one text into one MP3 with one voice. Use for narration, voiceover scripts, articles, lessons, announcements or any audio whose length can follow the sp"},{"name":"multi_voice_to_speech","description":"Render ordered segments, each with its own voice, into ONE merged MP3. Use for podcasts, dialogues, interviews, audio dramas or explainer videos with several sp"},{"name":"srt_to_speech","description":"Create ONE MP3 that follows a subtitle timeline: every cue starts at its timestamp and speech speed auto-fits the cue duration. Use for video voiceover, dubbing"},{"name":"get_job_status","description":"Check a speech job created earlier. Returns status (PENDING | SUCCESS | ERROR) and audio_url once SUCCESS. Never guess or fetch an audio URL before SUCCESS."},{"name":"list_recent_jobs","description":"List the user's most recent speech jobs with status and audio URLs, to reuse earlier audio instead of paying again."},{"name":"get_job_detail","description":"Get a multi_voice_to_speech or srt_to_speech job with every segment: text, voice and its own audio_url, plus the merged audio. Use it to build captions or a Rem"},{"name":"create_upload_url","description":"Get a one-time URL to upload a local video or audio file (mp4, mov, webm, mkv, mp3, wav, m4a...) up to 2 GB. Upload with HTTP PUT of the raw bytes, e.g. `curl -"},{"name":"transcribe_media","description":"Speech-to-text for an uploaded video or audio file: returns timestamped SRT (the timeline to rewrite, translate or re-voice with srt_to_speech). Credits are cha"},{"name":"get_transcription","description":"Check a transcribe_media job and get its SRT once finished."},{"name":"estimate_video_localization","description":"Estimate the credits to dub one video into one or more languages (speech-to-text + translation + voice + video merge) before running localize_video. Pass video_"},{"name":"localize_video","description":"Full automatic dubbing of an uploaded video: transcribe once, translate, voice every target language with its own voice and render a dubbed video per language. "},{"name":"get_localization_status","description":"Status of localize_video jobs: current step, and when Completed the dubbed audio_url, final_video_url and translated SRT for each language."}],"toolCount":21,"toolsHash":"7ceeaf0c40b9724cabb506f5ccd1af7196194a777e3dbafdcd7f0320a78d815d","serverName":"ttsforfree","capabilities":["tools","prompts"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-26T18:33:55.101Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":705,"error":null,"detail":{"tools":[{"name":"list_languages","description":"List every language supported by TTSForFree text-to-speech. Returns language codes to pass to list_voices."},{"name":"list_voices","description":"Search the AI voice catalog for one language. Each result has a `voice` token (v1:...) - pass it unchanged as `voice` to text_to_speech, multi_voice_to_speech o"},{"name":"get_voice_details","description":"Get full metadata for one voice token: persona, use case, accent, pitch, styles, preview audio and credit cost."},{"name":"list_my_custom_voices","description":"List the user's personal voices created with Voice Design (from a text prompt) or Voice Clone (from an audio sample), plus the remaining custom-voice quota. Use"},{"name":"list_favorite_voices","description":"List the voices the user marked as favorites, in their saved order. Check this first when the user did not name a voice."},{"name":"add_favorite_voice","description":"Save a voice to the user's favorites (only when the user asks)."},{"name":"remove_favorite_voice","description":"Remove a voice from the user's favorites (only when the user asks)."},{"name":"design_custom_voice","description":"Create a new personal AI voice from a natural-language description (Gemini Voice Design). Uses one slot of the user's custom-voice quota - confirm with the user"},{"name":"get_account_status","description":"Show the user's plan tier, remaining characters/credits, max characters per request, max blocks per multi-voice/SRT job and API rate limits. Call before large j"},{"name":"text_to_speech","description":"Convert one text into one MP3 with one voice. Use for narration, voiceover scripts, articles, lessons, announcements or any audio whose length can follow the sp"},{"name":"multi_voice_to_speech","description":"Render ordered segments, each with its own voice, into ONE merged MP3. Use for podcasts, dialogues, interviews, audio dramas or explainer videos with several sp"},{"name":"srt_to_speech","description":"Create ONE MP3 that follows a subtitle timeline: every cue starts at its timestamp and speech speed auto-fits the cue duration. Use for video voiceover, dubbing"},{"name":"get_job_status","description":"Check a speech job created earlier. Returns status (PENDING | SUCCESS | ERROR) and audio_url once SUCCESS. Never guess or fetch an audio URL before SUCCESS."},{"name":"list_recent_jobs","description":"List the user's most recent speech jobs with status and audio URLs, to reuse earlier audio instead of paying again."},{"name":"get_job_detail","description":"Get a multi_voice_to_speech or srt_to_speech job with every segment: text, voice and its own audio_url, plus the merged audio. Use it to build captions or a Rem"},{"name":"create_upload_url","description":"Get a one-time URL to upload a local video or audio file (mp4, mov, webm, mkv, mp3, wav, m4a...) up to 2 GB. Upload with HTTP PUT of the raw bytes, e.g. `curl -"},{"name":"transcribe_media","description":"Speech-to-text for an uploaded video or audio file: returns timestamped SRT (the timeline to rewrite, translate or re-voice with srt_to_speech). Credits are cha"},{"name":"get_transcription","description":"Check a transcribe_media job and get its SRT once finished."},{"name":"estimate_video_localization","description":"Estimate the credits to dub one video into one or more languages (speech-to-text + translation + voice + video merge) before running localize_video. Pass video_"},{"name":"localize_video","description":"Full automatic dubbing of an uploaded video: transcribe once, translate, voice every target language with its own voice and render a dubbed video per language. "},{"name":"get_localization_status","description":"Status of localize_video jobs: current step, and when Completed the dubbed audio_url, final_video_url and translated SRT for each language."}],"toolCount":21,"toolsHash":"7ceeaf0c40b9724cabb506f5ccd1af7196194a777e3dbafdcd7f0320a78d815d","serverName":"ttsforfree","capabilities":["tools","prompts"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-26T11:28:02.001Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":787,"error":null,"detail":{"tools":[{"name":"list_languages","description":"List every language supported by TTSForFree text-to-speech. Returns language codes to pass to list_voices."},{"name":"list_voices","description":"Search the AI voice catalog for one language. Each result has a `voice` token (v1:...) - pass it unchanged as `voice` to text_to_speech, multi_voice_to_speech o"},{"name":"get_voice_details","description":"Get full metadata for one voice token: persona, use case, accent, pitch, styles, preview audio and credit cost."},{"name":"list_my_custom_voices","description":"List the user's personal voices created with Voice Design (from a text prompt) or Voice Clone (from an audio sample), plus the remaining custom-voice quota. Use"},{"name":"list_favorite_voices","description":"List the voices the user marked as favorites, in their saved order. Check this first when the user did not name a voice."},{"name":"add_favorite_voice","description":"Save a voice to the user's favorites (only when the user asks)."},{"name":"remove_favorite_voice","description":"Remove a voice from the user's favorites (only when the user asks)."},{"name":"design_custom_voice","description":"Create a new personal AI voice from a natural-language description (Gemini Voice Design). Uses one slot of the user's custom-voice quota - confirm with the user"},{"name":"get_account_status","description":"Show the user's plan tier, remaining characters/credits, max characters per request, max blocks per multi-voice/SRT job and API rate limits. Call before large j"},{"name":"text_to_speech","description":"Convert one text into one MP3 with one voice. Use for narration, voiceover scripts, articles, lessons, announcements or any audio whose length can follow the sp"},{"name":"multi_voice_to_speech","description":"Render ordered segments, each with its own voice, into ONE merged MP3. Use for podcasts, dialogues, interviews, audio dramas or explainer videos with several sp"},{"name":"srt_to_speech","description":"Create ONE MP3 that follows a subtitle timeline: every cue starts at its timestamp and speech speed auto-fits the cue duration. Use for video voiceover, dubbing"},{"name":"get_job_status","description":"Check a speech job created earlier. Returns status (PENDING | SUCCESS | ERROR) and audio_url once SUCCESS. Never guess or fetch an audio URL before SUCCESS."},{"name":"list_recent_jobs","description":"List the user's most recent speech jobs with status and audio URLs, to reuse earlier audio instead of paying again."},{"name":"get_job_detail","description":"Get a multi_voice_to_speech or srt_to_speech job with every segment: text, voice and its own audio_url, plus the merged audio. Use it to build captions or a Rem"},{"name":"create_upload_url","description":"Get a one-time URL to upload a local video or audio file (mp4, mov, webm, mkv, mp3, wav, m4a...) up to 2 GB. Upload with HTTP PUT of the raw bytes, e.g. `curl -"},{"name":"transcribe_media","description":"Speech-to-text for an uploaded video or audio file: returns timestamped SRT (the timeline to rewrite, translate or re-voice with srt_to_speech). Credits are cha"},{"name":"get_transcription","description":"Check a transcribe_media job and get its SRT once finished."},{"name":"estimate_video_localization","description":"Estimate the credits to dub one video into one or more languages (speech-to-text + translation + voice + video merge) before running localize_video. Pass video_"},{"name":"localize_video","description":"Full automatic dubbing of an uploaded video: transcribe once, translate, voice every target language with its own voice and render a dubbed video per language. "},{"name":"get_localization_status","description":"Status of localize_video jobs: current step, and when Completed the dubbed audio_url, final_video_url and translated SRT for each language."}],"toolCount":21,"toolsHash":"7ceeaf0c40b9724cabb506f5ccd1af7196194a777e3dbafdcd7f0320a78d815d","serverName":"ttsforfree","capabilities":["tools","prompts"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-26T04:26:28.605Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":755,"error":null,"detail":{"tools":[{"name":"list_languages","description":"List every language supported by TTSForFree text-to-speech. Returns language codes to pass to list_voices."},{"name":"list_voices","description":"Search the AI voice catalog for one language. Each result has a `voice` token (v1:...) - pass it unchanged as `voice` to text_to_speech, multi_voice_to_speech o"},{"name":"get_voice_details","description":"Get full metadata for one voice token: persona, use case, accent, pitch, styles, preview audio and credit cost."},{"name":"list_my_custom_voices","description":"List the user's personal voices created with Voice Design (from a text prompt) or Voice Clone (from an audio sample), plus the remaining custom-voice quota. Use"},{"name":"list_favorite_voices","description":"List the voices the user marked as favorites, in their saved order. Check this first when the user did not name a voice."},{"name":"add_favorite_voice","description":"Save a voice to the user's favorites (only when the user asks)."},{"name":"remove_favorite_voice","description":"Remove a voice from the user's favorites (only when the user asks)."},{"name":"design_custom_voice","description":"Create a new personal AI voice from a natural-language description (Gemini Voice Design). Uses one slot of the user's custom-voice quota - confirm with the user"},{"name":"get_account_status","description":"Show the user's plan tier, remaining characters/credits, max characters per request, max blocks per multi-voice/SRT job and API rate limits. Call before large j"},{"name":"text_to_speech","description":"Convert one text into one MP3 with one voice. Use for narration, voiceover scripts, articles, lessons, announcements or any audio whose length can follow the sp"},{"name":"multi_voice_to_speech","description":"Render ordered segments, each with its own voice, into ONE merged MP3. Use for podcasts, dialogues, interviews, audio dramas or explainer videos with several sp"},{"name":"srt_to_speech","description":"Create ONE MP3 that follows a subtitle timeline: every cue starts at its timestamp and speech speed auto-fits the cue duration. Use for video voiceover, dubbing"},{"name":"get_job_status","description":"Check a speech job created earlier. Returns status (PENDING | SUCCESS | ERROR) and audio_url once SUCCESS. Never guess or fetch an audio URL before SUCCESS."},{"name":"list_recent_jobs","description":"List the user's most recent speech jobs with status and audio URLs, to reuse earlier audio instead of paying again."},{"name":"get_job_detail","description":"Get a multi_voice_to_speech or srt_to_speech job with every segment: text, voice and its own audio_url, plus the merged audio. Use it to build captions or a Rem"},{"name":"create_upload_url","description":"Get a one-time URL to upload a local video or audio file (mp4, mov, webm, mkv, mp3, wav, m4a...) up to 2 GB. Upload with HTTP PUT of the raw bytes, e.g. `curl -"},{"name":"transcribe_media","description":"Speech-to-text for an uploaded video or audio file: returns timestamped SRT (the timeline to rewrite, translate or re-voice with srt_to_speech). Credits are cha"},{"name":"get_transcription","description":"Check a transcribe_media job and get its SRT once finished."},{"name":"estimate_video_localization","description":"Estimate the credits to dub one video into one or more languages (speech-to-text + translation + voice + video merge) before running localize_video. Pass video_"},{"name":"localize_video","description":"Full automatic dubbing of an uploaded video: transcribe once, translate, voice every target language with its own voice and render a dubbed video per language. "},{"name":"get_localization_status","description":"Status of localize_video jobs: current step, and when Completed the dubbed audio_url, final_video_url and translated SRT for each language."}],"toolCount":21,"toolsHash":"7ceeaf0c40b9724cabb506f5ccd1af7196194a777e3dbafdcd7f0320a78d815d","serverName":"ttsforfree","capabilities":["tools","prompts"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-25T21:31:58.733Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":781,"error":null,"detail":{"tools":[{"name":"list_languages","description":"List every language supported by TTSForFree text-to-speech. Returns language codes to pass to list_voices."},{"name":"list_voices","description":"Search the AI voice catalog for one language. Each result has a `voice` token (v1:...) - pass it unchanged as `voice` to text_to_speech, multi_voice_to_speech o"},{"name":"get_voice_details","description":"Get full metadata for one voice token: persona, use case, accent, pitch, styles, preview audio and credit cost."},{"name":"list_my_custom_voices","description":"List the user's personal voices created with Voice Design (from a text prompt) or Voice Clone (from an audio sample), plus the remaining custom-voice quota. Use"},{"name":"list_favorite_voices","description":"List the voices the user marked as favorites, in their saved order. Check this first when the user did not name a voice."},{"name":"add_favorite_voice","description":"Save a voice to the user's favorites (only when the user asks)."},{"name":"remove_favorite_voice","description":"Remove a voice from the user's favorites (only when the user asks)."},{"name":"design_custom_voice","description":"Create a new personal AI voice from a natural-language description (Gemini Voice Design). Uses one slot of the user's custom-voice quota - confirm with the user"},{"name":"get_account_status","description":"Show the user's plan tier, remaining characters/credits, max characters per request, max blocks per multi-voice/SRT job and API rate limits. Call before large j"},{"name":"text_to_speech","description":"Convert one text into one MP3 with one voice. Use for narration, voiceover scripts, articles, lessons, announcements or any audio whose length can follow the sp"},{"name":"multi_voice_to_speech","description":"Render ordered segments, each with its own voice, into ONE merged MP3. Use for podcasts, dialogues, interviews, audio dramas or explainer videos with several sp"},{"name":"srt_to_speech","description":"Create ONE MP3 that follows a subtitle timeline: every cue starts at its timestamp and speech speed auto-fits the cue duration. Use for video voiceover, dubbing"},{"name":"get_job_status","description":"Check a speech job created earlier. Returns status (PENDING | SUCCESS | ERROR) and audio_url once SUCCESS. Never guess or fetch an audio URL before SUCCESS."},{"name":"list_recent_jobs","description":"List the user's most recent speech jobs with status and audio URLs, to reuse earlier audio instead of paying again."},{"name":"get_job_detail","description":"Get a multi_voice_to_speech or srt_to_speech job with every segment: text, voice and its own audio_url, plus the merged audio. Use it to build captions or a Rem"},{"name":"create_upload_url","description":"Get a one-time URL to upload a local video or audio file (mp4, mov, webm, mkv, mp3, wav, m4a...) up to 2 GB. Upload with HTTP PUT of the raw bytes, e.g. `curl -"},{"name":"transcribe_media","description":"Speech-to-text for an uploaded video or audio file: returns timestamped SRT (the timeline to rewrite, translate or re-voice with srt_to_speech). Credits are cha"},{"name":"get_transcription","description":"Check a transcribe_media job and get its SRT once finished."},{"name":"estimate_video_localization","description":"Estimate the credits to dub one video into one or more languages (speech-to-text + translation + voice + video merge) before running localize_video. Pass video_"},{"name":"localize_video","description":"Full automatic dubbing of an uploaded video: transcribe once, translate, voice every target language with its own voice and render a dubbed video per language. "},{"name":"get_localization_status","description":"Status of localize_video jobs: current step, and when Completed the dubbed audio_url, final_video_url and translated SRT for each language."}],"toolCount":21,"toolsHash":"7ceeaf0c40b9724cabb506f5ccd1af7196194a777e3dbafdcd7f0320a78d815d","serverName":"ttsforfree","capabilities":["tools","prompts"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"list_languages","description":"List every language supported by TTSForFree text-to-speech. Returns language codes to pass to list_voices."},{"name":"list_voices","description":"Search the AI voice catalog for one language. Each result has a `voice` token (v1:...) - pass it unchanged as `voice` to text_to_speech, multi_voice_to_speech o"},{"name":"get_voice_details","description":"Get full metadata for one voice token: persona, use case, accent, pitch, styles, preview audio and credit cost."},{"name":"list_my_custom_voices","description":"List the user's personal voices created with Voice Design (from a text prompt) or Voice Clone (from an audio sample), plus the remaining custom-voice quota. Use"},{"name":"list_favorite_voices","description":"List the voices the user marked as favorites, in their saved order. Check this first when the user did not name a voice."},{"name":"add_favorite_voice","description":"Save a voice to the user's favorites (only when the user asks)."},{"name":"remove_favorite_voice","description":"Remove a voice from the user's favorites (only when the user asks)."},{"name":"design_custom_voice","description":"Create a new personal AI voice from a natural-language description (Gemini Voice Design). Uses one slot of the user's custom-voice quota - confirm with the user"},{"name":"get_account_status","description":"Show the user's plan tier, remaining characters/credits, max characters per request, max blocks per multi-voice/SRT job and API rate limits. Call before large j"},{"name":"text_to_speech","description":"Convert one text into one MP3 with one voice. Use for narration, voiceover scripts, articles, lessons, announcements or any audio whose length can follow the sp"},{"name":"multi_voice_to_speech","description":"Render ordered segments, each with its own voice, into ONE merged MP3. Use for podcasts, dialogues, interviews, audio dramas or explainer videos with several sp"},{"name":"srt_to_speech","description":"Create ONE MP3 that follows a subtitle timeline: every cue starts at its timestamp and speech speed auto-fits the cue duration. Use for video voiceover, dubbing"},{"name":"get_job_status","description":"Check a speech job created earlier. Returns status (PENDING | SUCCESS | ERROR) and audio_url once SUCCESS. Never guess or fetch an audio URL before SUCCESS."},{"name":"list_recent_jobs","description":"List the user's most recent speech jobs with status and audio URLs, to reuse earlier audio instead of paying again."},{"name":"get_job_detail","description":"Get a multi_voice_to_speech or srt_to_speech job with every segment: text, voice and its own audio_url, plus the merged audio. Use it to build captions or a Rem"},{"name":"create_upload_url","description":"Get a one-time URL to upload a local video or audio file (mp4, mov, webm, mkv, mp3, wav, m4a...) up to 2 GB. Upload with HTTP PUT of the raw bytes, e.g. `curl -"},{"name":"transcribe_media","description":"Speech-to-text for an uploaded video or audio file: returns timestamped SRT (the timeline to rewrite, translate or re-voice with srt_to_speech). Credits are cha"},{"name":"get_transcription","description":"Check a transcribe_media job and get its SRT once finished."},{"name":"estimate_video_localization","description":"Estimate the credits to dub one video into one or more languages (speech-to-text + translation + voice + video merge) before running localize_video. Pass video_"},{"name":"localize_video","description":"Full automatic dubbing of an uploaded video: transcribe once, translate, voice every target language with its own voice and render a dubbed video per language. "},{"name":"get_localization_status","description":"Status of localize_video jobs: current step, and when Completed the dubbed audio_url, final_video_url and translated SRT for each language."}],"package":null,"toolSurface":{"id":"ts_2cqem523ykjr","endpointId":"ep_6us3x9dxje7q","hash":"7ceeaf0c40b9724cabb506f5ccd1af7196194a777e3dbafdcd7f0320a78d815d","toolCount":21,"serverName":"ttsforfree","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-25T21:31:58.742Z","lastSeenAt":"2026-10-27T16:24:55.394Z","observations":7,"toolNames":["list_languages","list_voices","get_voice_details","list_my_custom_voices","list_favorite_voices","add_favorite_voice","remove_favorite_voice","design_custom_voice","get_account_status","text_to_speech","multi_voice_to_speech","srt_to_speech","get_job_status","list_recent_jobs","get_job_detail","create_upload_url","transcribe_media","get_transcription","estimate_video_localization","localize_video","get_localization_status"],"distinctSurfaces":1},"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.CalmNguyen/ttsforfree","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.CalmNguyen%2Fttsforfree","firstSeenAt":"2026-10-25T20:21:39.331Z","fetchedAt":"2026-10-25T20:21:39.331Z","normalizedAt":"2026-10-25T20:21:39.331Z"}]},"firstSeenAt":"2026-10-25T20:21:39.331Z","updatedAt":"2026-10-27T16:31:45.354Z"}