Skip to main content
Glama

voygr-mcp

MCP server for VOYGR place verification and outbound venue calls. Proper stdio MCP: tools, resources, prompts, progress notifications, and elicitation.

Demo Video

Install

cd voygr-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

Requires a VOYGR API key at process start:

export VOYGR_API_KEY=your_key
# or: voygr login your_key

Related MCP server: vonage-mcp-server-api-bindings

Dry-run (default)

VOYGR_DRY_RUN defaults to 1. Calls only are mocked (magic numbers, scripted events, canned transcripts). verify_place / verify_places / check_credits always hit the live VOYGR API via the official voygr Python client.

Magic number

Outcome

+1-555-0100

success_booked

+1-555-0101

failed_voicemail

+1-555-0102

mid-call ask_user then success_booked

+1-555-0103

failed_short_hangup

+1-555-0104

409 concurrency cap

+1-555-0105

402 insufficient credits

Live dialing:

export VOYGR_DRY_RUN=0
docker compose up -d redis   # call state / event cursors
export VOYGR_REDIS_URL=redis://localhost:6379/0
voygr-mcp

Claude Desktop (stdio)

  1. Put VOYGR_API_KEY=... in the project .env (loaded automatically; Claude’s cwd does not matter).

  2. Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) and merge:

{
  "mcpServers": {
    "voygr": {
      "command": "/Users/vaarunsinha/voygr-mcp/scripts/claude-desktop-mcp.sh",
      "env": {
        "VOYGR_DRY_RUN": "1"
      }
    }
  }
}
  1. Fully quit and reopen Claude Desktop. Confirm under + → Connectors (or Developer settings) that voygr is connected and tools like verify_place appear.

Or point command at .venv/bin/voygr-mcp directly — the server also loads the package-root .env on start.

Tools

Tool

Role

verify_place

Single POI → agent-safe verdict (not raw open/closed)

verify_places

Batch + normalized cache

call_place

Structured call (inquiry / info_gathering); consent + slots elicited

get_call

Resume by call handle

check_credits

Usage / credits

Consent is never a tool parameter — it is always an elicitation to the human.

Resources / prompt

  • voygr://call/{id}/transcript — 7-day retention noted in metadata

  • voygr://call/{id}/events

  • Prompt: verify_before_recommending

Honesty (demo / video)

When recording the 60s demo:

  • Refusal arm (verify_places dropping closed/not_found) should be live API.

  • Mid-call handoff segment should be dry-run (+1-555-0102) and labeled on screen.

  • List which segments used dry-run in any public write-up.

Tests

pytest

Tests use ScriptedElicitationProvider (no human). No skip-consent env var ships in the server.

Stack

Python, official mcp SDK (stdio), voygr PyPI client, httpx (calls API), Redis (live call state), Docker Compose, pytest. No FastAPI in v1.

Reference checkout of upstream CLI (not vendored): ../voygr-dev-tools.

Available Tools

7 tools
answer_mid_callA

Relay the human's answer to a mid-call venue question. When call_place/approve_call returns status=awaiting_mid_call_answer, show question to the human in chat, then call this with answer_token + their answer. This is the mid-call handoff — do not invent the answer or the token.

Inputs: answer (required), answer_token (required). Returns: object

approve_callA

Approve a pending call after the human said yes in chat. Pass the consent_token returned by call_place when error=consent_required. Only works with a server-issued token — do not invent one.

Inputs: consent_token (required). Returns: object

call_placeA

Place a structured outbound VOYGR call to a venue phone. Intents: inquiry | info_gathering. Language: en only. For inquiry, slots MUST include question (a free-text ask for the venue). party_size/date/time alone are not enough. Consent is elicited when the client supports it; otherwise the tool returns consent_required + consent_token — ask the human in chat, then call approve_call. If the venue asks something mid-call, the tool may return awaiting_mid_call_answer — ask the human that question in chat, then answer_mid_call. No confirm boolean. In dry-run, inquiry calls simulate a live venue including mid-call questions.

Inputs: phone (required), intent (required), kind, slots, +2 more. Returns: object

check_creditsA

Report VOYGR usage/credits so the agent can explain spend and holds.

Inputs: no named parameters. Returns: object

get_callA

Get status/outcome for a call handle returned by call_place (async recovery path).

Inputs: call_id (required). Returns: object

verify_placeA

Verify whether a named place at an address exists and is operating. Returns verdict/recommend — never trust raw open_closed alone. Costs 1 credit.

Inputs: name (required), address (required). Returns: object

verify_placesA

Verify multiple places. Input a list of {name, address}. Deduped/cached on normalized name+address. Use before recommending options.

Inputs: places (required). Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.4/5.0

    Scored across 7 tools

    Disambiguation4/5

    Each tool has a distinct role: verification, credit check, call placement, consent, mid-call answer, and status retrieval. The only potential overlap is verify_place vs verify_places, but the singular/plural distinction is clearly explained in the descriptions.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern in snake_case (verify_place, check_credits, call_place, approve_call, answer_mid_call, get_call), with no naming style mixing.

    Tool Count5/5

    Seven tools is well-scoped for a place-verification and calling service. Each tool covers a distinct step in the workflow with no redundancy.

    Completeness4/5

    The surface covers the full workflow: verify places, place calls, handle consent, relay mid-call answers, and retrieve status. Minor gaps like canceling a call or listing history are not critical for the core purpose.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers