PlaceCall
Give your agent a voice to call US businesses for reservations, quotes and verifications, and get back the outcome plus a transcript.
- Source repo
- voygr-tech/placecall
- Stars
- ★ 104
- Last updated
- 2d ago
- License
- MIT
- Primary language
- Shell
- FA score
- 66/100 · Some gaps
At a glance
- How it runs
- 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
- 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.
- 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.
- 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.
- 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.
- Reschedule or cancel: a personal assistant tells ChatGPT to move a clinic appointment and keeps the transcript as a record.
- Venue shortlisting: with no number in hand, the agent first calls suggest_places to get reasoned candidates, then dials them.
- 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@placecallThen 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 placecallclaude.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/mcpTo install only the skill without the plugin (requires an API key):
git clone https://github.com/voygr-tech/placecall && cd placecall
./install.shGemini CLI and Hermes have their own install commands:
gemini extensions install https://github.com/voygr-tech/placecallhermes mcp add placecall --url https://api.voygr.tech/mcp/ --auth headerHow 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/meConstraints 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?
- 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.
- 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?
Why each dimension lost points
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.
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.
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.
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.
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.
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.
- 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.
FAQ
What does it actually cost?
Do I need my own phone number or telephony provider?
How do I follow a call after placing it?
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?
Where does my data go and how long is it kept?
disclosure and record_call fields can change or switch off.