# Vapi — how to use (mcp.ai)

Connect your Vapi account and use 38 tools for artificial intelligence straight from your AI agent. Connect with your own API key. Vapi is a voice AI platform that enables developers to build, test, and deploy voice agents with natural conversations, real-time responses, and seamless integration capabilities.

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_vapi?ms=1787293680000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `vapi_assistant_controller_update`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/vapi`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/vapi/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/vapi/assistant/controller/update` — Tool to update an existing Vapi assistant configuration. Use when you need to modify assistant properties such as name, voice settings, transcriber configuration, model settings, messages, or other be
  - body: { id: string, name?: string, model?: object, voice?: object, metadata?: object, server_url?: string, messagePlan?: object, monitorPlan?: object, transcriber?: object, analysisPlan?: object, artifactPlan?: object, first_message?: string, hipaa_enabled?: boolean, credential_ids?: string[], client_messages?: string[], maxDurationPlan?: object, server_messages?: string[], background_sound?: string, end_call_message?: string, end_call_phrases?: string[], stopSpeakingPlan?: object, server_url_secret?: string, startSpeakingPlan?: object, voicemail_message?: string, first_message_mode?: string, backchannel_enabled?: boolean, max_duration_seconds?: integer, response_delay_seconds?: number, silence_timeout_seconds?: integer, transport_configurations?: object[], llm_request_delay_seconds?: number, background_denoising_enabled?: boolean, model_output_in_messages_enabled?: boolean, num_words_to_interrupt_assistant?: integer }
- `POST https://api.mcp.ai/api/vapi/call/controller/find/all` — Tool to list calls from Vapi. Use when you need to retrieve multiple calls with optional filtering by id, assistantId, phoneNumberId, or date ranges. Returns an array of call objects with details incl
  - body: { id?: string, limit?: integer, assistantId?: string, createdAtGe?: string, createdAtGt?: string, createdAtLe?: string, createdAtLt?: string, updatedAtGe?: string, updatedAtGt?: string, updatedAtLe?: string, updatedAtLt?: string, phoneNumberId?: string }
- `POST https://api.mcp.ai/api/vapi/chat/controller/delete/chat` — Tool to delete a chat by its ID from Vapi. Use when you need to permanently remove a chat conversation.
  - body: { id: string }
- `POST https://api.mcp.ai/api/vapi/chat/controller/get/chat` — Tool to fetch chat details by ID. Use when you have a chat ID and need full chat information including messages, costs, and configuration.
  - body: { id: string }
- `POST https://api.mcp.ai/api/vapi/create/analytics/query` — Tool to create and execute analytics queries on VAPI data. Use when you need to analyze call or subscription metrics with aggregations like count, sum, average, min, or max. Supports grouping by vario
  - body: { queries: object[] }
- `POST https://api.mcp.ai/api/vapi/create/assistant` — Tool to create a new Vapi assistant with specified transcriber, voice, and AI model configurations. Use when setting up a conversational AI assistant for voice interactions. The assistant requires tra
  - body: { name?: string, model: object, voice: object, transcriber: object, firstMessage?: string, systemPrompt?: string, clientMessages?: string[], serverMessages?: string[], maxDurationSeconds?: integer, voicemailDetection?: object }
- `POST https://api.mcp.ai/api/vapi/create/eval` — Tool to create an eval for testing conversation flows. Use when you need to validate that an AI assistant responds correctly to specific conversation scenarios.
  - body: { name?: string, type: string, messages: object[], description?: string }
- `POST https://api.mcp.ai/api/vapi/create/open/ai/chat` — Tool to create an OpenAI-compatible chat using the Vapi API. Use when you need to send a chat message to an assistant or squad and receive a response. Supports both streaming and non-streaming modes.
  - body: { name?: string, input: string|object[], squad?: object, stream?: boolean, squadId?: string, assistant?: object, sessionId?: string, transport?: object, assistantId?: string, previousChatId?: string, assistantOverrides?: object }
- `POST https://api.mcp.ai/api/vapi/create/policy` — Tool to create a monitoring policy in VAPI. Use when you need to set up automated monitoring rules based on thresholds and time windows. Policies can trigger alerts based on event counts or percentage
  - body: { name: string, interval?: object, schedule?: object, severity: string, threshold: object, monitorIds?: string[], lookbackWindowMinutes: integer }
- `POST https://api.mcp.ai/api/vapi/create/provider/resource` — Tool to create an 11Labs pronunciation dictionary resource. Use when you need to define custom pronunciations for specific terms or acronyms in voice synthesis.
  - body: { name: string, rules: object[] }
- `POST https://api.mcp.ai/api/vapi/create/scorecard` — Tool to create a scorecard for observability and evaluation. Use when setting up metrics to evaluate assistant performance based on structured outputs. Scorecards contain metrics with conditions that 
  - body: { name?: string, metrics: object[], description?: string, assistantIds?: string[] }
- `POST https://api.mcp.ai/api/vapi/delete/call` — Tool to delete a call by its unique identifier. Use when you need to remove call data from the system. Returns the deleted call object with all its associated data.
  - body: { id: string }
- `POST https://api.mcp.ai/api/vapi/delete/eval` — Tool to delete an eval by ID. Use when you need to permanently remove an eval from the system.
  - body: { id: string }
- `POST https://api.mcp.ai/api/vapi/delete/phone/number` — Tool to delete a phone number from Vapi. Use when you need to remove a phone number from your Vapi organization. Returns the deleted phone number object.
  - body: { id: string }
- `POST https://api.mcp.ai/api/vapi/eval/controller/get` — Tool to retrieve an eval by its ID. Use when you need to fetch details about a specific eval including its mock conversation messages and metadata.
  - body: { id: string }
- `POST https://api.mcp.ai/api/vapi/eval/controller/remove/run` — Tool to delete an eval run by its ID from Vapi. Use when you need to permanently remove an evaluation run.
  - body: { id: string }
- `POST https://api.mcp.ai/api/vapi/eval/controller/update` — Tool to update an existing eval in Vapi. Use when you need to modify eval properties like name, description, type, or mock conversation messages.
  - body: { id: string, name?: string, type?: string, messages?: object[], description?: string }
- `POST https://api.mcp.ai/api/vapi/get/assistant` — Tool to retrieve a specific assistant by ID from Vapi. Use when you need to fetch details about an existing assistant.
  - body: { id: string }
- `POST https://api.mcp.ai/api/vapi/get/call` — Tool to fetch call details by ID. Use when you have a call ID and need full call information including status, duration, costs, messages, and recordings.
  - body: { id: string }
- `POST https://api.mcp.ai/api/vapi/get/file` — Tool to retrieve a file by its ID from Vapi. Use when you need to get details about a specific file including its status, metadata, storage location, and timestamps.
  - body: { id: string }
- `POST https://api.mcp.ai/api/vapi/get/monitoring` — Tool to retrieve monitoring policies from Vapi. Use when you need to list, filter, or search for monitoring policies configured in the organization. Supports filtering by policy ID, severity level, mo
  - body: { id?: string, page?: integer, limit?: integer, severity?: string, monitor_id?: string, sort_order?: string, created_at_ge?: string, created_at_gt?: string, created_at_le?: string, created_at_lt?: string, updated_at_ge?: string, updated_at_gt?: string, updated_at_le?: string, updated_at_lt?: string }
- `POST https://api.mcp.ai/api/vapi/get/structured/outputs` — Tool to list structured outputs with optional filtering. Use when you need to retrieve structured output configurations with pagination support. Supports filtering by ID, name, timestamps, and include
  - body: { id?: string, name?: string, page?: integer, limit?: integer, sortOrder?: string, createdAtGe?: string, createdAtGt?: string, createdAtLe?: string, createdAtLt?: string, updatedAtGe?: string, updatedAtGt?: string, updatedAtLe?: string, updatedAtLt?: string }
- `POST https://api.mcp.ai/api/vapi/insight/controller/find/all` — Tool to retrieve insights from VAPI. Use when you need to list insights with optional filtering by ID, creation date, or update date. Supports pagination and sorting.
  - body: { id?: string, page?: integer, limit?: integer, sortOrder?: string, createdAtGe?: string, createdAtGt?: string, createdAtLe?: string, createdAtLt?: string, updatedAtGe?: string, updatedAtGt?: string, updatedAtLe?: string, updatedAtLt?: string }
- `POST https://api.mcp.ai/api/vapi/list/assistants` — Tool to list all assistants in your VAPI organization. Use when you need to retrieve information about configured assistants. Supports filtering by creation and update timestamps.
  - body: { limit?: integer, createdAtGe?: string, createdAtGt?: string, createdAtLe?: string, createdAtLt?: string, updatedAtGe?: string, updatedAtGt?: string, updatedAtLe?: string, updatedAtLt?: string }
- `POST https://api.mcp.ai/api/vapi/list/chats` — Tool to retrieve a list of chat conversations from VAPI. Use when you need to view existing chats, optionally filtered by assistant, squad, session, or time range. Supports pagination and sorting for 
  - body: { id?: string, page?: integer, limit?: integer, squad_id?: string, session_id?: string, sort_order?: string, assistant_id?: string, created_at_ge?: string, created_at_gt?: string, created_at_le?: string, created_at_lt?: string, updated_at_ge?: string, updated_at_gt?: string, updated_at_le?: string, updated_at_lt?: string, assistant_id_any?: string, previous_chat_id?: string }
- `POST https://api.mcp.ai/api/vapi/list/evals` — Tool to retrieve a paginated list of evals from Vapi. Use when you need to list or search evals with optional filtering by creation/update timestamps.
  - body: { id?: string, page?: integer, limit?: integer, sort_order?: string, created_at_ge?: string, created_at_gt?: string, created_at_le?: string, created_at_lt?: string, updated_at_ge?: string, updated_at_gt?: string, updated_at_le?: string, updated_at_lt?: string }
- `POST https://api.mcp.ai/api/vapi/list/phone/numbers` — Tool to list phone numbers in the Vapi organization. Use when you need to enumerate available phone numbers for routing or selection workflows. Supports filtering by creation and update timestamps.
  - body: { limit?: integer, createdAtGe?: string, createdAtGt?: string, createdAtLe?: string, createdAtLt?: string, updatedAtGe?: string, updatedAtGt?: string, updatedAtLe?: string, updatedAtLt?: string }
- `POST https://api.mcp.ai/api/vapi/list/provider/resources` — Tool to retrieve provider resources from Vapi (e.g., 11labs pronunciation dictionaries). Use when you need to list or search provider-specific resources with optional filtering by timestamps.
  - body: { id?: string, page?: integer, limit?: integer, provider: string, sort_order?: string, resource_id?: string, created_at_ge?: string, created_at_gt?: string, created_at_le?: string, created_at_lt?: string, resource_name: string, updated_at_ge?: string, updated_at_gt?: string, updated_at_le?: string, updated_at_lt?: string }
- `POST https://api.mcp.ai/api/vapi/patch/insight/insight` — Tool to update an existing insight configuration in VAPI. Use when you need to modify insight properties like name, queries, time range, or visualization settings. Supports all four insight types (bar
  - body: { id: string, name?: string, type: string, formula?: object, groupBy?: string, queries: object[], formulas?: object[], metadata?: object, timeRange?: object }
- `POST https://api.mcp.ai/api/vapi/phone/number/controller/create` — Tool to create a phone number with VAPI. Use when you need to provision a new phone number for voice AI applications. Supports multiple providers (VAPI, Twilio, Vonage, Telnyx, BYO). Required paramete
  - body: { name?: string, number?: string, sip_uri?: string, provider: string, squad_id?: string, sms_enabled?: boolean, workflow_id?: string, assistant_id?: string, credential_id?: string, twilio_api_key?: string, twilio_api_secret?: string, twilio_auth_token?: string, twilio_account_sid?: string, number_desired_area_code?: string, number_e164_check_enabled?: boolean }
- `POST https://api.mcp.ai/api/vapi/scorecard/controller/get/paginated` — Tool to retrieve a paginated list of scorecards from Vapi. Use when you need to list or search scorecards with optional filtering by creation/update timestamps.
  - body: { id?: string, page?: integer, limit?: integer, sortOrder?: string, createdAtGe?: string, createdAtGt?: string, createdAtLe?: string, createdAtLt?: string, updatedAtGe?: string, updatedAtGt?: string, updatedAtLe?: string, updatedAtLt?: string }
- `POST https://api.mcp.ai/api/vapi/session/controller/create` — Tool to create a new session in Vapi. Use when you need to establish a persistent conversation context that can span multiple chats. Sessions automatically expire after 24 hours.
  - body: { name?: string, assistant?: object, assistantId?: string }
- `POST https://api.mcp.ai/api/vapi/session/controller/find/all/paginated` — Tool to retrieve a paginated list of sessions from VAPI. Use when you need to list sessions with optional filtering by session ID, name, assistant, squad, or workflow. Supports pagination, sorting, an
  - body: { id?: string, name?: string, page?: integer, limit?: integer, squadId?: string, sortOrder?: string, workflowId?: string, assistantId?: string, createdAtGe?: string, createdAtGt?: string, createdAtLe?: string, createdAtLt?: string, updatedAtGe?: string, updatedAtGt?: string, updatedAtLe?: string, updatedAtLt?: string, assistantIdAny?: string }
- `POST https://api.mcp.ai/api/vapi/tool/controller/find/one` — Tool to fetch tool details by ID. Use when you have a tool ID and need full tool configuration including type, messages, function definitions, and server settings.
  - body: { id: string }
- `POST https://api.mcp.ai/api/vapi/tool/controller/test/code/execution` — Tool to test TypeScript code execution in Vapi's code tool environment. Use when validating code before deploying it as a tool.
  - body: { code: string }
- `POST https://api.mcp.ai/api/vapi/tool/controller/update` — Tool to update an existing Vapi tool configuration. Use when you need to modify tool properties such as function definitions, server settings, messages, or other tool-specific parameters.
  - body: { id: string, url?: string, type?: string, async?: boolean, method?: string, server?: object, function?: object, messages?: object[], backoffPlan?: object, destinations?: object[], rejectionPlan?: object, variableExtractionPlan?: object }
- `POST https://api.mcp.ai/api/vapi/update/phone/number` — Tool to update an existing phone number configuration in VAPI. Use when you need to modify phone number settings such as name, associated assistant/workflow, or provider-specific configurations.
  - body: { id: string, name?: string, hooks?: object[], number?: string, server?: object, sip_uri?: string, squad_id?: string, sms_enabled?: boolean, workflow_id?: string, assistant_id?: string, credential_id?: string, authentication?: object, twilio_api_key?: string, twilio_api_secret?: string, twilio_auth_token?: string, twilio_account_sid?: string, fallback_destination?: object, number_e164_check_enabled?: boolean }
- `POST https://api.mcp.ai/api/vapi/upload/file` — Tool to upload a file to Vapi Knowledge Base. Use when you need to add files for AI assistants to reference. Returns file metadata including ID, storage URLs, and processing status.
  - body: { file: object }

## Example prompts
- "What can I do in Vapi?"
- "Show me a summary of my Vapi account"

## More
- Page: https://mcp.ai/vapi
- Agent spec (llms.txt): https://mcp.ai/vapi/llms.txt
- Postman collection: https://mcp.ai/vapi/postman.json
