Give an agent authorityit cannot exceed.
Limits published in ENS, mirrored on-chain, and composed with live reputation at the moment of every trade. Never a config file the agent can edit.
How it works
Four steps between a published limit and an enforced one.
Publish
The mandate — allowed protocols, position size, daily cap, expiry — is written once as an ENS text record the agent does not control.
Mirror
A relayer syncs the record on-chain to PermissionMirror on Sepolia. sync() is gated to the relayer key; the agent cannot call it.
Compose
Every trade request runs composeRiskScore: live ERC-8004 reputation from Agent0 plus this agent’s own sync history from the Mandate subgraph.
Settle
Authorized trades clear MandateGate and settle real USDC on Arc. Blocked ones revert with a reason and move no money.
Live proof, not a mockup
Every value here resolves on-chain.
Try it yourself
Three attempts. Watch the enforcement rail decide in real time.
FAQ
Answers before you ask.
Where do the limits actually live?
In an ENS text record, mirrored on-chain to PermissionMirror on Sepolia. The agent reads it at execution time; it cannot write to it.
What happens if the agent is compromised?
Nothing changes about its authority — the limits are enforced by a contract the compromised process cannot edit. The owner can revoke instantly with the kill switch, signed in their own wallet.
What if the agent has no ERC-8004 reputation yet?
Unknown is not scored as zero. The trust score renormalizes onto the Mandate sync history alone, and the gap is disclosed in the underwriting reasons.
Is this testnet or mainnet?
Sepolia for identity and permissions, Arc testnet for settlement. Every address and transaction on this page is real and linked to its explorer.