Skip to main content
Glama

create_agent

Configure and deploy a conversational AI agent with custom voice, language, and behavior settings for interactive voice applications using ElevenLabs technology.

Instructions

Create a conversational AI agent with custom configuration.

⚠️ COST WARNING: This tool makes an API call to ElevenLabs which may incur costs. Only use when explicitly requested by the user.

Args:
    name: Name of the agent
    first_message: First message the agent will say i.e. "Hi, how can I help you today?"
    system_prompt: System prompt for the agent
    voice_id: ID of the voice to use for the agent
    language: ISO 639-1 language code for the agent
    llm: LLM to use for the agent
    temperature: Temperature for the agent. The lower the temperature, the more deterministic the agent's responses will be. Range is 0 to 1.
    max_tokens: Maximum number of tokens to generate.
    asr_quality: Quality of the ASR. `high` or `low`.
    model_id: ID of the ElevenLabs model to use for the agent.
    optimize_streaming_latency: Optimize streaming latency. Range is 0 to 4.
    stability: Stability for the agent. Range is 0 to 1.
    similarity_boost: Similarity boost for the agent. Range is 0 to 1.
    turn_timeout: Timeout for the agent to respond in seconds. Defaults to 7 seconds.
    max_duration_seconds: Maximum duration of a conversation in seconds. Defaults to 600 seconds (10 minutes).
    record_voice: Whether to record the agent's voice.
    retention_days: Number of days to retain the agent's data.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
asr_qualityNohigh
first_messageYes
languageNoen
llmNogemini-2.0-flash-001
max_duration_secondsNo
max_tokensNo
model_idNoeleven_turbo_v2
nameYes
optimize_streaming_latencyNo
record_voiceNo
retention_daysNo
similarity_boostNo
stabilityNo
system_promptYes
temperatureNo
turn_timeoutNo
voice_idNocgSgspJ2msm6clMCkdW9

Implementation Reference

  • Registers the create_agent tool with the MCP framework using the @mcp.tool decorator, defining its description and parameters.
    @mcp.tool(
        description="""Create a conversational AI agent with custom configuration.
    
        ⚠️ COST WARNING: This tool makes an API call to ElevenLabs which may incur costs. Only use when explicitly requested by the user.
    
        Args:
            name: Name of the agent
            first_message: First message the agent will say i.e. "Hi, how can I help you today?"
            system_prompt: System prompt for the agent
            voice_id: ID of the voice to use for the agent
            language: ISO 639-1 language code for the agent
            llm: LLM to use for the agent
            temperature: Temperature for the agent. The lower the temperature, the more deterministic the agent's responses will be. Range is 0 to 1.
            max_tokens: Maximum number of tokens to generate.
            asr_quality: Quality of the ASR. `high` or `low`.
            model_id: ID of the ElevenLabs model to use for the agent.
            optimize_streaming_latency: Optimize streaming latency. Range is 0 to 4.
            stability: Stability for the agent. Range is 0 to 1.
            similarity_boost: Similarity boost for the agent. Range is 0 to 1.
            turn_timeout: Timeout for the agent to respond in seconds. Defaults to 7 seconds.
            max_duration_seconds: Maximum duration of a conversation in seconds. Defaults to 600 seconds (10 minutes).
            record_voice: Whether to record the agent's voice.
            retention_days: Number of days to retain the agent's data.
        """
    )
  • The handler function that executes the create_agent tool logic: builds configs using helpers and calls the ElevenLabs API to create the agent.
    def create_agent(
        name: str,
        first_message: str,
        system_prompt: str,
        voice_id: str | None = DEFAULT_VOICE_ID,
        language: str = "en",
        llm: str = "gemini-2.0-flash-001",
        temperature: float = 0.5,
        max_tokens: int | None = None,
        asr_quality: str = "high",
        model_id: str = "eleven_turbo_v2",
        optimize_streaming_latency: int = 3,
        stability: float = 0.5,
        similarity_boost: float = 0.8,
        turn_timeout: int = 7,
        max_duration_seconds: int = 300,
        record_voice: bool = True,
        retention_days: int = 730,
    ) -> TextContent:
        conversation_config = create_conversation_config(
            language=language,
            system_prompt=system_prompt,
            llm=llm,
            first_message=first_message,
            temperature=temperature,
            max_tokens=max_tokens,
            asr_quality=asr_quality,
            voice_id=voice_id,
            model_id=model_id,
            optimize_streaming_latency=optimize_streaming_latency,
            stability=stability,
            similarity_boost=similarity_boost,
            turn_timeout=turn_timeout,
            max_duration_seconds=max_duration_seconds,
        )
    
        platform_settings = create_platform_settings(
            record_voice=record_voice,
            retention_days=retention_days,
        )
    
        response = client.conversational_ai.agents.create(
            name=name,
            conversation_config=conversation_config,
            platform_settings=platform_settings,
        )
    
        return TextContent(
            type="text",
            text=f"""Agent created successfully: Name: {name}, Agent ID: {response.agent_id}, System Prompt: {system_prompt}, Voice ID: {voice_id or "Default"}, Language: {language}, LLM: {llm}, You can use this agent ID for future interactions with the agent.""",
        )
  • Helper function to create the conversation configuration dictionary required for agent creation.
    def create_conversation_config(
        language: str,
        system_prompt: str,
        llm: str,
        first_message: str | None,
        temperature: float,
        max_tokens: int | None,
        asr_quality: str,
        voice_id: str | None,
        model_id: str,
        optimize_streaming_latency: int,
        stability: float,
        similarity_boost: float,
        turn_timeout: int,
        max_duration_seconds: int,
    ) -> dict:
        return {
            "agent": {
                "language": language,
                "prompt": {
                    "prompt": system_prompt,
                    "llm": llm,
                    "tools": [{"type": "system", "name": "end_call", "description": ""}],
                    "knowledge_base": [],
                    "temperature": temperature,
                    **({"max_tokens": max_tokens} if max_tokens else {}),
                },
                **({"first_message": first_message} if first_message else {}),
                "dynamic_variables": {"dynamic_variable_placeholders": {}},
            },
            "asr": {
                "quality": asr_quality,
                "provider": "elevenlabs",
                "user_input_audio_format": "pcm_16000",
                "keywords": [],
            },
            "tts": {
                **({"voice_id": voice_id} if voice_id else {}),
                "model_id": model_id,
                "agent_output_audio_format": "pcm_16000",
                "optimize_streaming_latency": optimize_streaming_latency,
                "stability": stability,
                "similarity_boost": similarity_boost,
            },
            "turn": {"turn_timeout": turn_timeout},
            "conversation": {
                "max_duration_seconds": max_duration_seconds,
                "client_events": [
                    "audio",
                    "interruption",
                    "user_transcript",
                    "agent_response",
                    "agent_response_correction",
                ],
            },
            "language_presets": {},
            "is_blocked_ivc": False,
            "is_blocked_non_ivc": False,
        }
  • Helper function to create the platform settings dictionary required for agent creation.
    def create_platform_settings(
        record_voice: bool,
        retention_days: int,
    ) -> dict:
        return {
            "widget": {
                "variant": "full",
                "avatar": {"type": "orb", "color_1": "#6DB035", "color_2": "#F5CABB"},
                "feedback_mode": "during",
                "terms_text": '#### Terms and conditions\n\nBy clicking "Agree," and each time I interact with this AI agent, I consent to the recording, storage, and sharing of my communications with third-party service providers, and as described in the Privacy Policy.\nIf you do not wish to have your conversations recorded, please refrain from using this service.',
                "show_avatar_when_collapsed": True,
            },
            "evaluation": {},
            "auth": {"allowlist": []},
            "overrides": {},
            "call_limits": {"agent_concurrency_limit": -1, "daily_limit": 100000},
            "privacy": {
                "record_voice": record_voice,
                "retention_days": retention_days,
                "delete_transcript_and_pii": True,
                "delete_audio": True,
                "apply_to_existing_conversations": False,
            },
            "data_collection": {},
        }

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