{"serverId":"mcp-registry/io.github.defire-business/swapwizard-mcp","tools":[{"name":"analyze_pool","fixed":{"name":"analyze_pool","description":"Maps to GET /pools/analyze/:id. Returns real-time momentum data for a specific pool from GeckoTerminal: multi-timeframe volume (5m, 15m, 30m, 1h, 6h), price changes (5m–24h), buy/sell transaction counts, unique traders (24h), and reserve in USD. Data is cached for 10 minutes; stale entries are refreshed on-demand. Use the numeric id field returned by search_liquidity_pools.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id"],"properties":{"id":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"Pool numeric ID (from the id field in search_liquidity_pools response)"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":195,"tokensAfter":195},{"name":"check_api_health","fixed":{"name":"check_api_health","description":"Maps to GET /health. Returns service availability. Use to confirm the API is responsive before attempting operations.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":73,"tokensAfter":73},{"name":"get_clean_quote","fixed":{"name":"get_clean_quote","description":"Maps to POST /quote with excludePositions=true. Shortcut to get_swap_quote that prices the swap as if the caller's own LP position were not in the pool, for concentrated-liquidity positions in the active tick range. Use when an agent holds a significant position in the pool it is about to trade against (rebalancing, exit, treasury sizing) and needs a quote unaffected by its own liquidity. Returns the same router/callData/value execution fields as get_swap_quote, and likewise supports an optional","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","owner","tokenIn","tokenOut","side","amount"],"properties":{"side":{"enum":["exactIn","exactOut"],"type":"string","description":"Quote direction"},"owner":{"type":"string","description":"Wallet address whose LP positions will be excluded from pool state during quoting"},"amount":{"type":"string","description":"Amount as stringified uint256 in token decimals"},"rpcUrl":{"type":"string","description":"Custom RPC endpoint URL for position discovery."},"chainId":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"EVM chain ID (e.g. 56 for BSC)"},"tokenIn":{"type":"string","description":"Input token address (0x0000...0000 for native coin)"},"tokenOut":{"type":"string","description":"Output token address"},"slippageBps":{"type":"integer","maximum":10000,"minimum":0,"description":"Slippage tolerance in basis points (default: 100 = 1%)"},"affiliateCode":{"type":"string","description":"Optional affiliate wallet address registered on-chain with SwapWizard — forwarded to the API so the affiliate fee for this operation is paid to that address. Omit if you have no affiliate."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":491,"tokensAfter":491},{"name":"get_setup_guide","fixed":{"name":"get_setup_guide","description":"Returns the complete setup and usage guide for SwapWizard. Call this FIRST before using any other tool. Covers: required configuration (API key, Alchemy RPC URL, private key), how to use poolId correctly, step-by-step operational flows for swap/zap in/zap out/analyze, transaction execution details, and approval rules.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":129,"tokensAfter":129},{"name":"get_supported_chains","fixed":{"name":"get_supported_chains","description":"Maps to GET /chains. Lists supported EVM chains with chain IDs and native gas tokens: Ethereum, Arbitrum, Base, Polygon, BNB Chain.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":78,"tokensAfter":78},{"name":"get_supported_dexes","fixed":{"name":"get_supported_dexes","description":"Returns the AMMs / DEX sources SwapWizard routes across per chain. Each DEX includes its display name and slug (e.g. \"uniswap-v3\") — use the slug as the 'project' filter in search_liquidity_pools to filter pools by protocol.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"chainId":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"EVM chain ID to filter results. If omitted, returns protocols for all supported chains."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":156,"tokensAfter":156},{"name":"get_swap_quote","fixed":{"name":"get_swap_quote","description":"Maps to POST /quote. Returns the best swap quote across all integrated DEX protocols, with router, callData, value, price impact, route summary, and gas estimate in one response. Surplus and positive slippage are returned to the user in the same transaction. Supports an optional affiliateCode (registered affiliate wallet address) forwarded to the API so the affiliate fee is paid on-chain to that address. Supports an excludePositions parameter that prices the swap excluding the caller's own LP po","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","tokenIn","tokenOut","side","amount"],"properties":{"side":{"enum":["exactIn","exactOut"],"type":"string","description":"Quote direction"},"amount":{"type":"string","description":"Amount as stringified uint256 in token decimals"},"chainId":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"EVM chain ID (e.g. 56 for BSC)"},"tokenIn":{"type":"string","description":"Input token address (0x0000...0000 for native coin)"},"tokenOut":{"type":"string","description":"Output token address"},"slippageBps":{"type":"integer","maximum":10000,"minimum":0,"description":"Slippage tolerance in basis points (default: 100 = 1%)"},"affiliateCode":{"type":"string","description":"Optional affiliate wallet address registered on-chain with SwapWizard — forwarded to the API so the affiliate fee for this operation is paid to that address. Omit if you have no affiliate."},"excludePositions":{"type":"array","items":{"type":"object","required":["poolAddress","liquidity","tickLower","tickUpper"],"properties":{"liquidity":{"type":"string","description":"Position liquidity as uint256 string"},"tickLower":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"Lower tick bound"},"tickUpper":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"Upper tick bound"},"poolAddress":{"type":"string","description":"Pool contract address"}}},"description":"Positions to subtract from pool state during simulation — for a clean quote that excludes self-impact. Get these from list_user_lp_positions."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":620,"tokensAfter":620},{"name":"list_user_lp_positions","fixed":{"name":"list_user_lp_positions","description":"Maps to GET /positions. Reads all LP positions a wallet holds on a given chain by calling the SwapWizard API, which discovers positions across all supported protocols: Uniswap V2/V3/V4, Aerodrome, Thena, SushiSwap, PancakeSwap, Algebra, Balancer, Curve, and all Solidly forks. Each position includes positionId, nftManager, dexName, liquidityKind, token addresses, amounts, fees, in-range status, APR, and USD values. EXIT SIGNAL: each position also carries `momentumSignal` for its pool — \"exit\" mea","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","owner"],"properties":{"owner":{"type":"string","description":"Wallet address to query positions for"},"rpcUrl":{"type":"string","description":"Custom RPC endpoint URL. If the URL is from Alchemy, the API auto-extracts the key for accelerated NFT-based position discovery."},"chainId":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"EVM chain ID"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":291,"tokensAfter":291},{"name":"search_liquidity_pools","fixed":{"name":"search_liquidity_pools","description":"Maps to GET /pools. Discovers liquidity pools across supported AMMs and chains, returning id, poolId, symbol, underlyingTokens (token addresses), fee tier, protocol, dexKind, APY, apyBase (fee-only APY excluding reward emissions), TVL (USD), 24h/7d volume (USD), stablecoin flags, and hooksAddress (custom hook contract for Uniswap V4 / PancakeSwap Infinity pools; null when the pool has no hook — hooks can add custom fees or transfer restrictions). KEY PARAMETERS: Use `trending: true` to get only ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId"],"properties":{"page":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"Page number, 0-based (default: 0)"},"search":{"type":"string","description":"Search by symbol or project name"},"signal":{"type":"string","description":"Filter by momentum signal. Comma-separated list allowed (e.g. 'entry' or 'entry,watch'). Only effective with trending=true. Combine with sortBy=signal&sortOrder=desc to get entry pools ranked by APR."},"sortBy":{"enum":["apy","tvl","volume1d","volume7d","signal"],"type":"string","description":"Sort field (default: tvl). 'signal' (trending only) groups pools by momentum signal entry→watch→exit (sortOrder=asc reverses) and within each group by APR descending — i.e. the entry pools with the highest APR first."},"tokens":{"type":"string","description":"Comma-separated token addresses to filter pools by"},"chainId":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"EVM chain ID (e.g. 56 for BSC, 1 for Ethereum)"},"dexKind":{"type":"string","description":"Filter by DEX kind (e.g. UNIV3_SR02)"},"project":{"type":"string","description":"Filter by protocol/DEX name (e.g. uniswap-v3, pancakeswap-v3, aerodrome-v2)"},"hookless":{"type":"boolean","description":"If true, exclude pools with a custom hook contract (Uniswap V4 / PancakeSwap Infinity). Hooks can add custom fees or transfer restrictions."},"pageSize":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"Results per page, max 200 (default: 50)"},"poolType":{"enum":["classic","concentrated"],"type":"string","description":"Filter by pool type"},"trending":{"type":"boolean","description":"If true, return only currently trending pools (with momentumSignal and suggestedRangePct on each result)"},"sortOrder":{"enum":["asc","desc"],"type":"string","description":"Sort direction (default: desc)"},"timeframe":{"enum":["5m","1h","6h","24h"],"type":"string","description":"Trending ranking window (default: 5m). Only applies with trending=true. Sent to the API as trendingDuration; also selects the volume window for feeAprEstimate. Use 6h for sustained LP-yield traction, 1h for faster reaction; 5m is real-time GeckoTerminal with the signal as hourly context."},"stableOnly":{"type":"boolean","description":"Show only stablecoin pairs"},"topPerVenue":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"Limit to top N pools per venue by APY"},"semiStableOnly":{"type":"boolean","description":"Show only pools with exactly one stablecoin"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":898,"tokensAfter":898}],"toolsChanged":9,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}