Skip to main content
Glama

search_voice_library

Search and filter voices from the ElevenLabs voice library by name or characteristics to find the perfect voice for your text-to-speech projects.

Instructions

Search for a voice across the entire ElevenLabs voice library.

Args: page: Page number to return (0-indexed) page_size: Number of voices to return per page (1-100) search: Search term to filter voices by Returns: TextContent containing information about the shared voices

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNo
page_sizeNo
searchNo

Implementation Reference

  • The handler function implementing the 'search_voice_library' tool. It fetches shared voices from ElevenLabs using client.voices.get_shared(), processes voice details including languages, gender, age, etc., and returns formatted TextContent.
    def search_voice_library( page: int = 0, page_size: int = 10, search: str | None = None, ) -> TextContent: response = client.voices.get_shared( page=page, page_size=page_size, search=search, ) if not response.voices: return TextContent( type="text", text="No shared voices found with the specified criteria." ) voice_list = [] for voice in response.voices: language_info = "N/A" if hasattr(voice, "verified_languages") and voice.verified_languages: languages = [] for lang in voice.verified_languages: accent_info = ( f" ({lang.accent})" if hasattr(lang, "accent") and lang.accent else "" ) languages.append(f"{lang.language}{accent_info}") language_info = ", ".join(languages) details = [ f"Name: {voice.name}", f"ID: {voice.voice_id}", f"Category: {getattr(voice, 'category', 'N/A')}", ] # TODO: Make cleaner if hasattr(voice, "gender") and voice.gender: details.append(f"Gender: {voice.gender}") if hasattr(voice, "age") and voice.age: details.append(f"Age: {voice.age}") if hasattr(voice, "accent") and voice.accent: details.append(f"Accent: {voice.accent}") if hasattr(voice, "description") and voice.description: details.append(f"Description: {voice.description}") if hasattr(voice, "use_case") and voice.use_case: details.append(f"Use Case: {voice.use_case}") details.append(f"Languages: {language_info}") if hasattr(voice, "preview_url") and voice.preview_url: details.append(f"Preview URL: {voice.preview_url}") voice_info = "\n".join(details) voice_list.append(voice_info) formatted_info = "\n\n".join(voice_list) return TextContent(type="text", text=f"Shared Voices:\n\n{formatted_info}")
  • The @mcp.tool decorator registers the 'search_voice_library' tool with MCP, including the description that serves as input/output schema.
    @mcp.tool( description="""Search for a voice across the entire ElevenLabs voice library. Args: page: Page number to return (0-indexed) page_size: Number of voices to return per page (1-100) search: Search term to filter voices by Returns: TextContent containing information about the shared voices """ )
  • The tool description defines the input parameters (page, page_size, search) and return type (TextContent), serving as the schema.
    description="""Search for a voice across the entire ElevenLabs voice library. Args: page: Page number to return (0-indexed) page_size: Number of voices to return per page (1-100) search: Search term to filter voices by Returns: TextContent containing information about the shared voices """ )

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/projectservan8n/elevenlabs-mcp'

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