Skip to content
DocsEvidence

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:

bash
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.spender is the agent's wallet, 0xdc8B0A75bBA323c7F81DfB383d7bC35f00D66436, not the bundler and not the EntryPoint
  • Paid.amount is 100,000 base units, equal to the AUSD Transfer in 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.

#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.

#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.

StepTransaction
In-policy pay, $1 to Acme Inference API0x9e433b0e…16bc
request, $1 to Pinehill Design Studio, which was not on the spender's list0xdba94155…2de7
Owner approve0xb25a24d2…b7d2
paySettled0xdc8cf59c…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.

#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 factory100
Spending policies274
Payments settled3,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 own1,201
Requests held for an owner117: 92 approved, 25 declined
Failed operations0

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
15Mainnet: an agent paid real AUSD by itself; a person created a team; the contracts read back
14Our own load test on Monad testnet, not real use
13An agent paid on a schedule, by itself, inside its policy (testnet)
12A team created and owned through sponsorship, and the grant wallet's $20 limit (testnet)
11The testnet main account moved to VERSION 2 with its spenders, keys and funds
10The Sandbox, its sponsored operator, and a member paying with no MON
09A sponsored server wallet stays the sender
08Human payments and a whole approval queue lifecycle, on the earlier VERSION 1 contracts
07The caller the contract sees, for a person and for a raw-key agent
06An owner approval through the app's server, which cannot spend
05An in-policy payment, measured, four refusals and a settled exception, on the earlier contracts
04Two refusal layers that share no code
03Every example service resolves on chain
02The first caller-identity spike
01An unknown service id cannot resolve