write.account.automations_delta
Apply targeted updates to an account's automations: enable or disable specific intents while leaving unmentioned ones untouched, then get the unsigned setAssetManagers transaction.
Instructions
Apply an explicit change to an account's automations and return the unsigned setAssetManagers transaction. Unlike write.account.automations this is a delta, not a full desired state: automations you do not mention are left untouched. Use it to switch one automation on or off without restating the others.
The enable array takes intents to switch on (same shapes as write.account.automations). To turn an automation OFF, call read.asset_manager.current, take the address of the manager serving it, and pass that address in the disable array: an intent with enabled: false in enable is rejected because the backend would ignore it. Superseded or unreadable managers still set on the account are force-disabled in the same transaction regardless.
Intents:
compound_fees: reinvest earned fees/rewards back into the LP. Optional 'tokens' scopes it per yielding token. A staked reward that is not a pool token is swapped in via CowSwap automatically.
claim_rewards: claim yield out. config.mode as_earned pays the tokens as-is, convert_to swaps them to config.buy_token via CowSwap. config.convert_tokens converts only a subset and claims the rest as-earned. config.destination account or wallet.
add_to_lp: fold idle pool-token balances (deposits, rebalance leftovers) back into the LP. Opt-in per token.
claim_merkl: auto-claim Merkl incentive rewards. Independent of the compounder/claimer/cowswapper triad and needs no position context.
rebalance: reposition the LP. strategy out_of_range (default), take_profit (runs on the dedicated profit-taker contract), or protocol_owned_liquidity.
Pass position_id (from assets[] in read.account.info) and the backend fills in protocol, is_staked, token0, token1 and reward_tokens for you; anything you pass explicitly wins. claim_merkl needs no position context.
Rules the backend enforces (a violation is returned as an error, never written on-chain):
Every yielding token must be assigned to exactly one of compound_fees or claim_rewards. Scoping one to a subset without covering the rest is rejected, and no token may be in both.
A wallet or custom-recipient payout requires a pure as-earned claim: nothing converted, and every yielding token claimed. Converts settle in the account.
convert_tokens must be a subset of the claimed tokens, and buy_token cannot be a compounded token, a converted token, or an add_to_lp folded token.
Each intent kind may appear only once, and a token list must not be empty or name a token the position does not yield.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| owner | No | Account owner EOA. Used to resolve wallet payout targets. | |
| enable | No | Intents to switch on. Leave empty when only disabling. This array cannot turn anything off: an entry with enabled: false is rejected, use `disable` instead. | |
| token0 | No | Pool token0 address. | |
| token1 | No | Pool token1 address. | |
| disable | No | Asset-manager addresses to switch off, as returned by read.asset_manager.current. | |
| chain_id | No | Chain ID: 8453 (Base), 130 (Unichain), or 10 (Optimism) | |
| protocol | No | Position's DEX protocol. Only needed when position_id is omitted. Accepts the dex_protocol values the read tools return (slipstream, staked_slipstream_v3, uniV3, ...), which imply is_staked, as well as the canonical slipstream_v1 / uniswap_v3 spellings. | |
| is_staked | No | Whether the LP position is staked. Implied by a staked_* protocol value. | |
| position_id | No | LP position (NFT) id, as listed in assets[] by read.account.info. Supply this and the backend fetches protocol, staked flag, tokens and reward tokens for you. Strongly preferred over passing the position fields by hand. | |
| reward_tokens | No | Staking reward token addresses. | |
| account_address | Yes | Arcadia account address |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| diff | No | ||
| plan | Yes | ||
| valid | Yes | ||
| errors | Yes | ||
| warnings | Yes | ||
| description | Yes | ||
| transaction | No | ||
| preview_only | No | ||
| human_summary | Yes | ||
| simulation_url | No | ||
| no_changes_needed | No | ||
| tenderly_sim_status | No |