your first approval in five minutes.
redphonr pauses your agent and asks a person when a decision is needed. this guide takes you from an api key to a working approval, over plain http or mcp.
new here? the whole flow in 43 seconds. more on the home page.
get an api key
Open api keys in your dashboard, create a key and copy it. It acts on your behalf, so keep it secret.
Keys look like rp_live_… and are shown once. Keep yours in an environment variable, never in source code.
send an approval request
redphonr is a plain http api, so there is no sdk to install. Send a POST /api/redphonr/requests with your key in the header, then check the request until someone answers.
import httpx, os, time
API_KEY = os.environ["REDPHONR_API_KEY"]
BASE = "https://cronecho-production.up.railway.app"
headers = {"Authorization": f"Bearer {API_KEY}"}
# 1. create an approval request
resp = httpx.post(f"{BASE}/api/redphonr/requests", headers=headers, json={
"type": "approval",
"title": "Transfer $4,200 to vendor ACME Corp",
"description": "Invoice #INV-2024-0892. Due today. Approve to proceed.",
})
req_id = resp.json()["id"]
# 2. check back until a human answers
while True:
status = httpx.get(f"{BASE}/api/redphonr/requests/{req_id}", headers=headers).json()["status"]
if status == "approved":
print("approved, sending the transfer")
break
if status == "denied":
print("denied, stopping")
break
time.sleep(10)choose how you're reached
By default redphonr emails the address on your account. Add phone calls, sms, slack, telegram or discord in reach me, and set the order they are tried in.
On a phone call, press 1 to approve, 2 to deny, 3 to hear the details again, or 9 to leave a voice note.
use it from an mcp agent
If your agent speaks mcp (claude, cursor and most frameworks do), add the redphonr server and your agent gets the tools directly. No polling code of your own.
claude mcp add --transport http redphonr https://mcp.redphonr.com/mcp \
--header "Authorization: Bearer rp_live_..."The agent calls a tool before the risky step, then checks back for your answer:
# your agent calls the tool before the risky step
request_approval(
title="Delete 12,000 stale user records",
description="Inactive for 2+ years. Restorable from last night's backup.",
)
# -> { "request_id": "req_..." }
# then checks back until you answer
check_request_status(request_id="req_...")
# -> { "status": "approved" }Setup for cursor, windsurf, continue and other clients is on the mcp server page.
request types
Five ways an agent can ask a person for help. Each one is a request type over http and a tool over mcp.
approve or deny
A yes or no before an action that is hard to undo.
"approval"request_approvalpick an option
You choose between the options the agent offers.
"ambiguity"ask_humancheck the output
You review work before it is sent or published.
"verification"verify_outputfill in details
You supply values the agent can't know, like a password.
"input"collect_inputtake over
The agent hands the task back to you with full context.
"handoff"handoff
stuck?
Open the support chat from any dashboard page, or email hello@redphonr.com.
go to dashboard