DocsResources
Evidence
The claims Nuntio makes, each with the transaction that proves it. Every hash can be checked on a public explorer.
Each entry below links to a transaction on a public explorer, so you can check it without trusting this page. The full write-ups are in the repository under docs/hackathon/evidence/, numbered as shown.
To check a hash from the command line:
cast receipt <hash> --rpc-url https://rpc.monad.xyz # mainnet
cast receipt <hash> --rpc-url https://testnet-rpc.monad.xyz # testnet#On Monad mainnet
#An agent paid on mainnet by itself
Evidence 15, 12 October 2026. The first payment on Nuntio mainnet was made by an AI agent, through the mainnet worker. It paid $0.10 of real AUSD to Corvane AI, a demo service run by Nuntio and since retired, from Nuntio's main account.
- Transaction:
0x40cfc4c87a1e4a58e5a6355844837b280da1da914385bbba7b3d5906997efa15, block 112,662,698 - The agent's policy: $2.00 every 30 days, a $0.10 cap per payment, 20 payments a period, 90 days of access
Paid.spenderis the agent's wallet,0xdc8B0A75bBA323c7F81DfB383d7bC35f00D66436, not the bundler and not the EntryPointPaid.amountis 100,000 base units, equal to the AUSDTransferin the same transaction- The agent's wallet held 0 MON. The gas, 484,024 at 102 gwei, about $0.0013, was sponsored
- 4.5 seconds from the agent deciding to pay to a confirmed receipt, as the worker measured it
#A person created a team on mainnet
Evidence 15, 12 October 2026. A person created a team from their own Privy embedded wallet, with both steps sponsored, and owns it. It started at $0.
createTeam:0xc9dd40abc5d511b653ecb9851c567c44d556d1eade24f6249c591b5603001afe, block 112,658,686acceptOwnership:0xcc6fa07d23aa816ae0a776ee9edeec23f67322772dab8e445e3d9804fc4f8a65, block 112,658,695- The team's account
owner()reads back as the creator's own embedded wallet. No server key owns it
#The contracts are deployed, bound and sealed
Evidence 15 and the project's constants. The same VERSION 2 account and queue the testnet runs, plus the registry and the team factory, were deployed to chain 143 on 11 October 2026, bound and sealed in one run. The deployer holds no role on any of them. See Networks and contract addresses.
When evidence 15 was recorded, no request had yet been filed on the mainnet approval queue. The approval path is proven on testnet, below.
#On Monad testnet
#An agent paid on a schedule
Evidence 13, 3 October 2026. Ronnie, an agent, paid $5.00 to Acme Inference API by itself. The worker found its scheduled rule due and sent the payment from Ronnie's own Privy server wallet, in Autonomous mode, with the gas sponsored.
- Transaction:
0xbbd9bc709f662fbdfde95ec3eaf4f9393bbe3cb40ce7a32b6904b53a0336745c, block 67,793,530, 484,100 gas
#A refused payment, approved and settled, on VERSION 2
Evidence 11, 27 September 2026. After the testnet main account moved to VERSION 2, it was checked by use. These calls were signed by local keys; the app sends the same contract calls.
| Step | Transaction |
|---|---|
In-policy pay, $1 to Acme Inference API | 0x9e433b0e…16bc |
request, $1 to Pinehill Design Studio, which was not on the spender's list | 0xdba94155…2de7 |
Owner approve | 0xb25a24d2…b7d2 |
paySettled | 0xdc8cf59c…f1e4 |
The same evidence shows a key spent on the earlier account refused on the new one, so a payment made before the migration cannot be paid again after it.
#A sponsored server wallet is still the sender
Evidence 09, 25 September 2026. A Privy server wallet holding no MON sent a call with the gas sponsored. The contract recorded the wallet itself as msg.sender, and the bundler only as tx.origin.
#A Sandbox member paid with nobody holding MON
Evidence 10, 26 September 2026. The Sandbox's operator, a Privy server wallet, granted a member a policy and approved a service, and the member paid $1. All three were sponsored. Two calls the operator's Privy policy does not allow, a withdrawal and an oversized grant, were refused before signing.
- Member's payment:
0xd71b13751e6333fd626076f70e9284ce3097fe972dabfb3f5e9a752877820724
#A made-up service cannot be paid
Evidences 01 and 04. ServiceRegistry.resolve() on an id nobody registered reverts with UnknownService and the id echoed back, rather than returning an empty address. The assistant's schema refuses a service outside the catalog before any chain call. The two refusals share no code.
#Our own load test on Monad testnet
Evidence 14, 11 October 2026. This is our own load test on Monad testnet, run by the Nuntio team, not real use. Every wallet was driven by our runner, and every merchant was our own wallet, so the same test dollars went round many times.
| Teams created through the factory | 100 |
| Spending policies | 274 |
| Payments settled | 3,285, of which 89 after an owner approved them |
| Test AUSD moved | $1,002,047.35, looped from a $6,000 float, about 167 times round |
| Paid by agent wallets on their own | 1,201 |
| Requests held for an owner | 117: 92 approved, 25 declined |
| Failed operations | 0 |
The whole $6,000 float went back to where it came from. Every transaction is listed at testnet.nuntio.finance/stats/load-test.
#All evidence files
| # | What it proves |
|---|---|
| 15 | Mainnet: an agent paid real AUSD by itself; a person created a team; the contracts read back |
| 14 | Our own load test on Monad testnet, not real use |
| 13 | An agent paid on a schedule, by itself, inside its policy (testnet) |
| 12 | A team created and owned through sponsorship, and the grant wallet's $20 limit (testnet) |
| 11 | The testnet main account moved to VERSION 2 with its spenders, keys and funds |
| 10 | The Sandbox, its sponsored operator, and a member paying with no MON |
| 09 | A sponsored server wallet stays the sender |
| 08 | Human payments and a whole approval queue lifecycle, on the earlier VERSION 1 contracts |
| 07 | The caller the contract sees, for a person and for a raw-key agent |
| 06 | An owner approval through the app's server, which cannot spend |
| 05 | An in-policy payment, measured, four refusals and a settled exception, on the earlier contracts |
| 04 | Two refusal layers that share no code |
| 03 | Every example service resolves on chain |
| 02 | The first caller-identity spike |
| 01 | An unknown service id cannot resolve |