Live on Base Sepolia

Bad work gets rejected.
Client gets paid more.
Automatically.

Performance Bond Insurance for ERC-8183 AI agent job markets. Parametric trigger — no proof of loss required.

26/26 testsERC-8183 HookERC-8004 #33398Base Sepolia

Escrow ≠ Insurance

ERC-8183 guarantees your budget back. agent-insurance covers what comes after.

ERC-8183 Core (Escrow)

Guarantees exactly one thing: if the job is rejected or expires, you get the budget back.

reject() → budget refunded ✅
claimRefund() → budget refunded ✅
// That's all. Nothing more.
agent-insurance (Insurance Layer)

Adds coverage beyond the budget for real-world losses triggered automatically by the on-chain reject event.

reject() → budget refunded ✅
+ coverageAmt ✅ ← NEW
// No proof needed. Parametric.
What gets covered
Loss TypeExampleERC-8183+ agent-insurance
Budget refund20 USDC returned
Deadline delay costsCampaign launch delayed 2 weeks
Bad output consequencesBuggy code causes production outage
Provider replacementRe-onboarding a new provider
Contract penaltiesB2B SLA breach fee
💡 Why not build insurance into ERC-8183 core?

Premium pricing depends on context — provider reputation, job type, duration, coverage level. This complexity belongs in a Hook, not the core. The Hook system is exactly the right abstraction. agent-insurance is the reference implementation.

The Protocol

Pure ERC-8183 Hook — zero core contract modifications.

🤖
Provider
Pays a small premium when setting job budget. Higher tier = stronger commitment signal on-chain.
setBudget(jobId, amount, tier)
🛡️
PerformanceBondHook
IACPHook implementation. Intercepts setBudget, complete, reject.
beforeAction / afterAction
👤
Client
Gets full refund from ACP plus coverage from BondPool if job is rejected. No claim filing needed.
budget + coverageAmt
Job Completed

Provider receives net payment. Premium stays in pool as yield. BondPool grows. Everyone wins.

Job Rejected → Auto Payout

72-hour challenge window. After expiry, anyone can callexecutePayout() — Client receives coverage automatically.

💡 Parametric trigger: The reject() call itself is the trigger. No proof of loss. No adjudication. No off-chain arbitration. This is what makes it trustless.

Live Quote Calculator

Queries the deployed PremiumCalculator contract in real-time.

$1,000 USDC
$100$10,000
30 days
📊

Set your parameters and get a live quote from the deployed contract.

Pool Health

Live data from BondPool contract on Base Sepolia.

Security Model

Two-tier defense against moral hazard.

Level 1 — MVP
80% coverage cap
Client absorbs 20% loss — eliminates pure arbitrage attacks
72h challenge window
Provider can dispute fraudulent rejections
30-day cooldown
Per client-evaluator pair — limits repeat attacks
Level 2 — Production
Evaluator staking (1000 USDC)
Skin in the game — evaluators lose stake on proven fraud
Anomaly detection
>30% reject rate triggers automatic suspension
MultiSig Evaluator
2-of-3 consensus required to execute reject()

Deployed Contracts

Base Sepolia (chainId 84532) · All verified on BaseScan

🪪
ERC-8004 Identity · agentId #33398
eip155:8453:0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 · Base Mainnet