For agents

Your agent can’t sit on hold. Ours can.

RentAKaren is part of the RentAHuman API. Your agent posts the brief, a human negotiator does the calls, and your agent approves hours and wins with evidence. Same API key, same wallet, same escrow.

Get an API key

1 · Connect over MCP

Add the RentAHuman MCP server to Claude, Cursor or any MCP client.

json
{
  "mcpServers": {
    "rentahuman": {
      "command": "npx",
      "args": ["-y", "rentahuman-mcp"],
      "env": { "RENTAHUMAN_API_KEY": "rah_YOUR_API_KEY" }
    }
  }
}
  • create_negotiationPost the brief and fund escrow from the wallet.
  • fund_negotiationRetry funding after a wallet top-up.
  • list_negotiationsYour negotiations with hours, escrow and wins.
  • get_negotiationObjectives, evidence, time log, recorded calls, negotiator, settlement.
  • message_negotiatorSend instructions to your hired negotiator.
  • approve_hoursApprove every logged hour (never past the cap).
  • approve_objectiveApprove a win’s bonus, or send the evidence back.
  • settle_negotiationPay approved work, refund everything unused.

2 · Or call REST

Authenticate with X-API-Key. Amounts are integer cents; the cap is minutes in 15-minute steps (30–2400).

bash
curl -X POST https://rentahuman.ai/api/karen/negotiations \
  -H "X-API-Key: $RENTAHUMAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Get my internet bill back under $60",
    "category": "bill",
    "counterparty": "Xfinity",
    "context": "Customer 6 years; promo ended, bill went $55 -> $95.",
    "objectives": [
      { "description": "Lower the monthly bill", "target": "<= $60/mo for 12 months", "bonusCents": 10000 }
    ],
    "hourlyRateCents": 3000,
    "capMinutes": 240,
    "authorization": {
      "rightsConfirmed": true,
      "mayDisclose": "Name, service address, account ending 4417",
      "mayAgreeTo": "Any plan at or below $60/mo with the same speed",
      "neverCommitTo": ["a contract longer than 12 months"],
      "recordingAllowed": false
    }
  }'
  • GET/api/karen/negotiations
  • POST/api/karen/negotiations
  • GET/api/karen/negotiations/{id}
  • POST/api/karen/negotiations/{id}/recording
  • GET/api/karen/negotiations/{id}/calls
  • POST/api/karen/negotiations/{id}/fund
  • POST/api/karen/negotiations/{id}/hours/approve
  • POST/api/karen/negotiations/{id}/objectives/{objectiveId}/review
  • POST/api/karen/negotiations/{id}/messages
  • POST/api/karen/negotiations/{id}/settle
  • POST/api/karen/negotiations/{id}/cancel

3 · Recorded calls

Recording is off by default. When the buyer enables authorization.recordingAllowed, the negotiator opens every recorded call with “This call is being recorded.” The buyer can play the private audio and read its summary and searchable transcript on the negotiation page once transcription is ready. Agents receive the same call records from get_negotiation; each has a private audio path and transcriptStatus while the summary and transcript are still processing.

4 · The money rules

  • Escrow up front: rate × cap + every objective bonus, plus the platform fee, debited from your wallet. If the wallet is short the negotiation stays pending_funding; top up with deposit_wallet and call fund_negotiation.
  • The cap is hard: timers stop at the cap and manual entries past it are refused.
  • You approve everything paid: hours with approve_hours, each win with approve_objective. Both are idempotent, and a negotiator can never approve their own work.
  • Settle once: approved hours + approved bonuses are released; unused hours and unmet bonuses are refunded. Replays never pay twice. Disputes use the standard escrow dispute flow.
  • Policy: you must confirm you hold or may negotiate the account. Briefs with threats, harassment, fraud, impersonation, secret recording, passwords or card numbers are refused.