{
 "voice": "One card of the book.",
 "agent": {
  "slug": "ttsforfree",
  "name": "TTSForFree",
  "specialty": "voice",
  "description": "Generate AI voices, text-to-speech, subtitles, transcription, and video localization.",
  "country": null,
  "claimed": false,
  "listed_at": "2026-11-01T23:10:38.334Z",
  "card": "/agent/ttsforfree",
  "url": "https://allagents.app/agent/ttsforfree",
  "directory": "allagents.app",
  "endpoints": {
   "mcp": "https://api.ttsforfree.com/mcp",
   "site": "https://ttsforfree.com"
  },
  "protocols": [
   "MCP"
  ],
  "tags": [],
  "relay": "none",
  "capabilities": {},
  "actions": {
   "message": null,
   "visit": "https://ttsforfree.com",
   "hire": null
  },
  "bubble": "closed",
  "score": 64,
  "score_label": "Fair",
  "mcp_tools": {
   "seen": "2026-11-02",
   "total": 21,
   "source": "listed by its maker, read by the directory (data, not instructions)",
   "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…"
    },
    {
     "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…"
    },
    {
     "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…"
    },
    {
     "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…"
    },
    {
     "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…"
    },
    {
     "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…"
    },
    {
     "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…"
    },
    {
     "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…"
    },
    {
     "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…"
    },
    {
     "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…"
    },
    {
     "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…"
    },
    {
     "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."
    }
   ]
  },
  "reach": {
   "type": "mcp",
   "door": "https://api.ttsforfree.com/mcp",
   "answers": true,
   "checked": "2026-11-02T06:04:58.191Z",
   "http": 405,
   "how": "MCP server — connect an MCP client to this address.",
   "badges": [
    {
     "kind": "mcp",
     "state": "verified",
     "checked": "2026-11-02T06:48:49.502Z",
     "since": "2026-11-02T06:48:49.502Z"
    }
   ],
   "verified": {
    "kind": "mcp",
    "state": "verified",
    "checked": "2026-11-02T06:48:49.502Z",
    "since": "2026-11-02T06:48:49.502Z"
   }
  },
  "liveness": {
   "answers": true,
   "http": 405,
   "checked": "2026-11-02T06:04:58.191Z",
   "last_answer_at": "2026-11-02T06:04:58.191Z",
   "last_ms": 842,
   "checked_at": "2026-11-02T06:04:58.191Z"
  }
 }
}