list_phone_numbers
Retrieve all Vapi phone numbers linked to your account. Use this tool to view available numbers for call management and API integration.
Instructions
Lists all Vapi phone numbers
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/tools/phone-number.ts:12-19 (handler)The tool registration and handler for 'list_phone_numbers'. Calls vapiClient.phoneNumbers.list({ limit: 10 }) and transforms the results using transformPhoneNumberOutput.
server.tool( 'list_phone_numbers', 'Lists all Vapi phone numbers', {}, createToolHandler(async () => { const phoneNumbers = await vapiClient.phoneNumbers.list({ limit: 10 }); return phoneNumbers.map(transformPhoneNumberOutput); }) - src/tools/index.ts:9-14 (registration)Registration entry point - calls registerPhoneNumberTools() which registers the 'list_phone_numbers' tool on the MCP server.
export const registerAllTools = (server: McpServer, vapiClient: VapiClient) => { registerAssistantTools(server, vapiClient); registerCallTools(server, vapiClient); registerPhoneNumberTools(server, vapiClient); registerToolTools(server, vapiClient); }; - src/transformers/index.ts:233-244 (helper)The transformPhoneNumberOutput helper used by the handler to map phone number data to the PhoneNumberOutputSchema format.
export function transformPhoneNumberOutput( phoneNumber: any ): z.infer<typeof PhoneNumberOutputSchema> { return { id: phoneNumber.id, name: phoneNumber.name, createdAt: phoneNumber.createdAt, updatedAt: phoneNumber.updatedAt, phoneNumber: phoneNumber.number, status: phoneNumber.status, }; } - src/schemas/index.ts:313-323 (schema)PhoneNumberOutputSchema - defines the output shape of phone number data (id, name, createdAt, updatedAt, phoneNumber, status). The list_phone_numbers tool returns data in this shape.
export const PhoneNumberOutputSchema = BaseResponseSchema.extend({ name: z.string().optional(), phoneNumber: z.string(), status: z.string(), capabilities: z .object({ sms: z.boolean().optional(), voice: z.boolean().optional(), }) .optional(), }); - src/tools/utils.ts:44-72 (helper)The createToolHandler wrapper used by the handler to provide auth checking, error handling, and response formatting.
export function createToolHandler<T>( handler: (params: T) => Promise<any> ): (params: T) => Promise<ToolResponse> { return async (params: T) => { // Check auth first if (!hasValidToken()) { // Start auth if not already in progress if (!isAuthInProgress()) { try { await startAuthFlow(); } catch (error) { // Ignore - we'll show the auth URL below } } const url = getAuthUrl(); if (url) { return createAuthRequiredResponse(url); } return createErrorResponse('Authentication required. Please use vapi_login tool first.'); } try { const result = await handler(params); return createSuccessResponse(result); } catch (error) { return createErrorResponse(error); } }; }