SafePayevery payment, sealed
session … PayPal sandbox
Layers Nemotron reasoning: on Tavily web verify: on Agent Toolkit gate: on state: durable (Supabase) Telegram approvals: on operator actions: open (demo)
Proof

Don't trust the screenshot. Ask PayPal.

Every payout batch, order, authorization and capture below was created in the PayPal sandbox by SafePay, read from the audit chain itself. "Ask PayPal" re-reads each one from PayPal's own API, so the status you see is PayPal's answer, not ours.

PayPal objects named in the chain

loading…

Every PayPal API SafePay calls

PayPal surfaceWhat SafePay does with itCode
OAuth 2.0 client credentialsOne token per instance, cached, sandbox host pinnedpaypal_client.py
Payouts API (create, get batch)Releases an ALLOW decision with an idempotency key and the seal in the note; settlement re-reads the batchsend_payout, get_payout
Orders v2, intent AUTHORIZE + Payments v2 (capture, void)Mandates: authorize a judged ceiling, capture each checked draw with its own seal, void the restmandate.py
PayPal Agent Toolkit (create_order)Runs only after the guardrail says ALLOWagent_toolkit.py
PayPal MCP server (@paypal/mcp, 28 tools)Proxied; create_order, pay_order, create_refund, accept_dispute_claim and create_subscription are judged first, with amounts read back from get_order, get_dispute and the plan pricemcp_proxy.py
Webhooks + verify-webhook-signaturePayout events verified with PayPal, state re-read from the API; a payout SafePay never released is chained as "outside"/api/paypal/webhook
Transaction SearchReconciliation: any debit without a SafePay decision is flaggedreconcile