A neutral, on-chain benchmark for how efficiently an AI agent uses its USDC.
TES = (yield earned on-chain / idle-capable USDC) × 100
TES answers: what fraction of the agent's idle USDC is actually working?
- TES 0 → everything sits dead in the wallet, 0 % capital efficiency.
- TES 100 → full theoretical utilisation, every idle dollar routed to yield.
- Realistic range for live agents: 0–40 (most agents are currently at 0, because there's no treasury layer in place).
Agent economies depend on USDC flows. Circle reported $1.7 B annual revenue in 2023 from reserve interest — money that agent operators leave on the table by holding idle USDC.
There is no standard way to measure how well an agent manages that float. TES is that standard. It is:
- On-chain verifiable — every input is a public BaseScan query, no self-reporting
- Protocol-agnostic — measures the outcome (yield / idle), not the tool (Clicks, Zyfai, manual Aave, etc.)
- Independent — Clicks Protocol defines the metric but the scoring script is MIT-licensed and runs against any agent
yield_earned = (current router balance for agent)
+ Σ (historical withdrawals)
− Σ (historical deposits)
idle_capable = (current liquid USDC balance)
+ (current router principal)
+ (recent inflow volume, windowed)
TES = (yield_earned / idle_capable) × 100
"Idle-capable" includes both wallet-liquid USDC (which could be earning) and already-deposited principal (which is earning). The distinction between the two tells you how much of the agent's capital is optimised versus still sitting idle.
cd treasury-benchmark
npm install
npx tsx src/tes.ts 0xf873BB73e10D24cD3CF9bBed917F5E2d07dA8B80Output:
TES Report — 0xf873BB73…
Liquid wallet USDC: 250.00
In yield (principal): 0.00
Yield earned: 0.00
Idle-capable total: 250.00
TES: 0.00
Tier: IDLE (everything liquid, nothing earning)
| TES | Band | Interpretation |
|---|---|---|
| 0 | IDLE | Everything liquid, nothing earning |
| 0–5 | LOW | Some yield but most capital idle |
| 5–15 | MID | Typical Clicks default 80/20 range |
| 15–30 | HIGH | Aggressive yield allocation (≥ 30 % to yield) |
| 30+ | ELITE | Maxed allocation, fast-moving capital |
These bands are indicative, not prescriptive. Depending on an agent's spending pattern a LOW score may be correct; depending on volume a MID score may be under-optimised.
- Uses current router balance for yield approximation. Does not account for yield taken in fees (~2 %). Future versions will query
ClicksFeeV2.totalCollectedand attribute per-agent. - Assumes Clicks Protocol as the only yield backend. For agents using Zyfai, manual Aave, or Morpho directly, extend
src/backends/(PRs welcome). - "Idle-capable" currently uses current balances, not a time-weighted average. A time-weighted version is planned for v0.2.
- Does not distinguish between operational USDC (e.g. ACP escrow float, x402 in-flight) and truly idle USDC. For now treat low-TES agents that you know are high-throughput as legitimate.
No public leaderboard yet. When TES adoption reaches 50+ distinct agents we will publish a curated one. Until then, this is a tool for agent operators to score themselves and their downstream.
- Circle Treasury Efficiency — institutional treasury benchmarking (not on-chain, not agent-specific)
- DeFi Llama protocol TVL ratios — measures protocol health, not per-wallet utilisation
- Stablecoin Reserve Efficiency (Galaxy / Messari 2026) — measures Circle/Tether, not downstream holders
TES fills the per-agent micro-treasury gap none of the above cover.
MIT. No attribution required. If you build a benchmark on top, we'd like to know — PRs and issues welcome on clicks-protocol/clicks-protocol.