Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Added "read_account_aero_upgrade", "write_account_aero_upgrade" and "write_wallet_upgrade_velo"; changed the definition of "dev_send", "read_account_history", "read_account_info" and 32 more (35 tools before, 38 now)
DEV ONLY—: Sign and broadcast an unsigned transaction using a ⟨22 unchanged words⟩ tool. Takes the transaction object returned by anywrite.*write_* tool and submits it onchain.
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"chain_id":{"default":8453 ⟨44 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"blockNumber" ⟨26 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"account_address":{"description":" ⟨39 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"history":{"items":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"type":" ⟨5 unchanged words⟩
⟨121 unchanged words⟩ a dex_protocol field (slipstream, slipstream_v2, slipstream_v3, metadexcl_v1, staked_slipstream, staked_slipstream_v2, staked_slipstream_v3, staked_metadexcl_v1, uniV3, uniV4). metadexcl_v1 is Aero CL, live on Base, Optimism and Robinhood for spot and margin accounts. Slipstream V2 is Base-only. V3 is available on Base and Optimism. Unichain supports Slipstream V1, uniV3 and uniV4. To configure automations, prefer passing the position's id ⟨15 unchanged words⟩ is also accepted directly as its `protocol` param.Slipstream V2 is Base-only. V3 is available on Base and Optimism. Unichain supports only Slipstream V1, uniV3, and uniV4.Numeric fields without a _usd suffix are in ⟨51 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"account_address":{"description":" ⟨26 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"account_address":{"description":" ⟨26 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"pnl_cost_basis":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"yield_earned":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"}},"required": ⟨4 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"chain_id":{"default":8453 ⟨27 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"assets" ⟨6 unchanged words⟩ },"symbol":{},"type":{}},"required":["address","symbol","decimals","type"],"type":"object"},"type":"array ⟨8 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"account_address":{"description":" ⟨23 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"account" ⟨6 unchanged words⟩ ":{"items":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"type":"array"},"enabled":{"items":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"type":"array"},"inferred_intents" ⟨5 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"account_address":{"description":" ⟨31 unchanged words⟩ ) id to scope availability to. Requires account_address.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"type":"object"}
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"automations":{"items":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"type":" ⟨19 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"asset_addresses":{"description":" ⟨31 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"prices":{"additionalProperties":{"type":"number"},"propertyNames":{"type":"string"},"type":"object"}},"required" ⟨3 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"topic":{"description":" ⟨32 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"content" ⟨10 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"limit":{"default":25 ⟨25 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"leaderboard":{"items":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"type":" ⟨17 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"chain_id":{"default":8453 ⟨36 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"apy_history":{"items":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"type":"array"},"pool":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"}},"required": ⟨4 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"chain_id":{"default":8453 ⟨16 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"context_notes" ⟨5 unchanged words⟩ ,"pools":{"items":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"type":" ⟨5 unchanged words⟩
Get full detail for a specific LP strategy by ID—: includes APY per range width (narrower range ⟨30 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"chain_id":{"default":8453 ⟨24 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"chain_id":{"default":8453 ⟨51 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"context_notes" ⟨11 unchanged words⟩ ,"strategies":{"items":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"type":" ⟨11 unchanged words⟩
Get a rebalancing recommendation for an Arcadia account—: suggests asset changes to optimize yield. Uses 1d ⟨27 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"account_address":{"description":" ⟨26 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"chain_id":{"default":8453 ⟨28 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"accounts":{"items":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"type":" ⟨5 unchanged words⟩
⟨7 unchanged words⟩ address. Use before write_wallet_approve to avoid redundant approvals—: skip approving if the current allowance is already sufficient.
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"chain_id":{"default":8453 ⟨58 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"chain_id":{"default":8453 ⟨42 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"native" ⟨53 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"wallet_address":{"description":" ⟨12 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":true{},"properties":{},"type":"object"}
⟨81 unchanged words⟩ read_guides('strategies'). The returned calldata is time-sensitive—: sign and broadcast within 30 seconds. If the ⟨62 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"account_address":{"description":" ⟨25 unchanged words⟩ tokens to deposit. Approve each token first (write.wallet.approvewrite_wallet_approve). Omit to use only account collateral.","items":{"additionalProperties":false,"properties":{"amount":{"description":"Amount ⟨64 unchanged words⟩ position, pass one entry.","items":{"additionalProperties":false,"properties":{"strategy_id":{"description":"Fromread.strategy.list
before
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"account_address":{"description":"Arcadia account address","type":"string"},"chain_id":{"default":8453,"description":"Chain ID: 8453 (Base), 130 (Unichain), 10 (Optimism), or 4663 (Robinhood)","type":"number"},"intents":{"description":"Complete desired automation state. In save mode anything omitted is disabled, so include every automation to keep. A single intent with enabled: false disables all automations.","items":{"anyOf":[{"additionalProperties":false,"properties":{"enabled":{"default":true,"description":"False disables this intent's managers instead of enabling them.","type":"boolean"},"kind":{"const":"compound_fees","type":"string"},"position_id":{"description":"LP position (NFT) id this intent applies to. Also used to auto-fetch position context.","type":"integer"},"tokens":{"description":"Which tokens' yield to reinvest. Omit for all yielding tokens. 'reward' only exists on a staked position whose reward token is not a pool token. Every yielding token must be assigned to either compound_fees or claim_rewards, so if you scope this to a subset you must add a claim_rewards intent covering the rest.","items":{"enum":["token0","token1","reward"],"type":"string"},"type":"array"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"config":{"additionalProperties":false,"default":{},"properties":{"buy_token":{"description":"ERC20 to swap into. Required whenever any token is being converted. It cannot be a token you also compound, one of the tokens being converted, or a token folded by add_to_lp.","type":"string"},"convert_tokens":{"description":"Subset of this intent's claimed tokens to swap to buy_token; the rest are claimed as-earned. Must be a subset of `tokens`. Omit to defer to mode (convert_to converts all claimed tokens, as_earned converts none). Use this for a partial convert, e.g. tokens: ['token0','reward'] with convert_tokens: ['reward'] swaps only the reward and claims token0 as-is.","items":{"$ref":"#/properties/intents/items/anyOf/0/properties/tokens/items"},"type":"array"},"destination":{"default":"account","description":"Payout target ('wallet' is the owner EOA). A wallet payout is only allowed for a pure as-earned claim: nothing converted, and every yielding token claimed. Any convert, or a claim scoped to a subset of tokens, must use 'account' because CowSwap settles there.","enum":["account","wallet"],"type":"string"},"mode":{"default":"as_earned","description":"as_earned pays out the claimed tokens as-is; convert_to swaps them to buy_token via CowSwap. Use convert_tokens to convert only some of them.","enum":["as_earned","convert_to"],"type":"string"},"recipient":{"description":"Explicit payout address. Overrides destination when set, and is subject to the same pure-as-earned rule as a wallet payout unless it equals the account address.","type":"string"},"tokens":{"description":"Which tokens' yield to claim out. Omit for all yielding tokens. A token cannot be both claimed and compounded, and every yielding token must be assigned to one of the two.","items":{"$ref":"#/properties/intents/items/anyOf/0/properties/tokens/items"},"type":"array"}},"type":"object"},"enabled":{"$ref":"#/properties/intents/items/anyOf/0/properties/enabled"},"kind":{"const":"claim_rewards","type":"string"},"position_id":{"$ref":"#/properties/intents/items/anyOf/0/properties/position_id"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"enabled":{"$ref":"#/properties/intents/items/anyOf/0/properties/enabled"},"kind":{"const":"add_to_lp","type":"string"},"position_id":{"$ref":"#/properties/intents/items/anyOf/0/properties/position_id"},"tokens":{"description":"Which pool tokens' idle account balance to fold into the LP. Omit for both. Folding is opt-in per token, and a folded token cannot be the buy_token of a claim_rewards convert.","items":{"enum":["token0","token1"],"type":"string"},"type":"array"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"config":{"additionalProperties":false,"default":{},"properties":{"destination":{"default":"account","enum":["account","wallet"],"type":"string"},"reward_recipient":{"description":"Explicit recipient address. Overrides destination when set.","type":"string"}},"type":"object"},"enabled":{"$ref":"#/properties/intents/items/anyOf/0/properties/enabled"},"kind":{"const":"claim_merkl","type":"string"},"position_id":{"$ref":"#/properties/intents/items/anyOf/0/properties/position_id"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"enabled":{"$ref":"#/properties/intents/items/anyOf/0/properties/enabled"},"kind":{"const":"rebalance","type":"string"},"max_tolerance":{"description":"Max price deviation (MEV/slippage cap), 1e18-scaled: 1e18 = 100%, so 5000000000000000 = 0.5% (the default) and 50000000000000000 = 5%. Omit for the pool's default. AAA pools are floored at 5%.","maximum":1000000000000000000,"minimum":0,"type":"integer"},"min_liquidity_ratio":{"description":"Min fraction of liquidity that must survive a rebalance, 1e18-scaled: 990000000000000000 = 99% (the default), i.e. at most 1% value loss. Omit for the default.","maximum":1000000000000000000,"minimum":0,"type":"integer"},"position_id":{"$ref":"#/properties/intents/items/anyOf/0/properties/position_id"},"strategy":{"anyOf":[{"additionalProperties":false,"properties":{"kind":{"const":"out_of_range","type":"string"},"max_rebalance_time":{"default":1000000000000,"description":"Seconds before a rebalance is forced. Default is effectively disabled.","type":"integer"},"min_rebalance_time":{"default":3600,"description":"Cooldown in seconds between rebalances.","type":"integer"},"optimal_token0_ratio":{"default":500000,"description":"Target token0 composition after a rebalance, 1e6-scaled: 500000 = 50% (balanced, the default), 750000 = 75% token0, 0 = all token1.","maximum":1000000,"minimum":0,"type":"integer"},"trigger_lower_tick_ratio":{"default":0,"description":"Offset from tick_lower as a fraction of the position's tick range, 1e6-scaled. This is TICK distance, not price: 50000 shifts the trigger by 5% of (tick_upper - tick_lower) ticks, which is not 5% of price. 0 = trigger exactly at the boundary. Positive (e.g. 50000) puts the trigger outside the position so price must travel further beyond the range before rebalancing. Negative (e.g. -50000) puts it inside, firing preemptively while price is still in range.","type":"integer"},"trigger_upper_tick_ratio":{"default":0,"description":"Same as trigger_lower_tick_ratio, for tick_upper. The two are independent, so asymmetric configs are valid (e.g. lower -50000, upper 0 rebalances early on the downside but only at the boundary on the upside).","type":"integer"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"base_range":{"default":50000,"type":"integer"},"deadzone":{"default":20000,"type":"integer"},"fraction_excess_to_limit_order":{"default":500000,"type":"integer"},"initial_range":{"default":200000,"type":"integer"},"k1":{"default":0,"type":"integer"},"k2":{"default":0,"type":"integer"},"kind":{"const":"protocol_owned_liquidity","type":"string"},"limit_order_withdrawal_threshold":{"default":50000,"type":"integer"},"rebalance_threshold":{"default":25000,"type":"integer"},"target_token0_ratio":{"default":500000,"type":"integer"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"has_reversal":{"default":false,"type":"boolean"},"kind":{"const":"take_profit","type":"string"},"profit_token":{"default":"token0","enum":["token0","token1"],"type":"string"},"reversal_reposition_mode":{"default":"","enum":["","anchor_tick","shift_range"],"type":"string"},"reversal_trigger_threshold":{"default":0,"type":"integer"},"reversal_trigger_type":{"default":"","enum":["","fixed","relative"],"type":"string"},"take_profit_reposition_mode":{"default":"anchor_tick","enum":["","anchor_tick","shift_range"],"type":"string"},"take_profit_trigger_threshold":{"default":0,"type":"integer"},"take_profit_trigger_type":{"default":"fixed","enum":["","fixed","relative"],"type":"string"}},"required":["kind"],"type":"object"}],"default":{"kind":"out_of_range"},"description":"out_of_range repositions when price leaves the range; take_profit runs on the dedicated profit-taker contract; protocol_owned_liquidity is the POL strategy."}},"required":["kind"],"type":"object"}],"description":"One user-facing automation intent."},"minItems":1,"type":"array"},"is_staked":{"description":"Whether the LP position is staked. Implied by a staked_* protocol value.","type":"boolean"},"mode":{"default":"save","description":"save diffs against on-chain state and returns a signable transaction that also disables anything omitted. preview resolves and validates only, returning a plan and no transaction.","enum":["save","preview"],"type":"string"},"owner":{"description":"Account owner EOA. Used to resolve wallet payout targets.","type":"string"},"position_id":{"description":"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.","type":"integer"},"protocol":{"description":"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.","enum":["slipstream_v1","slipstream_v2","slipstream_v3","uniswap_v3","uniswap_v4","slipstream","staked_slipstream","staked_slipstream_v2","staked_slipstream_v3","uniV3","uniV4"],"type":"string"},"reward_tokens":{"description":"Staking reward token addresses.","items":{"type":"string"},"type":"array"},"token0":{"description":"Pool token0 address.","type":"string"},"token1":{"description":"Pool token1 address.","type":"string"}},"required":["account_address","intents"],"type":"object"}before
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"account_address":{"description":"Arcadia account address","type":"string"},"chain_id":{"default":8453,"description":"Chain ID: 8453 (Base), 130 (Unichain), 10 (Optimism), or 4663 (Robinhood)","type":"number"},"disable":{"default":[],"description":"Asset-manager addresses to switch off, as returned by read.asset_manager.current.","items":{"type":"string"},"type":"array"},"enable":{"default":[],"description":"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.","items":{"anyOf":[{"additionalProperties":false,"properties":{"enabled":{"default":true,"description":"False disables this intent's managers instead of enabling them.","type":"boolean"},"kind":{"const":"compound_fees","type":"string"},"position_id":{"description":"LP position (NFT) id this intent applies to. Also used to auto-fetch position context.","type":"integer"},"tokens":{"description":"Which tokens' yield to reinvest. Omit for all yielding tokens. 'reward' only exists on a staked position whose reward token is not a pool token. Every yielding token must be assigned to either compound_fees or claim_rewards, so if you scope this to a subset you must add a claim_rewards intent covering the rest.","items":{"enum":["token0","token1","reward"],"type":"string"},"type":"array"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"config":{"additionalProperties":false,"default":{},"properties":{"buy_token":{"description":"ERC20 to swap into. Required whenever any token is being converted. It cannot be a token you also compound, one of the tokens being converted, or a token folded by add_to_lp.","type":"string"},"convert_tokens":{"description":"Subset of this intent's claimed tokens to swap to buy_token; the rest are claimed as-earned. Must be a subset of `tokens`. Omit to defer to mode (convert_to converts all claimed tokens, as_earned converts none). Use this for a partial convert, e.g. tokens: ['token0','reward'] with convert_tokens: ['reward'] swaps only the reward and claims token0 as-is.","items":{"$ref":"#/properties/enable/items/anyOf/0/properties/tokens/items"},"type":"array"},"destination":{"default":"account","description":"Payout target ('wallet' is the owner EOA). A wallet payout is only allowed for a pure as-earned claim: nothing converted, and every yielding token claimed. Any convert, or a claim scoped to a subset of tokens, must use 'account' because CowSwap settles there.","enum":["account","wallet"],"type":"string"},"mode":{"default":"as_earned","description":"as_earned pays out the claimed tokens as-is; convert_to swaps them to buy_token via CowSwap. Use convert_tokens to convert only some of them.","enum":["as_earned","convert_to"],"type":"string"},"recipient":{"description":"Explicit payout address. Overrides destination when set, and is subject to the same pure-as-earned rule as a wallet payout unless it equals the account address.","type":"string"},"tokens":{"description":"Which tokens' yield to claim out. Omit for all yielding tokens. A token cannot be both claimed and compounded, and every yielding token must be assigned to one of the two.","items":{"$ref":"#/properties/enable/items/anyOf/0/properties/tokens/items"},"type":"array"}},"type":"object"},"enabled":{"$ref":"#/properties/enable/items/anyOf/0/properties/enabled"},"kind":{"const":"claim_rewards","type":"string"},"position_id":{"$ref":"#/properties/enable/items/anyOf/0/properties/position_id"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"enabled":{"$ref":"#/properties/enable/items/anyOf/0/properties/enabled"},"kind":{"const":"add_to_lp","type":"string"},"position_id":{"$ref":"#/properties/enable/items/anyOf/0/properties/position_id"},"tokens":{"description":"Which pool tokens' idle account balance to fold into the LP. Omit for both. Folding is opt-in per token, and a folded token cannot be the buy_token of a claim_rewards convert.","items":{"enum":["token0","token1"],"type":"string"},"type":"array"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"config":{"additionalProperties":false,"default":{},"properties":{"destination":{"default":"account","enum":["account","wallet"],"type":"string"},"reward_recipient":{"description":"Explicit recipient address. Overrides destination when set.","type":"string"}},"type":"object"},"enabled":{"$ref":"#/properties/enable/items/anyOf/0/properties/enabled"},"kind":{"const":"claim_merkl","type":"string"},"position_id":{"$ref":"#/properties/enable/items/anyOf/0/properties/position_id"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"enabled":{"$ref":"#/properties/enable/items/anyOf/0/properties/enabled"},"kind":{"const":"rebalance","type":"string"},"max_tolerance":{"description":"Max price deviation (MEV/slippage cap), 1e18-scaled: 1e18 = 100%, so 5000000000000000 = 0.5% (the default) and 50000000000000000 = 5%. Omit for the pool's default. AAA pools are floored at 5%.","maximum":1000000000000000000,"minimum":0,"type":"integer"},"min_liquidity_ratio":{"description":"Min fraction of liquidity that must survive a rebalance, 1e18-scaled: 990000000000000000 = 99% (the default), i.e. at most 1% value loss. Omit for the default.","maximum":1000000000000000000,"minimum":0,"type":"integer"},"position_id":{"$ref":"#/properties/enable/items/anyOf/0/properties/position_id"},"strategy":{"anyOf":[{"additionalProperties":false,"properties":{"kind":{"const":"out_of_range","type":"string"},"max_rebalance_time":{"default":1000000000000,"description":"Seconds before a rebalance is forced. Default is effectively disabled.","type":"integer"},"min_rebalance_time":{"default":3600,"description":"Cooldown in seconds between rebalances.","type":"integer"},"optimal_token0_ratio":{"default":500000,"description":"Target token0 composition after a rebalance, 1e6-scaled: 500000 = 50% (balanced, the default), 750000 = 75% token0, 0 = all token1.","maximum":1000000,"minimum":0,"type":"integer"},"trigger_lower_tick_ratio":{"default":0,"description":"Offset from tick_lower as a fraction of the position's tick range, 1e6-scaled. This is TICK distance, not price: 50000 shifts the trigger by 5% of (tick_upper - tick_lower) ticks, which is not 5% of price. 0 = trigger exactly at the boundary. Positive (e.g. 50000) puts the trigger outside the position so price must travel further beyond the range before rebalancing. Negative (e.g. -50000) puts it inside, firing preemptively while price is still in range.","type":"integer"},"trigger_upper_tick_ratio":{"default":0,"description":"Same as trigger_lower_tick_ratio, for tick_upper. The two are independent, so asymmetric configs are valid (e.g. lower -50000, upper 0 rebalances early on the downside but only at the boundary on the upside).","type":"integer"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"base_range":{"default":50000,"type":"integer"},"deadzone":{"default":20000,"type":"integer"},"fraction_excess_to_limit_order":{"default":500000,"type":"integer"},"initial_range":{"default":200000,"type":"integer"},"k1":{"default":0,"type":"integer"},"k2":{"default":0,"type":"integer"},"kind":{"const":"protocol_owned_liquidity","type":"string"},"limit_order_withdrawal_threshold":{"default":50000,"type":"integer"},"rebalance_threshold":{"default":25000,"type":"integer"},"target_token0_ratio":{"default":500000,"type":"integer"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"has_reversal":{"default":false,"type":"boolean"},"kind":{"const":"take_profit","type":"string"},"profit_token":{"default":"token0","enum":["token0","token1"],"type":"string"},"reversal_reposition_mode":{"default":"","enum":["","anchor_tick","shift_range"],"type":"string"},"reversal_trigger_threshold":{"default":0,"type":"integer"},"reversal_trigger_type":{"default":"","enum":["","fixed","relative"],"type":"string"},"take_profit_reposition_mode":{"default":"anchor_tick","enum":["","anchor_tick","shift_range"],"type":"string"},"take_profit_trigger_threshold":{"default":0,"type":"integer"},"take_profit_trigger_type":{"default":"fixed","enum":["","fixed","relative"],"type":"string"}},"required":["kind"],"type":"object"}],"default":{"kind":"out_of_range"},"description":"out_of_range repositions when price leaves the range; take_profit runs on the dedicated profit-taker contract; protocol_owned_liquidity is the POL strategy."}},"required":["kind"],"type":"object"}],"description":"One user-facing automation intent."},"type":"array"},"is_staked":{"description":"Whether the LP position is staked. Implied by a staked_* protocol value.","type":"boolean"},"owner":{"description":"Account owner EOA. Used to resolve wallet payout targets.","type":"string"},"position_id":{"description":"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.","type":"integer"},"protocol":{"description":"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.","enum":["slipstream_v1","slipstream_v2","slipstream_v3","uniswap_v3","uniswap_v4","slipstream","staked_slipstream","staked_slipstream_v2","staked_slipstream_v3","uniV3","uniV4"],"type":"string"},"reward_tokens":{"description":"Staking reward token addresses.","items":{"type":"string"},"type":"array"},"token0":{"description":"Pool token0 address.","type":"string"},"token1":{"description":"Pool token1 address.","type":"string"}},"required":["account_address"],"type":"object"}⟨11 unchanged words⟩ against account collateral. NOT needed for leveraged LP—: write_account_add_liquidity handles borrowing internally when leverage > 0. ⟨10 unchanged words⟩ ). Spot accounts (no creditor) cannot borrow—: the tool will validate this and reject. Before ⟨14 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"account_address":{"description":" ⟨58 unchanged words⟩
⟨32 unchanged words⟩ ]. Tokens remain in the account after closing—: use write_account_withdraw to send them to your wallet. ⟨55 unchanged words⟩ tokens. - close_lp_only=false (default): Full atomic close—: burns LP, swaps everything to receive_assets, repays ⟨63 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"account_address":{"description":" ⟨16 unchanged words⟩ positions (NFTs), always use amount='1' and decimals=1—: do NOT pass the liquidity amount. asset_address = ⟨21 unchanged words⟩ = real token decimals. Get all values fromread.account.info.
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"account_version":{"default":0 ⟨89 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"description" ⟨33 unchanged words⟩
⟨7 unchanged words⟩ debt token and repays in one atomic transaction—: no wallet tokens needed. To repay from wallet ⟨34 unchanged words⟩ the position active. The returned calldata is time-sensitive—: sign and broadcast within 30 seconds. If the ⟨19 unchanged words⟩ Response includes tenderly_sim_url and tenderly_sim_status for pre-broadcast validation—: if tenderly_sim_status is 'false', do NOT broadcast the transaction.
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"account_address":{"description":" ⟨73 unchanged words⟩
⟨18 unchanged words⟩ NFTs (LP positions). NOT needed before write_account_add_liquidity—: that tool deposits from wallet atomically. Ensure the ⟨24 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"account_address":{"description":" ⟨111 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema
⟨29 unchanged words⟩ + repay + withdraw), use write_account_close instead—: it batches everything into one atomic transaction. The ⟨40 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"account_address":{"description":" ⟨15 unchanged words⟩ string). Must be less than total liquidity—: for full removal usewrite.account.close.write_account_close.","type":"string"},"asset_address":{ ⟨37 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"account_address":{"description":" ⟨57 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"description" ⟨33 unchanged words⟩
⟨20 unchanged words⟩ the operation. `asset_address` is the position manager contract—: pass the non-staked PM address when staking, or the staked PM address when unstaking. The returned calldata is time-sensitive—, sign and broadcast within 30 seconds. If the ⟨19 unchanged words⟩ Tenderly simulation may not be available for thisendpoint —endpoint.verifyVerify the position exists with read_account_info before signing. Aero CL (metadexcl_v1): spot accounts stake through the Arcadia wrapper, margin accounts through the staked module, on Base, Optimism and Robinhood.
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false
⟨44 unchanged words⟩ an active position. The returned calldata is time-sensitive—: sign and broadcast within 30 seconds. If the ⟨19 unchanged words⟩ Response includes tenderly_sim_url and tenderly_sim_status for pre-broadcast validation—: if tenderly_sim_status is 'false', do NOT broadcast the transaction.
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"account_address":{"description":" ⟨64 unchanged words⟩
{"$schema":"⟨30 unchanged words⟩ would make it undercollateralized. Does not support max_uint256—: pass exact amounts from read_account_info. Account version is ⟨8 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"account_address":{"description":" ⟨111 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"assets":{"description":" ⟨59 unchanged words⟩ address (ERC-4626 vault). Get this fromread.pool.list —read_pool_list: each pool's `tranches[0].address`.","type": ⟨7 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"description" ⟨33 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"chain_id":{"default":8453 ⟨72 unchanged words⟩ address (ERC-4626 vault). Get this fromread.pool.list —read_pool_list: each pool's `tranches[0].address`.","type": ⟨8 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"description" ⟨33 unchanged words⟩
⟨36 unchanged words⟩ read_wallet_allowances first to check if approval already exists—: skip this if the current allowance is sufficient.
{"$schema":"httphttps://json-schema.org/draft-07/schema#","additionalProperties//json-schema.org/draft/2020-12/schema":false,"properties":{"amount":{"default":" ⟨87 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"description"
Which Arcadia accounts have something to upgrade to Aero (MetadexCL V1): Slipstream V1 to V3 positions (Aerodrome on Base, Velodrome on Optimism, staked or not) and old AERO. Pass wallet_address for every account of a wallet, or account_address for one. Per account: status (ready | choices_required | waiting | not_open | nothing_to_upgrade), positions (every Slipstream position on it), movable (ready or needing a pool choice), waiting, blocked, old_aero (raw, 18 decimals). Accounts without a Slipstream position or old AERO are left out, including accounts whose positions already moved but who…
Upgrade one Arcadia account to Aero (MetadexCL V1) in one flashAction: every Slipstream V1/V2/V3 position (dex_protocol slipstream*, staked or not, see read_account_info) moves to the Aero CL pool with the same pair and variant at the same range and tick spacing (when Aero has no pool at that tick spacing, the user picks another one), and every unit of old AERO (loose, in rewards, in an old-AERO pair) becomes the new AERO. Returns the plan and, when anything can go now, the unsigned transaction. Only the account owner can sign it. The backend decides what moves: report items[].status and item…
Upgrade VELO held in a wallet on Optimism to the new AERO on Base: ordered unsigned wallet transactions from owner_address, an approve when the allowance is short, then depositLiquid on the Velodrome migration with the Hyperlane fee as value. 0.044 new AERO per VELO arrives at the same address on Base once the message lands. VELO inside an Arcadia account must be withdrawn to the wallet first (write_account_withdraw). VELO stays usable, so this is optional. Optimism (chain_id 10) only. 'upgrade unavailable' names the contract's reason: not_open (with the opening time), paused, budget_exhauste…
Certificate changed, valid to 2027-01-12
Certificate recorded, valid to 2026-11-14
Authorization not required
First tool surface recorded: 35 tools (server version 0.5.1)
Showing the latest 5 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":true{},"properties":{"account_version":{"type":["number","null"]},"automation":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"context_notes":{"items":{"type ⟨4 unchanged words⟩ :{"anyOf":[{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},{"type":"null"}]},"overview":{"anyOf":[{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},{"type": ⟨7 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"after":{"additionalProperties":true{},"properties":{"total_account_value":{"type":" ⟨8 unchanged words⟩ ":"object"},"before":{"additionalProperties":true{},"properties":{"total_account_value":{"type":" ⟨52 unchanged words⟩
after
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"account_address":{"description":"Arcadia account address","type":"string"},"chain_id":{"default":8453,"description":"Chain ID: 8453 (Base), 130 (Unichain), 10 (Optimism), or 4663 (Robinhood)","type":"number"},"intents":{"description":"Complete desired automation state. In save mode anything omitted is disabled, so include every automation to keep. A single intent with enabled: false disables all automations.","items":{"description":"One user-facing automation intent.","oneOf":[{"properties":{"enabled":{"default":true,"description":"False disables this intent's managers instead of enabling them.","type":"boolean"},"kind":{"const":"compound_fees","type":"string"},"position_id":{"description":"LP position (NFT) id this intent applies to. Also used to auto-fetch position context.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"tokens":{"description":"Which tokens' yield to reinvest. Omit for all yielding tokens. 'reward' only exists on a staked position whose reward token is not a pool token. Every yielding token must be assigned to either compound_fees or claim_rewards, so if you scope this to a subset you must add a claim_rewards intent covering the rest.","items":{"enum":["token0","token1","reward"],"type":"string"},"type":"array"}},"required":["kind"],"type":"object"},{"properties":{"config":{"default":{},"properties":{"buy_token":{"description":"ERC20 to swap into. Required whenever any token is being converted. It cannot be a token you also compound, one of the tokens being converted, or a token folded by add_to_lp.","type":"string"},"convert_tokens":{"description":"Subset of this intent's claimed tokens to swap to buy_token; the rest are claimed as-earned. Must be a subset of `tokens`. Omit to defer to mode (convert_to converts all claimed tokens, as_earned converts none). Use this for a partial convert, e.g. tokens: ['token0','reward'] with convert_tokens: ['reward'] swaps only the reward and claims token0 as-is.","items":{"enum":["token0","token1","reward"],"type":"string"},"type":"array"},"destination":{"default":"account","description":"Payout target ('wallet' is the owner EOA). A wallet payout is only allowed for a pure as-earned claim: nothing converted, and every yielding token claimed. Any convert, or a claim scoped to a subset of tokens, must use 'account' because CowSwap settles there.","enum":["account","wallet"],"type":"string"},"mode":{"default":"as_earned","description":"as_earned pays out the claimed tokens as-is; convert_to swaps them to buy_token via CowSwap. Use convert_tokens to convert only some of them.","enum":["as_earned","convert_to"],"type":"string"},"recipient":{"description":"Explicit payout address. Overrides destination when set, and is subject to the same pure-as-earned rule as a wallet payout unless it equals the account address.","type":"string"},"tokens":{"description":"Which tokens' yield to claim out. Omit for all yielding tokens. A token cannot be both claimed and compounded, and every yielding token must be assigned to one of the two.","items":{"enum":["token0","token1","reward"],"type":"string"},"type":"array"}},"type":"object"},"enabled":{"default":true,"description":"False disables this intent's managers instead of enabling them.","type":"boolean"},"kind":{"const":"claim_rewards","type":"string"},"position_id":{"description":"LP position (NFT) id this intent applies to. Also used to auto-fetch position context.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["kind"],"type":"object"},{"properties":{"enabled":{"default":true,"description":"False disables this intent's managers instead of enabling them.","type":"boolean"},"kind":{"const":"add_to_lp","type":"string"},"position_id":{"description":"LP position (NFT) id this intent applies to. Also used to auto-fetch position context.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"tokens":{"description":"Which pool tokens' idle account balance to fold into the LP. Omit for both. Folding is opt-in per token, and a folded token cannot be the buy_token of a claim_rewards convert.","items":{"enum":["token0","token1"],"type":"string"},"type":"array"}},"required":["kind"],"type":"object"},{"properties":{"config":{"default":{},"properties":{"destination":{"default":"account","enum":["account","wallet"],"type":"string"},"reward_recipient":{"description":"Explicit recipient address. Overrides destination when set.","type":"string"}},"type":"object"},"enabled":{"default":true,"description":"False disables this intent's managers instead of enabling them.","type":"boolean"},"kind":{"const":"claim_merkl","type":"string"},"position_id":{"description":"LP position (NFT) id this intent applies to. Also used to auto-fetch position context.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["kind"],"type":"object"},{"properties":{"enabled":{"default":true,"description":"False disables this intent's managers instead of enabling them.","type":"boolean"},"kind":{"const":"rebalance","type":"string"},"max_tolerance":{"description":"Max price deviation (MEV/slippage cap), 1e18-scaled: 1e18 = 100%, so 5000000000000000 = 0.5% (the default) and 50000000000000000 = 5%. Omit for the pool's default. AAA pools are floored at 5%.","maximum":1000000000000000000,"minimum":0,"multipleOf":1,"type":"number"},"min_liquidity_ratio":{"description":"Min fraction of liquidity that must survive a rebalance, 1e18-scaled: 990000000000000000 = 99% (the default), i.e. at most 1% value loss. Omit for the default.","maximum":1000000000000000000,"minimum":0,"multipleOf":1,"type":"number"},"position_id":{"description":"LP position (NFT) id this intent applies to. Also used to auto-fetch position context.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"strategy":{"default":{"kind":"out_of_range"},"description":"out_of_range repositions when price leaves the range; take_profit runs on the dedicated profit-taker contract; protocol_owned_liquidity is the POL strategy.","oneOf":[{"properties":{"kind":{"const":"out_of_range","type":"string"},"max_rebalance_time":{"default":1000000000000,"description":"Seconds before a rebalance is forced. Default is effectively disabled.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"min_rebalance_time":{"default":3600,"description":"Cooldown in seconds between rebalances.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"optimal_token0_ratio":{"default":500000,"description":"Target token0 composition after a rebalance, 1e6-scaled: 500000 = 50% (balanced, the default), 750000 = 75% token0, 0 = all token1.","maximum":1000000,"minimum":0,"type":"integer"},"trigger_lower_tick_ratio":{"default":0,"description":"Offset from tick_lower as a fraction of the position's tick range, 1e6-scaled. This is TICK distance, not price: 50000 shifts the trigger by 5% of (tick_upper - tick_lower) ticks, which is not 5% of price. 0 = trigger exactly at the boundary. Positive (e.g. 50000) puts the trigger outside the position so price must travel further beyond the range before rebalancing. Negative (e.g. -50000) puts it inside, firing preemptively while price is still in range.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"trigger_upper_tick_ratio":{"default":0,"description":"Same as trigger_lower_tick_ratio, for tick_upper. The two are independent, so asymmetric configs are valid (e.g. lower -50000, upper 0 rebalances early on the downside but only at the boundary on the upside).","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["kind"],"type":"object"},{"properties":{"base_range":{"default":50000,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"deadzone":{"default":20000,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"fraction_excess_to_limit_order":{"default":500000,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"initial_range":{"default":200000,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"k1":{"default":0,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"k2":{"default":0,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"kind":{"const":"protocol_owned_liquidity","type":"string"},"limit_order_withdrawal_threshold":{"default":50000,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"rebalance_threshold":{"default":25000,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"target_token0_ratio":{"default":500000,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["kind"],"type":"object"},{"properties":{"has_reversal":{"default":false,"type":"boolean"},"kind":{"const":"take_profit","type":"string"},"profit_token":{"default":"token0","enum":["token0","token1"],"type":"string"},"reversal_reposition_mode":{"default":"","enum":["","anchor_tick","shift_range"],"type":"string"},"reversal_trigger_threshold":{"default":0,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"reversal_trigger_type":{"default":"","enum":["","fixed","relative"],"type":"string"},"take_profit_reposition_mode":{"default":"anchor_tick","enum":["","anchor_tick","shift_range"],"type":"string"},"take_profit_trigger_threshold":{"default":0,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"take_profit_trigger_type":{"default":"fixed","enum":["","fixed","relative"],"type":"string"}},"required":["kind"],"type":"object"}]}},"required":["kind"],"type":"object"}]},"minItems":1,"type":"array"},"is_staked":{"description":"Whether the LP position is staked. Implied by a staked_* protocol value.","type":"boolean"},"mode":{"default":"save","description":"save diffs against on-chain state and returns a signable transaction that also disables anything omitted. preview resolves and validates only, returning a plan and no transaction.","enum":["save","preview"],"type":"string"},"owner":{"description":"Account owner EOA. Used to resolve wallet payout targets.","type":"string"},"position_id":{"description":"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.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"protocol":{"description":"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, metadexcl_v1, staked_metadexcl_v1, ...), which imply is_staked, as well as the canonical slipstream_v1 / uniswap_v3 spellings. metadexcl_v1 is Aero CL; staked_metadexcl_v1 covers both the staked module and the wrapper.","enum":["slipstream_v1","slipstream_v2","slipstream_v3","uniswap_v3","uniswap_v4","metadexcl_v1","slipstream","staked_slipstream","staked_slipstream_v2","staked_slipstream_v3","uniV3","uniV4","staked_metadexcl_v1"],"type":"string"},"reward_tokens":{"description":"Staking reward token addresses.","items":{"type":"string"},"type":"array"},"token0":{"description":"Pool token0 address.","type":"string"},"token1":{"description":"Pool token1 address.","type":"string"}},"required":["account_address","intents"],"type":"object"}{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"description" ⟨27 unchanged words⟩ "array"},"removed":{"items":{"$refadditionalProperties":false,"#/properties/diff/properties/added/itemsproperties":{"address":{"type":"string"},"enabled":{"type":"boolean"},"manager":{"type":"string"}},"required":["manager","address","enabled"],"type":"object"},"type":"array"},"updated":{"items":{"$refadditionalProperties":false,"#/properties/diff/properties/added/itemsproperties":{"address":{"type":"string"},"enabled":{"type":"boolean"},"manager":{"type":"string"}},"required":["manager","address","enabled"],"type":"object"},"type":"array"}},"required" ⟨123 unchanged words⟩
after
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"account_address":{"description":"Arcadia account address","type":"string"},"chain_id":{"default":8453,"description":"Chain ID: 8453 (Base), 130 (Unichain), 10 (Optimism), or 4663 (Robinhood)","type":"number"},"disable":{"default":[],"description":"Asset-manager addresses to switch off, as returned by read_asset_manager_current.","items":{"type":"string"},"type":"array"},"enable":{"default":[],"description":"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.","items":{"description":"One user-facing automation intent.","oneOf":[{"properties":{"enabled":{"default":true,"description":"False disables this intent's managers instead of enabling them.","type":"boolean"},"kind":{"const":"compound_fees","type":"string"},"position_id":{"description":"LP position (NFT) id this intent applies to. Also used to auto-fetch position context.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"tokens":{"description":"Which tokens' yield to reinvest. Omit for all yielding tokens. 'reward' only exists on a staked position whose reward token is not a pool token. Every yielding token must be assigned to either compound_fees or claim_rewards, so if you scope this to a subset you must add a claim_rewards intent covering the rest.","items":{"enum":["token0","token1","reward"],"type":"string"},"type":"array"}},"required":["kind"],"type":"object"},{"properties":{"config":{"default":{},"properties":{"buy_token":{"description":"ERC20 to swap into. Required whenever any token is being converted. It cannot be a token you also compound, one of the tokens being converted, or a token folded by add_to_lp.","type":"string"},"convert_tokens":{"description":"Subset of this intent's claimed tokens to swap to buy_token; the rest are claimed as-earned. Must be a subset of `tokens`. Omit to defer to mode (convert_to converts all claimed tokens, as_earned converts none). Use this for a partial convert, e.g. tokens: ['token0','reward'] with convert_tokens: ['reward'] swaps only the reward and claims token0 as-is.","items":{"enum":["token0","token1","reward"],"type":"string"},"type":"array"},"destination":{"default":"account","description":"Payout target ('wallet' is the owner EOA). A wallet payout is only allowed for a pure as-earned claim: nothing converted, and every yielding token claimed. Any convert, or a claim scoped to a subset of tokens, must use 'account' because CowSwap settles there.","enum":["account","wallet"],"type":"string"},"mode":{"default":"as_earned","description":"as_earned pays out the claimed tokens as-is; convert_to swaps them to buy_token via CowSwap. Use convert_tokens to convert only some of them.","enum":["as_earned","convert_to"],"type":"string"},"recipient":{"description":"Explicit payout address. Overrides destination when set, and is subject to the same pure-as-earned rule as a wallet payout unless it equals the account address.","type":"string"},"tokens":{"description":"Which tokens' yield to claim out. Omit for all yielding tokens. A token cannot be both claimed and compounded, and every yielding token must be assigned to one of the two.","items":{"enum":["token0","token1","reward"],"type":"string"},"type":"array"}},"type":"object"},"enabled":{"default":true,"description":"False disables this intent's managers instead of enabling them.","type":"boolean"},"kind":{"const":"claim_rewards","type":"string"},"position_id":{"description":"LP position (NFT) id this intent applies to. Also used to auto-fetch position context.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["kind"],"type":"object"},{"properties":{"enabled":{"default":true,"description":"False disables this intent's managers instead of enabling them.","type":"boolean"},"kind":{"const":"add_to_lp","type":"string"},"position_id":{"description":"LP position (NFT) id this intent applies to. Also used to auto-fetch position context.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"tokens":{"description":"Which pool tokens' idle account balance to fold into the LP. Omit for both. Folding is opt-in per token, and a folded token cannot be the buy_token of a claim_rewards convert.","items":{"enum":["token0","token1"],"type":"string"},"type":"array"}},"required":["kind"],"type":"object"},{"properties":{"config":{"default":{},"properties":{"destination":{"default":"account","enum":["account","wallet"],"type":"string"},"reward_recipient":{"description":"Explicit recipient address. Overrides destination when set.","type":"string"}},"type":"object"},"enabled":{"default":true,"description":"False disables this intent's managers instead of enabling them.","type":"boolean"},"kind":{"const":"claim_merkl","type":"string"},"position_id":{"description":"LP position (NFT) id this intent applies to. Also used to auto-fetch position context.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["kind"],"type":"object"},{"properties":{"enabled":{"default":true,"description":"False disables this intent's managers instead of enabling them.","type":"boolean"},"kind":{"const":"rebalance","type":"string"},"max_tolerance":{"description":"Max price deviation (MEV/slippage cap), 1e18-scaled: 1e18 = 100%, so 5000000000000000 = 0.5% (the default) and 50000000000000000 = 5%. Omit for the pool's default. AAA pools are floored at 5%.","maximum":1000000000000000000,"minimum":0,"multipleOf":1,"type":"number"},"min_liquidity_ratio":{"description":"Min fraction of liquidity that must survive a rebalance, 1e18-scaled: 990000000000000000 = 99% (the default), i.e. at most 1% value loss. Omit for the default.","maximum":1000000000000000000,"minimum":0,"multipleOf":1,"type":"number"},"position_id":{"description":"LP position (NFT) id this intent applies to. Also used to auto-fetch position context.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"strategy":{"default":{"kind":"out_of_range"},"description":"out_of_range repositions when price leaves the range; take_profit runs on the dedicated profit-taker contract; protocol_owned_liquidity is the POL strategy.","oneOf":[{"properties":{"kind":{"const":"out_of_range","type":"string"},"max_rebalance_time":{"default":1000000000000,"description":"Seconds before a rebalance is forced. Default is effectively disabled.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"min_rebalance_time":{"default":3600,"description":"Cooldown in seconds between rebalances.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"optimal_token0_ratio":{"default":500000,"description":"Target token0 composition after a rebalance, 1e6-scaled: 500000 = 50% (balanced, the default), 750000 = 75% token0, 0 = all token1.","maximum":1000000,"minimum":0,"type":"integer"},"trigger_lower_tick_ratio":{"default":0,"description":"Offset from tick_lower as a fraction of the position's tick range, 1e6-scaled. This is TICK distance, not price: 50000 shifts the trigger by 5% of (tick_upper - tick_lower) ticks, which is not 5% of price. 0 = trigger exactly at the boundary. Positive (e.g. 50000) puts the trigger outside the position so price must travel further beyond the range before rebalancing. Negative (e.g. -50000) puts it inside, firing preemptively while price is still in range.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"trigger_upper_tick_ratio":{"default":0,"description":"Same as trigger_lower_tick_ratio, for tick_upper. The two are independent, so asymmetric configs are valid (e.g. lower -50000, upper 0 rebalances early on the downside but only at the boundary on the upside).","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["kind"],"type":"object"},{"properties":{"base_range":{"default":50000,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"deadzone":{"default":20000,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"fraction_excess_to_limit_order":{"default":500000,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"initial_range":{"default":200000,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"k1":{"default":0,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"k2":{"default":0,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"kind":{"const":"protocol_owned_liquidity","type":"string"},"limit_order_withdrawal_threshold":{"default":50000,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"rebalance_threshold":{"default":25000,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"target_token0_ratio":{"default":500000,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["kind"],"type":"object"},{"properties":{"has_reversal":{"default":false,"type":"boolean"},"kind":{"const":"take_profit","type":"string"},"profit_token":{"default":"token0","enum":["token0","token1"],"type":"string"},"reversal_reposition_mode":{"default":"","enum":["","anchor_tick","shift_range"],"type":"string"},"reversal_trigger_threshold":{"default":0,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"reversal_trigger_type":{"default":"","enum":["","fixed","relative"],"type":"string"},"take_profit_reposition_mode":{"default":"anchor_tick","enum":["","anchor_tick","shift_range"],"type":"string"},"take_profit_trigger_threshold":{"default":0,"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"take_profit_trigger_type":{"default":"fixed","enum":["","fixed","relative"],"type":"string"}},"required":["kind"],"type":"object"}]}},"required":["kind"],"type":"object"}]},"type":"array"},"is_staked":{"description":"Whether the LP position is staked. Implied by a staked_* protocol value.","type":"boolean"},"owner":{"description":"Account owner EOA. Used to resolve wallet payout targets.","type":"string"},"position_id":{"description":"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.","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"protocol":{"description":"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, metadexcl_v1, staked_metadexcl_v1, ...), which imply is_staked, as well as the canonical slipstream_v1 / uniswap_v3 spellings. metadexcl_v1 is Aero CL; staked_metadexcl_v1 covers both the staked module and the wrapper.","enum":["slipstream_v1","slipstream_v2","slipstream_v3","uniswap_v3","uniswap_v4","metadexcl_v1","slipstream","staked_slipstream","staked_slipstream_v2","staked_slipstream_v3","uniV3","uniV4","staked_metadexcl_v1"],"type":"string"},"reward_tokens":{"description":"Staking reward token addresses.","items":{"type":"string"},"type":"array"},"token0":{"description":"Pool token0 address.","type":"string"},"token1":{"description":"Pool token1 address.","type":"string"}},"required":["account_address"],"type":"object"}{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"description" ⟨27 unchanged words⟩ "array"},"removed":{"items":{"$refadditionalProperties":false,"#/properties/diff/properties/added/itemsproperties":{"address":{"type":"string"},"enabled":{"type":"boolean"},"manager":{"type":"string"}},"required":["manager","address","enabled"],"type":"object"},"type":"array"},"updated":{"items":{"$refadditionalProperties":false,"#/properties/diff/properties/added/itemsproperties":{"address":{"type":"string"},"enabled":{"type":"boolean"},"manager":{"type":"string"}},"required":["manager","address","enabled"],"type":"object"},"type":"array"}},"required" ⟨123 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"after":{"additionalProperties":true{},"properties":{"total_account_value":{"type":" ⟨8 unchanged words⟩ ":"object"},"before":{"additionalProperties":true{},"properties":{"total_account_value":{"type":" ⟨52 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"after":{"additionalProperties":true{},"properties":{"total_account_value":{"type":" ⟨8 unchanged words⟩ ":"object"},"before":{"additionalProperties":true{},"properties":{"total_account_value":{"type":" ⟨52 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"after":{"additionalProperties":true{},"properties":{"total_account_value":{"type":" ⟨8 unchanged words⟩ ":"object"},"before":{"additionalProperties":true{},"properties":{"total_account_value":{"type":" ⟨52 unchanged words⟩
{"$schema":"httphttps://json-schema.org/draft-07/schema#//json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"after":{"additionalProperties":true{},"properties":{"total_account_value":{"type":" ⟨8 unchanged words⟩ ":"object"},"before":{"additionalProperties":true{},"properties":{"total_account_value":{"type":" ⟨52 unchanged words⟩