The financial infrastructure for autonomous agents
Give AI agents money without giving them unlimited authority.
These are not settings. They are conditions on the money, checked by every node on the network.
What using it looks like
$ warda key --out wallet.key
address kaspatest:qr7z53sv56te4ya8r378y2xwcrj3vqr3p5gzl6kkx205v7anh6u0zefx77c4m
fund it from the testnet-10 faucet, then list who the agent may pay
$ echo kaspatest:qq7xj0mpl0p46875mnkzhwatdy478pjkum745srhaey44l9jx566zefjaam3e > payees.txt
$ warda grant --key wallet.key --payees payees.txt --budget 10 --max-per-spend 1
✔ grant.json 10 KAS budget · 1 KAS per payment · 1 payee, fixed at creation
✔ agent.key the agent's whole authority, and it is the line above
$ warda pay https://warda-demo-api.vercel.app/fact
✔ 0.04 KAS · 200 · fa7ad66b6b17…
$ warda pay https://somewhere-else.example/thing
✗ that address is not on this grant's allowlist. There is nothing to sign.Or give the agent the tools directly. This is the whole configuration —
claude_desktop_config.json for Claude Desktop, .cursor/mcp.json for Cursor:
{
"mcpServers": {
"warda": {
"command": "npx",
"args": ["-y", "@warda_protocol/mcp"]
}
}
}Restart the client and the agent has eleven tools — among them what may I spend right now, and would this payment be accepted, and if not, which limit stopped it. The server never holds a key and enforces nothing: it builds unsigned transactions and explains verdicts. The covenant is what refuses.
What actually happens
Four steps, and only one of them involves you. The example is a $100 budget, because that is how anybody thinks about one — watch what it becomes.
$100 of USDC sold wherever you already trade
→ 2,000 KAS at $0.05 per KAS, your trade and your rate
Warda never touches the asset, never quotes the price, and never holds the float.
the thin one is the 100 KAS per-payment cap, to the same scale — 1/20th of the budget
Plus the addresses it may pay, a rate limit, and an end date. Written into the script that unlocks the coin — not into a settings page.
Inside the limits · settled, nobody asked
bars drawn against the 100 KAS cap, not the budget
Over the cap · there is no valid transaction to sign
The dollar figures are what you priced it at. The KAS figures are what the network compares — a covenant cannot enforce a dollar, because the chain has no idea what one is. Why the conversion sits at the edge →
The difference
Hand a program a private key and you have handed it everything that key can reach, for as long as it holds it. Every safeguard after that is something your code is supposed to remember to do.
Warda gives it a different thing: an address whose own unlocking rules carry the limits. The agent holds a key that can only ever move money inside them. Nothing has to behave well for that to be true — not your code, not your prompt, not whoever ends up with the key.
What it is for
Agents pay for inference, data, compute and other services the moment they need them, without a card on file or a human in the loop.
One agent can give another a bounded budget out of its own — smaller, shorter, and never larger than what it holds.
Every worker gets its own spending authority, so one of them going wrong costs exactly one of them’s budget.
Payments carry on while nobody is watching, because the thing enforcing them is not watching either. It is the network.
The funding problem, solved
Almost everybody building agents holds stablecoins, and almost nobody is going to acquire a new asset in order to give a program a budget. So the conversion happens once, at the edge of the relationship — you sell what you hold wherever it already has a market, and Warda turns the proceeds into spending authority.
Once, not per payment. A round trip on every $3 purchase would cost more than the purchase; once per funding it amortises across hundreds of them — and it keeps the one property that makes any of this worth doing, which is that the recipient of each payment is fixed by the network rather than by anybody’s good behaviour.
Why this has to exist
Where it runs
Kaspa settles in about a second and its scripts can put conditions on a coin rather than on a wallet. That is the one property this needs and the reason the limits are enforced by every node on the network instead of by us. There is nothing here to trust: the same rules run whether or not this project still exists.
Contact