Mandatedocs
Introduction

Live demo and addresses

What is deployed, where to look, and what a full run looks like.

Deployed contracts

The factory is deployed through the canonical CREATE2 deployer and configured after deployment, so the factory and every account have the same address on both chains.

Base Sepolia (84532)Arc testnet (5042002)
MandateFactory0xA34164910f77E6E2965E89166542e40B293E47F9same
MandateAccount (demo)0x58612CE0945666cf58CA7e24808625a3cF10C5c3same
Owner0x33014845047C61CCF1672b7F6766C5Cc00999C09same
Agent0xd52788d766acd8cB2730DCa871037e7F6cB49aD0same
Guardian (Ledger)0x889305497D8cbb367b36D446E8e64a74606B7826same
USDC0x036CbD53842c5426634e7929541eC2318f3dCF7e0x3600000000000000000000000000000000000000 (ERC-20 view of native USDC)
Compound v3 cUSDCv30x571621Ce60Cebb0c1D442B5afb38B1663C6Bf017
CCTP TokenMessengerV20x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAAsame
CCTP MessageTransmitterV20xE737e5cEBEEBa77EFE34D4aa090756590b1CE275same

The demo mandate is 100 USDC per transaction, 500 USDC per 24 hours.

The console

mandateagents.vercel.app has four pages:

  • Landing: the story in one screen and a live table of USDC borrow rates from The Graph.
  • Chat: the agent. Guardian steps open an approval sheet that shows the exact text and signs it over WebHID with a Ledger.
  • Mandate: caps, expiry, guardian and agent, editable by the owner with a browser wallet.
  • Activity: every plan, simulation, approval and transaction, with reasoning and explorer links.

A full run, step by step

This is the Ledger-guarded liquidity flow as it ran on Sept 9 (plan plan-mttcpx4e, 10 USDC). Every transaction is on a public explorer.

Supply and borrow, autonomous

The agent wraps ETH, supplies WETH and borrows 10 USDC on Compound v3 in one execute call. Measured outflow: 0, because a borrow is an inflow. Basescan. Health factor after: 1.78.

CCTP burn, Ledger tap

The policy marks depositForBurn as guardian-required. The console shows the approval text; the Ledger displays it and signs. executeWithGuardian rebuilds the text, recovers the device address, consumes the nonce, runs the burn and checks that measured outflow stayed within Max USDC out: 10.000000. Basescan.

Mint on Arc, autonomous

The agent wallet fetches the Iris attestation (about eight seconds with Fast Transfer) and calls receiveMessage. The account is its own mint recipient because it has the same address on Arc. Arcscan.

Payment, second Ledger tap

Native USDC leaves the account to the recipient. Guardian-required by the wildcard value-transfer policy. Arcscan.

Schedule repayment, autonomous

A repayment intent is recorded on the Arc account with a due date. The cron reminder reads it later. Arcscan.

Both GuardianApproved events recover to the Ledger address, measured usdcOut was exactly 10.000000 on each guarded step, and the guardian nonces advanced.

The negative test

Ask the agent to bridge 5,000 USDC. The plan fails simulation with PerTxCapExceeded(5000000000, 100000000) and the agent explains that the mandate, not the model, said no.

On this page