PlaceCall

Give your agent a voice to call US businesses for reservations, quotes and verifications, and get back the outcome plus a transcript.

Stars
★ 104
Last updated
2d ago
License
MIT
Primary language
Shell

At a glance

How it runs
Agent plugin / skillMCP serverHosted service
Works with
Portable with changesChatGPT · Codex · Claude Code · Claude.aiOpenAI API · Claude API (Partial support)
Cost
Free tier plus a paid hosted plan
Setup effort
Low · running in minutes
You'll need
PlaceCall account or API keycurlMCP client (for MCP routes)Shell / CLINetwork accessLocal filesystemMCP Server
Typical use
Restaurant booking: a traveler asks Claude Code to call several Chicago restaurants in turn to check for a 4-person table on Saturday at 8pm and return the confirmations.
Not a fit if
  • Users who need to call numbers outside the US
  • Teams that need a fully offline, no-real-phone-call workflow
  • Anyone who wants to self-host the calling infrastructure
Source review
66/100 · Some gaps

What does this agent do, and when should you use it?

PlaceCall is a hosted outbound-calling service that plugs real US telephone calls into an AI agent. You POST a target number and a plain-English brief to https://api.voygr.tech/calls, and PlaceCall dials, navigates IVRs and hold queues, and talks to the business. Every call returns one of 17 verified outcome types together with a full transcript and recording; if the call agent needs an answer mid-call, it raises a question you reply to through POST /calls/{id}/answer. It ships as Claude Code, Codex and Cursor plugins (a skill plus the PlaceCall MCP server at https://api.voygr.tech/mcp), a Gemini CLI extension, claude.ai and ChatGPT connectors, a Hermes MCP entry, and a plain HTTP path any shell-capable agent can drive with curl; there is also an Apify Store Actor for list-based calling. When you have no number, POST /v1/places/suggest recommends candidate venues from a natural-language description, explains the picks and writes the call brief. All calls run in the vendor's cloud — nothing is self-hosted — and every request goes over HTTPS to the single host api.voygr.tech.

Given a US phone number and a brief, PlaceCall places the call, handles IVRs and hold time, and produces an outcome_type, a full transcript and a recording. During a call it can surface questions, which the agent answers via POST /calls/{id}/answer. Follow-up endpoints are GET /calls/{id}, GET /calls/{id}/events (polled while running), POST /calls/{id}/cancel and GET /calls/{id}/recording. When there is no number, POST /v1/places/suggest takes a natural-language request such as "a romantic restaurant in Chicago, Saturday 8pm", returns candidate places with the reasoning and drafts the brief. The MCP server at https://api.voygr.tech/mcp exposes four tools — suggest_places, place_call, get_call_result and answer_question — and is listed in the official MCP Registry as io.github.voygr-tech/placecall. Account endpoints include GET /users/me, GET /v1/usage, GET /checkout/packs and PUT /users/me/limits. Outbound POST /calls requests also carry an Idempotency-Key plus X-Client-Surface and X-Client-Agent headers, which never affect auth or billing.

  1. Restaurant booking: a traveler asks Claude Code to call several Chicago restaurants in turn to check for a 4-person table on Saturday at 8pm and return the confirmations.
  2. Bulk quotes: a small renovation owner uploads a list of plumbers to the Apify Actor and has PlaceCall ask each one for a quote and the earliest appointment.
  3. Inventory checks: an e-commerce operator has the agent phone a supplier to confirm stock levels and lead times instead of relying on a web listing.
  4. Reschedule or cancel: a personal assistant tells ChatGPT to move a clinic appointment and keeps the transcript as a record.
  5. Venue shortlisting: with no number in hand, the agent first calls suggest_places to get reasoned candidates, then dials them.
  6. Agent product building: a developer wires https://api.voygr.tech/mcp into Cursor, Windsurf or MCP Inspector to add outbound calling to their own agent workflow.

How do you install or deploy this agent?

The fast path is the Claude Code plugin, which updates itself from this repo and needs no shell or git:

/plugin marketplace add voygr-tech/placecall
/plugin install placecall@placecall

Then run /mcp, pick the placecall server and sign in through the browser; the first sign-in creates a PlaceCall account with free credits, so there is no key to copy. Codex uses the same plugin:

codex plugin marketplace add voygr-tech/placecall
codex plugin add placecall@placecall
codex mcp login placecall

claude.ai and ChatGPT connect through a custom MCP connector at https://api.voygr.tech/mcp with OAuth. Any MCP client can be added manually:

claude mcp add --transport http --scope user placecall https://api.voygr.tech/mcp

To install only the skill without the plugin (requires an API key):

git clone https://github.com/voygr-tech/placecall && cd placecall
./install.sh

Gemini CLI and Hermes have their own install commands:

gemini extensions install https://github.com/voygr-tech/placecall
hermes mcp add placecall --url https://api.voygr.tech/mcp/ --auth header

How do you use this agent?

Get an API key first (needed for the skill-only paths and raw HTTP calls): open https://api.voygr.tech/checkout?src=gh-repo and click Get free API key; it arrives by email. Then export it:

export PLACECALL_API_KEY="<your key>"

A minimal call follows. Put the whole job in the brief — what to ask, who it's for, dates, party size, callback number and the outcome you want — because the bot reads only the brief:

curl -s -X POST https://api.voygr.tech/calls \
  -H "X-API-Key: $PLACECALL_API_KEY" -H "Content-Type: application/json" \
  -H "X-Client-Surface: gh-repo" \
  -H "X-Client-Agent: ${CLAUDECODE:+claude-code}${CURSOR_AGENT:+cursor}${CODEX_SANDBOX:+codex}${GEMINI_CLI:+gemini-cli}" \
  -d '{"target_phone":"+1XXXXXXXXXX","brief":"Call this restaurant and ask what time the kitchen closes tonight.","language":"en"}'

Poll until outcome_type is non-null and transcript_status reads final:

curl -s -H "X-API-Key: $PLACECALL_API_KEY" https://api.voygr.tech/calls/{id}

Check the key and quota (never prints the key):

curl -s -H "X-API-Key: $PLACECALL_API_KEY" https://api.voygr.tech/users/me

Constraints to keep in mind: only call numbers you are authorized to call, US destinations only (except IN, LA, MN, MT, NE), and by default each call opens with a recording notice.

What are this agent's strengths and limitations?

Pros
  • Broad integration surface: plugins, MCP connectors, a Gemini CLI extension, Hermes, raw HTTP and an Apify Actor cover most mainstream agent hosts.
  • Verifiable results: each call returns one of 17 verified outcomes with a full transcript and recording, and failures come back with a reason such as busy line, voicemail or wrong number.
  • No number needed up front: suggest_places recommends venues from a plain description, explains the picks and writes the brief for you.
  • Low activation cost: browser OAuth sign-in creates an account with free credits, and the first 250 calls (2,500 credits) are free.
  • Calls that reach nothing are free, as is cancelling within 30 seconds of the callee answering.
Limitations
  • Hosted and closed: calls execute in voygr.tech's cloud with no self-hosted option and no way to swap the telephony backend.
  • Hard geographic limit: US destinations only, excluding IN, LA, MN, MT and NE.
  • Multilingual is best-effort: 13 language codes are accepted but English is the only reliable one.
  • Credit holds exceed charges: 30 credits held per call and 15 per suggestion, so a 402 can occur while your balance looks sufficient.
  • Results need polling: after completed, outcome and transcript can lag, and recording checks can still append transcript marks.
  • Some options still need a key: disabling recording, changing the opening notice, cancelling and listing calls are not covered by the plugin/connector sign-in.

How does this agent compare with similar options?

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
PlaceCall This agent 66 · Some gaps Agent plugin / skillFreemium ★ 104 2d ago Shell ChatGPT · Codex · Claude Code · Claude.ai
Dokploy MCP Server 65 · Some gaps MCP serverFree ★ 408 29d ago TypeScript Claude Code · Claude.ai
Agent Swarm 47 · Major gaps Agent plugin / skillFree + model costs ★ 929 today TypeScript Codex · Claude Code
Open Browser Use 36 · Major gaps CLIFree ★ 390 8d ago JavaScript Codex · Claude Code

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Some gaps
66/ 100 5-point scale 3.3 / 5
Trust 17/29
Reliability 8/14
Adaptability 15/18
Convention 13/18
Effectiveness 9/13
Verifiability 4/8
Why each dimension lost points
Trust17 / 29 · 2.9/5

README and SECURITY.md name the single egress host api.voygr.tech, list every endpoint and its payload, state the key travels only in X-API-Key, describe an Idempotency-Key against double dialing, and disclose 90-day recording retention, so data-flow transparency is thorough (3). But the repo is instructions and manifests only; dialing, recording and IVR handling live in a remote service, so least privilege and sensitive-data handling (call recordings, dialed numbers, names/dates in the brief) cannot be verified locally, hence 2 each. User confirmation rests on the README claim that the MCP place_call tool always confirms first, with no in-repo code to back it, so 2. External effects are constrained (only call numbers you are authorized to call, default recording notice, free cancel within 30s) but a call rings a real phone and incurs cost, and rollback is limited to canceling an in-flight call with no way to undo a completed one, so 1. Dependency security cannot be assessed: no lockfile, dependency manifest or SBOM, only a remote API, so 1. Source attribution has MIT copyright and a security contact, but the publisher is unverified and the 'ex-Google Maps and Search developers' line is an unsupported marketing claim, so 1.

Reliability8 / 14 · 2.9/5

The README is largely self-consistent (install paths, key variable, endpoints, billing rules agree), but the timeline is suspect: a 2026-08 rename and 2026 copyright coexist with 'Installed this before August 2026', and the Gemini CLI section is slightly tense about where the key is stored versus what curl reads, so self_consistency is 2. Dependency availability depends on external tooling (Claude Code/Codex/Cursor/Gemini CLI marketplaces, $skill-installer, hermes), with explicit caveats that older Codex lacks the plugin command and Hermes' scanner rejects the skill route, and no version constraints, so 1. Failure messages are fairly specific: 17 outcomes, failure reasons (dropped, busy, voicemail, wrong number), 402 false negatives from holds, transcript_status polling, but all are documentation rather than code, so 2.

Adaptability15 / 18 · 4.2/5

Audience and scenario coverage is broad: Claude Code, Cowork, claude.ai, ChatGPT, any MCP client, Codex, Hermes, Gemini CLI, Cursor, plain shell, Apify, so 3. Capability boundaries are stated (US only excluding IN/LA/MN/MT/NE, 13 languages with non-English best-effort, auto does not switch mid-call, MCP four tools versus API-only options), but the '17 verified outcomes' are never enumerated, so 2. Trigger precision names /placecall:placecall and $placecall and warns to remove old callwright and third-party phone skills to avoid routing ambiguity, but 'Claude reaches for it on its own' is an assertion, so 2. Environment fit handles desktop apps without a terminal, sandbox allowlists, strictAllowlist blocking, and key file permissions in detail, so 3.

Convention13 / 18 · 3.6/5

Information architecture is clear, sectioned by platform with cross-links, so 3. Install notes are extremely detailed with commands, scope choice, restart requirements and migration steps, so 3. Naming stability is weak: renamed from Callwright, skill folder moved from skills/call to skills/placecall, env var renamed; migration notes exist but the history is visibly broken, so 2. Examples and FAQ include curl samples and Q&A-style paragraphs but no standalone FAQ, no response payload examples and no enumeration of the 17 outcomes, so 2. Known limitations exist (region, language, billing holds, retention, Hermes incompatibility) but are scattered and lack rate/concurrency limits, so 2. License is full MIT text, so 3. Versioning and changelog are absent, only scattered mentions of 6.1.0 and the 2026-08 rename, so 1. Maintenance responsibility is only [email protected] and a security channel, with no maintainers, SLA or deprecation policy, and the publisher is unverified, so 1.

Effectiveness9 / 13 · 3.5/5

Output usability promises outcome, transcript, recording and failure reason, which downstream agents can use, but there is no response schema or sample payload in the repo and the docs require an external login, so 2. Marginal value: wrapping the phone as 'the last API' for agents is genuinely useful, but the core capability is entirely in a closed remote service and the repo is a thin wrapper plus docs, so 2. Cost benefit has transparent pricing (250 free calls, 10 credits per call, 30-credit hold, free failures, Apify $0.10 per call), but hold-induced 402s and a shared credit pool add friction, so 2.

Verifiability4 / 8 · 2.5/5

claim_traceability is weak: the 17 outcomes, always-confirm behavior, 90-day retention and ex-Google developer claim have no in-repo evidence or externally checkable link, so 1. cross_source_corroboration is limited to README and SECURITY.md echoing each other, with no code, tests, schema or third party, so 1. fact_inference_separation is fair: the docs distinguish 'on our side' from client behavior and flag best-effort claims, but marketing copy and fact are interleaved, so 2.

Risks and how to mitigate them
  • The repo is instructions and manifests only; dialing, recording and IVR handling live in a closed remote service, so least privilege, actual sensitive-data handling and result correctness cannot be statically verified.
  • Key claims ('17 verified outcomes', 'always confirms first', '90-day retention', 'ex-Google developers') have no in-repo evidence and should be treated as unverified assertions.
  • A call rings a real phone and incurs cost; rollback is limited to canceling an in-flight call, and a completed call cannot be undone.
  • No dependency manifest, lockfile or SBOM, so supply-chain security cannot be assessed.
  • The project was renamed (Callwright to PlaceCall) with folder and env-var changes; stale installs can cause routing ambiguity and must be cleaned per the migration notes.
  • Publisher identity is unverified by FollowAgents; maintenance responsibility and update path are only a support email.
  • Billing holds (30 credits) can return 402 while the balance looks sufficient, and the free tier is a shared credit pool.
  • US numbers only, excluding IN/LA/MN/MT/NE; non-English is best-effort.
Evidence confidence: Low Reviewed Oct 22, 2026 Reviewed revision be42000acfc7
Review evidence README.mdLICENSESECURITY.md
See the full review method →

FAQ

What does it actually cost?
The first 250 calls are free (2,500 credits). After that a call that obtains something — an answer, a refusal or a booking — costs 10 credits; calls that obtain nothing are free, as is cancelling within 30 seconds of the callee answering (later cancels are charged). A places/suggest that returns cards costs 5 credits. Each call holds 30 credits while running and each suggestion holds 15, so a 402 can appear while your balance looks sufficient. Top-ups are self-serve via Stripe on the checkout page.
Do I need my own phone number or telephony provider?
No. You supply the target US business number (or let suggest_places find one); dialing, IVR navigation and hold are handled on PlaceCall's side. The trade-off is that this telephony stack cannot be self-hosted or replaced.
How do I follow a call after placing it?
Poll GET /calls/{id}. Once status is completed, outcome_type and the transcript may still fill in a moment later, and recording checks can add marks for another minute or two; the transcript is complete when transcript_status reads final. If the call agent needs input mid-call, it raises a question you answer with POST /calls/{id}/answer.
Will it dial without my approval?
The README states that under the MCP path place_call always confirms first, and POST /calls sends an Idempotency-Key so a retry cannot dial twice. Even so, every call rings a real phone, so only call numbers you are authorized to call.
Where does my data go and how long is it kept?
Every request goes over HTTPS to api.voygr.tech and nowhere else; X-Client-Surface and X-Client-Agent only label the surface and never affect auth or billing. Recordings and transcripts are kept for 90 days. By default each call opens with a recording notice, which the disclosure and record_call fields can change or switch off.
View on GitHub ↗ Install ↓

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents