Jasper — the parrot that makes calls

Let Claude Code
use your phone to make calls.

A tiny USB board pairs to your phone as a Bluetooth headset and bridges the call's audio through your browser — so Claude Code — or any agent that speaks MCP — can place and answer real calls directly, on the number you already own. No VoIP, no carrier deal, no app — just an end-to-end encrypted connection over your secured network.

Chrome + a USB board + your phone · read-only by default · you hold the guardrails
How a call flowsyour phone, run from Parrot Cloud
Parrot Cloud
Console Claude Code Other agents
Parrot Cloud
call engine
TLS web
Your computer
Parrot Bridge
app in Chrome
Parrot Device
ESP32
Bluetooth
Phone line
Your phone
SIM · VoIP
Any number
shops · people
Parrot Cloud Assistants run calls on their own — MCP adds agent-triggered outbound. Read-only by default. LIVE · realtime voice · ~300ms
Giving your AI agent those abilities
It makes calls. It answers calls.

Outbound or inbound — the same bridge, assistants, and guardrails work both directions.

Outbound

Parrot places the call

Claude Code dials any number on your own SIM — presses DTMF keys to work through IVR menus, waits on hold, talks to a real human, and hands back a structured answer.

Claude Code calls place_call() over MCP · sends real DTMF tones
dial outpress DTMFnavigate IVRask & extract
Inbound

Parrot answers the call

Calls to your number get picked up and screened by the agent — it answers questions, takes a message, or rings you through when it matters.

auto-answerscreenhandle or hand off

Real calls, not VoIP

Calls ride your phone's own SIM and carrier over Bluetooth HFP. Any number that can be dialed can be reached — IVR menus, hold music, real humans.

your number · your carrier · no Twilio

You hold the guardrails

Read-only by default. Blocked number ranges, never-say lists, call caps, and per-agent scopes are all enforced server-side — never trusted to the caller.

policy enforced at the bridge
How it works

A headphone, designed for AI.

To your phone it's an ordinary Bluetooth headset. To any AI agent, it's a real phone line — bridged through your browser.

Virtual Bluetooth

One pairing, and your SIM is on tap

To your phone, the USB board looks like an ordinary Bluetooth headset — so it hands over the call's mic and speaker. Parrot carries that audio through your browser to Parrot Cloud, where it becomes a realtime voice that can speak and hear on both inbound and outbound calls.

  • Pair once. The phone remembers the board like any headset.
  • No SIM swap, no app. Your existing number places the call.
  • Hang up anytime. Close the tab and the audio link drops instantly.
Get started

Live in four steps, all in the browser

No app, no software to install. A USB board, your phone, and Chrome is the whole setup.

STEP 01

Flash from the cloud

Plug the ESP32 board into your laptop. Click Flash and Parrot streams the latest bridge firmware straight from the cloud onto the board — in the browser, no toolchain or IDE.

~30s · cloud → board in Chrome
Where do I get the board?
STEP 02

Connect over Web Serial

Hit Connect a board and pick the port in Chrome's Web Serial prompt. The tab becomes your bridge host — keep it open and the call's audio flows through it.

one click · Web Serial
STEP 03

Pair your phone

On your phone's Bluetooth, tap the board — it shows up as a headset. One pairing links your SIM, and the call's audio, to the bridge.

virtual BT headset
STEP 04

Use Parrot Cloud

In the Parrot Cloud console, define assistants and guardrails — it can already answer & place calls. Optionally mint an MCP key so your agents can trigger outbound calls too.

assistants · guardrails · MCP key
Configure once

Define the call. Call it by name.

Open either tab to see what a assistant is and what MCP is — how you define them, and why each one matters.

Assistant MCP scn_instock
What's an assistant?A assistant is a reusable call recipe — the goal, the questions, what to extract, the voice, and the guardrails. Define it once in the console; Parrot follows it on every call and hands back a structured result. Why you need it: consistent, on-policy calls without re-explaining the task each time.
Objective · the prompt the agent follows
Call the store and find out whether {{item}} is in stock today and its price. Don't place an order or share personal details. End politely once you have the answer.
Opening line
“Hi! Quick question — do you currently have the {{item}} in stock?”
Extract schema · returned as JSON
in_stockboolean
pricenumber
limit_per_customerinteger?
Voice & guardrail
Ava
warm · US English
read-only enforced
Sample result · the structured JSON your call returns
{ "in_stock": true, "price": 499.99, "limit_per_customer": 2, "dtmf_path": "2 → 1", "answered_by": "human", "duration_sec": 74 }
What's MCP?MCP (Model Context Protocol) is the standard way AI agents connect to tools. Point any MCP client at your endpoint and it gets one place_call tool — so an agent can trigger a call by assistant name, on demand. Why you need it: only for agent-initiated outbound — inbound & scheduled calls run from assistants alone, no MCP required.
Remote MCP endpoint
https://mcp.jasper.ai/v1copy
Your agent calls the assistant by name
// The same assistant, exposed as one MCP tool. call place_call({ number: "+14155550151", assistant: "scn_instock", variables: { item: "Switch 2" } }) // → { call_id, status: "dialing" } { in_stock: true, price: 499.99, limit: 2 }
Built for Claude Code

Let Claude Code use your phone
to make and receive calls.

It's a standard remote MCP server with one tool — place_call. Add it to Claude Code and your agent dials real numbers on the number you already own, works the call, and hands back a structured result.

claude code — parrot mcp: parrot
>call the GameStop on Market St and ask if the PS5 Pro is in stock
I'll find the store's number, make a quick plan, then place the call on your line.
web_search("GameStop Market St SF phone")
⎿ GameStop · 2675 Market St · +1 415 ••• 0151 · IVR: press 2 → 1 for sales
Here's the plan:
1. Dial the store on your SIM
2. Press 2 → 1 through the IVR to reach sales
3. Ask: PS5 Pro in stock? price? limit per customer?
4. Return a structured result
place_call(assistant: "in_stock_check", to: "+1 415 ••• 0151")
mcp · parrot · dialing on your SIM · pressed 2 → 1 (DTMF)
LIVE TRANSCRIPT · call_8f2a · streaming over MCP
00:11parrotHi — do you have the PS5 Pro in stock?
00:15storeLet me check… yeah, we've got a few.
00:22parrotGreat — what's the price, and any limit?
00:25store$499.99, limit two per customer.
connected to a human · 74s · call ended
{
  "in_stock": true,
  "price": 499.99,
  "limit_per_customer": 2,
  "answered_by": "human"
}
Yes — the PS5 Pro is in stock at $499.99, limit 2 per customer. Want me to call back and have them hold one?
Add to Claude Code $ claude mcp add parrot https://mcp.parrot.ai/sse