
DeFiMind
- Updated July 8, 2026
- defimind-ai/defimind-mcp
DeFiMind's MCP server.
About
DeFiMind's MCP server. Analyze **live** Uniswap V2/V3, Balancer, and. DeFiMind's MCP server. Analyze **live** Uniswap V2/V3, Balancer, and Curve stableswap pools - positions, price moves, pool health, rug signals, slippage, and depeg risk - or build a portable **State Twin** for off-MCP analysis, from any MCP-compatible AI client. Reads real chain state via a caller-supplied RPC; the endpoint itself is authless. [](LICENSE)
- DeFiMind's MCP server. Analyze **live** Uniswap V2/V3, Balancer, and
- Curve stableswap pools - positions, price moves, pool health, rug
- signals, slippage, and depeg risk - or build a portable **State Twin**
- for off-MCP analysis, from any MCP-compatible AI client. Reads real chain
- state via a caller-supplied RPC; the endpoint itself is authless.
DeFiMind by the numbers
- Exposes 11 verified tools (MCP introspection)
- Data as of Jul 9, 2026 (Skillselion catalog sync)
claude mcp add --transport http defimind-mcp https://mcp.defimind.ai/mcpAdd your badge
Show developers this MCP server is listed on Skillselion. Paste this into your README.
| Transport | HTTP |
|---|---|
| Auth | None |
| Tools | 11 |
| Last updated | July 8, 2026 |
| Repository | defimind-ai/defimind-mcp ↗ |
How do agents access defimind-mcp capabilities without custom integration code?
DeFiMind's MCP server. Analyze **live** Uniswap V2/V3, Balancer, and
Who is it for?
Developers wiring defimind-mcp into Cursor, Claude Desktop, or other MCP clients.
Skip if: Teams that need features outside the documented defimind-mcp tool surface.
What you get
Configured MCP host can call defimind-mcp tools with schemas from the server README.
By the numbers
- [object Object]
DeFiMind capabilities & compatibility
- Capabilities
- defimind's mcp server. analyze **live** uniswap · curve stableswap pools positions, price moves, · signals, slippage, and depeg risk or build a p · for off mcp analysis, from any mcp compatible ai
- Use cases
- api development · orchestration
- Runs
- Runs locally
- Pricing
- Free
What DeFiMind says it does
https://mcp.defimind.ai/mcp
https://mcp.defimind.ai/mcp
Tools 11
Public tool metadata - what this server can do for an agent.
AnalyzePosition11 paramsAnalyze 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.
lp_init_amtnumberrequiredLP token amount held by the position (position size in human units).entry_x_amtnumberrequiredAmount of token0 originally deposited at position entry.entry_y_amtnumberrequiredAmount of token1 originally deposited at position entry.lwr_tickinteger | nullLower tick of the position (V3 positions only; null for V2).upr_tickinteger | nullUpper tick of the position (V3 positions only; null for V2).holding_period_daysnumber | nullOptional holding period in days. If supplied, real_apr is annualized from net_pnl.pool_addressstringrequiredOn-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_urlstringrequiredAn 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_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3.chain_idintegerOptional 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_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.
AnalyzeBalancerLP9 paramsAnalyze 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.
lp_init_amtnumberrequiredPool shares held by this position, in human units.entry_base_amtnumberrequiredAmount of base (first) token originally deposited.entry_opp_amtnumberrequiredAmount of opp (second) token originally deposited.holding_period_daysnumber | nullOptional holding period in days. If supplied, real_apr is annualized from net_pnl.pool_addressstringrequiredOn-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_urlstringrequiredAn 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_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts only balancer (2-asset weighted pool).chain_idintegerOptional 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_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.
AnalyzeStableswapLP8 paramsAnalyze 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.
lp_init_amtnumberrequiredLP tokens held by this position, in human units.entry_amountsarrayrequiredPer-token entry amounts in pool insertion order. Exactly 2 entries (2-asset pools only in v1).holding_period_daysnumber | nullOptional holding period in days. If supplied, real_apr is annualized from net_pnl.pool_addressstringrequiredOn-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_urlstringrequiredAn 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_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts only stableswap (2-asset plain Curve pool).chain_idintegerOptional 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_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.
SimulatePriceMove10 paramsProject 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).
price_change_pctnumberFractional price change from current price. Must be > -1.0. Example: -0.30 models a 30% drop.position_size_lpnumberrequiredLP tokens held by the position, in human units. Must be > 0.lwr_tickinteger | nullLower tick of the position (V3 only; null for V2).upr_tickinteger | nullUpper tick of the position (V3 only; null for V2).pool_addressstringrequiredOn-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_urlstringrequiredAn 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_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3.chain_idintegerOptional 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_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.price_change_pctsarrayOptional 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.
SimulateBalancerMove8 paramsProject 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.
price_change_pctnumberFractional price change from current spot. Must be > -1.0. Example: -0.30 models a 30% drop in base-in-opp terms.lp_init_amtnumberrequiredPool shares held by this position, in human units. Must be > 0.pool_addressstringrequiredOn-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_urlstringrequiredAn 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_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts only balancer (2-asset weighted pool).chain_idintegerOptional 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_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.price_change_pctsarrayOptional 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.
SimulateStableswapMove8 paramsProject 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.
price_change_pctnumberFractional shock applied to current alpha. Must be > -1.0. Simulated alpha = current_alpha * (1 + price_change_pct).lp_init_amtnumberrequiredLP tokens held by this position, in human units. Must be > 0.pool_addressstringrequiredOn-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_urlstringrequiredAn 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_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts only stableswap (2-asset plain Curve pool).chain_idintegerOptional 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_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.price_change_pctsarrayOptional 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.
CheckPoolHealth6 paramsSnapshot 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).
recent_windowinteger | nullRolling window size for fee_accrual_rate_recent, in swap counts. Default 20. V2-only; ignored for V3.pool_addressstringrequiredOn-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_urlstringrequiredAn 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_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3.chain_idintegerOptional 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_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.
DetectRugSignals7 paramsDetect 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.
lp_concentration_thresholdnumber | nullTop-LP share (strict-greater-than) that triggers the concentration signal. In (0, 1]; default 0.90; pass 1.0 to disable.tvl_floornumber | nullMinimum 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_addressstringrequiredOn-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_urlstringrequiredAn 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_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3.chain_idintegerOptional 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_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.
CalculateSlippage10 paramsCalculate 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.
amount_innumberAmount of token_in to trade, in human units. Must be > 0.lwr_tickinteger | nullLower tick of the position (V3 only; null for V2).upr_tickinteger | nullUpper tick of the position (V3 only; null for V2).pool_addressstringrequiredOn-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_urlstringrequiredAn 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_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3.chain_idintegerOptional 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_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.token_in_namestringrequiredSymbol of the input token for the trade (e.g. 'USDC', 'WETH'). Must be one of the two tokens in the pool.amounts_inarrayOptional 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.
AssessDepegRisk9 paramsQuantify 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.
lp_init_amtnumberrequiredLP tokens held, in human units. Must be > 0.depeg_levelsarray | nullDepeg magnitudes as fractions in (0, 1). Default [0.02, 0.05, 0.10, 0.20, 0.50].compare_v2boolean | nullIf true (default), each scenario reports the equivalent V2 constant-product IL at the same price deviation.pool_addressstringrequiredOn-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_urlstringrequiredAn 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_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts only stableswap (2-asset plain Curve pool).chain_idintegerOptional 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_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.depeg_token_namestringOptional. 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.
BuildStateTwin7 paramsRead 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.
pool_addressstringrequiredOn-chain address of the pool/pair to snapshot. Required. Lowercase, uppercase, or checksum casing all work.rpc_urlstringrequiredAn 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_typestringrequiredWhich 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_idintegerOptional guard. If supplied and the RPC reports a different chain id, the call is rejected. Omit to skip the check.block_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.lwr_tickintegeruniswap_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_tickintegeruniswap_v3 only — upper tick of the position range to snapshot. Omit for the pool's full active-liquidity range. Ignored for other pool types.
README.md
defimind-mcp
DeFiMind's MCP server. Analyze live Uniswap V2/V3, Balancer, and Curve stableswap pools — positions, price moves, pool health, rug signals, slippage, and depeg risk — or build a portable State Twin for off-MCP analysis, from any MCP-compatible AI client. Reads real chain state via a caller-supplied RPC; the endpoint itself is authless.
Endpoint: https://mcp.defimind.ai/mcp (streamable-HTTP, authless).
Install
Claude Desktop
Settings → Integrations → Add server.
URL: https://mcp.defimind.ai/mcp
Claude Code
claude mcp add --transport http defimind https://mcp.defimind.ai/mcp
Cursor
Settings → MCP → Add new MCP server.
Name: defimind · Type: http · URL: https://mcp.defimind.ai/mcp
Smithery
Listed at smithery.ai/servers/ic3moore/defimind — connect via the Smithery gateway from any supported client.
Tools
The endpoint ships 11 tools over live Uniswap V2/V3, Balancer weighted (2-asset), and Curve stableswap (2-asset) pools. Two surfaces:
- 10 reactive primitives — one question, one answer, one chain read.
Four of them also take a vector input (e.g.
price_change_pcts[],amounts_in[]) to sweep a whole grid/curve in one call. BuildStateTwin— returns a portable State Twin (the pool's state as JSON) that a client rehydrates locally to run unlimited counterfactuals off the MCP, zero further RPC.
Every call takes pool_address, rpc_url, and pool_type, plus an
optional chain_id guard and block_number pin — nothing is stored.
Each reactive tool is protocol-specific and advertises only the
pool_type values it accepts; pointing one at an unsupported type
returns a clean error before any chain read.
Full reference — params, returns, and a verified example per tool:
docs/TOOLS.md.
Scope: the Balancer tools cover 2-asset weighted pools; the
stableswap tools cover 2-asset plain Curve pools (rate-bearing pools
— metapools, LSD — are a later release). A stableswap tool pointed at a
3-coin or rate-bearing pool fails cleanly.
Uniswap V2/V3
AnalyzePosition
PnL decomposition for an LP position — impermanent loss, fees, and net.
"Analyze my position in the V3 USDC/ETH pool."
SimulatePriceMove
"What if price moves X%?" — projected reserves, position value, and IL.
"If ETH drops 20%, what happens to my V3 ETH/DAI position?"
CheckPoolHealth
TVL, reserves, LP concentration, and recent activity for a pool.
"Is this V3 pool healthy?"
DetectRugSignals
Threshold-based rug flags on a pool's on-chain state.
"Any rug signals on this V2 pair?"
CalculateSlippage
Slippage, price impact, and max trade size for a given trade.
"How much slippage on a 50 ETH buy in this V3 pool?"
Balancer (2-asset weighted)
AnalyzeBalancerLP
PnL decomposition for a 2-asset Balancer weighted-pool position, using the weighted-pool IL formula where the token weight shapes IL magnitude.
"How is my 80/20 BAL/WETH Balancer position doing?"
SimulateBalancerMove
"What if the base token moves X%?" — projected value and IL on a 2-asset weighted pool, weight-aware.
"If BAL drops 30%, what happens to my BAL/WETH Balancer LP?"
Curve stableswap (2-asset plain)
AnalyzeStableswapLP
PnL decomposition for a 2-asset Curve stableswap position via the amplified-invariant IL formula — small depegs can produce outsized IL at high A.
"Analyze my position in the crvUSD/USDC pool."
SimulateStableswapMove
"What if the peg shifts X%?" — projected value and IL on a 2-asset stableswap pool. At high A, large shocks may be physically unreachable (returned as null).
"What happens to my USDC/DAI Curve LP if USDC depegs 2%?"
AssessDepegRisk
IL across a ladder of depeg levels (default 2%, 5%, 10%, 20%, 50%) for a 2-asset stableswap position, with an optional constant-product benchmark.
"How exposed is my crvUSD/USDC position to a depeg?"
State twin builder (all four pool types)
BuildStateTwin
Reads a pool once and returns a portable State Twin — the pool's state
as JSON (__type__ + fields + a content_hash). A client rehydrates it
locally and runs unlimited counterfactuals (price moves, IL, slippage)
off the MCP, with zero further RPC — build once, run N. Spans all four
pool types. See the twin round-trip in docs/TOOLS.md and
the defimind package.
"Build me a reusable twin of the USDC/ETH 0.05% pool."
(Honest gap: it's a single-block STATE twin — history-derived health
metrics stay server-side reads inside CheckPoolHealth/DetectRugSignals.)
How it works
defimind-mcp reads live Uniswap V2/V3, Balancer, and Curve
stableswap pool state through a caller-supplied RPC endpoint (BYO-RPC,
passed per tool call). The endpoint is authless — no API key, no
account. Nothing is logged or stored; each call pulls state, runs the
analysis, and returns a typed result.
The analytics are powered by open-source DeFiPy — the same primitives, twin, and tools that run against synthetic recipes, now pointed at real pools. The math is open; the reports are paid.
Roadmap
- v0.2 — Balancer & Stableswap live reads ✓ shipped. The 5 Balancer/Stableswap tools went live on DeFiPy 2.2's LiveProviders (2-asset weighted + 2-asset plain Curve).
- v0.2.2 — honest schemas, vectors & the twin builder ✓ shipped.
Per-tool
pool_typeenums; vectorized scenario inputs on the four scenario tools; andBuildStateTwin— the 11th tool — for portable, off-MCP twin analysis. - N-asset & rate-bearing pools — 3-asset Balancer, N-coin and rate-bearing (metapool/LSD) Curve, once the upstream DeFiPy primitives extend past 2 assets.
- Distribution polish — OCI-package listing, DNS-verified namespace, and OIDC auto-publish.
Develop
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
Run the server over streamable HTTP (binds to $PORT, default 8080):
PORT=8080 python -m defimind_mcp.server # endpoint at http://localhost:8080/mcp
Or over stdio for a local MCP Inspector smoke-test:
python -m defimind_mcp.server --stdio
npx @modelcontextprotocol/inspector python -m defimind_mcp.server --stdio
Tests (offline — fake provider + real twin/primitives):
pytest tests/
Live-RPC gate (real mainnet Uniswap V2/V3, Balancer, and Curve pools; needs your own RPC):
DEFIMIND_TEST_RPC_URL="https://eth-mainnet.example/v2/<key>" pytest tests/test_live.py -v
License
Apache-2.0. See LICENSE and NOTICE.
This project adapts code from DeFiPy (Apache-2.0).
See also
- DeFiPy (open-source substrate): https://defipy.org
- DeFiMind: https://defimind.ai
- State Twins paper: https://arxiv.org/abs/2605.11522
Recommended MCP Servers
FAQ
What does defimind-mcp do?
DeFiMind's MCP server.
When should I use defimind-mcp?
DeFiMind's MCP server. Analyze **live** Uniswap V2/V3, Balancer, and
Is defimind-mcp safe to install?
Review the Security Audits panel on this page before installing in production.