Skip to main content
Glama
VapiAI

Vapi MCP Server

Official
by VapiAI

list_assistants

Retrieve all available Vapi assistants to manage and select voice AI agents for integration.

Instructions

Lists all Vapi assistants

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Registers the 'list_assistants' MCP tool on the server with empty input schema and handler that lists up to 10 Vapi assistants.
    server.tool(
      'list_assistants',
      'Lists all Vapi assistants',
      {},
      createToolHandler(async () => {
        //   console.log('list_assistants');
        const assistants = await vapiClient.assistants.list({ limit: 10 });
        //   console.log('assistants', assistants);
        return assistants.map(transformAssistantOutput);
      })
    );
  • Handler logic for list_assistants: calls vapiClient.assistants.list({ limit: 10 }) and maps each to transformAssistantOutput.
    createToolHandler(async () => {
      //   console.log('list_assistants');
      const assistants = await vapiClient.assistants.list({ limit: 10 });
      //   console.log('assistants', assistants);
      return assistants.map(transformAssistantOutput);
    })
  • createToolHandler wraps the tool's raw handler function to return standardized ToolResponse and handle errors.
    export function createToolHandler<T>(
      handler: (params: T) => Promise<any>
    ): (params: T) => Promise<ToolResponse> {
      return async (params: T) => {
        try {
          const result = await handler(params);
          return createSuccessResponse(result);
        } catch (error) {
          return createErrorResponse(error);
        }
      };
    }
  • transformAssistantOutput converts Vapi Assistant object to the standardized AssistantOutputSchema format used in the response.
    export function transformAssistantOutput(
      assistant: Vapi.Assistant
    ): z.infer<typeof AssistantOutputSchema> {
      return {
        id: assistant.id,
        createdAt: assistant.createdAt,
        updatedAt: assistant.updatedAt,
        name: assistant.name || 'Vapi Assistant',
        llm: {
          provider: assistant.model?.provider || 'openai',
          model: assistant.model?.model || 'gpt-4o-mini',
        },
        voice: {
          provider: assistant.voice?.provider || '11labs',
          voiceId: getAssistantVoiceId(assistant.voice),
          model: getAssistantVoiceModel(assistant.voice) || 'eleven_turbo_v2_5',
        },
        transcriber: {
          provider: assistant.transcriber?.provider || 'deepgram',
          model: getAssistantTranscriberModel(assistant.transcriber) || 'nova-3',
        },
        toolIds: assistant.model?.toolIds || [],
      };
    }
  • AssistantOutputSchema defines the output structure for each assistant returned by list_assistants.
    export const AssistantOutputSchema = BaseResponseSchema.extend({
      name: z.string(),
      llm: z.object({
        provider: z.string(),
        model: z.string(),
      }),
      voice: z.object({
        provider: z.string(),
        voiceId: z.string(),
        model: z.string().optional(),
      }),
      transcriber: z.object({
        provider: z.string(),
        model: z.string(),
      }),
      toolIds: z.array(z.string()).optional(),
    });

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/VapiAI/mcp-server'

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