Vapi MCP connector
Bearer TokenCommunicationAIVapi is an AI-powered voice platform for building, testing, and deploying voice AI agents. This MCP connector enables AI agents to manage Vapi assistants...
Vapi MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Set up the connector
Section titled “Set up the connector”Register your Vapi MCP credentials with Scalekit so it can authenticate requests on your behalf. You do this once per environment.
Dashboard setup steps
Register your Vapi API key with Scalekit so it can authenticate and proxy requests to the Vapi MCP server on behalf of your users. Vapi MCP uses bearer token authentication — there is no redirect URI or OAuth flow. Scalekit sends the key as
Authorization: Bearer <token>to the Vapi MCP endpoint athttps://mcp.vapi.ai/mcp.-
Get a Vapi API key
-
Go to dashboard.vapi.ai/org/api-keys and sign in or create an account.
-
Under API Keys, copy your Private Key. Use the private key — it authorizes server-side calls to the Vapi API.
-
Treat this key as a secret. Anyone with it can manage your assistants, calls, and phone numbers.
-
-
Create a connection in Scalekit
-
In the Scalekit dashboard, go to AgentKit > Connections. Find Vapi MCP and click Create.
-
Note the Connection name — you use this as
connection_namein your code (for example,vapimcp).
-
-
Add a connected account
Connected accounts link a specific user identifier in your system to a Vapi API key. Add them via the dashboard for testing, or via the Scalekit API in production.
Via dashboard (for testing)
-
Open the connection you created and click the Connected Accounts tab → Add account.
-
Fill in:
- Your User’s ID — a unique identifier for this user in your system (for example,
user_123) - Vapi API key — the private key you copied in step 1
- Your User’s ID — a unique identifier for this user in your system (for example,
-
Click Save.
Via API (for production)
await scalekit.actions.upsertConnectedAccount({connectionName: 'vapimcp',identifier: 'user_123', // your user's unique ID// Security: never hard-code the API key — read it from a secret store or env var.credentials: { token: process.env.VAPI_API_KEY },});scalekit_client.actions.upsert_connected_account(connection_name="vapimcp",identifier="user_123",# Security: never hard-code the API key — read it from a secret store or env var.credentials={"token": os.environ["VAPI_API_KEY"]},) -
-
-
Make your first call
Section titled “Make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'vapimcp'const identifier = 'user_123'// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'vapimcp_list_assistants',toolInput: { rationale: 'YOUR_RATIONALE' },})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "vapimcp"identifier = "user_123"# Make your first callresult = actions.execute_tool(tool_input={"rationale":"YOUR_RATIONALE"},tool_name="vapimcp_list_assistants",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Update tool, assistant — Updates an existing Vapi tool’s configuration
- List tools, phone numbers, calls — Lists all Vapi tools configured in the account
- Get tool, phone number, call — Retrieves the full configuration of a specific Vapi tool by ID, including its type (SMS, transfer call, function, or API request) and associated settings
- Create tool, call, assistant — Creates a new Vapi tool that can be attached to assistants
Common workflows
Section titled “Common workflows”Tool calling
- Use
vapimcp_list_assistantsto discover existing assistants, thenvapimcp_get_assistantto read a specific assistant’s full configuration before changing it. - Use
vapimcp_create_assistantto provision a new voice AI assistant, andvapimcp_update_assistantto change only the fields you pass — omitted fields keep their current values. - Use
vapimcp_list_phone_numbersandvapimcp_get_phone_numberto find the phone number to call from. - Use
vapimcp_create_callto place an outbound call with a chosen assistant and phone number, thenvapimcp_get_callto read its status, duration, and transcript. - Use
vapimcp_create_toolto add SMS, transfer-call, function, or API-request tools, and attach them to an assistant withvapimcp_update_assistant.
const toolResponse = await actions.executeTool({ connector: 'vapimcp', identifier: 'user_123', toolName: 'vapimcp_create_call', toolInput: { assistantId: 'YOUR_ASSISTANT_ID', phoneNumberId: 'YOUR_PHONE_NUMBER_ID', customer: { number: '+15551234567' }, },});console.log('Call started:', toolResponse.data);tool_response = actions.execute_tool( connection_name='vapimcp', identifier='user_123', tool_name='vapimcp_create_call', tool_input={ "assistantId": "YOUR_ASSISTANT_ID", "phoneNumberId": "YOUR_PHONE_NUMBER_ID", "customer": {"number": "+15551234567"}, },)print("Call started:", tool_response)Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
vapimcp_create_assistant#Creates a new Vapi voice AI assistant with the specified configuration. Configure the assistant's LLM provider, voice, transcription engine, first message, and any tools it should have access to.9 params
Creates a new Vapi voice AI assistant with the specified configuration. Configure the assistant's LLM provider, voice, transcription engine, first message, and any tools it should have access to.
namestringrequiredName of the assistantrationalestringrequiredAlways provide a brief explanation of why you are calling this toolfirstMessagestringoptionalFirst message the assistant says when a call startsfirstMessageModestringoptionalWhether the assistant speaks first or waits for the userinstructionsstringoptionalSystem instructions for the assistant. Defaults to 'You are a helpful assistant.'llmstringoptionalLLM configuration. Defaults to OpenAI gpt-4o.toolIdsstringoptionalIDs of Vapi tools to attach to this assistanttranscriberstringoptionalTranscription configuration. Defaults to Deepgram nova-3.voicestringoptionalVoice configuration. Defaults to ElevenLabs 'sarah'.vapimcp_create_call#Initiates or schedules an outbound Vapi call. Specify the assistant and phone number to use, the customer's phone number, and optionally a scheduled time. Use assistantOverrides.variableValues to inject dynamic data into the assistant's prompts.6 params
Initiates or schedules an outbound Vapi call. Specify the assistant and phone number to use, the customer's phone number, and optionally a scheduled time. Use assistantOverrides.variableValues to inject dynamic data into the assistant's prompts.
rationalestringrequiredAlways provide a brief explanation of why you are calling this toolassistantIdstringoptionalID of the Vapi assistant to use for the callassistantOverridesstringoptionalRuntime overrides for the assistant configurationcustomerstringoptionalCustomer contact information for the outbound callphoneNumberIdstringoptionalID of the Vapi phone number to call fromscheduledAtstringoptionalISO 8601 datetime to schedule the call (e.g. 2025-03-25T22:39:27.771Z). Omit to call immediately.vapimcp_create_tool#Creates a new Vapi tool that can be attached to assistants. Supports four tool types: 'sms' for sending text messages, 'transferCall' for transferring calls to destinations, 'function' for custom server-side functions, and 'apiRequest' for HTTP API integrations.8 params
Creates a new Vapi tool that can be attached to assistants. Supports four tool types: 'sms' for sending text messages, 'transferCall' for transferring calls to destinations, 'function' for custom server-side functions, and 'apiRequest' for HTTP API integrations.
rationalestringrequiredAlways provide a brief explanation of why you are calling this tooltypestringrequiredType of tool to createapiRequeststringoptionalAPI request tool configuration — provide when type is 'apiRequest'descriptionstringoptionalDescription of what the tool doesfunctionstringoptionalFunction tool configuration — provide when type is 'function'namestringoptionalName of the toolsmsstringoptionalSMS configuration — provide when type is 'sms'transferCallstringoptionalTransfer call configuration — provide when type is 'transferCall'vapimcp_get_assistant#Retrieves the full configuration of a specific Vapi assistant by ID, including its LLM, voice, transcription settings, tools, and first message.2 params
Retrieves the full configuration of a specific Vapi assistant by ID, including its LLM, voice, transcription settings, tools, and first message.
assistantIdstringrequiredID of the assistant to retrieverationalestringrequiredAlways provide a brief explanation of why you are calling this toolvapimcp_get_call#Retrieves detailed information about a specific Vapi call by ID, including its status, duration, transcript, recording URL, and associated assistant.2 params
Retrieves detailed information about a specific Vapi call by ID, including its status, duration, transcript, recording URL, and associated assistant.
callIdstringrequiredID of the call to retrieverationalestringrequiredAlways provide a brief explanation of why you are calling this toolvapimcp_get_phone_number#Retrieves details of a specific Vapi phone number by ID, including its number, provider, and any assistant or squad configuration attached to it.2 params
Retrieves details of a specific Vapi phone number by ID, including its number, provider, and any assistant or squad configuration attached to it.
phoneNumberIdstringrequiredID of the phone number to retrieverationalestringrequiredAlways provide a brief explanation of why you are calling this toolvapimcp_get_tool#Retrieves the full configuration of a specific Vapi tool by ID, including its type (SMS, transfer call, function, or API request) and associated settings.2 params
Retrieves the full configuration of a specific Vapi tool by ID, including its type (SMS, transfer call, function, or API request) and associated settings.
rationalestringrequiredAlways provide a brief explanation of why you are calling this tooltoolIdstringrequiredID of the Vapi tool to retrievevapimcp_list_assistants#Lists all Vapi assistants configured in the account. Returns a list of assistant objects including their IDs, names, configurations, and settings.1 param
Lists all Vapi assistants configured in the account. Returns a list of assistant objects including their IDs, names, configurations, and settings.
rationalestringrequiredAlways provide a brief explanation of why you are calling this toolvapimcp_list_calls#Lists all Vapi calls in the account. Returns call records including their IDs, status, duration, associated assistant, and transcript metadata.1 param
Lists all Vapi calls in the account. Returns call records including their IDs, status, duration, associated assistant, and transcript metadata.
rationalestringrequiredAlways provide a brief explanation of why you are calling this toolvapimcp_list_phone_numbers#Lists all phone numbers provisioned in the Vapi account. Returns phone number objects including their IDs, numbers, provider, and associated assistant configurations.1 param
Lists all phone numbers provisioned in the Vapi account. Returns phone number objects including their IDs, numbers, provider, and associated assistant configurations.
rationalestringrequiredAlways provide a brief explanation of why you are calling this toolvapimcp_list_tools#Lists all Vapi tools configured in the account. Vapi tools extend assistant capabilities — types include SMS, transfer call, custom functions, and API request tools.1 param
Lists all Vapi tools configured in the account. Vapi tools extend assistant capabilities — types include SMS, transfer call, custom functions, and API request tools.
rationalestringrequiredAlways provide a brief explanation of why you are calling this toolvapimcp_update_assistant#Updates an existing Vapi assistant's configuration. Only fields you provide will be changed; omitted fields retain their current values.10 params
Updates an existing Vapi assistant's configuration. Only fields you provide will be changed; omitted fields retain their current values.
assistantIdstringrequiredID of the assistant to updaterationalestringrequiredAlways provide a brief explanation of why you are calling this toolfirstMessagestringoptionalNew first message the assistant says when a call startsfirstMessageModestringoptionalNew first message modeinstructionsstringoptionalNew system instructions for the assistantllmstringoptionalNew LLM configurationnamestringoptionalNew name for the assistanttoolIdsstringoptionalNew list of Vapi tool IDs for the assistanttranscriberstringoptionalNew transcription configurationvoicestringoptionalNew voice configurationvapimcp_update_tool#Updates an existing Vapi tool's configuration. Only fields you provide will be changed. Supports all tool types: sms, transferCall, function, and apiRequest.8 params
Updates an existing Vapi tool's configuration. Only fields you provide will be changed. Supports all tool types: sms, transferCall, function, and apiRequest.
rationalestringrequiredAlways provide a brief explanation of why you are calling this tooltoolIdstringrequiredID of the Vapi tool to updateapiRequeststringoptionalUpdated API request tool configurationdescriptionstringoptionalNew description for the toolfunctionstringoptionalUpdated function tool configurationnamestringoptionalNew name for the toolsmsstringoptionalUpdated SMS configurationtransferCallstringoptionalUpdated transfer call configuration