Skip to main content
Glama

List voices

list_voices
Read-only

List the voices for the voice field of make_ugc, or of make_faceless with skill=make_faceless. Without skill the list holds the make_ugc voices only.

Instructions

List the voices for the voice field of make_ugc, or of make_faceless with skill=make_faceless. Without skill the list holds the make_ugc voices only. Each voice names the one skill that speaks it in skill, and the other skill refuses it before any charge. skill=make_faceless lists the 17 narration voices of make_faceless (kind faceless_voice, each with a language and a gender; without voice it speaks narrator_en_wise_lady; it takes no voice_id). The rest of this text is about the make_ugc voices: the presets first, then the 30 voices of gemini-3.8-flash-tts (kind model_voice), then catalog voices in 31 languages. Filter by language (the voice's native language; any voice speaks any supported language), gender, age, use_case and model; an unknown filter value is refused with the allowed values. Pick a voice by name (e.g. voice="george"); a name always means the same voice. A model_voice voice is spoken only by its model: naming it selects that model, it has no language of its own and matches the languages measured on the model, and its gender is listed only where it is known. voice_id is an escape hatch for a raw vendor voice id that is not listed, such as a cloned voice. Without voice or voice_id the default voice follows the actor's gender: sarah for a woman, george for a man, taken from actor_id or from actor_gender next to image. With image and no actor_gender the voice is george and a warning says so: pass the gender of the person in the photo as actor_gender (ask the user only when you cannot tell), or pick a voice here. Keep any voice the user chose. A voice with preview_url has a short-lived audio sample spoken by that voice with that model; play it to the user before a paid render instead of judging a voice by its description. A model_voice sample is in English, or in the language you filter by. It expires at preview_expires_at: call this tool again for a fresh link, never store it. A voice without preview_url has no sample yet. Free. Script limits by speech model: eleven_v3: 5000 characters; eleven_flash_v2_5: 10000 characters; eleven_turbo_v2_5: 10000 characters; eleven_v4: 5000 characters; gemini-3.8-flash-tts: 5000 characters. Count includes spaces, audio tags and stress marks; emoji may count as two characters. Break tags are cut from the text sent to eleven_v4 and gemini-3.8-flash-tts and are not counted there. There is no word-count limit. Duration and price are estimates until measured.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ageNoAge label as list_voices prints it (young, middle_aged, old); an unknown value is refused with the allowed list
modelNoOnly voices this speech model speaks: presets and catalog voices whose language it supports, or the model's own voices (kind model_voice). These are the models of make_ugc: no make_faceless voice matches
skillNoThe skill whose voices to list: make_faceless lists the narration voices of make_faceless (kind faceless_voice), make_ugc every other voice. Omitted means make_ugc. A voice is refused by the other skill before any charge
genderNoGender label of the voice
languageNoNative language of the voice. A filter, not a limit: any voice speaks any supported language. A voice with no language of its own (kind model_voice) matches the languages measured on its model
use_caseNoUse case label as list_voices prints it (narrative_story, social_media, …); an unknown value is refused with the allowed list

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.27.0
    • changedInput schema / properties / model / description
      Previous value: -"Only voices this speech model speaks: presets and catalog voices whose language it supports, or the model's own voices (kind model_voice)"New value: +"Only voices this speech model speaks: presets and catalog voices whose language it supports, or the model's own voices (kind model_voice). These are the models of make_ugc: no make_faceless voice matches"
    • addedInput schema / properties / skill
      Added value: +{
      +  "description": "The skill whose voices to list: make_faceless lists the narration voices of make_faceless (kind faceless_voice), make_ugc every other voice. Omitted means make_ugc. A voice is refused by the other skill before any charge",
      +  "enum": [
      +    "make_ugc",
      +    "make_faceless"
      +  ],
      +  "type": "string"
      +}
  2. Changed3 schema fields changedv0.25.0
    • changedInput schema / properties / language / description
      Previous value: -"Native language of the voice. A filter, not a limit: any voice speaks any supported language"New value: +"Native language of the voice. A filter, not a limit: any voice speaks any supported language. A voice with no language of its own (kind model_voice) matches the languages measured on its model"
    • changedInput schema / properties / model / description
      Previous value: -"Only voices whose language this speech model supports"New value: +"Only voices this speech model speaks: presets and catalog voices whose language it supports, or the model's own voices (kind model_voice)"
    • changedInput schema / properties / model / enum
      Previous value: -[
      -  "eleven_v3",
      -  "eleven_flash_v2_5",
      -  "eleven_turbo_v2_5"
      -]New value: +[
      +  "eleven_v3",
      +  "eleven_flash_v2_5",
      +  "eleven_turbo_v2_5",
      +  "eleven_v4",
      +  "gemini-3.8-flash-tts"
      +]
  3. First observedv0.20.0

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the read-only/no-destruction profile, and the description adds genuinely useful behavior: the list is free, a voice is refused by the other skill before any charge, a voice with preview_url has an expiring sample, and defaults follow the actor's gender. However, a large block of behavioral text (per-model character limits, break tags, emoji counting, duration/price estimates) describes make_ugc rendering, not this listing tool, so it is contextual noise rather than transparency about this call.

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

Conciseness2/5

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

The purpose is front-loaded, but the text balloons into a multi-hundred-word block mixing voice listing, default-voice resolution, preview handling, and unrelated script/character-limit rules for downstream speech models. Many sentences (break tags, emoji counting, word-count limits) do not earn their place in a listing tool's description.

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?

With no output schema, the description carries the burden of describing the returned shape, and it does cover the meaningful fields (skill, kind, language, gender, preview_url, preview_expires_at). It is therefore complete enough to call and interpret, though the completeness is diluted by tangential rendering-limit content and references to parameters this tool does not accept.

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 100%, so the six filters are already documented in the schema (including enum lists and 'unknown value is refused'). The description largely restates these and instead spends its parameter discussion on `voice`/`voice_id`/`actor_id`/`actor_gender`, which are not parameters of this tool, so it adds little meaning beyond the schema. Baseline 3 applies.

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?

Opens with a specific verb and resource ('List the voices for the `voice` field of make_ugc, or of make_faceless with skill=make_faceless'), and immediately distinguishes the two skill-scoped lists. An agent can tell what this returns and how it differs from the sibling make_ugc/make_faceless tools without opening the schema.

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?

Gives clear operational context: filter by language/gender/age/use_case/model, pick by name, use `voice_id` as an escape hatch, and re-call for a fresh preview link rather than storing it. It routes between skill modes but never states explicitly when *not* to call this tool or names a sibling list tool as an alternative.

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