Skip to main content
Glama
VapiAI

Vapi MCP Server

Official
by VapiAI

Vapi MCP Server

Build AI voice assistants and phone agents with Vapi using the Model Context Protocol.

Setup

The MCP server requires a Vapi API key. Get one from the Vapi dashboard.

Local Server (stdio)

Configure any MCP client that supports local stdio servers to run:

npx -y @vapi-ai/mcp-server

Set VAPI_TOKEN in the server environment. MCP client configuration formats vary, but the server definition generally looks like this:

{
  "mcpServers": {
    "vapi": {
      "command": "npx",
      "args": ["-y", "@vapi-ai/mcp-server"],
      "env": {
        "VAPI_TOKEN": "<your_vapi_token>"
      }
    }
  }
}

Remote Server (Streamable HTTP)

Clients that support remote MCP servers can connect directly:

  • URL: https://mcp.vapi.ai/mcp

  • Header: Authorization: Bearer your_vapi_api_key_here

Client-Specific Examples

Claude Code

claude mcp add -e VAPI_TOKEN=your_vapi_token vapi -- npx -y @vapi-ai/mcp-server

Claude Desktop

Use the local server configuration above in the Claude Desktop configuration file. To connect to the hosted server through an stdio bridge instead:

{
  "mcpServers": {
    "vapi": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp.vapi.ai/mcp",
        "--header",
        "Authorization: Bearer ${VAPI_TOKEN}"
      ],
      "env": {
        "VAPI_TOKEN": "<your_vapi_token>"
      }
    }
  }
}

Optional Agent Skill

The skill directory contains reusable instructions for AI coding agents that support Agent Skills. Install it using your host's skill installation process.

For Claude Code:

mkdir -p ~/.claude/skills/vapi
curl -o ~/.claude/skills/vapi/SKILL.md https://raw.githubusercontent.com/VapiAI/mcp-server/main/skill/SKILL.md

Related MCP server: Lark MCP Server

Example Usage

Create a Voice Assistant

Ask your MCP-enabled agent:

I want to build a voice assistant that can schedule appointments

Make an Outbound Call

Call +1234567890 using my appointment reminder assistant with these details:
- Customer name: Sarah Johnson
- Appointment date: March 25th
- Appointment time: 2:30 PM

Schedule a Future Call

Schedule a call with my support assistant for next Tuesday at 3:00 PM to +1555123456

Using Variable Values in Assistant Prompts

The create_call action supports passing dynamic variables through assistantOverrides.variableValues. Use double curly braces in your assistant's prompts: {{variableName}}.

Example Prompt with Variables

Hello {{customerName}}, this is a reminder about your appointment on {{appointmentDate}} at {{appointmentTime}} with {{doctorName}}.

Default Variables

These are automatically available (no need to pass):

  • {{now}} - Current date and time (UTC)

  • {{date}} - Current date (UTC)

  • {{time}} - Current time (UTC)

  • {{month}} - Current month (UTC)

  • {{day}} - Current day of month (UTC)

  • {{year}} - Current year (UTC)

  • {{customer.number}} - Customer's phone number

See Vapi documentation for advanced date/time formatting.


Remote MCP Server

Connect to Vapi's hosted MCP server from any MCP client:

  • URL: https://mcp.vapi.ai/mcp

  • Header: Authorization: Bearer your_vapi_api_key_here

SSE (Deprecated)

  • URL: https://mcp.vapi.ai/sse

  • Header: Authorization: Bearer your_vapi_api_key_here


Available Tools

Assistants

Tool

Description

list_assistants

List all assistants

get_assistant

Get assistant by ID

create_assistant

Create new assistant

update_assistant

Update assistant

Calls

Tool

Description

list_calls

List call history

get_call

Get call details

create_call

Start outbound call (immediate or scheduled)

Phone Numbers

Tool

Description

list_phone_numbers

List phone numbers

get_phone_number

Get phone number details

Tools (Function Calling)

Tool

Description

list_tools

List custom tools

get_tool

Get tool details

create_tool

Create tool for API integration

update_tool

Update tool


Development

# Install dependencies
npm install

# Build
npm run build

# Test with MCP inspector
npm run inspector

Local Development Config

{
  "mcpServers": {
    "vapi-local": {
      "command": "node",
      "args": ["<path>/dist/index.js"],
      "env": {
        "VAPI_TOKEN": "<your_vapi_token>"
      }
    }
  }
}

Testing

# Safe default suite (build, mocked execution, contract, and stdio compatibility)
npm test

# Unit tests (mocked public tool execution and catalog contract)
npm run test:unit

# Documentation/tool-catalog consistency lint
npm run test:docs

# Full TypeScript check (production and test code)
npm run typecheck

# Build and run local stdio protocol compatibility tests (no Vapi API calls)
npm run test:stdio

# Pack, install, and launch the package from a clean temporary consumer
npm run test:package

# Live read-only API tests
export VAPI_TOKEN=your_token_here
npm run test:live:readonly

# Live mutating tests (creates and cleans up disposable assistants and tools)
export VAPI_TOKEN=your_test_org_token_here
npm run test:live:mutating

References

Available Tools

13 tools
create_assistantB

Creates a new Vapi assistant

ParametersJSON Schema
NameRequiredDescriptionDefault
llmNoLLM configuration
nameYesName of the assistant
voiceNoVoice configuration
toolIdsNoIDs of tools to use with this assistant
transcriberNoTranscription configuration
firstMessageNoFirst message to say to the userHello, how can I help you today?
instructionsNoInstructions for the assistantYou are a helpful assistant.
firstMessageModeNoThis determines who speaks first, either assistant or userassistant-speaks-first

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility. It only states the tool creates an assistant, with no insight into side effects, authentication needs, rate limits, or what happens on success/failure. This is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, non-wasteful sentence. It is front-loaded with the action. However, for a complex tool with 8 parameters, slightly more context might be warranted, but it remains appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, nested objects, no output schema) and absence of annotations, the description is inadequate. It does not explain return values, relationship to other entities (e.g., tools), or typical workflow integration.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds no parameter-specific meaning beyond the schema; it simply states the tool's purpose. No extra value is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (creates) and resource (new Vapi assistant), and implicitly distinguishes from sibling tools like create_call or create_tool. It is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives (e.g., update_assistant) or any context about prerequisites or typical use cases. It lacks any usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_callC

Creates a outbound call

ParametersJSON Schema
NameRequiredDescriptionDefault
customerNoCustomer information
assistantIdNoID of the assistant to use for the call
scheduledAtNoISO datetime string for when the call should be scheduled (e.g. "2025-03-25T22:39:27.771Z")
phoneNumberIdNoID of the phone number to use for the call
assistantOverridesNoOverrides for the assistant configuration

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must convey all behavioral traits. It only mentions 'outbound call' without disclosing side effects (e.g., cost, permissions, idempotency) or whether the call may be scheduled (as indicated by the scheduledAt parameter).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, but contains a grammatical error ('a outbound'). It lacks structure and fails to earn its place with substantial content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of the input schema (5 parameters, nested objects) and no output schema, the description omits crucial details like what the call creation returns, how scheduling works, and any necessary prerequisites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All parameters have descriptive titles in the schema, so the description adds no additional meaning. Baseline 3 is appropriate given 100% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool creates an outbound call, distinguishing it from read tools like get_call or list_calls. However, it lacks precision about what creating a call entails (e.g., immediate dialing vs scheduling).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like create_assistant or when to avoid it. Missing context on prerequisites or restrictions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_toolC

Creates a new Vapi tool

ParametersJSON Schema
NameRequiredDescriptionDefault
smsNoSMS tool configuration - to send text messages
nameNoName of the function/tool
typeYesType of the tool to create
functionNoCustom function tool configuration - for custom server-side functions
apiRequestNoAPI Request tool configuration - for HTTP API integration
descriptionNoDescription of what the function/tool does
transferCallNoTransfer call tool configuration - to transfer calls to destinations

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must convey behavior. It only says 'creates', implying mutation, but offers no details on side effects, idempotency, or what changes occur. The agent is left to infer from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise, but it lacks substantive content. It is front-loaded but too sparse to be fully effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 7 parameters and no output schema, the description is grossly incomplete. It fails to explain what the tool returns or any post-creation behavior, making it insufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond the schema—no examples, relationships, or usage tips for the nested parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Creates a new Vapi tool' clearly states the action and the resource. It distinguishes from sibling tools like create_assistant or create_call due to the explicit mention of 'tool'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or context for creation. The schema indicates 'type' is required, but the description does not elaborate on use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_assistantB

Gets a Vapi assistant by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
assistantIdYesID of the assistant to get

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavioral traits, but it only states a simple retrieval. It omits whether the operation is read-only, requires authentication, or has any side effects. The minimal description does not compensate for missing annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, direct sentence conveys the core purpose efficiently. While it lacks detail, for a simple get operation, the conciseness is acceptable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool (1 parameter, no output schema, no annotations), the description is minimally adequate but lacks completeness regarding return value, error conditions, or behavioral traits. Could be improved.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes the only parameter ('assistantId') with 100% coverage, so the description adds no extra meaning. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Gets' and the resource 'Vapi assistant by ID,' making the purpose unambiguous. It naturally distinguishes itself from sibling tools like 'create_assistant' or 'list_assistants'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., 'list_assistants' for multiple, 'update_assistant' for modifications). No context about prerequisites or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_callB

Gets details of a specific call

ParametersJSON Schema
NameRequiredDescriptionDefault
callIdYesID of the call to get

TDQS

B3/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full burden for behavioral disclosure. It only says 'gets details' but does not specify whether it is read-only, what happens on missing IDs, or any authorization requirements. Lacks any behavioral context beyond the bare function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no extraneous words. Efficiently communicates the core purpose with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, and the description offers no details about return format, errors, or pagination. For a simple get tool, this may be sufficient, but the lack of any additional context (like example usage or notes) makes it incomplete for an agent to fully understand the behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (callId described as 'ID of the call to get'). The description adds no extra meaning beyond the schema, so baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action and resource: 'Gets details of a specific call'. It distinguishes from sibling tools like list_calls (listing) and create_call (creating), making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, typical use cases, or what to do if the call ID is invalid.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_phone_numberC

Gets details of a specific phone number

ParametersJSON Schema
NameRequiredDescriptionDefault
phoneNumberIdYesID of the phone number to get

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description says 'Gets details' implying a read-only operation, but no annotations are provided to confirm safety. It does not disclose any behavioral traits such as rate limits, authentication requirements, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise but lacks structure. It efficiently communicates the core purpose but does not earn its place with extra detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema, the description should at least hint at the return value (e.g., 'returns phone number details'). It does not, making it incomplete for a simple read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (phoneNumberId described adequately). The description adds no additional meaning beyond the schema; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Gets details' with a specific resource ('phone number'), distinguishing it from sibling tools like list_phone_numbers (list) and create_phone_number (create). However, it lacks specificity about what 'details' include.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus siblings. For example, it doesn't mention that list_phone_numbers should be used to get all numbers, and this is for a single number by ID.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_toolB

Gets details of a specific tool

ParametersJSON Schema
NameRequiredDescriptionDefault
toolIdYesID of the tool to get

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It implies a read-only operation but does not explicitly state that no modifications occur or that it is safe. A simple 'Reads and returns tool details without side effects' would improve transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, concise sentence. No wasted words, but it is minimal. Could include more context without harming conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get operation with one parameter and no output schema, the description is adequate. However, it does not hint at the return structure or any prerequisites (e.g., tool must exist), which would be helpful for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers toolId with 100% description, so the description adds no additional semantics. Baseline at 3 is appropriate. It could clarify the expected format (e.g., UUID), but is not necessary.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Gets details of a specific tool' clearly identifies the action (getting) and the resource (tool). It distinguishes from siblings like list_tools by specifying a single tool. However, it omits what specific details are retrieved, making it slightly less than perfectly clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs. alternatives like list_tools. The description does not mention that this tool is for retrieving a single tool by ID, while list_tools is for enumerating all tools. This lack of differentiation forces the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_assistantsA

Lists all Vapi assistants

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must disclose behavior. It says 'lists all' but does not mention pagination, limits, ordering, or any other behavioral traits beyond the action itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise, one sentence with no unnecessary words. Front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and no output schema, the description is adequate but lacks contextual depth such as scope (e.g., all assistants for the user) or any behavioral notes. Could be more complete but satisfies basic needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has no parameters (100% coverage), so the description does not need to add parameter details. Baseline is 4 for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists all Vapi assistants, using a specific verb and resource. It distinguishes from sibling tools like get_assistant (single) and create_assistant (creation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., get_assistant for a single assistant). Does not specify any context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_callsB

Lists all Vapi calls

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It only states 'Lists all Vapi calls' with no details on return size, pagination, or rate limits, leaving behavioral traits unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no unnecessary words. Could be slightly more informative without bloat, but remains concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, no parameters, and no annotations, the description is too minimal; it doesn't explain return format, pagination, or side effects for a list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters in schema; schema description coverage is 100%. Description adds no extra param info but baseline for 0 params is 4, and the description is adequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Lists' and resource 'Vapi calls', distinguishing it from siblings like get_call (single call) and list_assistants (different resource).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives; e.g., no mention that get_call is for a specific call or that list_assistants lists different resources.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_phone_numbersA

Lists all Vapi phone numbers

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states the basic function. It does not disclose behavioral traits such as read-only nature, pagination, rate limits, or any filters. The description is too sparse to inform about potential side effects or constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no redundant words. It is maximally concise and focused.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and no output schema, the description is minimally adequate. However, it lacks information on pagination, response format, or whether all phone numbers are truly listed without limits. It could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters in the input schema, so the description does not need to explain param semantics. Baseline for 0 params is 4, and no additional information is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Lists' and clearly identifies the resource 'all Vapi phone numbers'. It distinguishes from sibling tools like list_assistants, list_calls, list_tools, and get_phone_number.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or when not to use it. The intended usage context is implicit but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_toolsA

Lists all Vapi tools

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral transparency, but it only states 'Lists all Vapi tools.' It does not disclose whether the operation is read-only, if there are any side effects, rate limits, or pagination behavior. This is insufficient for a comprehensive understanding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that concisely states the tool's function with no extraneous words. It is appropriately front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing tool with no parameters and no output schema, the description is adequate but minimal. It could benefit from mentioning return format, pagination, or ordering, which are common for list operations. Still, it is complete enough for basic understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, and schema description coverage is 100%. Since there are no parameters to explain, the description does not need to add parameter semantics. Baseline for 0 parameters is 4, and no deficiency is noted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Lists all Vapi tools' clearly specifies the verb (lists) and the resource (Vapi tools). It distinguishes from sibling tools like list_assistants and list_phone_numbers by naming the specific resource type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives is provided. While the name and description imply it is the sole tool for listing tools, there is no mention of context, restrictions, or alternatives, leaving room for ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_assistantC

Updates an existing Vapi assistant

ParametersJSON Schema
NameRequiredDescriptionDefault
llmNoNew LLM configuration
nameNoNew name for the assistant
voiceNoNew voice configuration
toolIdsNoNew IDs of tools to use with this assistant
assistantIdYesID of the assistant to update
transcriberNoNew transcription configuration
firstMessageNoFirst message to say to the user
instructionsNoNew instructions for the assistant
firstMessageModeNoThis determines who speaks first, either assistant or user

TDQS

C2.8/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits but only states 'Updates an existing Vapi assistant'. It omits side effects, idempotency, partial update behavior, error conditions, and required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no waste, but it lacks structure or additional context such as usage notes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (9 parameters, nested objects, no output schema, no annotations), the description provides insufficient context about behavior, return values, or how updates are applied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The tool description adds no extra meaning beyond the schema's property descriptions (e.g., 'New name', 'New IDs').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Updates') and the resource ('an existing Vapi assistant'), distinguishing it from siblings like create_assistant, get_assistant, and list_assistants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like create_assistant or get_assistant, nor are there prerequisites or exclusions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_toolC

Updates an existing Vapi tool

ParametersJSON Schema
NameRequiredDescriptionDefault
smsNoSMS tool configuration - to send text messages
nameNoName of the function/tool
toolIdYesID of the tool to update
functionNoCustom function tool configuration - for custom server-side functions
apiRequestNoAPI Request tool configuration - for HTTP API integration
descriptionNoDescription of what the function/tool does
transferCallNoTransfer call tool configuration - to transfer calls to destinations

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should compensate but only states 'updates an existing Vapi tool'. It does not disclose whether the update is partial or full, what permissions are needed, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, making it concise. However, it is too terse and omits essential behavioral details, making it less helpful than it could be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (7 parameters, nested objects, no output schema, no annotations), the description is insufficient. It does not explain the update semantics (e.g., partial vs full replacement) or error handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter has a detailed description in the schema. The tool description adds no additional meaning beyond what is already provided in the input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'updates' and the resource 'existing Vapi tool', making the purpose unambiguous. However, it does not specify which fields can be updated, relying on the schema for details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like create_tool or delete_tool. The description lacks any context about typical usage scenarios or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.5/5.0
Disambiguation5/5

Each tool targets a distinct resource and action: assistants, calls, phone numbers, and tools are clearly separated, with list/get/create/update operations uniquely identified. There is no functional overlap between any tools.

Naming Consistency5/5

All 13 tools follow a consistent verb_noun pattern with lowercase and underscores, such as list_assistants, create_call, get_phone_number. The convention is uniform across all resources.

Tool Count5/5

With 13 tools spanning three core resource types, the count is well within the optimal range. Each tool serves a distinct purpose with no redundancy.

Completeness4/5

Assistants and tools have full CRUD except delete operations, while phone numbers lack create/update/delete and calls lack update/delete. These are minor gaps but may reflect API constraints; core read and update workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides a standardized interface for interacting with Falai's tools and services through the Model Context Protocol, enabling AI assistants to leverage Falai capabilities.
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI clients to seamlessly take HubSpot actions and interact with your HubSpot data through the Model Context Protocol.
    22,588
    MIT

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