Leash

A gate between AI agents and PayPal

Your AI refunds.
Hoard checks the books.

PayPal's agent tools let an AI refund a payment or accept a dispute in one call. None of them asks first. Leash does: before any money leaves, Hoard checks it against your PayPal records, not the email. You decide what may go out without you.

Connect your PayPal

Free. PayPal sandbox, no real money. Nothing to install.

Nope. That payment has an open PayPal case.

AI already answers the refunds

66%of support teams already run AI agentsSalesforce State of Service
~30%of support tickets are refunds or cancellationsZendesk CX Trends 2025
$5.13is what each $1 lost to fraud really costs U.S. retail and ecommerce merchantsLexisNexis True Cost of Fraud, 2026
43.8%of chargebacks are friendly fraud, by merchants' own estimate. Accept them all and that money is goneChargebacks911 Field Report, 2026

Every payment gets one of four answers

  1. GoA $12 refund for a regular, inside the limit you set. Sent.
  2. Wait 15 minGoes out in 15 minutes unless you hit undo.
  3. Ask youNew customer, $140. Your phone buzzes.
  4. NopeThey already filed a PayPal case. Refunding now pays twice.

Hoard never reads the email. A pushy message or a fake “I'm the owner” note changes nothing: it checks the order, the payment, the tracking and the PayPal case.

Under the hood

Any AI agentYour agentAny MCP client, or the agent built into Leash. Both go through the same gate.
LeashMCP proxy + gateReads the PayPal records, then answers Go, Wait 15 min, Ask you or Nope.
PayPal REST APIsPayPal sandboxThe refund or claim goes out with a PayPal-Request-Id, so a retry can't pay twice.
  1. Judged on PayPal records, not the emailThe gate reads the order, the capture, the tracking and the dispute as PayPal has them. What the customer or the agent writes is shown to you, never used as evidence.
  2. Trust grows one bucket at a timeEach kind of action keeps its own last 10 outcomes, split by facts like how long the customer has been with you, how much they were refunded before and whether the order shipped. When the Wilson lower bound passes 75%, it goes out with a 15-minute undo; past 90%, alone. Always inside your limits.
  3. Evolve edits the playbook, never the gateEvolve rewrites the agent's playbook and tests it on cases it has not seen. The gate's rules live outside the playbook, so learning can't loosen them.
  4. One line to plug inThe MCP proxy uses the same tool names as PayPal's MCP server, like create_refund and accept_dispute_claim. An agent that already uses them changes one URL.

The PayPal calls Leash makes

13 endpoints across 6 PayPal APIs, all in the sandbox.

Payments v2

  • POST /v2/payments/captures/{id}/refundsend a refund the gate let through

Disputes v1

  • GET /v1/customer/disputescheck new keys, watch for new cases
  • GET /v1/customer/disputes/{id}read a case before deciding
  • POST /v1/customer/disputes/{id}/accept-claimaccept a claim the gate let through
  • POST /v1/customer/disputes/{id}/provide-evidencefile evidence built from PayPal records
  • POST /v1/customer/disputes/{id}/provide-supporting-infosame, when PayPal asks for this instead
  • POST /v1/customer/disputes/{id}/adjudicatesandbox only: settle a demo case

Orders v2

  • GET /v2/checkout/orders/{id}order and its tracking
  • POST /v2/checkout/orders/{id}/trackadd tracking
  • POST /v2/checkout/ordersmake the demo shop's orders

Transaction Search v1

  • GET /v1/reporting/transactionsread your last 90 days at connect

Webhooks v1

  • POST /v1/notifications/verify-webhook-signaturecheck a dispute webhook really came from PayPal

OAuth 2.0

  • POST /v1/oauth2/tokenclient-credentials token

Already have an agent?

Point it at Leash instead of PayPal's MCP server. Same PayPal tools, same names. Every payment goes past Hoard first.

This is our hosted demo; create a key under Connect. Running your own Leash? Use its address and a key from it.

{
  "mcpServers": {
    "paypal-with-leash": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://leash-paypal.vercel.app/mcp/",
               "--header", "Authorization: Bearer <your Leash key>"]
    }
  }
}

You decide what goes out alone

A new shop starts at nothing: every payment waits for your tap. The agent still does the work. It checks the order, writes the reply and gets the refund ready.

When you're ready, let small refunds go out alone and set how much in mistakes you accept a month. Reach it, and everything asks you again.

Hoard asks where you are

Approve on Telegram or by email, with one tap. Routine refunds arrive as a checklist with each customer's words next to the amount, so you read them before you approve them together.

An email button opens the payment again first. Nothing moves from a link alone.

It learns from your no, not your money

When you keep turning down the same kind of refund, Evolve has the agent rewrite its own playbook, test it on practice cases it has never seen, and ask you before using it. Hoard's rules are not in the playbook, so learning can't loosen them.

A simulated month in safe start, 20 emails a day: Hoard asked about 15 times a day at first and 9 by the last ten days. $0 went out by mistake.

05101520Day 11: the agent learnsDay 1Day 10Day 20Day 30
Day 30: Hoard asked you 7 of 20 times
Times Hoard asked, per day
Day 114
Day 214
Day 315
Day 412
Day 518
Day 614
Day 715
Day 817
Day 915
Day 1018
Day 1111
Day 129
Day 1310
Day 149
Day 1511
Day 1610
Day 179
Day 188
Day 1910
Day 2011
Day 218
Day 2214
Day 238
Day 2410
Day 258
Day 268
Day 2713
Day 287
Day 2910
Day 307
Your settingAsks a day, first 10 days → last 10Sent by mistake in 30 days
Safe startNothing goes out alone15 → 9$0
A small allowanceUp to $40 alone, $50 of mistakes a month13 → 6$42
Trust onlyNo limit from the seller13 → 5$190

Simulation with the real gate and a keyword stand-in for the AI agent, so it shows how the parts work together, not what a given model does. Same emails in all three runs.

We tried to trick it

Support emails written to fool the agent: fake owners, double refunds, pushy PayPal cases. Same AI agent, with and without Leash, on cases it had never seen.

Read the full benchmark →
Without a gate
$189
refunded by mistake on average, $553 in the worst run
With Leash
$0
in every run

Set up in minutes, from your browser

Look around first

A demo shop with real PayPal sandbox orders, customer emails and a PayPal case. Opens in a few seconds.

Use your own PayPal

Make a PayPal sandbox app, tick one box, paste two keys. Leash reads your last 90 days and starts in safe start.

Connect your PayPal

Give your agent the keys.
Keep the leash.

Connect your PayPal