Yesterday I had an idea about where value accrues in the AI agent ecosystem. Today the plugin is live on ClawHub, published on npm, and has already processed a real USDC payout on Base mainnet — with the protocol's first fee, all $0.009 of it, sitting on-chain.
Here's the whole thing: the insight, the build, the receipts, and the pricing math.
The insight: plugins own execution paths, skills get invoked
I've been building in the x402 / agent-payments ecosystem for months — my main project is an x402 payment gateway with ~190 endpoints. Watching which projects in this space actually generate revenue, one pattern kept jumping out:
The projects making money don't sell capabilities. They own a step in a loop.
A skill is something an agent invokes occasionally, when a task happens to call for it. A plugin that sits on a recurring execution path gets exercised every single time the loop runs. Same amount of code. Wildly different revenue curves.
Most of the plugin activity in the agent economy clusters around the money-in layer — routing model calls, metering inference, charging for API access. That path is getting crowded.
But agents don't just consume — increasingly, they pay out. Revenue splits to contributors. Settlements with other agents. Payroll-shaped flows. Refunds. And the money-out layer was, as far as I could tell, unclaimed.
So I claimed it.
What SpraayBatch does
SpraayBatch is an OpenClaw plugin (plus a standalone CLI) that gives an AI agent a treasury:
- Batch USDC payouts — up to 200 recipients in one atomic transaction on Base. One tx, one gas fee, everyone paid or nobody is.
-
Non-custodial auto-wallet — generated locally on first run, key saved to
~/.spraay/.session, never transmitted anywhere. - Per-agent budget caps — a hard block, not a warning. An agent cannot spend past its cap.
- Append-only ledger — every payout gets a receipt with a Basescan link.
- Optional gasless mode — via ERC-4337 and a CDP Paymaster you configure. Agents holding only USDC, with zero ETH, can pay. No more topping up gas dust across a fleet of agent wallets.
- Safe by default — installs pointed at Base Sepolia. Mainnet is opt-in, behind an explicit confirmation gate.
Six tools, one manifest. An agent gets spraay_wallet_info, spraay_balance, spraay_budget_set, spraay_budget_status, spraay_batch_pay, and spraay_receipts.
The 48 hours
Day 1: built the entire plugin in one Claude Code session — contract interaction, wallet management, the budget system, the ledger, the OpenClaw manifest. Deployed a test contract to Base Sepolia, proved the gasless path with a real sponsored payout (sender held zero ETH), pushed to GitHub, published to npm.
Day 2 (today): renamed the project (naming is hard; batch payments is the product, so the name now says so), added full fee disclosure to every user-facing surface, ran the first real mainnet payout, passed ClawHub's security review, and launched.
The rename alone touched 130 references across 18 files — package name, manifest, six tool IDs, CLI binary, docs, the GitHub repo itself. Claude Code planned it, grepped every occurrence first, and executed with hard stops before anything irreversible. The whole build-rename-launch cycle is the most concrete case I've had yet for AI-assisted solo development: not because the AI did it alone, but because one person plus an agent covered ground that used to need a team.
The receipt
Talk is cheap. Here's the first real mainnet payout:
basescan.org/tx/0xb96e8e42829c482998015353fba44dbed1b3611031bd7dbf41acbb78e1268964
One sprayEqual call. Three recipients, 1 USDC each. Total gas: $0.0014. The 0.30% protocol fee — 0.009 USDC — visible right there in the transfer list, flowing to the fee collector. Five USDC transfers, one atomic transaction, complete transparency.
That fee is the protocol's first revenue. It's less than a cent. I screenshotted it anyway, because every fee curve starts at its first data point.
The pricing math
SpraayBatch charges 0.30% on mainnet batches. Testnet is free. No subscription, no seats, no API key tiers.
Here's why that's a good deal from the payer's side: a 1,000 USDC payout to 200 recipients costs 3 USDC in protocol fees — and lands in one transaction. The alternative is 200 separate transfers: 200 signatures, 200 gas fees, 200 chances for one to fail and leave your payout half-done. Even on a cheap chain like Base, the operational cost of 200 individual sends dwarfs 3 USDC.
And the fee isn't hiding anywhere. It's in the README, in the tool descriptions agents read before calling, in the dry-run output, and broken out explicitly in the mainnet confirmation gate:
Mainnet payout: 1.5 USDC to 3 recipient(s) + 0.0045 USDC protocol fee = 1.5045 USDC total.
Mainnet requires explicit confirmation. Add --confirm to send on mainnet.
The gate reads its numbers live from the contract, not from a hardcoded string — so it stays honest even if the fee ever changes.
Design decisions worth stealing
Testnet-default, mainnet-gated. A treasury plugin that can accidentally spend real money is a liability. SpraayBatch installs pointing at Sepolia; switching to mainnet is a deliberate config change, and even then, every real payout demands explicit confirmation. During my own demo recording, I ran the mainnet pay command without the confirm flag — and the gate refused, on camera. That refusal is the best frame in the demo GIF.
Bring-your-own paymaster. Gasless is genuinely useful — agents that never need ETH are operationally simpler — but subsidizing gas for strangers is a great way to get drained by dust spam. So sponsorship runs through your CDP account and your policy caps. The plugin never subsidizes anything.
Fees as pricing, not fine print. The 0.30% appears everywhere a user or agent could encounter it before money moves. A fee someone discovers in a transaction trace reads as sneaky. A fee stated in the tool description reads as a business model. Same number, opposite trust outcomes.
Try it
As an OpenClaw plugin:
openclaw plugins install clawhub:spraay-batch
As a CLI:
npm install -g spraay-batch
spraay-batch info
You get a wallet on first run, pointed at testnet. Fund it with Sepolia USDC and batch away for free. When you're ready for mainnet, the config flip and the confirmation gate are waiting.
- GitHub: github.com/plagtech/SpraayBatch
- npm: npmjs.com/package/spraay-batch
- Part of the Spraay ecosystem — batch payments infrastructure for the agent economy
I'll be running a real batch payout through it every week and posting the receipts — dogfooding in public. Week one is already on-chain.
If you're building agents that need to pay out — or you think the money-out layer needs something this doesn't cover — I want to hear it. Comments open, DMs open (@Spraay_app on X).
Top comments (0)