EchoLedger

Live LP analytics — Uniswap V2/V3, Balancer, Curve stableswap: PnL, health, slippage, depeg risk.

我該用這個嗎

品質與安全性

A
說明品質
97%
結構描述完整度
100%
命名品質
63%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

發現項目(12)

  • LOWTool 'SimulatePriceMove' description lacks action verb在 SimulatePriceMove 中
  • LOWTool 'AnalyzePosition' doesn't follow camelCase/snake_case在 AnalyzePosition 中
  • LOWTool 'AnalyzeBalancerLP' doesn't follow camelCase/snake_case在 AnalyzeBalancerLP 中
  • LOWTool 'AnalyzeStableswapLP' doesn't follow camelCase/snake_case在 AnalyzeStableswapLP 中
  • LOWTool 'SimulatePriceMove' doesn't follow camelCase/snake_case在 SimulatePriceMove 中
  • LOWTool 'SimulateBalancerMove' doesn't follow camelCase/snake_case在 SimulateBalancerMove 中
  • LOWTool 'SimulateStableswapMove' doesn't follow camelCase/snake_case在 SimulateStableswapMove 中
  • LOWTool 'CheckPoolHealth' doesn't follow camelCase/snake_case在 CheckPoolHealth 中
  • LOWTool 'DetectRugSignals' doesn't follow camelCase/snake_case在 DetectRugSignals 中
  • LOWTool 'CalculateSlippage' doesn't follow camelCase/snake_case在 CalculateSlippage 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~5,658Token(工具定義)
~4.9 KB典型回應大小
顯著的注意力影響(128k 上下文的 4.42%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "echoledger-mcp": {
      "url": "https://mcp.echoledger.ai/mcp"
    }
  }
}

遠端端點

https://mcp.echoledger.ai/mcpstreamable-http

它能做什麼

工具清單

工具(11)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢AnalyzePosition(lp_init_amt, entry_x_amt, entry_y_amt, lwr_tick, upr_tick, ...)

Analyze why a Uniswap V2 or V3 LP position is gaining or losing money. Decomposes PnL into impermanent loss, accumulated fees, and net result, with optional real APR if a holding period is supplied. Returns current value, hold value, IL percentage, fee income, net PnL, real APR, and a diagnosis label.

輸入結構描述

{
  "type": "object",
  "properties": {
    "lp_init_amt": {
      "type": "number",
      "description": "LP token amount held by the position (position size in human units)."
    },
    "entry_x_amt": {
      "type": "number",
      "description": "Amount of token0 originally deposited at position entry."
    },
    "entry_y_amt": {
      "type": "number",
      "description": "Amount of token1 originally deposited at position entry."
    },
    "lwr_tick": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Lower tick of the position (V3 positions only; null for V2)."
    },
    "upr_tick": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Upper tick of the position (V3 positions only; null for V2)."
    },
    "holding_period_days": {
      "type": [
        "number",
        "null"
      ],
      "description": "Optional holding period in days. If supplied, real_apr is annualized from net_pnl."
    },
    "pool_address": {
      "type": "string",
      "description": "On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work."
    },
    "rpc_url": {
      "type": "string",
      "description": "An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs."
    },
    "pool_type": {
      "type": "string",
      "enum": [
        "uniswap_v2",
        "uniswap_v3"
      ],
      "description": "Which protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3."
    },
    "chain_id": {
      "type": "integer",
      "description": "Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check."
    },
    "block_number": {
      "type": "integer",
      "description": "Optional block number to pin the read to a historical block. Omit to read the latest block."
    }
  },
  "required": [
    "lp_init_amt",
    "entry_x_amt",
    "entry_y_amt",
    "pool_address",
    "rpc_url",
    "pool_type"
  ]
}
🟢AnalyzeBalancerLP(lp_init_amt, entry_base_amt, entry_opp_amt, holding_period_days, pool_address, ...)

Analyze a 2-asset Balancer weighted-pool LP position's PnL. Decomposes impermanent loss using the weighted-pool formula where the base token's weight affects IL magnitude. Values are denominated in opp-token units per BalancerImpLoss's convention; fee income is not attributed in v1 because Balancer pools only expose vault-level fees with no per-LP attribution.

輸入結構描述

{
  "type": "object",
  "properties": {
    "lp_init_amt": {
      "type": "number",
      "description": "Pool shares held by this position, in human units."
    },
    "entry_base_amt": {
      "type": "number",
      "description": "Amount of base (first) token originally deposited."
    },
    "entry_opp_amt": {
      "type": "number",
      "description": "Amount of opp (second) token originally deposited."
    },
    "holding_period_days": {
      "type": [
        "number",
        "null"
      ],
      "description": "Optional holding period in days. If supplied, real_apr is annualized from net_pnl."
    },
    "pool_address": {
      "type": "string",
      "description": "On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work."
    },
    "rpc_url": {
      "type": "string",
      "description": "An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs."
    },
    "pool_type": {
      "type": "string",
      "enum": [
        "balancer"
      ],
      "description": "Which protocol the pool at pool_address belongs to. This tool accepts only balancer (2-asset weighted pool)."
    },
    "chain_id": {
      "type": "integer",
      "description": "Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check."
    },
    "block_number": {
      "type": "integer",
      "description": "Optional block number to pin the read to a historical block. Omit to read the latest block."
    }
  },
  "required": [
    "lp_init_amt",
    "entry_base_amt",
    "entry_opp_amt",
    "pool_address",
    "rpc_url",
    "pool_type"
  ]
}
🟢AnalyzeStableswapLP(lp_init_amt, entry_amounts, holding_period_days, pool_address, rpc_url, ...)

Analyze a 2-asset Curve-style Stableswap LP position's PnL using the amplified-invariant IL formula where small depegs can produce surprisingly large IL at high A. Values are in peg-numeraire (tokens valued 1:1); fee income is not attributed in v1 (pool-global only); positions whose implied alpha is in the unreachable regime return None on il_percentage, net_pnl, and real_apr.

輸入結構描述

{
  "type": "object",
  "properties": {
    "lp_init_amt": {
      "type": "number",
      "description": "LP tokens held by this position, in human units."
    },
    "entry_amounts": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "minItems": 2,
      "maxItems": 2,
      "description": "Per-token entry amounts in pool insertion order. Exactly 2 entries (2-asset pools only in v1)."
    },
    "holding_period_days": {
      "type": [
        "number",
        "null"
      ],
      "description": "Optional holding period in days. If supplied, real_apr is annualized from net_pnl."
    },
    "pool_address": {
      "type": "string",
      "description": "On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work."
    },
    "rpc_url": {
      "type": "string",
      "description": "An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs."
    },
    "pool_type": {
      "type": "string",
      "enum": [
        "stableswap"
      ],
      "description": "Which protocol the pool at pool_address belongs to. This tool accepts only stableswap (2-asset plain Curve pool)."
    },
    "chain_id": {
      "type": "integer",
      "description": "Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check."
    },
    "block_number": {
      "type": "integer",
      "description": "Optional block number to pin the read to a historical block. Omit to read the latest block."
    }
  },
  "required": [
    "lp_init_amt",
    "entry_amounts",
    "pool_address",
    "rpc_url",
    "pool_type"
  ]
}
🟡SimulatePriceMove(price_change_pct, position_size_lp, lwr_tick, upr_tick, pool_address, ...)

Project a Uniswap V2 or V3 LP position's value at a hypothetical price change from the CURRENT pool state (not from entry). A price_change_pct of -0.30 asks 'what if price drops 30% from here'. Returns new value, IL at the simulated price, and percentage change in position value. Fee projection is not modeled (always null).

輸入結構描述

{
  "type": "object",
  "properties": {
    "price_change_pct": {
      "type": "number",
      "description": "Fractional price change from current price. Must be > -1.0. Example: -0.30 models a 30% drop."
    },
    "position_size_lp": {
      "type": "number",
      "description": "LP tokens held by the position, in human units. Must be > 0."
    },
    "lwr_tick": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Lower tick of the position (V3 only; null for V2)."
    },
    "upr_tick": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Upper tick of the position (V3 only; null for V2)."
    },
    "pool_address": {
      "type": "string",
      "description": "On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work."
    },
    "rpc_url": {
      "type": "string",
      "description": "An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs."
    },
    "pool_type": {
      "type": "string",
      "enum": [
        "uniswap_v2",
        "uniswap_v3"
      ],
      "description": "Which protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3."
    },
    "chain_id": {
      "type": "integer",
      "description": "Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check."
    },
    "block_number": {
      "type": "integer",
      "description": "Optional block number to pin the read to a historical block. Omit to read the latest block."
    },
    "price_change_pcts": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "maxItems": 256,
      "description": "Optional batch form of 'price_change_pct': an array of values to evaluate in a single call. The pool is read once and the result is an array with one entry per element, in input order. Supply EITHER 'price_change_pct' (single) OR 'price_change_pcts' (batch), not both. Max 256 entries."
    }
  },
  "required": [
    "position_size_lp",
    "pool_address",
    "rpc_url",
    "pool_type"
  ]
}
🟡SimulateBalancerMove(price_change_pct, lp_init_amt, pool_address, rpc_url, pool_type, ...)

Project a 2-asset Balancer weighted-pool LP position's value at a hypothetical price change from the CURRENT pool state. The shock is applied to the base-token price in opp units; IL depends on both the shock magnitude and the pool's weights. Returns new value in opp-numeraire, IL at the simulated price, and percentage change.

輸入結構描述

{
  "type": "object",
  "properties": {
    "price_change_pct": {
      "type": "number",
      "description": "Fractional price change from current spot. Must be > -1.0. Example: -0.30 models a 30% drop in base-in-opp terms."
    },
    "lp_init_amt": {
      "type": "number",
      "description": "Pool shares held by this position, in human units. Must be > 0."
    },
    "pool_address": {
      "type": "string",
      "description": "On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work."
    },
    "rpc_url": {
      "type": "string",
      "description": "An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs."
    },
    "pool_type": {
      "type": "string",
      "enum": [
        "balancer"
      ],
      "description": "Which protocol the pool at pool_address belongs to. This tool accepts only balancer (2-asset weighted pool)."
    },
    "chain_id": {
      "type": "integer",
      "description": "Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check."
    },
    "block_number": {
      "type": "integer",
      "description": "Optional block number to pin the read to a historical block. Omit to read the latest block."
    },
    "price_change_pcts": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "maxItems": 256,
      "description": "Optional batch form of 'price_change_pct': an array of values to evaluate in a single call. The pool is read once and the result is an array with one entry per element, in input order. Supply EITHER 'price_change_pct' (single) OR 'price_change_pcts' (batch), not both. Max 256 entries."
    }
  },
  "required": [
    "lp_init_amt",
    "pool_address",
    "rpc_url",
    "pool_type"
  ]
}
🟡SimulateStableswapMove(price_change_pct, lp_init_amt, pool_address, rpc_url, pool_type, ...)

Project a 2-asset Curve-style Stableswap LP position's value at a hypothetical depeg from the CURRENT pool state. The shock multiplies the pool's current alpha by (1 + price_change_pct); at high A, large shocks may be physically unreachable and in that case new_value, il_at_new_price, and value_change_pct are returned as null. Values are in peg-numeraire.

輸入結構描述

{
  "type": "object",
  "properties": {
    "price_change_pct": {
      "type": "number",
      "description": "Fractional shock applied to current alpha. Must be > -1.0. Simulated alpha = current_alpha * (1 + price_change_pct)."
    },
    "lp_init_amt": {
      "type": "number",
      "description": "LP tokens held by this position, in human units. Must be > 0."
    },
    "pool_address": {
      "type": "string",
      "description": "On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work."
    },
    "rpc_url": {
      "type": "string",
      "description": "An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs."
    },
    "pool_type": {
      "type": "string",
      "enum": [
        "stableswap"
      ],
      "description": "Which protocol the pool at pool_address belongs to. This tool accepts only stableswap (2-asset plain Curve pool)."
    },
    "chain_id": {
      "type": "integer",
      "description": "Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check."
    },
    "block_number": {
      "type": "integer",
      "description": "Optional block number to pin the read to a historical block. Omit to read the latest block."
    },
    "price_change_pcts": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "maxItems": 256,
      "description": "Optional batch form of 'price_change_pct': an array of values to evaluate in a single call. The pool is read once and the result is an array with one entry per element, in input order. Supply EITHER 'price_change_pct' (single) OR 'price_change_pcts' (batch), not both. Max 256 entries."
    }
  },
  "required": [
    "lp_init_amt",
    "pool_address",
    "rpc_url",
    "pool_type"
  ]
}
⚪CheckPoolHealth(recent_window, pool_address, rpc_url, pool_type, chain_id, ...)

Snapshot pool-level health metrics for a Uniswap V2 or V3 pool: TVL in token0 numeraire, reserves, accumulated fees, LP concentration, and swap activity. Answers 'is this a pool I would deposit into?' at the pool level (not position level). num_swaps and fee_accrual_rate_recent are V2-only; V3 returns null for these because V3 has no per-swap history array. A single-block live snapshot also returns null for the LP-concentration and swap metrics (unrecoverable from state alone).

輸入結構描述

{
  "type": "object",
  "properties": {
    "recent_window": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Rolling window size for fee_accrual_rate_recent, in swap counts. Default 20. V2-only; ignored for V3."
    },
    "pool_address": {
      "type": "string",
      "description": "On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work."
    },
    "rpc_url": {
      "type": "string",
      "description": "An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs."
    },
    "pool_type": {
      "type": "string",
      "enum": [
        "uniswap_v2",
        "uniswap_v3"
      ],
      "description": "Which protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3."
    },
    "chain_id": {
      "type": "integer",
      "description": "Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check."
    },
    "block_number": {
      "type": "integer",
      "description": "Optional block number to pin the read to a historical block. Omit to read the latest block."
    }
  },
  "required": [
    "pool_address",
    "rpc_url",
    "pool_type"
  ]
}
🟢DetectRugSignals(lp_concentration_threshold, tvl_floor, pool_address, rpc_url, pool_type, ...)

Detect rug-pull signals on a Uniswap V2 or V3 pool via three threshold checks: suspiciously low TVL, top-LP concentration above a limit, and inactive-pool-with-liquidity. Composes over CheckPoolHealth and returns per-signal booleans plus a count-based risk level (low/medium/high/critical). The inactive-with-liquidity signal is V2-only; V3 pools report False for it with a note in details.

輸入結構描述

{
  "type": "object",
  "properties": {
    "lp_concentration_threshold": {
      "type": [
        "number",
        "null"
      ],
      "description": "Top-LP share (strict-greater-than) that triggers the concentration signal. In (0, 1]; default 0.90; pass 1.0 to disable."
    },
    "tvl_floor": {
      "type": [
        "number",
        "null"
      ],
      "description": "Minimum acceptable TVL in token0 numeraire. Values at or below fire the tvl_suspiciously_low signal. Default 10.0 is nominal; override for your pair."
    },
    "pool_address": {
      "type": "string",
      "description": "On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work."
    },
    "rpc_url": {
      "type": "string",
      "description": "An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs."
    },
    "pool_type": {
      "type": "string",
      "enum": [
        "uniswap_v2",
        "uniswap_v3"
      ],
      "description": "Which protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3."
    },
    "chain_id": {
      "type": "integer",
      "description": "Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check."
    },
    "block_number": {
      "type": "integer",
      "description": "Optional block number to pin the read to a historical block. Omit to read the latest block."
    }
  },
  "required": [
    "pool_address",
    "rpc_url",
    "pool_type"
  ]
}
🟢CalculateSlippage(amount_in, lwr_tick, upr_tick, pool_address, rpc_url, ...)

Calculate slippage and price-impact decomposition for a proposed swap on a Uniswap V2 or V3 pool. Returns spot vs execution price, slippage percentage, slippage cost in output-token units, and price impact. Also returns the maximum trade size that stays within 1% slippage for V2 pools; V3 returns null for that field because tick-crossing math has not yet been inverted.

輸入結構描述

{
  "type": "object",
  "properties": {
    "amount_in": {
      "type": "number",
      "description": "Amount of token_in to trade, in human units. Must be > 0."
    },
    "lwr_tick": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Lower tick of the position (V3 only; null for V2)."
    },
    "upr_tick": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Upper tick of the position (V3 only; null for V2)."
    },
    "pool_address": {
      "type": "string",
      "description": "On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work."
    },
    "rpc_url": {
      "type": "string",
      "description": "An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs."
    },
    "pool_type": {
      "type": "string",
      "enum": [
        "uniswap_v2",
        "uniswap_v3"
      ],
      "description": "Which protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3."
    },
    "chain_id": {
      "type": "integer",
      "description": "Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check."
    },
    "block_number": {
      "type": "integer",
      "description": "Optional block number to pin the read to a historical block. Omit to read the latest block."
    },
    "token_in_name": {
      "type": "string",
      "description": "Symbol of the input token for the trade (e.g. 'USDC', 'WETH'). Must be one of the two tokens in the pool."
    },
    "amounts_in": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "maxItems": 256,
      "description": "Optional batch form of 'amount_in': an array of values to evaluate in a single call. The pool is read once and the result is an array with one entry per element, in input order. Supply EITHER 'amount_in' (single) OR 'amounts_in' (batch), not both. Max 256 entries."
    }
  },
  "required": [
    "pool_address",
    "rpc_url",
    "pool_type",
    "token_in_name"
  ]
}
⚪AssessDepegRisk(lp_init_amt, depeg_levels, compare_v2, pool_address, rpc_url, ...)

Quantify a 2-asset Curve-style Stableswap LP position's exposure to a stablecoin depeg. Computes IL at multiple depeg levels (default 2%, 5%, 10%, 20%, 50%) via the closed-form stableswap-invariant expansion, with an optional V2 constant-product benchmark at each level. Some depeg levels are physically unreachable at high A — unreachable scenarios return null on il_pct, lp_value_at_depeg, and hold_value_at_depeg; the V2 benchmark stays populated.

輸入結構描述

{
  "type": "object",
  "properties": {
    "lp_init_amt": {
      "type": "number",
      "description": "LP tokens held, in human units. Must be > 0."
    },
    "depeg_levels": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "number"
      },
      "description": "Depeg magnitudes as fractions in (0, 1). Default [0.02, 0.05, 0.10, 0.20, 0.50]."
    },
    "compare_v2": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "If true (default), each scenario reports the equivalent V2 constant-product IL at the same price deviation."
    },
    "pool_address": {
      "type": "string",
      "description": "On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work."
    },
    "rpc_url": {
      "type": "string",
      "description": "An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs."
    },
    "pool_type": {
      "type": "string",
      "enum": [
        "stableswap"
      ],
      "description": "Which protocol the pool at pool_address belongs to. This tool accepts only stableswap (2-asset plain Curve pool)."
    },
    "chain_id": {
      "type": "integer",
      "description": "Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check."
    },
    "block_number": {
      "type": "integer",
      "description": "Optional block number to pin the read to a historical block. Omit to read the latest block."
    },
    "depeg_token_name": {
      "type": "string",
      "description": "Optional. Symbol of the asset assumed to depeg (e.g. 'USDC', 'DAI'). Must be one of the two tokens in the pool. If omitted, the pool's first token is used."
    }
  },
  "required": [
    "lp_init_amt",
    "pool_address",
    "rpc_url",
    "pool_type"
  ]
}
🟢BuildStateTwin(pool_address, rpc_url, pool_type, chain_id, block_number, ...)

Read a pool's on-chain state once and return it as a serialized State Twin (JSON): the protocol-specific snapshot plus a content_hash, in the wire form a client rehydrates locally. Use this to pull a single managed-RPC twin, then run any number of counterfactuals (price moves, IL, slippage) client-side, off this server. Covers Uniswap V2/V3, Balancer 2-asset weighted, and Curve 2-asset plain stableswap pools. The endpoint stores and logs nothing — your rpc_url is never persisted.

輸入結構描述

{
  "type": "object",
  "properties": {
    "pool_address": {
      "type": "string",
      "description": "On-chain address of the pool/pair to snapshot. Required. Lowercase, uppercase, or checksum casing all work."
    },
    "rpc_url": {
      "type": "string",
      "description": "An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs."
    },
    "pool_type": {
      "type": "string",
      "enum": [
        "uniswap_v2",
        "uniswap_v3",
        "balancer",
        "stableswap"
      ],
      "description": "Which protocol the pool at pool_address belongs to: 'uniswap_v2' | 'uniswap_v3' | 'balancer' (2-asset weighted) | 'stableswap' (2-asset plain Curve). All four are supported — this tool spans every snapshot type."
    },
    "chain_id": {
      "type": "integer",
      "description": "Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Omit to skip the check."
    },
    "block_number": {
      "type": "integer",
      "description": "Optional block number to pin the read to a historical block. Omit to read the latest block."
    },
    "lwr_tick": {
      "type": "integer",
      "description": "uniswap_v3 only — lower tick of the position range to snapshot. Omit for the pool's full active-liquidity range. Ignored for other pool types."
    },
    "upr_tick": {
      "type": "integer",
      "description": "uniswap_v3 only — upper tick of the position range to snapshot. Omit for the pool's full active-liquidity range. Ignored for other pool types."
    }
  },
  "required": [
    "pool_address",
    "rpc_url",
    "pool_type"
  ]
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本11 個工具
已驗證未記錄版本11 個工具
已驗證未記錄版本11 個工具