{"name":"topaz-agent","version":"0.22.1","protocolVersion":"2024-11-05","description":"Topaz ve(3,3) DEX agent tools for BNB Chain, Robinhood Chain, Base, Ethereum and Arc. POST JSON-RPC 2.0 requests to this endpoint.","capabilities":{"tools":{}},"tools":[{"name":"topaz_get_multichain_data","description":"Read live Topaz data on BNB (56), Robinhood (4663), Base (8453), Ethereum (1), Arc (5042), or all. GET-only: chains/readiness, deployments, protocol, pools/tokens/prices/history, accounts/portfolio/positions/rewards, gauges/votes/epochs, xTOPAZ backing and bridge packets. Preserve the entire API envelope and partial/null values. Use /v1/chains first for readiness; getTopazGuide analytics-multichain explains filters. Defaults to 20 rows: follow returned cursors with the same filters. Prefer the focused chain-aware tools for recommendations and calldata; use this for raw reads they do not cover. Never relabel one chain's data as another's.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"endpoint":{"type":"string","enum":["/v1/curation","/v1/categories","/v1/token-lists","/v1/token-lists/{chainId}","/v1/tokens","/v1/pools","/v1/tokens/{chainId}/{tokenAddress}/price-changes","/v1/tokens/{chainId}/{tokenAddress}/price-history","/v1/pools/{chainId}/{poolAddress}/ticks","/v1/pools/{chainId}/{poolAddress}","/v1/pools/{chainId}/{poolAddress}/history","/v1/pools/{chainId}/{poolAddress}/daily","/v1/tokens/{chainId}/{tokenAddress}","/v1/tokens/{chainId}/{tokenAddress}/prices","/v1/pools/{chainId}/{poolAddress}/trailing","/v1/tokens/{chainId}/{tokenAddress}/trailing","/v1/prices","/v1/accounts/{address}/portfolio","/v1/accounts/{address}/liquidity-positions","/v1/accounts/{address}/voting-positions","/v1/accounts/{address}/votes","/v1/accounts/{address}/rewards","/v1/accounts/{address}/activity","/v1/accounts/{address}/xtopaz","/v1/chains","/v1/deployments","/v1/health","/v1/health/chains","/v1/gauges","/v1/gauges/{chainId}/{gaugeAddress}","/v1/gauges/{chainId}/{gaugeAddress}/history","/v1/gauges/{chainId}/{gaugeAddress}/rewards","/v1/gauges/{chainId}/{gaugeAddress}/bribes","/v1/pools/{chainId}/{poolAddress}/bribes","/v1/bribes","/v1/markets/bribes","/v1/epochs","/v1/epochs/{chainId}/{epochStart}","/v1/votes","/v1/protocol/history","/v1/protocol/daily","/v1/protocol/trailing","/v1/protocol","/v1/bridge","/v1/bridge/{guid}","/v1/xtopaz","/v1/xtopaz/rate-history","/v1/xtopaz/epochs","/v1/quote-providers"],"description":"Public GET route template. Use pathParams for placeholders and query for filters/cursors."},"chain":{"type":"string","enum":["1","56","4663","5042","8453","all"],"description":"Requested chain id, or all for comparisons."},"pathParams":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","maxLength":100}},"query":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","maxLength":16384}}},"required":["endpoint","chain"],"additionalProperties":false}},{"name":"topaz_get_guide","description":"Read bundled Topaz skill 3.1.0 guidance for five-chain mechanics, xTOPAZ vault entry/redemption, bridging/recovery, spoke voting, API interpretation, website navigation or deployment/ABI catalog. Snapshot reviewed 2026-09-20; use live tools for changing state.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"topic":{"type":"string","enum":["overview","addresses","analytics-multichain","analytics-onchain","analytics-stats-api","analytics-subgraph","apr-calculations","auto-manage","brand","bribes-deposit","bridging","deployments","epoch-timing","gauges","liquidity-v2","liquidity-v3","liquidity-zaps","multichain","pitfalls","relays","rewards-claiming","spoke-voting","swapping-api","swapping-mixed","swapping-v2","swapping-v3","tokens","ve-locks","verification","voting","website","xtopaz-faq","xtopaz-vault","developers/DEVELOPERS","developers/error-cookbook","developers/frontend-integration","developers/gauges-and-apr","developers/multichain-integration","developers/pools-and-gauges","developers/quote-widget","developers/subgraph-recipes","developers/swap-calldata","developers/topaz-id-connect","developers/user-positions"]}},"required":["topic"]}},{"name":"topaz_get_protocol_stats","description":"Get the Topaz protocol overview per chain — TVL, 24h/7d volume and fees, pool and live-gauge counts — plus five-chain totals. BNB Chain also reports the TOPAZ price and total TOPAZ locked in veTOPAZ. Spoke chains (Robinhood, Base, Ethereum, Arc) emit xTOPAZ to LPs. `partial: true` means some pools could not be priced, so the figure is a known lower bound.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"default":"all","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Use \"all\" to compare every Topaz chain at once. Defaults to all.","type":"string"}}}},{"name":"topaz_get_pool_stats","description":"Get top Topaz pools on one chain or across all five, sorted by TVL, volume, fees, or APR. Returns chain, pool pair, type, TVL, volume, fee APR, emission APR (TOPAZ on BNB Chain, xTOPAZ on spokes), bribe APR, and total APR.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"sort":{"default":"tvl","description":"Sort criteria","type":"string","enum":["tvl","volume24h","fees24h","apr"]},"limit":{"default":10,"description":"Number of pools to return","type":"number","minimum":1,"maximum":50},"type":{"default":"all","description":"Pool type filter","type":"string","enum":["v2","v3","all"]},"chain":{"default":"all","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Use \"all\" to compare every Topaz chain at once. Defaults to all.","type":"string"}}}},{"name":"topaz_get_gauge_stats","description":"Get active Topaz gauges on one chain or across all five with emission APR, pool fee APR, bribe APR, staked TVL, and vote weights. lpEmissionApr is the reward APR for staked LPs (TOPAZ on BNB Chain, xTOPAZ on Robinhood/Base/Ethereum/Arc); poolFeeApr is trading-fee yield. These are different — use lpEmissionApr for LP emission strategy, not poolFeeApr. Data comes from indexed snapshots refreshed every few minutes.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"limit":{"default":15,"description":"Max gauges to return","type":"number","minimum":1,"maximum":40},"chain":{"default":"all","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Use \"all\" to compare every Topaz chain at once. Defaults to all.","type":"string"}}}},{"name":"topaz_quote_swap","description":"Get a swap quote for a token pair on one Topaz chain (BNB Chain, Robinhood, Base, Ethereum or Arc). Uses quote.topazdex.com smart order routing across that chain's CL and v2 stable/volatile pools, including splits and mixed routes. Returns expected and minimum output plus route details. Swaps never cross chains — move xTOPAZ between chains with the bridge tools. Price impact is unavailable from this API; set includeAlternatives for split/hop details.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"sellToken":{"type":"string","description":"Token to sell — symbol (e.g. 'BNB', 'ETH', 'USDC', 'xTOPAZ') or address on the selected chain"},"buyToken":{"type":"string","description":"Token to buy — symbol or address on the selected chain"},"sellAmount":{"type":"string","description":"Amount to sell in human-readable units (e.g. '1.5', '1000')"},"includeAlternatives":{"default":false,"description":"Include Topaz API route details.","type":"boolean"},"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"}},"required":["sellToken","buyToken","sellAmount"]}},{"name":"topaz_build_swap_calldata","description":"Build wallet-ready swap calldata on one Topaz chain that a user can sign and broadcast. Returns ALL ordered calls: ERC20 zero-reset/approve, Permit2.approve, swap, and both allowance cleanups, targeting that chain's Universal Router. ERC20 swaps require an atomic wallet/account batch, with no Permit2 signature. Never submit just the final call. On Arc every leg is an ERC20 (USDC is the gas token and has no wrapped native). NEVER broadcasts — only returns calldata for the user to sign.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"sellToken":{"type":"string","description":"Token to sell — symbol or address on the selected chain"},"buyToken":{"type":"string","description":"Token to buy — symbol or address on the selected chain"},"sellAmount":{"type":"string","description":"Amount to sell in human-readable units"},"taker":{"type":"string","description":"The input-owning wallet/account that executes every batch call and receives output"},"slippageBps":{"default":100,"description":"Slippage tolerance in basis points (100 = 1%)","type":"integer","minimum":1,"maximum":500},"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"}},"required":["sellToken","buyToken","sellAmount","taker"]}},{"name":"topaz_recommend_lp","description":"Recommend the best LP positions on Topaz — on one chain or ranked across all five — using indexed APR breakdowns. lpEmissionApr = emission APR for staked LPs (TOPAZ on BNB Chain, xTOPAZ on spokes). poolFeeApr = trading-fee yield. These are different numbers. Minimum TVL is enforced by risk level on every chain.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountUsd":{"default":5000,"description":"USD amount to deploy as LP","type":"number"},"risk":{"default":"moderate","description":"Risk tolerance","type":"string","enum":["low","moderate","high"]},"preferredTokens":{"description":"Preferred token symbols (e.g. ['WBNB', 'USDT'] or ['WETH', 'USDC'])","type":"array","items":{"type":"string"}},"includeCL":{"default":true,"description":"Include concentrated liquidity (v3) pools","type":"boolean"},"chain":{"default":"all","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Use \"all\" to compare every Topaz chain at once. Defaults to all.","type":"string"}}}},{"name":"topaz_recommend_votes","description":"Recommend gauge vote allocations for the current epoch on one Topaz chain. Votes are chain-local: a BNB Chain veTOPAZ NFT votes BNB Chain gauges, and an xTOPAZ voting position on Robinhood/Base/Ethereum/Arc votes that chain's gauges. Analyzes fee returns, bribe incentives, and liquidity needs to suggest a vote distribution.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"strategy":{"default":"balanced","description":"Voting strategy: max-yield maximizes bribe+fee returns, support-protocol favors deep liquidity pools, balanced is a mix","type":"string","enum":["max-yield","support-protocol","balanced"]},"maxPools":{"default":5,"description":"Maximum number of pools to vote for","type":"number","minimum":1,"maximum":30},"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"}}}},{"name":"topaz_build_vote_calldata","description":"Build wallet-ready gauge vote calldata on one Topaz chain. On BNB Chain it calls Voter.vote() for a veTOPAZ NFT; on Robinhood/Base/Ethereum/Arc it calls XTopazVotingVault.vote() for an xTOPAZ voting position. Validates ownership/approval, epoch timing, and that every pool has a live gauge on that chain before building.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tokenId":{"type":"string","description":"veTOPAZ NFT id on BNB Chain, or the xTOPAZ voting position id on a spoke chain"},"pools":{"type":"array","items":{"type":"string"},"description":"Array of pool addresses (on the same chain) to vote for"},"weights":{"type":"array","items":{"type":"number"},"description":"Array of vote weights (relative, will be normalized)"},"taker":{"type":"string","description":"Wallet address that owns or is approved for the veNFT / voting position"},"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"}},"required":["tokenId","pools","weights","taker"]}},{"name":"topaz_recommend_bribe_campaign","description":"Plan a bribe incentive campaign to attract liquidity for a token on one Topaz chain. Analyzes that chain's pools, vote distribution, and budget to recommend a bribe strategy.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"projectToken":{"type":"string","description":"The project token symbol or address"},"budgetUsd":{"type":"number","description":"Total bribe budget in USD"},"targetLiquidityUsd":{"default":500000,"description":"Target TVL to attract","type":"number"},"durationWeeks":{"default":4,"description":"Campaign duration in weeks","type":"number","minimum":1,"maximum":52},"preferredQuoteToken":{"description":"Preferred pair token (defaults to the chain's wrapped native, e.g. WBNB or WETH; USDC on Arc)","type":"string"},"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"}},"required":["projectToken","budgetUsd"]}},{"name":"topaz_build_bribe_deposit_calldata","description":"Build calldata to deposit a bribe incentive on a Topaz pool's gauge on one chain. Validates the pool has a live gauge on that chain's Voter, the token is whitelisted or already a reward, and includes approval if needed.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"pool":{"type":"string","description":"Pool address to bribe"},"token":{"type":"string","description":"Reward token symbol or address to deposit as bribe"},"amount":{"type":"string","description":"Amount in human-readable units"},"taker":{"type":"string","description":"Wallet address depositing the bribe"},"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"}},"required":["pool","token","amount","taker"]}},{"name":"topaz_get_ve_stats","description":"Get veTOPAZ stats from the BNB Chain hub, where TOPAZ is locked into veTOPAZ NFTs: total TOPAZ locked, total voting power, foundation wallet info. For xTOPAZ backing and spoke voting supply, use getXTopazOverview.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{}}},{"name":"topaz_get_epoch_info","description":"Get current epoch timing information: when the epoch started, when voting ends, how much time remains, and whether we're in a restricted window. All five Topaz chains share the same weekly epoch (Thursday 00:00 UTC).","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{}}},{"name":"topaz_get_pool_by_pair","description":"Look up all Topaz pools (v2 volatile, v2 stable, and v3 at each tick spacing) for a specific token pair on one chain or on every chain where both tokens resolve. Returns chain, pool addresses, types, gauge addresses, and gauge status. Use this when asking about a specific pair like 'WBNB/TOPAZ', 'WETH/USDC' or 'xTOPAZ/USDC'.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tokenA":{"type":"string","description":"First token symbol or address"},"tokenB":{"type":"string","description":"Second token symbol or address"},"chain":{"default":"all","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Use \"all\" to compare every Topaz chain at once. Defaults to all.","type":"string"}},"required":["tokenA","tokenB"]}},{"name":"topaz_check_vote_eligibility","description":"Check whether a voting position can vote right now on one Topaz chain: a veTOPAZ NFT on BNB Chain, or an xTOPAZ voting position on Robinhood/Base/Ethereum/Arc. Checks: voting window, last voted epoch, ownership/approval, and locked balance. Use this before building vote calldata.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tokenId":{"type":"string","description":"veTOPAZ NFT id (BNB Chain) or xTOPAZ voting position id (spoke chains)"},"wallet":{"description":"Wallet address to check ownership/approval (optional)","type":"string"},"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"}},"required":["tokenId"]}},{"name":"topaz_get_route_alternatives","description":"DEPRECATED compatibility alias. Use quoteSwap with includeAlternatives=true. Returns route options side by side.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"sellToken":{"type":"string","description":"Token to sell — symbol or address"},"buyToken":{"type":"string","description":"Token to buy — symbol or address"},"sellAmount":{"type":"string","description":"Amount to sell in human-readable units"},"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"}},"required":["sellToken","buyToken","sellAmount"]}},{"name":"topaz_compare_pool_options","description":"Compare LP options for a pair across v2 volatile, v2 stable, and v3 CL pools — on one chain or on every Topaz chain where the pair trades. Shows TVL, APR breakdown, and trade-offs for each. Use when a user asks 'should I LP in v2 or v3?', 'volatile or stable pool?' or 'which chain has the best WETH/USDC pool?'","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tokenA":{"type":"string","description":"First token symbol or address"},"tokenB":{"type":"string","description":"Second token symbol or address"},"chain":{"default":"all","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Use \"all\" to compare every Topaz chain at once. Defaults to all.","type":"string"}},"required":["tokenA","tokenB"]}},{"name":"topaz_get_wallet_token_balances","description":"Get a wallet's token balances on one Topaz chain or all five: the native gas asset (BNB, ETH, or USDC on Arc), wrapped native, TOPAZ/xTOPAZ, stablecoins and other listed tokens. Use this to understand what a user holds, and where, before recommending actions.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"wallet":{"type":"string","description":"Wallet address"},"chain":{"default":"all","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Use \"all\" to compare every Topaz chain at once. Defaults to all.","type":"string"}},"required":["wallet"]}},{"name":"topaz_get_ve_nfts","description":"Get all veTOPAZ NFTs owned by a wallet. Returns tokenId, locked amount, lock end date, voting power, whether expired, and last voted epoch. Locks deposited into a relay report their real relay balance (deposit + compounded rewards) with inRelay=true — never a bare 0. Use this to understand a user's ve position before recommending votes or claims.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"wallet":{"type":"string","description":"Wallet address"}},"required":["wallet"]}},{"name":"topaz_get_user_ve_locks","description":"Get a complete personal veTOPAZ picture for a wallet: every lock's amount, voting power, expiry, what it is voting for this epoch, manual claimables (fees/bribes/rebase), and whether each lock is manual or deposited into a managed relay (veTOPAZ Maxi / Reward & Distribute). Use this to answer 'what locked TOPAZ do I own?', 'what are my locks voting for?', 'which of my locks are in a relay?', and to decide between manual voting and a relay.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"wallet":{"type":"string","description":"Wallet address that owns the veTOPAZ locks"}},"required":["wallet"]}},{"name":"topaz_get_relays","description":"List the available Topaz relays (managed veTOPAZ strategies) with their live state and health. For each relay: type (veTOPAZ Maxi / Reward & Distribute), managed voting power, what it voted for this epoch, last keeper harvest, TOPAZ compounded and (for Reward & Distribute) USDT distributed this and last epoch, and a health status with warnings. Use this to answer 'what relays are available?', 'which relay is safer?', 'did Maxi harvest this week?', 'what did Reward & Distribute pay out?', and 'is any relay stale or unhealthy?'.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{}}},{"name":"topaz_get_user_relay_positions","description":"Get a wallet's managed veTOPAZ relay positions: for each lock deposited into a relay, the relay name/type, the user's deposited weight and share of the managed position, the relay's current votes, last harvest and vote, any claimable distribution (USDT for Reward & Distribute), and a plain-English explanation. Use this when a user asks 'which relay am I in?', 'how much did the relay compound/distribute for me?', 'what's my share?', or 'what can I claim from my relay?'. For manual (non-relay) locks, use getUserVeLocks instead.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"wallet":{"type":"string","description":"Wallet address that owns the veTOPAZ locks"}},"required":["wallet"]}},{"name":"topaz_build_deposit_managed_calldata","description":"Build wallet-ready calldata to deposit a veTOPAZ lock into a managed relay (Voter.depositManaged). Validates ownership/approval, that the lock is a normal (not already managed) lock with TOPAZ and not expired, that it has not voted this epoch, and that it is not the final-hour window. Use when a user says 'put my lock into Maxi' or 'deposit lock #X into Reward & Distribute'.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tokenId":{"type":"string","description":"The veTOPAZ NFT token ID to deposit"},"relay":{"type":"string","description":"Relay to deposit into: \"maxi\", \"reward-distribute\", or a relay address"},"taker":{"type":"string","description":"Wallet address that owns or is approved for the veNFT"}},"required":["tokenId","relay","taker"]}},{"name":"topaz_build_withdraw_managed_calldata","description":"Build wallet-ready calldata to withdraw a veTOPAZ lock from its managed relay (Voter.withdrawManaged). Validates the lock is currently deposited and the window is not blocked. Use when a user says 'move my lock out of the relay' or 'withdraw lock #X from the relay'.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tokenId":{"type":"string","description":"The veTOPAZ NFT token ID to withdraw from its relay"},"taker":{"type":"string","description":"Wallet address that owns or is approved for the veNFT"}},"required":["tokenId","taker"]}},{"name":"topaz_build_relay_claim_calldata","description":"Build wallet-ready calldata to claim a relay's stable distribution for a deposited lock (FreeManagedReward.getReward, USDT for Reward & Distribute). Validates the relay type supports distribution and that there is a claimable amount. Use when a user says 'claim my relay USDT' or 'claim my relay rewards'. Note: veTOPAZ Maxi has no claim — it compounds in-place.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tokenId":{"type":"string","description":"The veTOPAZ NFT token ID deposited in the relay"},"taker":{"type":"string","description":"Wallet address that owns or is approved for the veNFT"}},"required":["tokenId","taker"]}},{"name":"topaz_compare_ve_strategies","description":"Compare the three veTOPAZ strategy modes — Manual, veTOPAZ Maxi, and Reward & Distribute — and recommend one from the user's stated preference (growth / stable income / control / low-maintenance / bribe optimization). Returns each mode's best-for, what you get, and what you give up, plus live relay health and (if a wallet is given) the wallet's manual-vs-relay split. Use this to answer 'should I keep voting manually or use a relay?', 'which relay should I use?', and 'what am I giving up by using a relay?'.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"preference":{"description":"What the user wants: e.g. 'growth', 'stable income', 'control gauges', 'low maintenance', 'optimize bribes'","type":"string"},"wallet":{"description":"Optional wallet address to personalize the comparison","type":"string"}}}},{"name":"topaz_get_relay_monitor","description":"Operator-facing relay monitor: each relay's health status with warnings (stale keeper harvest, missed vote, zero compound/distribute, stuck balances), plus a weekly performance summary (managed voting power, votes, TOPAZ compounded and USDT distributed this and last epoch) and any unregistered relays found on-chain. Use to answer 'is any relay unhealthy?', 'did the keepers run?', or to produce a weekly relay report.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{}}},{"name":"topaz_get_user_relay_alerts","description":"Proactive per-wallet veTOPAZ alerts: claimable relay distributions (USDT), unclaimed manual fees/bribes/rebase, and manual locks that have not voted this epoch — each with a suggested next action. Use when a user asks 'is there anything I should do with my veTOPAZ?' or to drive notifications.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"wallet":{"type":"string","description":"Wallet address to check for actionable veTOPAZ alerts"}},"required":["wallet"]}},{"name":"topaz_get_cl_position_by_id","description":"Get detailed info and optional health guidance for a specific CL (v3) position by NFT tokenId on one Topaz chain. Returns pool, tokens, tick range, current tick, in-range status, liquidity, uncollected fees, boundary distance, urgency, and a recommended action. It does not determine gauge staking status.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tokenId":{"type":"string","description":"NonfungiblePositionManager NFT tokenId"},"includeHealth":{"default":true,"description":"Include boundary/urgency analysis and a recommended action.","type":"boolean"},"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"}},"required":["tokenId"]}},{"name":"topaz_get_cl_position_health","description":"DEPRECATED compatibility alias. Use getClPositionById with includeHealth=true. Returns in-range status, boundary distance, urgency, unclaimed-fee presence, and a recommended action; it does not estimate fee productivity.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tokenId":{"type":"string","description":"CL position NFT tokenId"},"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"}},"required":["tokenId"]}},{"name":"topaz_get_user_dex_positions","description":"Get a wallet's Topaz DEX liquidity positions on one chain or all five: v3 CL positions (staked in gauges and held unstaked in the wallet), v2 LP positions (loose and gauge-staked), in-range status, claimable rewards and fees, approximate USD value, pool/gauge metadata, and a summary. Use this when a user asks what positions they have, whether they are staked, what is out of range, what LP rewards/fees are claimable, or whether they have a position in a specific pool. Always report which sources were checked (sourceStatus / coverage) and never claim 'no positions' when a source or chain is unavailable or partial.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"wallet":{"type":"string","description":"Wallet address to inspect"},"poolAddress":{"description":"Optional pool address to filter/check a specific pool","type":"string"},"chain":{"default":"all","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Use \"all\" to compare every Topaz chain at once. Defaults to all.","type":"string"}},"required":["wallet"]}},{"name":"topaz_get_claimables","description":"Get claimable voting rewards for one specific voting position on one Topaz chain: fees and bribes (plus rebase for a BNB Chain veTOPAZ NFT). On Robinhood/Base/Ethereum/Arc the id is the xTOPAZ voting position id; there is no rebase there because backing growth is already in each xTOPAZ share. This does not scan LP gauge emissions; use getAllClaimables when the user asks for every reward source.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tokenId":{"type":"string","description":"veTOPAZ NFT id (BNB Chain) or xTOPAZ voting position id (spoke chains)"},"wallet":{"type":"string","description":"Wallet address that owns the position"},"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"}},"required":["tokenId","wallet"]}},{"name":"topaz_get_all_claimables","description":"Get wallet-wide claimables on one chain or all five: staked LP gauge emissions (TOPAZ on BNB Chain, xTOPAZ on spokes), voting fees/bribes for veTOPAZ NFTs and xTOPAZ voting positions, and veTOPAZ rebase on BNB Chain. Reports scan coverage per chain because LP discovery is bounded to the first 100 voter pools on each chain. Relay payout streams are not included.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"wallet":{"type":"string","description":"Wallet address"},"chain":{"default":"all","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Use \"all\" to compare every Topaz chain at once. Defaults to all.","type":"string"}},"required":["wallet"]}},{"name":"topaz_simulate_cl_range","description":"Simulate a CL position range for a pair. Given a strategy type and optional price bounds, estimate capital efficiency, out-of-range risk, and token composition. Use when a user asks 'what range should I use?' or 'I expect TOPAZ to pump, how should I LP?'","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"tokenA":{"type":"string","description":"First token symbol or address"},"tokenB":{"type":"string","description":"Second token symbol or address"},"strategy":{"type":"string","enum":["passive","balanced","aggressive","bullish-A","bearish-A"],"description":"Strategy type: passive (wide), balanced, aggressive (tight), bullish-A (expects tokenA to rise), bearish-A"},"amountUsd":{"description":"USD amount to deploy","type":"number"},"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"}},"required":["tokenA","tokenB","strategy"]}},{"name":"topaz_compare_hold_lp_vote","description":"Compare the expected outcomes of holding tokens vs LPing vs voting on one Topaz chain. Voting means a veTOPAZ lock on BNB Chain, or an xTOPAZ voting position on Robinhood/Base/Ethereum/Arc. Use when a user asks 'should I LP or vote?' or 'what's the best use of my TOPAZ/xTOPAZ?'. Calls multiple data sources to give a holistic comparison.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amountUsd":{"description":"USD amount to consider","type":"number"},"pool":{"description":"Specific pool to evaluate for LP","type":"string"},"risk":{"description":"Risk tolerance","type":"string","enum":["low","moderate","high"]},"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"}}}},{"name":"topaz_estimate_bribe_roi","description":"Estimate the ROI of a bribe campaign on one Topaz chain: expected vote capture, liquidity attraction, cost-effectiveness, and whether to bribe now vs seed LP first. Use for bribe campaign planning with quantitative rigor.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"pool":{"description":"Pool address (if known)","type":"string"},"projectToken":{"type":"string","description":"Project token symbol or address"},"budgetUsd":{"type":"number","description":"Total bribe budget in USD"},"durationWeeks":{"default":4,"description":"Campaign duration","type":"number"},"currentPoolTvlUsd":{"description":"Current pool TVL (fetched if not provided)","type":"number"},"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"}},"required":["projectToken","budgetUsd"]}},{"name":"topaz_recommend_protocol_actions","description":"Generate internal protocol strategy for one Topaz chain or all five: which pools to support with votes/bribes, which to avoid, expected impact. Use when the Topaz team asks 'what should we support this epoch?' or for operator-level strategy.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"objective":{"default":"useful_liquidity","description":"Strategic objective","type":"string","enum":["useful_liquidity","topaz_depth","volume_growth","stable_depth"]},"maxPools":{"default":5,"description":"Max pools to recommend","type":"number"},"budgetUsd":{"description":"Weekly budget if applicable","type":"number"},"chain":{"default":"all","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Use \"all\" to compare every Topaz chain at once. Defaults to all.","type":"string"}}}},{"name":"topaz_get_weekly_strategy","description":"Generate a weekly ve(3,3) strategy report for one Topaz chain or all five: protocol overview, top gauges, recommended votes (per chain — votes are chain-local), LP recommendations, and recent incentives.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"default":"all","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Use \"all\" to compare every Topaz chain at once. Defaults to all.","type":"string"}}}},{"name":"topaz_get_bribe_markets","description":"Get the current bribe/incentive markets for the active epoch on one Topaz chain or across all five — total bribe + fee rewards per gauge and the derived dollars-per-vote, ranked highest-yield first. Votes are chain-local (veTOPAZ on BNB Chain, xTOPAZ voting positions on spokes). Use for 'where are the best bribes/votes this epoch?' or 'what's the $/vote on gauge X?'.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"minUsd":{"default":0,"description":"Drop gauges with total reward USD below this floor","type":"number","minimum":0},"limit":{"default":15,"description":"Max gauges to return","type":"number","minimum":1,"maximum":100},"chain":{"default":"all","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Use \"all\" to compare every Topaz chain at once. Defaults to all.","type":"string"}}}},{"name":"topaz_get_gauge_rewards","description":"Get the per-epoch, token-by-token actual voter reward breakdown for a specific gauge on one Topaz chain — every bribe and fee token deposited/accrued, with USD value. Use to see exactly what a gauge's voters earned (or are earning) by reward token.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"gaugeAddress":{"type":"string","description":"Gauge contract address (0x...)"},"limit":{"default":12,"description":"Max reward rows (most recent epochs first)","type":"number","minimum":1,"maximum":50},"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"}},"required":["gaugeAddress"]}},{"name":"topaz_get_protocol_history","description":"Get historical protocol trends for Topaz on one chain or each of the five — daily volume and fees plus a TVL series over a lookback window (BNB Chain also includes the TOPAZ price). Use for 'how has TVL/volume trended?', growth questions, or charts.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"days":{"default":30,"description":"Lookback window in days","type":"number","minimum":1,"maximum":365},"chain":{"default":"all","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Use \"all\" to compare every Topaz chain at once. Defaults to all.","type":"string"}}}},{"name":"topaz_get_pool_history","description":"Get long-horizon daily candles for a specific Topaz pool on one chain — daily volume, fees, and end-of-day TVL beyond the 7-day rolling window. Use for per-pool trend/history questions.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"poolAddress":{"type":"string","description":"Pool contract address (0x...)"},"days":{"default":90,"description":"Lookback window in days","type":"number","minimum":1,"maximum":365},"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"}},"required":["poolAddress"]}},{"name":"topaz_get_recent_epochs","description":"Get recent Topaz voting-epoch summaries on one chain or all five — per-epoch total bribes and fees, gauge count, and (on BNB Chain) foundation vote share and top-voted gauges. Use for 'how did bribes/votes trend across epochs?' or historical voting context.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"limit":{"default":8,"description":"How many recent epochs to return per chain","type":"number","minimum":1,"maximum":52},"chain":{"default":"all","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Use \"all\" to compare every Topaz chain at once. Defaults to all.","type":"string"}}}},{"name":"topaz_get_vote_effectiveness","description":"Get foundation KPI / vote-ROI effectiveness data — per pool/epoch bribe cost, emissions directed, TVL/volume/fee deltas, cost-per-dollar-gained, and a classification (scale/repeat/monitor/reduce/stop/insufficient_data). Use for 'is bribing pool X working?' or operator-level capital-efficiency review.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"pool":{"description":"Filter to a pool address (optional)","type":"string"},"limit":{"default":20,"description":"Max KPI rows","type":"number","minimum":1,"maximum":100}}}},{"name":"topaz_get_supported_chains","description":"List the five chains Topaz runs on — BNB Chain (hub), Robinhood Chain, Base, Ethereum and Arc — with each chain's role, gas token, LayerZero endpoint id, explorer, live indexing readiness, and which Topaz features it has (v2/CL pools, gauges, voting, xTOPAZ, bridging, veTOPAZ/relays on the hub).","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{}}},{"name":"topaz_get_xtopaz_overview","description":"Get the xTOPAZ system overview: TOPAZ backing per xTOPAZ share, total backing and supply, and per-chain state — BNB Chain vault entry/redemption status, and each spoke's xTOPAZ supply, amount staked in voting positions, minimum stake, lock epochs, pauses, and intrinsic vs local market price.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{}}},{"name":"topaz_get_xtopaz_positions","description":"Get a wallet's xTOPAZ on one chain or all five: liquid xTOPAZ balances, and on Robinhood/Base/Ethereum/Arc every open xTOPAZ voting position with staked amount, unlock time, whether it can vote this epoch, and its current votes. Use this before staking, voting, unstaking, claiming or bridging xTOPAZ.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"wallet":{"type":"string","description":"Wallet address"},"chain":{"default":"all","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Use \"all\" to compare every Topaz chain at once. Defaults to all.","type":"string"}},"required":["wallet"]}},{"name":"topaz_get_bridge_status","description":"Track xTOPAZ LayerZero bridge transfers: pass a wallet address for its recent transfers across all Topaz chains, or a LayerZero GUID for one transfer. Source success is not destination delivery — this reports each side's state.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"wallet":{"description":"Wallet address to list transfers for","type":"string"},"guid":{"description":"LayerZero message GUID (0x…)","type":"string"},"limit":{"default":10,"description":"Max transfers when listing by wallet","type":"number","minimum":1,"maximum":50}}}},{"name":"topaz_build_claim_voting_rewards_calldata","description":"Build calldata to claim voting rewards on one Topaz chain: fees and bribes for a veTOPAZ NFT on BNB Chain (plus rebase), or for an xTOPAZ voting position on Robinhood/Base/Ethereum/Arc. Discovers the reward contracts and tokens with a claimable balance and validates ownership/approval.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"},"tokenId":{"type":"string","description":"veTOPAZ NFT id (BNB Chain) or xTOPAZ voting position id (spoke chains)"},"taker":{"type":"string","description":"Owner or approved operator"},"claimTypes":{"description":"Reward types to claim (default all; rebase exists only on BNB Chain)","type":"array","items":{"type":"string","enum":["fees","bribes","rebase"]}}},"required":["tokenId","taker"]}},{"name":"topaz_build_xtopaz_stake_calldata","description":"Build calldata to stake liquid xTOPAZ into a voting position on Robinhood, Base, Ethereum or Arc (XTopazVotingVault). Opens a new position with stake(), opens and votes in one step with stakeAndVote() when pools are given, or adds to an existing position. Includes the xTOPAZ approval when needed and validates pause state, minimum stake, balance and the voting window.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"type":"string","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Must be a spoke chain (robinhood, base, ethereum or arc)."},"amount":{"type":"string","description":"xTOPAZ amount in human-readable units"},"taker":{"type":"string","description":"Wallet that holds the xTOPAZ and will own the position"},"pools":{"description":"Optional pools (on the same chain) to vote for immediately","type":"array","items":{"type":"string"}},"weights":{"description":"Relative vote weights matching pools (defaults to equal)","type":"array","items":{"type":"number"}},"addToPositionId":{"description":"Add to this existing position instead of opening a new one","type":"string"}},"required":["chain","amount","taker"]}},{"name":"topaz_build_xtopaz_unstake_calldata","description":"Build calldata to withdraw xTOPAZ from a voting position on Robinhood, Base, Ethereum or Arc. Validates ownership, the unlock time and vote/epoch gates (a full close is not possible in an epoch where the position voted).","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"type":"string","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Must be a spoke chain (robinhood, base, ethereum or arc)."},"positionId":{"type":"string","description":"xTOPAZ voting position id"},"amount":{"description":"xTOPAZ to withdraw, or \"all\" (default) to close the position","type":"string"},"taker":{"type":"string","description":"Position owner"},"receiver":{"description":"Recipient of the withdrawn xTOPAZ (defaults to the owner)","type":"string"}},"required":["chain","positionId","taker"]}},{"name":"topaz_build_xtopaz_position_action_calldata","description":"Build calldata for xTOPAZ voting-position maintenance on Robinhood, Base, Ethereum or Arc: reset (clear this position's votes, in an epoch after its last vote), poke (re-scale votes to the current balance), or merge (combine two positions with the same owner).","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"type":"string","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Must be a spoke chain (robinhood, base, ethereum or arc)."},"action":{"type":"string","enum":["reset","poke","merge"],"description":"Maintenance action"},"positionId":{"type":"string","description":"xTOPAZ voting position id (the source position for merge)"},"intoPositionId":{"description":"Target position id for merge","type":"string"},"taker":{"type":"string","description":"Position owner or operator"}},"required":["chain","action","positionId","taker"]}},{"name":"topaz_build_xtopaz_deposit_calldata","description":"Build calldata to turn TOPAZ into xTOPAZ on BNB Chain (WrapRouter.depositTopaz), optionally bridging the new xTOPAZ straight to a spoke chain in the same transaction and optionally staking it into a voting position on arrival. Validates that vault entry is open, TOPAZ balance, approval, and the LayerZero fee.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amount":{"type":"string","description":"TOPAZ amount in human-readable units"},"taker":{"type":"string","description":"Wallet holding the TOPAZ on BNB Chain"},"receiver":{"description":"xTOPAZ recipient (defaults to the taker)","type":"string"},"bridgeTo":{"description":"Optional spoke destination: robinhood, base, ethereum or arc","type":"string"},"stakeOnArrival":{"default":false,"description":"With bridgeTo: open a voting position on arrival","type":"boolean"}},"required":["amount","taker"]}},{"name":"topaz_build_xtopaz_redeem_calldata","description":"Build calldata to redeem BNB Chain xTOPAZ for a new permanent veTOPAZ NFT (VeTopazVault.redeem). Validates that redemption is open this week, the xTOPAZ balance and the approval. Redemption returns a veTOPAZ NFT, not liquid TOPAZ.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"shares":{"type":"string","description":"xTOPAZ amount in human-readable units"},"taker":{"type":"string","description":"Wallet holding xTOPAZ on BNB Chain"},"receiver":{"description":"Recipient of the veTOPAZ NFT (defaults to the taker)","type":"string"}},"required":["shares","taker"]}},{"name":"topaz_build_xtopaz_bridge_calldata","description":"Build calldata to bridge xTOPAZ over LayerZero between BNB Chain and a spoke (Robinhood, Base, Ethereum or Arc). BNB Chain → spoke can stake on arrival; spoke → BNB Chain can redeem for a veTOPAZ NFT on arrival. Spoke-to-spoke transfers route through BNB Chain as two separate transfers. Returns the approval (if needed), the send transaction with its native LayerZero fee as value, the amount that will arrive, and precision dust.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"fromChain":{"type":"string","description":"Source chain. Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id."},"toChain":{"type":"string","description":"Destination chain. Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id."},"amount":{"type":"string","description":"xTOPAZ amount in human-readable units"},"taker":{"type":"string","description":"Wallet holding liquid xTOPAZ on the source chain (pays the fee)"},"receiver":{"description":"Destination recipient (defaults to the taker)","type":"string"},"mode":{"default":"plain","description":"plain transfer, stake on a spoke destination, or redeem on BNB Chain","type":"string","enum":["plain","stake","redeem"]}},"required":["fromChain","toChain","amount","taker"]}},{"name":"topaz_build_cl_mint_calldata","description":"Build calldata to open a new concentrated-liquidity position with the pool's two tokens on any Topaz chain (NonfungiblePositionManager.mint). Accepts a range preset, price bounds or exact ticks, and one amount (the other side is matched at the current price) or both. Native BNB/ETH is accepted for the wrapped-native side (not on Arc). Each returned transaction is simulated from the taker; if an approval or unstake must confirm first, only that step is returned with nextStep — rebuild after it confirms.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"},"pool":{"description":"CL pool address (or give tokenA, tokenB and tickSpacing)","type":"string"},"tokenA":{"description":"First pool token symbol or address","type":"string"},"tokenB":{"description":"Second pool token symbol or address","type":"string"},"tickSpacing":{"description":"Pool tick spacing (e.g. 1, 50, 100, 200, 2000)","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"rangePreset":{"description":"Range around the current price: narrow (±5 tick spacings), medium (±20, default), wide (±60) or full range","type":"string","enum":["narrow","medium","wide","full"]},"minPrice":{"description":"Lower price bound for priceToken, in whole-token units","type":"number","exclusiveMinimum":0},"maxPrice":{"description":"Upper price bound for priceToken, in whole-token units","type":"number","exclusiveMinimum":0},"priceToken":{"description":"Token the min/max prices are quoted for, e.g. 'WBNB' for 'USDT per WBNB' (default: the pool's token0)","type":"string"},"tickLower":{"description":"Exact lower tick (multiple of the tick spacing)","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tickUpper":{"description":"Exact upper tick (multiple of the tick spacing)","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"amounts":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"object","properties":{"token":{"type":"string","description":"Pool token symbol/address, or the native coin"},"amount":{"type":"string","description":"Human-readable amount"}},"required":["token","amount"]},"description":"One amount (the other side is matched at the current price) or both amounts"},"taker":{"type":"string","description":"Wallet that holds the tokens/position and sends every transaction"},"slippageBps":{"default":100,"type":"integer","minimum":1,"maximum":5000}},"required":["amounts","taker"]}},{"name":"topaz_build_cl_zap_calldata","description":"Build calldata to open a new CL position from ONE input token (or the native coin) on any Topaz chain through CL Zap. The zap swaps into both pool tokens with firm 0x quotes (disclosed fees) and mints in one transaction; the position starts unstaked. On Arc, zap with ERC20s such as USDC (no native input). Each returned transaction is simulated from the taker; if an approval or unstake must confirm first, only that step is returned with nextStep — rebuild after it confirms.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"},"pool":{"description":"CL pool address (or give tokenA, tokenB and tickSpacing)","type":"string"},"tokenA":{"description":"First pool token symbol or address","type":"string"},"tokenB":{"description":"Second pool token symbol or address","type":"string"},"tickSpacing":{"description":"Pool tick spacing (e.g. 1, 50, 100, 200, 2000)","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"rangePreset":{"description":"Range around the current price: narrow (±5 tick spacings), medium (±20, default), wide (±60) or full range","type":"string","enum":["narrow","medium","wide","full"]},"minPrice":{"description":"Lower price bound for priceToken, in whole-token units","type":"number","exclusiveMinimum":0},"maxPrice":{"description":"Upper price bound for priceToken, in whole-token units","type":"number","exclusiveMinimum":0},"priceToken":{"description":"Token the min/max prices are quoted for, e.g. 'WBNB' for 'USDT per WBNB' (default: the pool's token0)","type":"string"},"tickLower":{"description":"Exact lower tick (multiple of the tick spacing)","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tickUpper":{"description":"Exact upper tick (multiple of the tick spacing)","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inputToken":{"type":"string","description":"Token to zap with: any token symbol/address, or the native coin"},"amountIn":{"type":"string","description":"Human-readable input amount"},"taker":{"type":"string","description":"Wallet that holds the tokens/position and sends every transaction"},"swapSlippageBps":{"default":100,"type":"integer","minimum":1,"maximum":1000},"mintSlippageBps":{"default":100,"type":"integer","minimum":1,"maximum":5000}},"required":["inputToken","amountIn","taker"]}},{"name":"topaz_build_cl_increase_calldata","description":"Build calldata to add liquidity to an existing CL position (same range) on any Topaz chain. One amount is matched at the current price, or give both. Each returned transaction is simulated from the taker; if an approval or unstake must confirm first, only that step is returned with nextStep — rebuild after it confirms.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"},"tokenId":{"type":"string","description":"CL position NFT id"},"amounts":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"object","properties":{"token":{"type":"string","description":"Pool token symbol/address, or the native coin"},"amount":{"type":"string","description":"Human-readable amount"}},"required":["token","amount"]},"description":"One amount (the other side is matched at the current price) or both amounts"},"taker":{"type":"string","description":"Wallet that holds the tokens/position and sends every transaction"},"slippageBps":{"default":100,"type":"integer","minimum":1,"maximum":5000}},"required":["tokenId","amounts","taker"]}},{"name":"topaz_build_cl_exit_calldata","description":"Build calldata to withdraw part or all of a CL position (and its uncollected fees) on any Topaz chain: decreaseLiquidity + collect, plus burn on a full exit, in one transaction. Optionally unwrap the wrapped-native side to BNB/ETH. Each returned transaction is simulated from the taker; if an approval or unstake must confirm first, only that step is returned with nextStep — rebuild after it confirms.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"},"tokenId":{"type":"string","description":"CL position NFT id"},"percent":{"default":100,"description":"Share of the position to withdraw","type":"integer","minimum":1,"maximum":100},"receiveNative":{"default":false,"description":"Unwrap WBNB/WETH to the native coin","type":"boolean"},"taker":{"type":"string","description":"Wallet that holds the tokens/position and sends every transaction"},"slippageBps":{"default":100,"type":"integer","minimum":1,"maximum":5000}},"required":["tokenId","taker"]}},{"name":"topaz_build_cl_rebalance_calldata","description":"Build ONE transaction that closes a CL position (fees included) and mints a new position in a different range of the same pool on any Topaz chain. Nothing is swapped: tokens the new range cannot use stay in the wallet, and the new position starts unstaked. Each returned transaction is simulated from the taker; if an approval or unstake must confirm first, only that step is returned with nextStep — rebuild after it confirms.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"},"tokenId":{"type":"string","description":"CL position NFT id"},"rangePreset":{"description":"Range around the current price: narrow (±5 tick spacings), medium (±20, default), wide (±60) or full range","type":"string","enum":["narrow","medium","wide","full"]},"minPrice":{"description":"Lower price bound for priceToken, in whole-token units","type":"number","exclusiveMinimum":0},"maxPrice":{"description":"Upper price bound for priceToken, in whole-token units","type":"number","exclusiveMinimum":0},"priceToken":{"description":"Token the min/max prices are quoted for, e.g. 'WBNB' for 'USDT per WBNB' (default: the pool's token0)","type":"string"},"tickLower":{"description":"Exact lower tick (multiple of the tick spacing)","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tickUpper":{"description":"Exact upper tick (multiple of the tick spacing)","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"taker":{"type":"string","description":"Wallet that holds the tokens/position and sends every transaction"},"slippageBps":{"default":100,"type":"integer","minimum":1,"maximum":5000}},"required":["tokenId","taker"]}},{"name":"topaz_build_cl_stake_calldata","description":"Build calldata to stake a CL position in its pool's gauge on any Topaz chain so it earns emissions (TOPAZ on BNB Chain, xTOPAZ elsewhere). Returns the NFT approval first when needed. Each returned transaction is simulated from the taker; if an approval or unstake must confirm first, only that step is returned with nextStep — rebuild after it confirms.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"},"tokenId":{"type":"string","description":"CL position NFT id"},"taker":{"type":"string","description":"Wallet that holds the tokens/position and sends every transaction"}},"required":["tokenId","taker"]}},{"name":"topaz_build_cl_unstake_calldata","description":"Build calldata to unstake a CL position from its gauge on any Topaz chain (claims its pending emissions). The transaction is simulated from the taker.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"},"tokenId":{"type":"string","description":"CL position NFT id"},"taker":{"type":"string","description":"Wallet that holds the tokens/position and sends every transaction"}},"required":["tokenId","taker"]}},{"name":"topaz_build_cl_claim_calldata","description":"Build calldata to claim a CL position's rewards on any Topaz chain: gauge emissions if it is staked, trading fees if it is not. The transaction is simulated from the taker.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"},"tokenId":{"type":"string","description":"CL position NFT id"},"taker":{"type":"string","description":"Wallet that holds the tokens/position and sends every transaction"}},"required":["tokenId","taker"]}},{"name":"topaz_get_auto_manage_vaults","description":"List Topaz Auto Manage vaults (keeper-managed CL with ERC-20 shares) on one chain or all: pair, whether deposits are open, reward APR (realized 7d or estimated; excludes swap fees), TVL, time in range, reward token and fee, and current composition. Auto Manage runs on BNB Chain (56), Robinhood Chain (4663), Arc (5042).","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"default":"all","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Use \"all\" to compare every Topaz chain at once. Defaults to all.","type":"string"}}}},{"name":"topaz_get_auto_manage_positions","description":"Get a wallet's Topaz Auto Manage vault positions on one chain or all: shares, underlying principal and claimable rewards.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"wallet":{"type":"string","description":"Wallet address"},"chain":{"default":"all","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Use \"all\" to compare every Topaz chain at once. Defaults to all.","type":"string"}},"required":["wallet"]}},{"name":"topaz_build_auto_manage_deposit_calldata","description":"Build calldata to deposit both pool tokens into a Topaz Auto Manage vault (one amount is matched to the vault's composition). Checks that deposits are open and the price is calm. Each returned transaction is simulated from the taker; if an approval or unstake must confirm first, only that step is returned with nextStep — rebuild after it confirms.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"},"vault":{"type":"string","description":"Vault address"},"amounts":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"object","properties":{"token":{"type":"string","description":"Pool token symbol/address, or the native coin"},"amount":{"type":"string","description":"Human-readable amount"}},"required":["token","amount"]},"description":"One amount (the other side is matched at the current price) or both amounts"},"taker":{"type":"string","description":"Wallet that holds the tokens/position and sends every transaction"},"slippageBps":{"default":100,"type":"integer","minimum":1,"maximum":5000}},"required":["vault","amounts","taker"]}},{"name":"topaz_build_auto_manage_zap_in_calldata","description":"Build calldata to enter a Topaz Auto Manage vault with ONE token (or the native coin, not on Arc) through the Auto Manage zap: firm 0x swaps (disclosed fees) into the vault's ratio, then deposit, in one transaction. Each returned transaction is simulated from the taker; if an approval or unstake must confirm first, only that step is returned with nextStep — rebuild after it confirms.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"},"vault":{"type":"string","description":"Vault address"},"inputToken":{"type":"string","description":"Token to zap with, or the native coin"},"amountIn":{"type":"string","description":"Human-readable input amount"},"taker":{"type":"string","description":"Wallet that holds the tokens/position and sends every transaction"},"swapSlippageBps":{"default":100,"type":"integer","minimum":1,"maximum":1000},"shareSlippageBps":{"default":100,"type":"integer","minimum":1,"maximum":5000}},"required":["vault","inputToken","amountIn","taker"]}},{"name":"topaz_build_auto_manage_withdraw_calldata","description":"Build calldata to withdraw from a Topaz Auto Manage vault. Without outputToken it returns both pool tokens in kind (always available); with outputToken it zaps out to that single token (or the native coin) through firm 0x swaps. Rewards are claimed separately. Each returned transaction is simulated from the taker; if an approval or unstake must confirm first, only that step is returned with nextStep — rebuild after it confirms.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"},"vault":{"type":"string","description":"Vault address"},"shares":{"description":"Shares to redeem (18 decimals, human-readable); omit to use percent","type":"string"},"percent":{"description":"Share of the wallet's vault balance to redeem (default 100)","type":"integer","minimum":1,"maximum":100},"outputToken":{"description":"Receive everything as this token instead of both pool tokens","type":"string"},"taker":{"type":"string","description":"Wallet that holds the tokens/position and sends every transaction"},"slippageBps":{"default":100,"type":"integer","minimum":1,"maximum":5000}},"required":["vault","taker"]}},{"name":"topaz_build_auto_manage_claim_calldata","description":"Build calldata to claim a wallet's Auto Manage vault rewards (TOPAZ on BNB Chain, xTOPAZ elsewhere). The transaction is simulated from the taker.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"chain":{"default":"bnb","description":"Topaz chain: bnb (56), robinhood (4663), base (8453), ethereum (1), arc (5042). Accepts the slug, name or EVM chain id. Defaults to bnb.","type":"string"},"vault":{"type":"string","description":"Vault address"},"taker":{"type":"string","description":"Wallet that holds the tokens/position and sends every transaction"}},"required":["vault","taker"]}}]}