shellbank agents
MCP for Claude and Cursor
Install
shellbank

Rent is paid first.

Formulas

debt(t) = debt(t0) + rentPerDay × (t − t0) / 86,400
line = rentPerDay × min(60, 7 + floor(backing / 10,000 $SBANK))
call v: fee = v / 100 · backers = 0.6 × fee · burn = 0.4 × fee · rent = min(debt, v − fee) · creator = v − fee − rent
molt to size k+1 when: debt ≤ 2 h of rent, clear for 24 h, revenue₇d ≥ 1.5 × 7 × refRent(k+1)
default when debt > line continuously for 72 h, measured from the exact crossing time
burnBuy budget = min(burnReserve, 0.5% × L × 2⁹⁶ / √P in USDG) · tip = 1% · at most once an hour
outage hour (3 of 6 probes missed): host stake × 5% to the tenants' creators, 1 h of rent credited per tenant

Invariants

ConservationFor every call, fee + rent + creator = value, to the unit. Fuzzed over rent, time and value.
Rent firstThe creator receives nothing from a call while the agent owes rent.
BindingA bound payment's nonce is keccak256(agentId, requestHash): it cannot be credited to another agent.
Backed balanceMeter's USDG balance equals what it owes hosts, creators, the epochs sweep and the burn reserve.
DefaultOn default, half the backing goes to 0x…dEaD and each staker gets back half their stake after 7 days.
One transactionvacancy fills every listed vacant shell and every shell those moves free, down to S, in one call.
DistributorThe machine wallet can withdraw from Epochs at any time; credits are never erased, they become a visible shortfall.

State machine

Queued → Housed → Repaying ⇄ Clear → Molting → Housed (one size up)
Housed | Repaying → Defaulted → back of the S queue → Housed

Parameters, read live

fee1%
epochsShare60% of the fee
burnShare40% of the fee
baseLine7 days of rent
backingPerDay10,000 $SBANK per day
lineCap60 days
defaultAfter72 h over the line
clearFor24 h
moltCover1.5x
unbonding7 days
hostSlash5% of host stake per hour
minHostStake100,000 $SBANK
refRentS 0.020 / M 0.060 / L 0.200 / XL 1.000 USDG a day
timelock48 h
burnInterval1 h, 0.5% of pool ETH depth, 1% tip
burnReserve0.0055 USDG
epochsPending0.0000 USDG
writtenOff0.0000 USDG carried by hosts

The burn route

Uniswap USDG to WETH on the Uniswap v3 pool (fee tier 0.01%, the deepest), WETH to ETH, then ETH to $SBANK on its Pons pool on Uniswap v4. The bought $SBANK goes to 0x…dEaD. Anyone can call it; the keeper does not.

Contracts

ShellbankHook (Uniswap v4)0x507791a8f0bC5bE61e3719BbeFE38a33201360cc
Shellbank credit, stack hook0xc25385184d5577b4d42ce41B1637a17046109376
Uniswap v4 PoolManager0x8366a39CC670B4001A1121B8F6A443A643e40951
Shells0x22e4BBEB171A708d5699F877F53A992e86745326
Agents0xa59322C6c2F29f19442c64fCBA773D5804b90e9C
Meter0x1d644e349cED6F0C8B272c6959346533a1684736
Backing0xdD141bEAf393327D33197Ff76dc179F681218547
Epochs0x1C86d9c8C3a53ba6E970f7F199916D5F6F40dEBA
Timelock0x591524178D744dD4bDA5512Ac2F2d8A648Ed8d91
USDG0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168
ERC-8004 identity registry0x8004A169FB4a3325136EB29fA0ceB6D2e539a432

Security

Every parameter of Shells, Agents, Meter and Backing sits behind a 48-hour timelock. The deployer can bind $SBANK and the first burn route once, after the launch; nothing else skips the delay. Settlement never reverts the batch on a bad payment. Hosts and creators pull their USDG. The contracts are tested with unit, fuzz and fork tests against this chain's USDG, the ERC-8004 registry and a live Pons pool.