List the voices this account can speak with
list_voicesThe WHOLE voice catalogue: every voice aicut can speak with, across ElevenLabs (platform stock AND this account's cloned and custom voices) and OpenAI. Free, instant. EVERY VOICE ID COMES FROM HERE: generate_audio's voice, generate_fake_text_video's voice_left / voice_right and generate_image_story's voice. Never invent one (it fails AFTER the job exists and is charged); list_models publishes none. IT IS PAGED: an answer is at most limit entries (default 20, max 100). READ total_matching AND has_more BEFORE you say anything to the user: if has_more is true you saw a slice, and 'there is no X voice' on that basis is wrong. Continue with cursor = next_cursor and the SAME provider / usable_for. NARROW WITH usable_for ('audio' for generate_audio, 'fake_text', 'image_story'): every voice it returns is one that tool accepts. Only 'audio' narrows ElevenLabs, and barely (generate_audio goes through a reseller and cannot speak voices CLONED inside this workspace; the two video doors reach the whole library), so send limit: 100 and check has_more. Read usable_for on each entry rather than inferring it from category. providers rides on every answer (per provider: voice_count, the doors it serves; a null count means that list is temporarily unreadable). EACH ENTRY: id (what you send), provider, name, description (ElevenLabs only), category (premade stock, generated cloned in this workspace, professional a Voice-Library voice: how you find the voice a user calls THEIRS; null for OpenAI), labels (gender, age, accent, use_case), preview_url and usable_for. Match the brief against labels and description, not the name. preview_url is an mp3 you cannot hear: propose 2-3 voices, each with its link (null for OpenAI), and let the user pick BEFORE any paid call; never generate one line in several voices to compare unless they ask and are told the total. Never dump the list or present a page as the catalogue.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 1-100, default 20 (a shortlist). The full library never fits in one result, whatever you pass. | |
| cursor | No | The previous `next_cursor`. Send the SAME `provider` / `usable_for` with it: different filters are a 400, not a restart. | |
| provider | No | Restrict to one provider: `elevenlabs` (the live library, and the only provider `generate_audio` can use) or `openai` (8 voices). Omit for both. | |
| usable_for | No | The door you are about to call: `audio`, `fake_text` or `image_story`. Every voice returned is one that tool accepts. `openai` with `audio` is a 400 naming the provider that does serve it. |