Skip to main content
Glama

retell_create_phone_number

Register a phone number for Retell AI agents to handle inbound and outbound calls, specifying area code and optional agent assignments.

Instructions

Register/purchase a new phone number for use with Retell AI agents.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
area_codeYesThe area code for the phone number (e.g., '415' for San Francisco)
inbound_agent_idNoOptional: Agent ID to handle inbound calls to this number
outbound_agent_idNoOptional: Agent ID to use for outbound calls from this number
nicknameNoOptional: A friendly name for the phone number

Implementation Reference

  • The handler logic for the 'retell_create_phone_number' tool, which makes a POST request to the Retell API endpoint '/create-phone-number' using the generic retellRequest helper function.
    case "retell_create_phone_number":
      return retellRequest("/create-phone-number", "POST", args);
  • The tool schema definition, including input validation schema, description, and registration in the tools list used by the MCP server.
    {
      name: "retell_create_phone_number",
      description: "Register/purchase a new phone number for use with Retell AI agents.",
      inputSchema: {
        type: "object",
        properties: {
          area_code: {
            type: "string",
            description: "The area code for the phone number (e.g., '415' for San Francisco)"
          },
          inbound_agent_id: {
            type: "string",
            description: "Optional: Agent ID to handle inbound calls to this number"
          },
          outbound_agent_id: {
            type: "string",
            description: "Optional: Agent ID to use for outbound calls from this number"
          },
          nickname: {
            type: "string",
            description: "Optional: A friendly name for the phone number"
          }
        },
        required: ["area_code"]
      }
    },
  • src/index.ts:1283-1285 (registration)
    The registration of the tool list handler that exposes all tools, including 'retell_create_phone_number', to the MCP protocol.
    server.setRequestHandler(ListToolsRequestSchema, async () => {
      return { tools };
    });
  • The executeTool dispatcher function that handles tool execution based on name, containing the specific case for this tool.
    async function executeTool(name: string, args: Record<string, unknown>): Promise<unknown> {
      switch (name) {
        // Call Management
        case "retell_create_phone_call":
          return retellRequest("/v2/create-phone-call", "POST", args);
        case "retell_create_web_call":
          return retellRequest("/v2/create-web-call", "POST", args);
        case "retell_get_call":
          return retellRequest(`/v2/get-call/${args.call_id}`, "GET");
        case "retell_list_calls":
          return retellRequest("/v2/list-calls", "POST", args);
        case "retell_update_call": {
          const { call_id, ...updateData } = args;
          return retellRequest(`/v2/update-call/${call_id}`, "PATCH", updateData as Record<string, unknown>);
        }
        case "retell_delete_call":
          return retellRequest(`/v2/delete-call/${args.call_id}`, "DELETE");
    
        // Chat Management
        case "retell_create_chat":
          return retellRequest("/create-chat", "POST", args);
        case "retell_create_sms_chat":
          return retellRequest("/create-sms-chat", "POST", args);
        case "retell_get_chat":
          return retellRequest(`/get-chat/${args.chat_id}`, "GET");
        case "retell_create_chat_completion":
          return retellRequest("/create-chat-completion", "POST", args);
        case "retell_list_chats":
          return retellRequest("/list-chat", "GET");
        case "retell_end_chat":
          return retellRequest("/end-chat", "PATCH", args);
    
        // Phone Number Management
        case "retell_create_phone_number":
          return retellRequest("/create-phone-number", "POST", args);
        case "retell_get_phone_number":
          return retellRequest(`/get-phone-number/${encodeURIComponent(args.phone_number as string)}`, "GET");
        case "retell_list_phone_numbers":
          return retellRequest("/list-phone-numbers", "GET");
        case "retell_update_phone_number": {
          const { phone_number, ...phoneUpdateData } = args;
          return retellRequest(`/update-phone-number/${encodeURIComponent(phone_number as string)}`, "PATCH", phoneUpdateData as Record<string, unknown>);
        }
        case "retell_delete_phone_number":
          return retellRequest(`/delete-phone-number/${encodeURIComponent(args.phone_number as string)}`, "DELETE");
        case "retell_import_phone_number":
          return retellRequest("/import-phone-number", "POST", args);
    
        // Voice Agent Management
        case "retell_create_agent":
          return retellRequest("/create-agent", "POST", args);
        case "retell_get_agent":
          return retellRequest(`/get-agent/${args.agent_id}`, "GET");
        case "retell_list_agents":
          return retellRequest("/list-agents", "GET");
        case "retell_update_agent": {
          const { agent_id, ...agentUpdateData } = args;
          return retellRequest(`/update-agent/${agent_id}`, "PATCH", agentUpdateData as Record<string, unknown>);
        }
        case "retell_delete_agent":
          return retellRequest(`/delete-agent/${args.agent_id}`, "DELETE");
        case "retell_publish_agent":
          return retellRequest(`/publish-agent/${args.agent_id}`, "POST");
        case "retell_get_agent_versions":
          return retellRequest(`/get-agent-versions/${args.agent_id}`, "GET");
    
        // Chat Agent Management
        case "retell_create_chat_agent":
          return retellRequest("/create-chat-agent", "POST", args);
        case "retell_get_chat_agent":
          return retellRequest(`/get-chat-agent/${args.agent_id}`, "GET");
        case "retell_list_chat_agents":
          return retellRequest("/list-chat-agents", "GET");
        case "retell_update_chat_agent": {
          const { agent_id: chatAgentId, ...chatAgentUpdateData } = args;
          return retellRequest(`/update-chat-agent/${chatAgentId}`, "PATCH", chatAgentUpdateData as Record<string, unknown>);
        }
        case "retell_delete_chat_agent":
          return retellRequest(`/delete-chat-agent/${args.agent_id}`, "DELETE");
    
        // Retell LLM Management
        case "retell_create_llm":
          return retellRequest("/create-retell-llm", "POST", args);
        case "retell_get_llm":
          return retellRequest(`/get-retell-llm/${args.llm_id}`, "GET");
        case "retell_list_llms":
          return retellRequest("/list-retell-llms", "GET");
        case "retell_update_llm": {
          const { llm_id, ...llmUpdateData } = args;
          return retellRequest(`/update-retell-llm/${llm_id}`, "PATCH", llmUpdateData as Record<string, unknown>);
        }
        case "retell_delete_llm":
          return retellRequest(`/delete-retell-llm/${args.llm_id}`, "DELETE");
    
        // Conversation Flow Management
        case "retell_create_conversation_flow":
          return retellRequest("/create-conversation-flow", "POST", args);
        case "retell_get_conversation_flow":
          return retellRequest(`/get-conversation-flow/${args.conversation_flow_id}`, "GET");
        case "retell_list_conversation_flows":
          return retellRequest("/list-conversation-flows", "GET");
        case "retell_update_conversation_flow": {
          const { conversation_flow_id, ...flowUpdateData } = args;
          return retellRequest(`/update-conversation-flow/${conversation_flow_id}`, "PATCH", flowUpdateData as Record<string, unknown>);
        }
        case "retell_delete_conversation_flow":
          return retellRequest(`/delete-conversation-flow/${args.conversation_flow_id}`, "DELETE");
    
        // Knowledge Base Management
        case "retell_create_knowledge_base":
          return retellRequest("/create-knowledge-base", "POST", args);
        case "retell_get_knowledge_base":
          return retellRequest(`/get-knowledge-base/${args.knowledge_base_id}`, "GET");
        case "retell_list_knowledge_bases":
          return retellRequest("/list-knowledge-bases", "GET");
        case "retell_delete_knowledge_base":
          return retellRequest(`/delete-knowledge-base/${args.knowledge_base_id}`, "DELETE");
        case "retell_add_knowledge_base_sources": {
          const { knowledge_base_id, sources } = args;
          return retellRequest(`/add-knowledge-base-sources/${knowledge_base_id}`, "POST", { sources });
        }
        case "retell_delete_knowledge_base_source": {
          const { knowledge_base_id: kbId, source_id } = args;
          return retellRequest(`/delete-knowledge-base-source/${kbId}/${source_id}`, "DELETE");
        }
    
        // Voice Management
        case "retell_get_voice":
          return retellRequest(`/get-voice/${args.voice_id}`, "GET");
        case "retell_list_voices":
          return retellRequest("/list-voices", "GET");
    
        // Batch Operations
        case "retell_create_batch_call":
          return retellRequest("/create-batch-call", "POST", args);
        case "retell_create_batch_test":
          return retellRequest("/create-batch-test", "POST", args);
    
        // Account & Telephony
        case "retell_get_concurrency":
          return retellRequest("/get-concurrency", "GET");
        case "retell_register_phone_call":
          return retellRequest("/register-phone-call", "POST", args);
    
        default:
          throw new Error(`Unknown tool: ${name}`);
      }

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/itsanamune/retellsimp'

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