🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

voxplo-mcp

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

voxplo-mcp

MCP server giving AI agents a phone via Voxplo outbound AI calls.

latest
Source
npmnpm
Version
0.1.1
Version published
Maintainers
1
Created
Source

voxplo-mcp

Give your AI agent a phone. This MCP server lets any MCP client (Claude, Cursor, ChatGPT developer mode, and others) place real outbound AI phone calls through Voxplo: the AI calls a person, conducts the conversation toward an objective, and returns a summary, transcript, and structured extracted fields.

  • Hosted (remote) server: https://mcp.voxplo.ai/mcp (Streamable HTTP + OAuth, no install)
  • Local (stdio) server: npx voxplo-mcp (this package)
  • Docs: https://voxplo.ai/docs/agent-api/mcp
  • Tools: place_call, set_appointment, get_call, list_calls

No install. Add https://mcp.voxplo.ai/mcp as a remote MCP server in your client:

{
  "mcpServers": {
    "voxplo": { "type": "streamable-http", "url": "https://mcp.voxplo.ai/mcp" }
  }
}

In Claude: Settings, then Connectors, then "Add custom connector", paste https://mcp.voxplo.ai/mcp. Your browser opens Voxplo's consent screen; approve by pasting an Agent API key from your Developers page. The client never sees the key itself, only an OAuth token.

Option B: local server (this package)

Prerequisites: Node 18+, a Voxplo Agent API key (starts with bys_ak_, from your Developers page).

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent on your OS:

{
  "mcpServers": {
    "voxplo": {
      "command": "npx",
      "args": ["-y", "voxplo-mcp"],
      "env": { "VOXPLO_API_KEY": "bys_ak_your_key_here" }
    }
  }
}

Cursor

Add the same block to .cursor/mcp.json in your project (or the global ~/.cursor/mcp.json).

To point at a staging or self-hosted instance, add "VOXPLO_API_BASE": "https://staging.example.com" to the env block.

Tools

place_call

Places an outbound AI phone call toward an objective. Returns a callId immediately; the call runs asynchronously. Poll get_call with that callId until status is terminal.

Inputs:

FieldTypeRequiredDescription
tostringyesDestination number in E.164 (e.g. +14155550123)
objectivestringyesWhat the call should accomplish
contextstringnoBackground context for the assistant
fieldsarraynoStructured fields to extract (up to 20 items: { name, type?, description? })
webhookUrlstringnoHTTPS URL to receive the signed result when the call ends
callerIdstringnoCaller ID override; must be a number on your account

Returns: { callId, status } where status is queued on success.

set_appointment

Places 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 an outcome (appointment_set | callback_requested | declined | no_answer | failed) and, when set, the appointment details (startISO, timezone, durationMinutes, attendee, subject). Returns a callId immediately.

Inputs:

FieldTypeRequiredDescription
tostringyesWho to call, in E.164
subjectstringyesWhat the meeting is about
durationMinutesnumbernoMeeting length in minutes (default 30)
timePreferencestringnoNatural-language window, e.g. "weekday mornings next week"
slotsarraynoSpecific start times to offer: [{ startISO }], ISO-8601 with offset
timezonestringnoIANA timezone for the appointment, e.g. Asia/Jerusalem
autoBookbooleannoAlso book the agreed time on your connected calendar
webhookUrlstringnoHTTPS URL to receive the signed result
callerIdstringnoCaller ID override; must be a number on your account

get_call

Fetches the current status and result of a call.

Inputs:

FieldTypeRequiredDescription
callIdstringyesThe callId from place_call or set_appointment

Returns: { id, status, summary, transcript, extracted, recordingUrl, to, objective, startedAt, endedAt, durationSec, error? }

list_calls

Lists recent calls placed by your account (most recent first).

Inputs:

FieldTypeRequiredDescription
limitnumbernoMax calls to return (default 20, max 100)

Returns: { calls: [ { id, to, objective, status, summary, createdAt, startedAt, endedAt, durationSec, error? } ] }

Call statuses

StatusTerminal?Meaning
queuednoCall accepted, not yet dialing
ringingnoDialing the destination
in_progressnoCall is live
completedyesCall finished normally
no_answeryesDestination did not pick up
voicemailyesReached voicemail
declinedyesCall was rejected
failedyesTechnical failure

Place your first call

  • Configure your MCP client as above.
  • Ask your assistant: "Place a call to +14155550123 with the objective: confirm the meeting time for tomorrow at 2pm."
  • The assistant calls place_call and gets back a callId.
  • Ask: "Check on call <callId> -- did it complete?"
  • The assistant calls get_call and returns the status, summary, and any extracted fields.

Safety

Outbound destinations are screened server-side (premium-rate, satellite, and other high-risk routes are blocked), calls carry an AI disclosure when asked, and the call-placing tools are annotated openWorldHint: true so clients ask for confirmation before dialing. Details: https://voxplo.ai/security

Development

Run tests:

node --test

Smoke test (with dummy key, should print "ready on stdio" to stderr):

VOXPLO_API_KEY=bys_ak_test node src/server.js

Keywords

voice

FAQs

Package last updated on 01 Jul 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts