Skip to main content
Every operation this build can execute, generated from adapter.Catalog() — 80 adapters. It is not a summary of the catalogue; it is the catalogue, dumped. If an operation is not on this page, no workflow can name it, because Adapters has no escape hatch to an unregistered call. Copy the ref exactly, version included. An unversioned reference is refused — see Adapters for why.

All of them, at a glance

0xequity property shares

property.buy@v1.0

Buy 0xequity property tokens. The venue prices the trade from its own oracle, so the amount is a TOKEN COUNT and what a plan bounds is the currency side.
  • Chains base
  • Its own amount is a share count
  • Asset comes from the currency parameter
  • Produces nothing a later step may refer to

property.sell@v1.0

Sell 0xequity property tokens. Requires the ACCOUNT to hold them, which it does only once enrolled — the router pulls from msg.sender.
  • Chains base
  • Its own amount is a share count
  • Asset comes from the currency parameter
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

Aave v3 — supply, borrow, repay, withdraw

lend.borrow@v1.1

Borrow against supplied collateral.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

lend.repay@v1.1

Repay borrowed principal to Aave. Repays an EXACT amount: interest accrues every block, so “all” is a number nobody signed.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Produces nothing a later step may refer to

lend.supply@v1.1

Supply an asset as collateral.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Produces nothing a later step may refer to

lend.withdraw@v1.1

Take supplied collateral back out of Aave. Carries a loan-to-value cap because removing collateral raises the ratio on whatever debt remains.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

Aave v4 — supply, borrow, repay, withdraw

aavev4.borrow@v1.1

Borrow from an Aave v4 spoke. The collateral backing it must have been enabled — aavev4.supply does that as part of its step.
  • Chains ethereum
  • Its own amount is an amount
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

aavev4.repay@v1.1

Repay borrowed principal to an Aave v4 spoke.
  • Chains ethereum
  • Its own amount is an amount
  • Produces nothing a later step may refer to

aavev4.supply@v1.1

Supply collateral into an Aave v4 spoke. THREE calls: approve, supply, and setUsingAsCollateral — v4 treats a supply as a deposit until it is explicitly marked as collateral. The Gold Spoke holds NATIVE XAUt, which no other venue here does.
  • Chains ethereum
  • Its own amount is an amount
  • Produces nothing a later step may refer to

aavev4.withdraw@v1.1

Withdraw collateral from an Aave v4 spoke.
  • Chains ethereum
  • Its own amount is an amount
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

Crossing chains

bridge.across@v1.1

Move an asset to another chain through Across. Settles OUT OF BAND: minutes, and the destination step must not start before the source step is final. What lands is LESS than what was sent, by at most 100 bps.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Produces an amount, referable as {"Symbolic": "<step>.output"}
  • Settles out of band — completion waits on something outside the transaction

bridge.cctp@v1.1

Move USDC to another chain through CCTP Fast. Settles OUT OF BAND: minutes, and the destination step must not start before the source step is final. What lands is LESS than what was sent, by at most 100 bps.
  • Chains ethereum, base, arbitrum, hyperevm
  • Its own amount is an amount
  • Asset fixed at USDC — the plan does not name one
  • Produces an amount, referable as {"Symbolic": "<step>.output"}
  • Settles out of band — completion waits on something outside the transaction

Exchanging one asset for another

cow.cancel@v1.0

Withdraw a CoW Protocol order this account pre-signed and has not filled: clears the on-chain pre-signature and the standing allowance to CoW’s vault relayer, so nothing more can be filled. Moves no token. Name the order exactly as it was placed — the same sell, buy, buy_min, valid_to, partial and amount — because the adapter rebuilds the order hash from them and refuses one it never pre-signed. Works after valid_to too, which is how a lapsed order’s allowance is cleared.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Asset comes from the sell parameter
  • Produces nothing a later step may refer to

cow.presign@v1.0

ONLY WHEN SOMEBODY NAMES CoW BY NAME. Everything else that rests at a price is place_order on a saved plan, which re-arms itself after a short fill and which a later step can be written to follow. This is an outside venue settling out of band: nothing downstream can spend what it delivers and it cannot re-arm, so choosing it unasked substitutes a venue nobody picked. Place a CoW Protocol LIMIT ORDER by on-chain pre-signature — no signature is handed out. Sells sell for at least buy_min of buy, delivered to the ACCOUNT, and settles OUT OF BAND when a solver fills it or expires at valid_to. Nothing lands if it does not fill; what lands is at least buy_min. The receiver cannot be redirected — the adapter rebuilds the order hash forcing it to the account.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Asset comes from the sell parameter
  • Produces nothing a later step may refer to

swap.router@v1.1

Swap through the first-party aggregating router. The route is computed off-chain and is therefore UNTRUSTED: the protection is the minimum output, not inspection of the route.
  • Chains base, arbitrum, ethereum
  • Its own amount is an amount
  • Asset comes from the asset_in parameter
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

Levering a lending position down, flash-loan backed

deleverage.aave_v3@v1.0

LEVER AN AAVE v3 POSITION DOWN in one flash-loan transaction: flash-borrow the loan asset, repay part of the debt, withdraw the freed collateral, sell it back into the loan asset and repay the flash — the position stays OPEN, just smaller. Ordinary use is PARTIAL: pass collateral_amount and the debt to repay; repay_all clears it entirely. Taking the whole position to cash is loan.close, not this.
  • Chains base, ethereum, arbitrum
  • Its own amount is an amount
  • Asset comes from the collateral parameter
  • Produces nothing a later step may refer to

deleverage.aave_v4@v1.0

Lever an AAVE v4 position down, the same shape as deleverage.aave_v3 but on a v4 spoke, which maxes the repay out by construction. ETHEREUM ONLY. market is the same curated PAIR the lever-up named, never a spoke name.
  • Chains ethereum
  • Its own amount is an amount
  • Asset comes from the collateral parameter
  • Produces nothing a later step may refer to

deleverage.morpho@v1.0

Lever a MORPHO Blue position down, the same shape as deleverage.aave_v3.
  • Chains base, ethereum, arbitrum
  • Its own amount is an amount
  • Asset comes from the collateral parameter
  • Produces nothing a later step may refer to

Levering a lending position up, flash-loan backed

leverage.aave_v3@v1.0

LEVER AN AAVE v3 POSITION UP in one flash-loan transaction: flash-borrow the loan asset, swap it into collateral, supply that (plus any principal you add), borrow against it and repay the flash from the borrow — the account never holds the flash. The market names both tokens. The owner’s LTV ceiling is the guard on the result and is not a field here; shrinking a position is deleverage.aave_v3, taking it all to cash is loan.close.
  • Chains base, ethereum, arbitrum
  • Its own amount is an amount
  • Asset comes from the collateral parameter
  • Produces nothing a later step may refer to

leverage.aave_v4@v1.0

Lever an AAVE v4 position up, the same shape as leverage.aave_v3 but on a v4 spoke. ETHEREUM ONLY: Aave v4 is on no other chain this system reaches. market is the curated PAIR (“weth-usdc”), never a spoke name: the spoke is the one that lists both tokens (weth-usdc lives in main, xaut-usdt in gold).
  • Chains ethereum
  • Its own amount is an amount
  • Asset comes from the collateral parameter
  • Produces nothing a later step may refer to

leverage.morpho@v1.0

Lever a MORPHO Blue position up, the same shape as leverage.aave_v3. Here Morpho is both the flash lender and where the position lives.
  • Chains base, ethereum, arbitrum
  • Its own amount is an amount
  • Asset comes from the collateral parameter
  • Produces nothing a later step may refer to

Morpho Blue — curated markets only

morpho.borrow@v1.1

Borrow the loan asset of a curated Morpho market.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

morpho.repay@v1.1

Repay borrowed principal to a curated Morpho market. An amount at or above the debt clears ALL of it — repaid by shares, so no dust is left to block withdrawing the collateral — and what the repay did not need stays in the account. To close a position, size it a little over the debt (interest accrues until the step runs); below the debt it repays exactly the amount.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Produces nothing a later step may refer to

morpho.supply@v1.1

Put up the COLLATERAL of a curated Morpho market. asset must be that market’s collateral token — wsteth-usdc takes wstETH, not USDC — and a market is named <collateral>-<loan>. It earns NO YIELD: collateral in Morpho backs a borrow and accrues nothing. Lending the loan token to earn the supply rate is a different call this system does not make, so a Morpho supply APY is not something a plan can take.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Produces nothing a later step may refer to

morpho.withdraw@v1.1

Withdraw collateral from a curated Morpho market.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

Moving value into the account

deposit.pull@v1.1

Draw tokens the OWNER has approved into the account. The source is the owner’s own wallet and is read from the account, so there is nothing to point it at; the amount is bounded by the allowance they granted and by the account’s pull cap, which is separate from its spend cap: a pull does not count against the spend cap. Use it as the FIRST step when the account is empty and the owner’s wallet is not.
  • Chains ethereum, base, arbitrum, hyperevm
  • Its own amount is an amount
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

Moving value out of the account

transfer.erc20@v1.1

Move an ERC-20 token.
  • Chains ethereum, base, arbitrum, hyperevm
  • Its own amount is an amount
  • Produces nothing a later step may refer to

transfer.native@v1.1

Move the chain’s native token by transaction value.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Asset fixed at ETH — the plan does not name one
  • Produces nothing a later step may refer to

Other

hedge.buy_option@v1.1

Buy an option to hedge a position. THIS SYSTEM DOES NOT PLACE IT — options trade on venues it does not reach, so this step is INSTRUCTIONS FOR THE PERSON, carried in the plan so the hedge sits in the right order beside the positions it protects. The run does not wait for it. It is reported and stepped over, and nothing later may be sized from it — the system never sees the option and cannot tell whether it was bought. Say what to buy in the params and the plan will read as an instruction: the asset, put or call, the strike as a multiple of spot, and how long. price_options gives what that has historically cost, and quoting it here is the difference between “buy a put” and a step somebody can act on.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Produces nothing a later step may refer to

hyperliquid.cancel@v1.0

Cancel a resting Hyperliquid order of this account, by its order id or its client order id. Moves nothing. The step’s amount is 0. The owner can switch this step off for the account (it is on by default).
  • Chains hyperevm
  • Its own amount is an amount
  • Asset fixed at USDC — the plan does not name one
  • Produces nothing a later step may refer to

hyperliquid.close@v1.0

Close all or part of a Hyperliquid perp position: a reduce-only immediate-or-cancel order on the side that shrinks it, sized from the position on chain. The step’s amount is 0. Always allowed, with or without a lock; the limit must be within 2% of the mark.
  • Chains hyperevm
  • Its own amount is an amount
  • Asset fixed at USDC — the plan does not name one
  • Produces nothing a later step may refer to

hyperliquid.connect@v1.0

Register the agent key the owner’s Hyperliquid lock names as this account’s Hyperliquid API wallet. Console only. The step’s amount is 0.
  • Chains hyperevm
  • Its own amount is an amount
  • Asset fixed at USDC — the plan does not name one
  • Produces nothing a later step may refer to
Takes no parameters.

hyperliquid.deposit@v1.0

Move USDC from this account on HyperEVM into its own Hyperliquid perps account (through Circle’s CoreDepositWallet). The amount is USDC in its raw 6-decimal units. Refused unless the owner has set a Hyperliquid lock for this account and the money already sent stays under the lock’s cap. Credited on Hyperliquid a moment later.
  • Chains hyperevm
  • Its own amount is an amount
  • Asset fixed at USDC — the plan does not name one
  • Produces nothing a later step may refer to
Takes no parameters.

hyperliquid.disconnect@v1.0

Remove this account’s Hyperliquid API wallet. Console only. Always allowed. The step’s amount is 0.
  • Chains hyperevm
  • Its own amount is an amount
  • Asset fixed at USDC — the plan does not name one
  • Produces nothing a later step may refer to
Takes no parameters.

hyperliquid.order@v1.0

Place an opening or limit order on a Hyperliquid perp (BTC or ETH), from this account’s own Hyperliquid account. The step’s amount is 0: the size is size. Never reduce-only. The limit is rounded to tick in the account’s favour and must sit inside the owner’s lock band around the mark when it is placed; leverage and margin mode are the lock’s (isolated, at most 5x by default).
  • Chains hyperevm
  • Its own amount is an amount
  • Asset fixed at USDC — the plan does not name one
  • Produces nothing a later step may refer to

hyperliquid.withdraw@v1.0

Bring USDC home from this account’s Hyperliquid account to the account on HyperEVM. The amount is USDC in raw 6-decimal units. Always allowed. When the free spot balance is short, this first moves margin to spot and sends nothing; run it again a block later.
  • Chains hyperevm
  • Its own amount is an amount
  • Asset fixed at USDC — the plan does not name one
  • Produces nothing a later step may refer to
Takes no parameters.

lighter.claim@v1.0

Make sure this account’s pending Lighter USDC is paid home to the account on Ethereum. The amount is the most to claim, in raw 6-decimal units; the step pays what is still pending up to it, and does nothing (without failing) when someone already paid it. It feeds no later step: a step after it spends a literal amount.
  • Chains ethereum
  • Its own amount is an amount
  • Asset fixed at USDC — the plan does not name one
  • Produces nothing a later step may refer to
Takes no parameters.

lighter.deposit@v1.0

Move USDC from this account on Ethereum into its own Lighter account (perps or spot). The amount is USDC in its raw 6-decimal units, at least 1 USDC, and counts against the owner’s USDC cap. Credited on Lighter after Lighter includes the deposit.
  • Chains ethereum
  • Its own amount is an amount
  • Asset fixed at USDC — the plan does not name one
  • Produces nothing a later step may refer to

lighter.register@v1.0

Register the API key the keeper made for this account’s Lighter account, at slot 200, with the keeper’s receipt for it. Console only. No parameters: the key and the receipt are filled when it runs and checked against the keeper before it is signed. The step’s amount is 0.
  • Chains ethereum
  • Its own amount is an amount
  • Asset fixed at USDC — the plan does not name one
  • Produces nothing a later step may refer to
Takes no parameters.

owner.migrate_aave_v3@v1.0

MOVE A LEVERAGED AAVE V3 POSITION INTO YOUR OWN NAME — collateral AND debt, in one transaction. YOU SEND IT, NOT THIS SYSTEM. Every other step here pays the account; this one pays you, and no adapter the agent drives is allowed to send anywhere but the account. So there is no intent to sign and nothing can place it on your behalf: the plan carries it in the right order, next to the position it empties, and you send it yourself. THE RUN DOES NOT WAIT FOR IT. It is reported and stepped over, and nothing later may be sized from it — this system never sees it happen and cannot tell what it moved. WHAT IT DOES, once you send it: a flash loan from Morpho repays the account’s debt, the collateral is withdrawn, both are re-opened against your own address at the same size, and the new borrowing settles the flash. The position you end with is the position the account had. IT NEEDS ONE THING FROM YOU FIRST, and it is refused without it. Aave will not open a debt in your name for a contract you have not authorised: call approveDelegation on the variable debt token of the loan asset, naming the migration adapter and at least what the account owes. That consent lives in Aave’s own storage and nothing here can fabricate it. WHY YOU MIGHT: you are winding the account down, moving custody, or you want the position somewhere the agent cannot reach. It is not a way to close a position — loan.close does that, and it is a step this system signs and executes.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Asset comes from the collateral parameter
  • Produces nothing a later step may refer to

owner.migrate_morpho@v1.0

MOVE A LEVERAGED MORPHO POSITION INTO YOUR OWN NAME — collateral AND debt, in one transaction YOU send. The Morpho twin of owner.migrate_aave_v3. THE RUN DOES NOT WAIT FOR IT. It is reported and stepped over, and nothing later may be sized from it. READ THIS BEFORE YOU GRANT IT: Morpho’s permission is the broadest of the three. Aave lets you delegate a NAMED AMOUNT of ONE asset; Morpho only offers authorising an address over EVERY market you hold a position in, with no ceiling. That is the protocol’s shape, not a choice made here. You authorise your own operating address, never the shared migration contract, and the migration uses it for exactly one borrow, in the market your account’s own position was in — and you should withdraw the authorisation once the move is done. MOVE BEFORE YOU DISMANTLE. The market’s parameters are read from the Morpho adapter your account has installed, so an account that uninstalls it first can no longer migrate.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Produces nothing a later step may refer to

weth.unwrap@v1.1

Unwrap WETH back into native ETH, one for one, at WETH’s own contract. The amount is WETH and counts against the WETH cap, and can be what an earlier step delivered in WETH; nothing moves out. The ETH it delivers cannot feed a later step: native value is not passed between steps.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Asset fixed at WETH — the plan does not name one
  • Produces nothing a later step may refer to
Takes no parameters.

weth.wrap@v1.1

Wrap native ETH into WETH, one for one, at WETH’s own contract. The amount is native ETH and counts against the ETH cap; nothing moves out. The WETH it delivers can feed later steps. This and transfer.native are the only steps that spend native ETH: in every asset parameter “ETH” still means WETH.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Asset fixed at ETH — the plan does not name one
  • Produces an amount, referable as {"Symbolic": "<step>.output"}
Takes no parameters.

Rent income

rent.claim_own@v1.0

Collect rent on property the ACCOUNT itself holds. Needs the account enrolled on 0xequity and holding property; otherwise it harvests nothing and succeeds. Mints a lock NFT rather than paying out.
  • Chains base
  • Its own amount is all of whatever is there
  • Asset fixed at USDC — the plan does not name one
  • Produces a lock NFT id, referable as {"Symbolic": "<step>.output"}

rent.claim_position@v1.0

Collect this account’s share of a rent position’s harvested rent, paid in USDC and spendable by a later step exactly as rent.redeem’s output is. The amount is the POSITION token id, not a quantity — the same shape as rent.redeem’s lock NFT id. The recipient is not chosen here: the forwarder pays whoever the position’s owner nominated, and the adapter refuses a position that pays neither this account nor its owner.
  • Chains base
  • Its own amount is a rent position id
  • Asset fixed at USDC — the plan does not name one
  • Produces an amount, referable as {"Symbolic": "<step>.output"}
Takes no parameters.

rent.harvest_delegated@v1.0

Drive 0xequity’s rent automation for the OWNER’s holding, when the owner delegated through RentDelegatee and created rent positions. Harvests, redeems and splits across those positions. DELIVERS THIS ACCOUNT NOTHING — the rent lands in the owner’s positions and the un-delegated remainder in the owner’s wallet — so nothing may spend its output. Pair it with rent.claim_position, which collects this account’s share. Needs the owner’s one global delegatee slot pointed at RentDelegatee, which the run checks before it commits.
  • Chains base
  • Its own amount is all of whatever is there
  • Asset fixed at USDC — the plan does not name one
  • Produces nothing a later step may refer to

rent.redeem@v1.0

TURN A RENT LOCK INTO MONEY. Redeems a matured lock NFT and delivers USDC to this account — NOT a rent token, and nothing needs selling afterwards. A later step may spend the output directly: &#123;"Symbolic": "&lt;this step>.output"} with asset USDC is how rent repays a loan. The amount is the lock NFT id, not a quantity — rent.claim_own mints one rather than paying out, and this is what turns it into tokens.
  • Chains base
  • Its own amount is a lock NFT id
  • Asset fixed at USDC — the plan does not name one
  • Produces an amount, referable as {"Symbolic": "<step>.output"}
Takes no parameters.

Revert Lend — borrowing against a position

revert.add_from_aave@v1.0

Pull Aave collateral into an existing Revert Uni NFT inside a Morpho flash.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces nothing a later step may refer to

revert.add_leverage@v1.0

Increase leverage on a Revert Uni position: add the flash-loaned asset’s side as liquidity, funded by a larger Revert borrow, plus the other side from the account.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces nothing a later step may refer to

revert.add_liquidity@v1.0

Increase liquidity on a Revert-levered Uni NFT inside a Morpho flash.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces nothing a later step may refer to

revert.borrow@v1.0

Borrow more USDC against an existing Revert position. Proceeds land on the account.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset fixed at USDC — the plan does not name one
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

revert.close_levered@v1.0

Close a Revert-levered Uni position: repay, burn LP, keep proceeds on the account.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

revert.collect_fees@v1.0

Collect Uni fees on a Revert-levered position through the vault’s own door: no flash, the loan stays open.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

revert.create_borrow@v1.0

Move a Uni V3 NFT into the Revert vault and borrow USDC onto the Kernel account.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset fixed at USDC — the plan does not name one
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

revert.exit_to_aave@v1.0

Move a Revert-levered Uni position onto Aave v3: repay vault, burn LP, supply both, borrow the flash.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces nothing a later step may refer to

revert.exit_to_aave_long@v1.0

Close a Revert Uni position into an Aave LONG: supply both tokens, borrow USDC, sell WETH if needed.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces nothing a later step may refer to

revert.exit_to_aave_one@v1.0

Close a Revert Uni position into Aave with a single collateral, swapping the other side first.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces nothing a later step may refer to

revert.exit_to_aave_short@v1.0

Close a Revert Uni position into an Aave SHORT: supply USDC, borrow WETH, sell WETH for USDC.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces nothing a later step may refer to

revert.mint_create_borrow@v1.0

Mint a Uni V3 NFT, deposit it into Revert, and borrow USDC in one intent.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Asset comes from the token0 parameter
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

revert.move_from_aave@v1.0

Move Aave collateral into a Revert-levered Uni NFT, funded by a Morpho flash.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Asset comes from the token0 parameter
  • Produces a uniswap position NFT id, referable as {"Symbolic": "<step>.output"}

revert.open_levered@v1.0

Mint a Uni V3 NFT and open a Revert borrow against it, funded by a Morpho flash.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Asset comes from the token0 parameter
  • Produces a uniswap position NFT id, referable as {"Symbolic": "<step>.output"}

revert.rebalance@v1.0

Rebalance a Revert-levered Uni position to signed ticks inside a Morpho flash.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces a uniswap position NFT id, referable as {"Symbolic": "<step>.output"}

revert.remove@v1.0

Return a Uni V3 NFT from the Revert vault to the Kernel account.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces a uniswap position NFT id, referable as {"Symbolic": "<step>.output"}

revert.remove_liquidity@v1.0

Decrease a Revert-levered Uni position through the vault’s own door: no flash, the vault checks the loan stays healthy.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces nothing a later step may refer to

revert.repay@v1.0

Repay a Revert USDC borrow. Cap is charged on USDC; leftover is refunded like Aave repay.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset fixed at USDC — the plan does not name one
  • Produces nothing a later step may refer to

revert.repay_withdraw@v1.0

Repay Revert, remove the NFT, and burn the LP onto the Kernel account.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

revert.reposition@v1.0

Reposition a Revert-levered Uni NFT to new ticks; same flash path as rebalance.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces a uniswap position NFT id, referable as {"Symbolic": "<step>.output"}

revert.split@v2.0

Split a Revert-levered Uni NFT into two new levered NFTs inside a flash, meeting at the tick you name. MAJOR BUMP FROM v1 for the same reason as uni.split: v1 always cut at the geometric midpoint, so an odd-span range could not be split at all.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces a uniswap position NFT id, referable as {"Symbolic": "<step>.output"}

Uniswap V3 positions

uni.close_at_tick@v1.0

Fully decrease a Uni V3 position if the current tick is inside a signed window.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

uni.collect@v1.0

Collect fees from a Uni V3 NFT onto the Kernel account.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

uni.decrease@v1.0

Remove a fraction of a Uni V3 position’s liquidity. Proceeds land on the account.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

uni.increase@v1.0

Add liquidity to an existing Uni V3 NFT the account already owns.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces nothing a later step may refer to

uni.mint@v1.0

Mint a Uniswap V3 LP NFT. The recipient is the Kernel account, never a signed field. token0 and token1 are symbols; ticks are the position’s range.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Asset comes from the token0 parameter
  • Produces a uniswap position NFT id, referable as {"Symbolic": "<step>.output"}

uni.mint_single@v1.0

Mint a Uni V3 LP from ONE token. Ticks are computed on-chain from the current tick; one of amount0/amount1 must be zero.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Asset comes from the token0 parameter
  • Produces a uniswap position NFT id, referable as {"Symbolic": "<step>.output"}

uni.rebalance@v1.0

Burn a Uni V3 NFT and mint a new one with signed ticks. Leftover tokens stay on the account.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces a uniswap position NFT id, referable as {"Symbolic": "<step>.output"}

uni.reposition@v1.0

Move a Uni V3 position to a one-spacing range around the current tick.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces a uniswap position NFT id, referable as {"Symbolic": "<step>.output"}

uni.split@v2.0

Split one Uni V3 NFT into two new NFTs on the account, meeting at the tick you name. MAJOR BUMP FROM v1: tick is required and there is no default. v1 always cut at the geometric midpoint, so a range spanning an ODD number of spacings could not be split at all — the midpoint landed between two ticks and the position manager refused it with EMPTY RETURNDATA and nothing to read. A position left by uni.reposition is one spacing wide and can never be split, because no tick lies strictly inside it.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces a uniswap position NFT id, referable as {"Symbolic": "<step>.output"}

uni.withdraw@v1.0

Burn a Uni V3 position fully and optionally swap the proceeds through the aggregation router at a signed minOut.
  • Chains ethereum, base, arbitrum
  • Its own amount is a uniswap position NFT id
  • Asset comes from the token0 parameter
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

Whole-loan moves across lenders and directions

loan.close@v1.1

CLOSE IT AND TAKE THE MONEY OUT. Ends the position: clear the debt with borrowed money, sell the collateral, repay the loan, keep the difference. THIS IS HOW AN ORDER FILLS WHEN THE ASSET TO SELL IS COLLATERAL — max_slippage_bps is the floor on that sale, so a triggered close with a floor IS a limit order on locked collateral. Set flash_market when the debt asset cannot itself be flash-borrowed. Partial: repay and sell less than all of it.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Asset comes from the collateral parameter
  • Produces an amount, referable as {"Symbolic": "<step>.output"}

loan.shift@v1.1

MOVE A LEVERAGED POSITION. Sells the collateral held and buys the destination market’s, keeping the loan — or sells NOTHING when both ends take the SAME collateral token, which is how a position changes protocol without changing its pair. BOTH ENDS ARE NAMED BY CURATED MARKET, so it reaches only pairs that are listed. Moves a leveraged position from one market to another in ONE transaction, paid for by a flash loan the account never holds. Set mode to what the position should BE — neutral means the same asset is lent and borrowed, short means a true reversal — and it is refused if the destination market disagrees. Set repay_all to clear the debt EXACTLY: a fixed amount leaves the interest accrued since planning, and dust debt blocks the withdraw. Amount is the COLLATERAL to move, because that is what leaves the account.
  • Chains ethereum, base, arbitrum
  • Its own amount is an amount
  • Asset comes from the collateral parameter
  • Produces an amount, referable as {"Symbolic": "<step>.output"}