Skip to main content
Glama
sebastienfi

MCP Vapi Caller

by sebastienfi

make_call

Initiate an outbound phone call with an AI voice agent that follows your script, achieves your call goal, and extracts structured data from the conversation.

Instructions

Make an outbound phone call with an AI voice agent via Vapi.

The voice agent will call the given phone number, follow your script, and extract structured data from the conversation. After initiating the call, use get_call_result() to retrieve the outcome.

WORKFLOW:

  1. Call make_call() with your parameters → get back a call_id

  2. Wait 1-3 minutes (typical call duration)

  3. Call get_call_result(call_id=..., wait_seconds=180) to get results

REQUIRED PARAMETERS:

  • phone_number: E.164 format ("+33142000000" for France, "+15551234567" for US)

  • call_goal: One clear sentence describing what the call should achieve. This is used for automatic success evaluation. Example: "Prendre un rendez-vous coiffeur pour mardi prochain après-midi"

  • call_script: Detailed behavioral instructions for the voice agent. Write this as if briefing a human assistant before a phone call. Be specific about what to say, what to ask, how to respond to common scenarios, and when to end the call. Example: "Appelle le salon et demande un rendez-vous coiffure pour mardi prochain après-midi. Si mardi est complet, demande mercredi. Accepte tout créneau entre 14h et 18h. Refuse les créneaux du matin. Réserve au nom de Jean Dupont."

RECOMMENDED PARAMETERS:

  • first_message: The exact opening line. If omitted, one is auto-generated, but providing your own gives much better results. Example: "Bonjour ! J'appelle pour prendre un rendez-vous coiffure s'il vous plaît."

  • caller_name: Who the agent represents. Example: "Jean Dupont"

  • structured_data_schema: JSON string of a JSON Schema defining what to extract from the conversation. Without this, you still get a transcript and summary but no structured fields. Example: '{"type":"object","properties":{"appointment_date":{"type":"string","description":"YYYY-MM-DD"},"appointment_time":{"type":"string","description":"HH:MM 24h"},"confirmed":{"type":"boolean"}}}'

  • language: BCP-47 code. Default: "fr". Use "en" for English, "es" for Spanish, etc. The voice agent will speak exclusively in this language.

OPTIONAL PARAMETERS:

  • caller_context: Additional identity context. Example: "Tu es l'assistant personnel de Jean Dupont"

  • structured_data_prompt: Instructions for the extraction model. Example: "Aujourd'hui c'est le 2026-04-11. Résoudre les dates relatives."

  • end_call_phrases: Comma-separated phrases that signal the call should end. Default per language (e.g. "au revoir,bonne journée" for French).

  • voice_id: ElevenLabs voice ID override (default from env VAPI_VOICE_ID).

  • customer_name: Label for the person/business being called (Vapi dashboard).

  • system_prompt_override: Replaces the entire auto-generated system prompt. Use only when you need full control over the voice agent's instructions.

TIPS FOR GOOD CALLS:

  • Keep call_script focused and concise — voice agents work best with clear, simple instructions

  • Always provide a first_message — auto-generated ones are generic

  • Include fallback behavior in call_script (what to do if the main goal fails)

  • For data extraction, keep schemas simple with clear field descriptions

Args: phone_number: Phone number in E.164 format (e.g. "+33142000000") call_goal: One sentence describing what the call should achieve call_script: Detailed behavioral instructions for the voice agent language: BCP-47 language code (default: "fr") caller_name: Who the agent calls on behalf of caller_context: Additional identity context for the voice agent first_message: Opening line when the call connects structured_data_schema: JSON string of a JSON Schema for data extraction structured_data_prompt: Instructions for the extraction model end_call_phrases: Comma-separated end-call phrases voice_id: ElevenLabs voice ID override customer_name: Name of the person/business being called system_prompt_override: Full system prompt (replaces auto-generated one)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
languageNo
voice_idNo
call_goalYes
call_scriptYes
caller_nameNo
phone_numberYes
customer_nameNo
first_messageNo
caller_contextNo
end_call_phrasesNo
structured_data_promptNo
structured_data_schemaNo
system_prompt_overrideNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior5/5

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

With no annotations provided, the description carries full behavioral burden. It discloses async behavior (wait 1-3 minutes), indicates what happens when optional params are omitted (auto-generated first_message, no structured fields without a schema), specifies defaults (language='fr', voice_id from env), and notes the call duration. This is rich behavioral detail that helps the agent anticipate outcomes.

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 well-organized with clear sections and front-loads the main purpose. However, the final 'Args' block redundantly repeats parameter descriptions already covered in the REQUIRED/RECOMMENDED/OPTIONAL sections. The TIPS section adds value but also lengthens the text. Overall structured, but slightly overlong due to redundancy.

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

Completeness5/5

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

Given the tool's complexity (13 params, 0% schema coverage, no annotations), the description is remarkably complete. It covers all parameters, workflow, timing, tool dependencies, and best-practice tips. The existence of an output schema reduces the need to detail return values, and the description still notes the call_id response. No critical gaps.

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

Parameters5/5

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

Schema coverage is 0%, but the description compensates exhaustively: it groups parameters into required/recommended/optional, provides format examples (E.164, BCP-47, JSON Schema string), explains each parameter's purpose (e.g., call_goal for automatic success evaluation), and includes usage examples for call_script and first_message. This is far beyond what the schema offers.

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 opens with 'Make an outbound phone call with an AI voice agent via Vapi', clearly stating a specific verb, resource, and service. It differentiates itself from the sibling tool 'get_call_result' by framing it as the initiating step that returns a call_id.

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

Usage Guidelines5/5

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

The WORKFLOW section explicitly lays out when to call make_call (step 1) and when to call get_call_result (step 3), including a recommended wait time. This provides clear usage context and names the alternative tool for result retrieval, satisfying the 'when/when-not/alternatives' criterion.

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

Install Server

Other Tools

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/sebastienfi/mcp-vapi-generic-caller'

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