Voxplo
Server Details
Give AI agents a phone: outbound AI calls that return a summary, transcript, and extracted fields.
- Status
- Healthy
- Uptime
- 37.9% over 38 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool has a distinct purpose: getting a single call, listing calls, placing a generic call, and placing a specialized appointment-setting call. No overlap or ambiguity.
All tool names follow a consistent verb_noun pattern (get_call, list_calls, place_call, set_appointment). The convention is uniform and predictable.
With 4 tools, the surface is well-scoped for an outbound AI calling service. Each tool addresses a core need without excess or redundancy.
The set covers placing calls, retrieving results, and listing history. Missing an update/cancel operation, but for the core workflow of initiating and polling calls, it is complete enough.
Available Tools
4 toolsget_callGet call status and resultARead-onlyInspect
Get the status and result of a call by id. status is one of queued | ringing | in_progress (still running, poll again) or completed | no_answer | voicemail | declined | failed (terminal). Returns summary, transcript, and extracted fields.
| Name | Required | Description | Default |
|---|---|---|---|
| callId | Yes | The callId returned by place_call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description enumerates the possible status values, distinguishes non-terminal vs terminal states, advises to poll again for in_progress, and lists the returned data (summary, transcript, extracted fields). This gives the agent a clear behavioral model of the call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first states the core purpose, the second packs status values and return contents efficiently. Information is front-loaded and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with rich annotations, the description fully covers behavior, return values, and polling semantics. Nothing essential is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the callId parameter already described as 'The callId returned by place_call.' The description adds no further parameter semantics, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('status and result of a call by id'), clearly distinguishing it from siblings list_calls, place_call, and set_appointment. The action and target are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: to retrieve status/result of a specific call by id, with polling guidance for in_progress status. It does not explicitly name alternatives or exclusions, but the context is clear enough for an agent to select it appropriately among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_callsList recent callsARead-onlyInspect
List recent calls placed by your account (most recent first).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max calls to return (default 20, max 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows it is a safe read. The description adds that calls are scoped to the account and returned newest-first, which is useful context. It does not disclose anything about pagination or response shape, but for a read-only list the annotation covers the core safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one sentence with the verb and object front-loaded. The parenthetical 'most recent first' adds necessary ordering detail without fluff. There is no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one optional parameter, the description covers the core (what is listed, whose, and the order). The lack of an output schema means an agent won't know the exact return fields, but that is a minor gap given the straightforward nature of the tool and the existing annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'limit' is fully described in the schema (integer, max 100, default 20). The description adds nothing about it, and with 100% schema coverage the baseline of 3 applies. No additional meaning is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (List), resource (recent calls), scope (placed by your account), and ordering (most recent first). This clearly distinguishes it from get_call (single call lookup), place_call (new call), and set_appointment (appointments) without needing to open the schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: it is for viewing your own recent call history. However, it does not explicitly state when to use it over get_call (e.g., 'for a single call, use get_call') or provide any exclusions. The boundary is inferable from names but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_callPlace an AI phone callAInspect
Place an outbound AI phone call toward an objective. Returns a callId immediately; the call is conducted asynchronously. Poll get_call with that callId until status is terminal (completed | no_answer | voicemail | declined | failed).
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Destination phone number in E.164, e.g. +14155550123. | |
| fields | No | Structured fields to extract from the call. | |
| context | No | Background context for the assistant. | |
| navMode | No | How to navigate the far-end IVR: auto (detect keypad menu vs conversational assistant live), keypad (stay muted and press keys), or speech (talk). | |
| callerId | No | Optional caller ID; must be a number on your account. | |
| objective | Yes | What the call should accomplish. | |
| webhookUrl | No | Optional https URL to receive the signed result. | |
| listenFirst | No | If true, stay silent until the callee/IVR speaks first, then respond. Recommended for any outbound call into a phone tree. | |
| accountNumber | No | Account/phone digits the enter_account_number tool keys deterministically (keypad chars only). | |
| toolAllowlist | No | Tools this call may use, e.g. ["send_digits","reached_human","add_participant","enter_account_number"]. Omit for the default set. | |
| callbackNumber | No | Our callback DID digits the enter_callback_number tool keys (callback-to-AI mode). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds non-obvious operational behavior: the call is asynchronous, returns callId immediately, and has a defined set of terminal statuses. This goes beyond the annotations, which only indicate non-readOnly, non-idempotent, and open-world behavior, by explaining the actual call lifecycle.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: purpose, async behavior, and follow-up action are each given their own concise sentence. The most decision-relevant facts are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the full invocation lifecycle from returning callId through terminal statuses, and names the exact sibling tool to use for follow-up. With the rich schema and annotations, nothing essential for selecting or invoking this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the structured descriptions already document all 11 parameters. The description adds minimal parameter-level detail beyond naming the objective and callId, which is acceptable but not additive given the schema already carries that weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete action ('Place'), a specific resource ('outbound AI phone call'), and a purpose ('toward an objective'). It also clearly differentiates from sibling get_call by contrasting placement with polling, and from list_calls/set_appointment by resource and action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent to poll get_call with the returned callId until a terminal status, giving a clear post-invocation workflow. It doesn't explicitly state when not to use this tool or compare it to list_calls/set_appointment, but the placement-vs-retrieval distinction is clear from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_appointmentSet an appointment by phoneAInspect
Place an outbound AI phone call to set up a meeting. The assistant calls the person, agrees a time, and the result (poll get_call) carries outcome (appointment_set | callback_requested | declined | no_answer | failed) and, when set, the appointment (startISO, timezone, durationMinutes, attendee, subject). Returns a callId immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Who to call, in E.164, e.g. +14155550123. | |
| slots | No | Specific start times to offer, ISO-8601 with offset. | |
| subject | Yes | What the meeting is about. | |
| autoBook | No | Also book the agreed time on your connected calendar. | |
| callerId | No | Optional caller ID; must be a number on your account. | |
| timezone | No | IANA timezone for the appointment, e.g. Asia/Jerusalem. | |
| webhookUrl | No | Optional https URL to receive the signed result. | |
| timePreference | No | Natural-language window, e.g. "weekday mornings next week". | |
| durationMinutes | No | Meeting length in minutes (default 30). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-read, non-idempotent, non-destructive action. The description adds valuable behavioral context: it makes an outbound phone call, returns a callId immediately (asynchronous), and describes the possible outcomes including failure modes. This goes beyond the annotations by explaining the async nature and result handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the core action and outcome. Each sentence adds value: the first defines what the tool does, the second explains the result and immediate return. No wasted words; it's compact and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (9 params, 2 required, no output schema), the description covers key aspects: the action, immediate return, and result semantics (outcome types). It doesn't explain how parameters interact (e.g., slots vs timePreference) but that is minor since the schema is complete. It also mentions webhookUrl indirectly through result, so it's fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are already documented in the schema. The description adds a bit of context by mentioning 'appointment (startISO, timezone, durationMinutes, attendee, subject)' which maps to some parameters, but it doesn't add meaningful semantics like delegation rules for 'slots' vs 'timePreference'. Thus baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the primary action ('Place an outbound AI phone call to set up a meeting') and specifies the resource (a phone call for appointment setting). It distinguishes itself from siblings by explicitly mentioning the outcome types and linking to get_call for polling, which is a distinct workflow from place_call and get_call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use this tool (to set up a meeting via AI phone call) and mentions using get_call for results. However, it doesn't explicitly state when NOT to use it or contrast with siblings like place_call, which is a gap. But the clear purpose and start of the workflow give enough guidance for most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
get_call - First observed
list_calls - First observed
place_call - First observed
set_appointment
Related MCP Connectors
Give your AI agent a phone: place calls, navigate IVRs, wait on hold, get structured answers.
Give your AI agent a phone. Place outbound calls to US businesses to ask, book, or confirm.
Give AI agents a phone layer for consent-based calls, transcripts, summaries, and outcomes.
- DialMCPOAuthcom.dialmcp
Let AI agents place real phone calls from your verified number, with transcripts and recordings.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to place real phone calls, navigate IVR trees, and retrieve structured answers with transcripts and recordings.MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to make real-world phone calls with AI voice technology and provides tools to track call status, transcripts, and summaries. It supports automated communication with both live numbers and simulated businesses for testing and demonstration purposes.-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to place real phone calls, engage in spoken conversations across 12 languages, and report the outcomes for tasks like booking appointments, answering questions, negotiating, or confirming orders.MIT

ClawCall MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceEnables AI agents to make real outbound phone calls to US/Canada numbers, handle conversations, and return transcripts and recordings via the Model Context Protocol.7MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.