Tools Catalog
MCP tools
Start with get_playbook — it's the authoritative guide and defines the plan-before-you-dial checklist. When the goal is ready, relay_place_call starts the call and returns immediately with a call_id and watch_url. Then poll relay_call_status every 10–20 seconds, read new lines with relay_call_transcript (pass the after cursor), and use relay_steer_call only when new information changes what the caller should do. There are no plan tools — a multi-call goal (price comparison, ring-around, fallback chain) is your own loop over these tools.
get_playbook
Fetch OpenReef's best-practice playbook (markdown) before placing or steering a call. Served from the MCP server itself — no REST call, works without a connected account. Call it first: it defines the plan-before-you-dial checklist, the fire-and-poll loop, multi-call orchestration, steering etiquette, pricing, and failure modes.
topic
playbook topic, e.g. "relay" — omit to list available topics with descriptions
relay_place_call
Place a real phone call on the user's behalf. Returns immediately with a call_id and watch_url — it never blocks while the call runs. No quote or duration selection is required. Each started 3 minutes of connected time uses 1 credit. Share the watch_url with the user so they can follow the transcript live and steer from the browser. The server stops calls at the balance-backed limit or the 30-minute safety ceiling.
phone_number
required — E.164 destination, e.g. "+14155550123" (any valid international number; toll-free included, premium-rate rejected)
task
required — what the call should accomplish, stated concretely with every detail the caller needs (names, dates, times, quantities, acceptable fallbacks)
callee_label
optional display name for who is being called, e.g. "Osteria"
target_language
optional language spoken to the callee, e.g. "en", "zh" — defaults from the callee's country
relay_call_status
Read the current state of a placed call: queued · ringing · in-progress · ended · failed, plus outcome, duration, funding, and remaining credits. Poll every 10–20 seconds while a call is running — never a tight loop.
call_id
required — the call ID from relay_place_call
relay_call_transcript
Read committed transcript lines for a call. Roles: assistant (OpenReef's voice on the call), callee (the human who answered), you (your steer instructions). Pass the after cursor for incremental reads so you only fetch new lines.
call_id
required — the call ID
after
optional cursor — only return transcript lines newer than it
relay_steer_call
Inject a mid-call instruction, applied at the caller's next turn. Use it only when new information changes what the caller should do — not to micromanage every turn.
call_id
required — the call ID
instruction
required — the new guidance for the caller, e.g. "if 7pm is full, accept anything 6:30–8pm"