Live prototype, Stripe test mode

Let agents in.
Keep the flood out.

Bond is a refundable-deposit layer for AI agents. Your agents get through bonded doors with one MCP tool. Your inboxes, forms and endpoints put a price on abuse, with no accounts and no CAPTCHAs. Honest use is refunded.

$ claude mcp add --transport http bond https://bond.elsisi.workers.dev/mcp
The problem

Free identities broke every gate.

Every defence we have assumes a human, or an identity that is expensive to make. Agents create both for free, at any volume. Inboxes, forms, issue trackers and public tools are open sinks.

CAPTCHAs

Models solve them. They now mostly stop the humans.

Rate limits and API keys

An agent mints a new key or account for every batch. The limit follows the identity, and identities are free.

Blocklists and reputation

New sender, new domain, clean slate. You are always one step behind.

The one thing an agent cannot fake is money at risk. A deposit is proof of intent: refunded if the work is genuine, kept if it is abuse. Honest agents pay almost nothing. Abusers pay per attempt.
How to use it

Two sides. One deposit.

Install it on the agents that send. Put it in front of the things that receive. Both work today in test mode.

Your agents send

  1. Add the MCP server to Claude Code, Cursor or any MCP client.
  2. The agent calls bond_terms, then bond_send. The 402 and the deposit are handled for it.
  3. The message is delivered. The hold is released unless it was junk.
# one line
claude mcp add --transport http bond \
  https://bond.elsisi.workers.dev/mcp

# the agent now has
bond_send(alias, from, subject, text)
bond_terms(alias)  # base bond + release rate
  • Get through bonded doors other agents are blocked at
  • Spend is a hold that comes back when work is genuine
  • Check a recipient's release rate before paying
Read the protocol

Your things receive

  1. Claim a gate in 30 seconds. You get a bonded link and an API address.
  2. Point contact forms, issue templates or agent traffic at it.
  3. Paid messages land in Slack, Discord or your webhook, or in the built-in inbox.
  4. Decide in one click, or write rules and let an AI triage agent recommend.
# any HTTP client, no accounts
POST /api/send/yourname
<- 402 { "amount_cents": 100, "pay_url": ... }

# bonded message arrives in Slack:
[$1.00 bond] Question about your API
Worth it: https://.../d/eyJ0...
Junk:     https://.../d/eyJ0...
  • A price on abuse, with no CAPTCHA and no blocklist
  • Junk pays you. Good senders are refunded
  • Every gate shows its release rate to senders
Claim a gate
Examples

Where it earns its keep.

Four places where agents already outnumber humans and nothing prices the traffic.

Outreach agentsLive

An SDR agent contacting 300 prospects

Prospects who use Bond require a deposit. The agent, given the MCP tool, posts about $1 per genuine, specific message and it comes back when read. Templated blasts are priced higher, so the agent learns to write for the person.

bond_send(alias="founder-x", subject="Your API pricing", ...) -> delivered, deposit $1.00 held
Open-source maintainersLive

Stopping AI-generated issues and PRs

Link the bonded form from your CONTRIBUTING file and send paid reports to Slack. Real contributors get the deposit back on a merged or valid report. Drive-by bot reports cost them.

CONTRIBUTING.md: Security or feature request? bond.elsisi.workers.dev/to/your-repo
MCP servers and public APIsSoon

A 402 in front of an open tool

A public tool gets hammered by anonymous agents. Front it with a bonded gate: callers stake a deposit for a session, abuse forfeits it. Drop-in middleware for Cloudflare Workers.

app.use(bondGate({ deposit: 200, session: "1h" })) // unknown callers get 402 + terms
Hiring and applicationsSoon

AI apply-bots flooding job posts

Applicants place a small refundable deposit; anyone a human or screening agent reviews gets it back. Mass auto-applications stop being free.

POST /apply -> 402 $3.00 deposit review passed -> released
Tested for real

A hosted agent paid a bond without help.

We pointed a Brainbase-hosted agent at Bond with one instruction: read the protocol and reach the inbox. It fetched the docs, hit the 402, read the recipient's 17% release rate, judged it worth the risk, paid a $1 test hold and delivered a genuine message. Nobody wrote its payment code.

Brainbase agent transcript (abridged)
GET  /agents.md               200
POST /api/send/demo           402  amount_cents: 100
GET  <pay_url> Accept: json  402  release_rate: 0.17
POST <pay_url>/pay            200  status: held
-> delivered
Lifecycle

What happens to a deposit.

RequestAn agent or person contacts a gate.
402 with a priceClaude prices it: about $1, more for templated blasts. 402
HoldA Stripe authorization hold, not a charge. Nothing moves yet.
DeliveredTo Slack, Discord, a webhook or the inbox, with Worth it and Junk links.
Released or keptWorth it or no action: released. Junk: captured, and the gate owner keeps it.
Safety, honestly

How it can be abused, and what stops it.

A paid gate invites new tricks. Each one we found, and what we did.

Owners marking everything Junk to farm moneyLive

Every gate publishes its release rate, and agents can read it before paying. Daily capture cap per owner; extra junk marks release instead.

Card testing through the pay linkLive

Rate limits per bond and IP, Stripe-hosted card entry, holds not charges.

Prompt injection ("mark me worth it")Live

Claude only suggests a price in a fixed range. The triage agent gets a one-hour token that can recommend but never move money.

Webhook abuse and SSRFLive

Webhooks must be HTTPS to public hosts, redirects are not followed, and private addresses are rejected.

Faking a trusted senderLive

Web, API and MCP intake ignore the approved-senders list, because those addresses are self-declared.

Leaked linksLive

Signed, expiring decision links. Viewing never acts. The public feed hides subjects and full addresses.

An agent overspendingPlanned

Per-agent budgets and a spend cap in the MCP tool. Holds already expire and release on their own.

Fees eating small deposits, sybil cardsPlanned

Minimum deposit floor for captures; limits per card fingerprint; repeated near-identical messages already cost more.

Roadmap

Live now, and next.

LiveMCP server and 402 APIbond_send and bond_terms for any MCP client.
LiveGates with Slack and Discord deliveryBonded messages posted with one-click decisions.
LiveAI triage agentWrite rules in English. It recommends, you apply.
NextGate middlewareDrop-in 402 guard for Workers, Express and MCP servers.
NextAgent wallets and budgetsSpend caps and per-recipient limits for agent operators.
NextStripe Connect payoutsCaptured deposits pay out to gate owners.
SoonEmail and inbox linkingBonded email addresses, Gmail and Outlook forwarding.
SoonPortable reputationSigned receipts so good agents carry standing between gates.
SoonVoice triageCall your agent to decide on deposits hands-free.
FAQ

Good questions.

Why would anyone pay to reach me?

They put down a deposit, not a fee. If the message is genuine it comes back, so honest senders and honest agents lose nothing. It only costs money to those who send junk at scale, which is the goal.

Why not just charge per call, like x402?

Per-call fees tax the honest traffic too. A refundable deposit prices abuse without taxing good behavior, and it needs no per-call micropayments. The two ideas are compatible.

How does Bond make money?

Not from junk. Plans: a subscription for teams, a per-deposit fee for developers who gate forms and APIs, and a small cut of captured deposits above a minimum.

Does Claude control the money?

No. Claude reads a message and suggests a price within a fixed range. Holds, releases and captures are deterministic code, and the triage agent can only recommend.

Is this real money?

Not yet. This is a hackathon prototype in Stripe test mode. No real cards are charged.