@hypurrquant/defi-cli 1.0.11 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +9 -2
  2. package/config/chains.toml +6 -1
  3. package/config/protocols/dex/aerodrome_base.toml +2 -1
  4. package/config/protocols/dex/aerodrome_cl.toml +2 -1
  5. package/config/protocols/dex/apeswap_bnb.toml +1 -1
  6. package/config/protocols/dex/babydogeswap_bnb.toml +1 -1
  7. package/config/protocols/dex/bakeryswap_bnb.toml +2 -2
  8. package/config/protocols/dex/biswap_bnb.toml +1 -1
  9. package/config/protocols/dex/bscswap_bnb.toml +1 -1
  10. package/config/protocols/dex/curve_hyperevm.toml +1 -1
  11. package/config/protocols/dex/fstswap_bnb.toml +1 -1
  12. package/config/protocols/dex/hybra.toml +4 -2
  13. package/config/protocols/dex/hyperswap.toml +1 -1
  14. package/config/protocols/dex/kittenswap.toml +1 -1
  15. package/config/protocols/dex/merchantmoe_mantle.toml +2 -1
  16. package/config/protocols/dex/nest.toml +6 -5
  17. package/config/protocols/dex/pancakeswap_v2_bnb.toml +1 -1
  18. package/config/protocols/dex/pancakeswap_v3_bnb.toml +2 -1
  19. package/config/protocols/dex/project_x.toml +1 -1
  20. package/config/protocols/dex/ramses_cl.toml +1 -1
  21. package/config/protocols/dex/ramses_hl.toml +1 -1
  22. package/config/protocols/dex/thena_v1_bnb.toml +2 -1
  23. package/config/protocols/dex/traderjoe_monad.toml +2 -1
  24. package/config/protocols/dex/uniswap_v2_monad.toml +2 -1
  25. package/config/protocols/dex/uniswap_v3_base.toml +2 -1
  26. package/config/protocols/dex/uniswap_v3_bnb.toml +3 -1
  27. package/config/protocols/dex/uniswap_v3_mantle.toml +2 -1
  28. package/config/protocols/dex/uniswap_v3_monad.toml +2 -1
  29. package/config/protocols/lending/felix_morpho.toml +16 -0
  30. package/config/protocols/lending/hyperlend.toml +1 -1
  31. package/config/protocols/lending/hypurrfi.toml +1 -1
  32. package/config/protocols/lending/kinza_bnb.toml +1 -1
  33. package/config/protocols/lending/morpho_blue_monad.toml +17 -0
  34. package/config/protocols/lending/venus_flux_bnb.toml +5 -1
  35. package/dist/index.js +1590 -309
  36. package/dist/index.js.map +1 -1
  37. package/dist/main.js +1595 -314
  38. package/dist/main.js.map +1 -1
  39. package/dist/mcp-server.js +810 -196
  40. package/dist/mcp-server.js.map +1 -1
  41. package/package.json +1 -1
  42. package/skills/defi-cli/SKILL.md +54 -5
  43. package/skills/defi-cli/references/commands.md +41 -8
  44. package/skills/defi-cli/references/protocols.md +2 -2
  45. package/skills/defi-cli/scripts/bridge-quote.sh +34 -0
  46. package/skills/defi-cli/scripts/lending-supply-flow.sh +28 -0
  47. package/skills/defi-cli/scripts/lp-claim-all.sh +25 -0
  48. package/skills/defi-cli/scripts/lp-emission-discover.sh +20 -0
  49. package/skills/defi-cli/scripts/portfolio-snapshot.sh +0 -0
  50. package/skills/defi-cli/scripts/preflight.sh +0 -0
  51. package/skills/defi-cli/scripts/swap-quote.sh +37 -0
  52. package/skills/defi-cli/scripts/wallet-status.sh +30 -0
  53. package/skills/defi-cli/scripts/yield-scan.sh +0 -0
  54. package/skills/defi-cli/scripts/exploit-scan.sh +0 -10
package/README.md CHANGED
@@ -21,7 +21,7 @@ npx -y @hypurrquant/defi-cli --json status
21
21
  | HyperEVM | 999 | 🟢 production | 11 |
22
22
  | Mantle | 5000 | 🟢 production | 3 |
23
23
  | Base | 8453 | 🟢 production | 5 |
24
- | BNB | 56 | 🟡 staged | 16 |
24
+ | BNB | 56 | 🟢 production | 16 |
25
25
  | Monad | 143 | 🟡 staged | 4 |
26
26
 
27
27
  🟢 = full lifecycle broadcast verified (mint/supply → claim → withdraw)
@@ -112,7 +112,7 @@ defi setup
112
112
  | `lending` | rates / position / supply / borrow / repay / withdraw |
113
113
  | `yield` | compare / scan (cross-chain) / optimize / execute |
114
114
  | `swap` | DEX aggregator (kyber, openocean, liquid, lifi, relay) |
115
- | `bridge` | Cross-chain (lifi, debridge, cctp) |
115
+ | `bridge` | Cross-chain (lifi, relay, debridge, cctp) |
116
116
  | `portfolio` | show / snapshot / pnl / history |
117
117
  | `price` | Oracle + DEX prices |
118
118
  | `wallet` | Address management |
@@ -164,6 +164,13 @@ defi --chain base swap --provider kyber --from WETH --to USDC --amount <wei> --b
164
164
  defi --chain bnb swap --provider relay --from WBNB --to USDT --amount <wei> --broadcast
165
165
  ```
166
166
 
167
+ ### Cross-chain bridge
168
+ ```bash
169
+ # Providers: lifi (default), relay (fast native, ~3s), debridge, cctp
170
+ defi --chain base bridge --token USDC --amount 100000000 --to-chain ethereum --provider lifi --broadcast
171
+ defi --chain base bridge --token 0x0000000000000000000000000000000000000000 --amount 1000000000000000 --to-chain bnb --provider relay --broadcast
172
+ ```
173
+
167
174
  ## Agent-First Design
168
175
 
169
176
  ```bash
@@ -67,5 +67,10 @@ native_token = "MON"
67
67
  wrapped_native = "0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A"
68
68
  multicall3 = "0xcA11bde05977b3631167028862bE2a173976CA11"
69
69
 
70
- # Monad: no aggregator support yet (early-stage mainnet)
70
+ # Monad: 4 of 5 aggregators verified live against mainnet (chain id 143).
71
+ # LiquidSwap is HyperEVM-only and intentionally omitted.
71
72
  [chain.monad.aggregators]
73
+ kyber = "monad"
74
+ openocean = "monad"
75
+ lifi = "auto"
76
+ relay = "auto"
@@ -5,7 +5,8 @@ category = "dex"
5
5
  interface = "solidly_v2"
6
6
  chain = "base"
7
7
  native = true
8
- description = "Aerodrome Finance — ve(3,3) DEX on Base"
8
+ verified = true
9
+ description = "Aerodrome Finance — ve(3,3) DEX on Base. add+remove liquidity (vAMM-USDC/USDT) live-confirmed 2026-05-08 (add tx 0x938234eb…3c39, remove tx 0xa99203f0…89dc). Full gauge stake/claim/unstake cycle live-verified 2026-05-08 against gauge 0x6f62Ebea59dA60C8e10B4Dcda88571de7C124Fb1 (claim 0xc49375…79ca0, unstake 0xa061f6…ced0, remove 0x8888d8…bf2a)."
9
10
 
10
11
  [protocol.contracts]
11
12
  router = "0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43"
@@ -6,7 +6,8 @@ interface = "uniswap_v3"
6
6
  cl_style = "slipstream"
7
7
  chain = "base"
8
8
  native = true
9
- description = "Aerodrome Slipstream — concentrated liquidity on Base ($203M TVL)"
9
+ verified = true
10
+ description = "Aerodrome Slipstream — concentrated liquidity on Base ($203M TVL). Slipstream V3 NFT mint+remove (USDC/USDT tickSpacing=1 pool 0xa41Bc0AF…fcD1) live-confirmed 2026-05-08 with --range 5 + slippage bypass (tokenId 69797487, mint 0xf335a47d…4b161, remove 0x00d2c531…c10e). Adapter cl_style=slipstream encoding (12-field MintParams + sqrtPriceX96=0n) is correct; earlier 32k revert was caused by passing the V2 pool address instead of the Slipstream pool — use Slipstream factory.getPool(t0,t1,tickSpacing) for canonical lookup."
10
11
  [protocol.contracts]
11
12
  router = "0xBe6D8f0d05cC4be24d5167a3eF062215bE6D18a5"
12
13
  factory = "0x5e7BB104d84c7CB9B682AaC2F3d509f5F406809A"
@@ -7,7 +7,7 @@ chain = "bnb"
7
7
  native = false
8
8
  verified = true
9
9
  reward_strategy = "none"
10
- description = "ApeSwap V2 on BNB Chain. On-chain verified 2026-04-03."
10
+ description = "ApeSwap V2 on BNB Chain. On-chain verified 2026-04-03; add+remove liquidity (USDT/USDC pool 0xcd1e0b85…3829) live-confirmed 2026-05-08 (add tx 0x1609f482…f9c2, remove tx 0x5eefd643…d86c)."
11
11
 
12
12
  [protocol.contracts]
13
13
  router = "0xcF0feBd3f17CEf5b47b0cD257aCf6025c5BFf3b7"
@@ -7,7 +7,7 @@ chain = "bnb"
7
7
  native = false
8
8
  verified = true
9
9
  reward_strategy = "none"
10
- description = "BabyDogeSwap V2 on BNB Chain. On-chain verified 2026-04-03."
10
+ description = "BabyDogeSwap V2 on BNB Chain. On-chain verified 2026-04-03; add+remove liquidity (USDT/USDC pool 0x30949ff5…d95a) live-confirmed 2026-05-08 (add tx 0x395a1f92…3c56, remove tx 0x29ce470f…f62e)."
11
11
 
12
12
  [protocol.contracts]
13
13
  router = "0xC9a0F685F39d05D835c369036251ee3aEaaF3c47"
@@ -7,8 +7,8 @@ chain = "bnb"
7
7
  native = false
8
8
  verified = true
9
9
  reward_strategy = "none"
10
- description = "BakerySwap V2 on BNB Chain. On-chain verified 2026-04-03."
10
+ description = "BakerySwap V2 on BNB Chain. On-chain verified 2026-04-03; add+remove liquidity (USDT/USDC pool 0x087a49f7…28e3) live-confirmed 2026-05-08 (router checksum fixed; add tx 0x958d8099…d5d4, remove tx 0x53850068…a205)."
11
11
 
12
12
  [protocol.contracts]
13
- router = "0xCDe540d7eAFE93AC5fE6233Bee57E1270D3E330F"
13
+ router = "0xCDe540d7eAFE93aC5fE6233Bee57E1270D3E330F"
14
14
  factory = "0x01bF7C66c6BD861915CdaaE475042d3c4BaE16A7"
@@ -7,7 +7,7 @@ chain = "bnb"
7
7
  native = false
8
8
  verified = true
9
9
  reward_strategy = "none"
10
- description = "Biswap V2 on BNB Chain. On-chain verified 2026-04-03."
10
+ description = "Biswap V2 on BNB Chain. On-chain verified 2026-04-03; add+remove liquidity (USDT/USDC pool 0x1483767e…bf83) live-confirmed 2026-05-08 (add tx 0xe71a3979…54b0, remove tx 0x35b75793…49f4)."
11
11
 
12
12
  [protocol.contracts]
13
13
  router = "0x3a6d8cA21D1CF76F653A67577FA0D27453350dD8"
@@ -7,7 +7,7 @@ chain = "bnb"
7
7
  native = false
8
8
  verified = true
9
9
  reward_strategy = "none"
10
- description = "BSCSwap V2 on BNB Chain. On-chain verified 2026-04-03."
10
+ description = "BSCSwap V2 on BNB Chain. On-chain verified 2026-04-03; add+remove liquidity (USDT/BUSD pool 0xf68fd424…0063) live-confirmed 2026-05-08 (BUSD obtained via openocean swap; add tx 0x7fc04d2e…e507, remove tx 0xbfd9acb2…9651)."
11
11
 
12
12
  [protocol.contracts]
13
13
  router = "0xd954551853F55deb4Ae31407c423e67B1621424A"
@@ -7,7 +7,7 @@ chain = "hyperevm"
7
7
  native = false
8
8
  verified = true
9
9
  reward_strategy = "lp_fee_only"
10
- description = "Curve Finance on HyperEVM (StableswapNG + TwoCryptoNG). 38 stable pools + 1 tricrypto pool deployed (verified 2026-04-29). Source: curvefi/curve-core deployments/prod/hyperliquid.yaml. Best for stable LP — low slippage, capital-efficient."
10
+ description = "Curve Finance on HyperEVM (StableswapNG + TwoCryptoNG). 38 stable pools + 1 tricrypto pool deployed (verified 2026-04-29). Source: curvefi/curve-core deployments/prod/hyperliquid.yaml. Best for stable LP — low slippage, capital-efficient. add+remove liquidity (StableswapNG dynamic uint256[] ABI) live-confirmed 2026-05-08 against USDC/USDT0 pool 0x703b14a4…0e9f (add tx 0x308aa7ff…03a5, remove tx 0x2c279341…5211)."
11
11
 
12
12
  [protocol.contracts]
13
13
  router = "0xd2002373543Ce3527023C75e7518C274A51ce712"
@@ -7,7 +7,7 @@ chain = "bnb"
7
7
  native = false
8
8
  verified = true
9
9
  reward_strategy = "none"
10
- description = "FstSwap V2 on BNB Chain. On-chain verified 2026-04-03."
10
+ description = "FstSwap V2 on BNB Chain. On-chain verified 2026-04-03; add+remove liquidity (USDT/USDC pool 0xc6ca8f17…696a) live-confirmed 2026-05-08 (add tx 0xd3f6c74c…66fb, remove tx 0xf6623e53…482f)."
11
11
 
12
12
  [protocol.contracts]
13
13
  router = "0xb3ca4d73b1e0ea2c53b42173388cc01e1c226f40"
@@ -7,7 +7,7 @@ chain = "hyperevm"
7
7
  native = true
8
8
  verified = true
9
9
  reward_strategy = "on_chain_gauge_tokenid"
10
- description = "Hybra V4 CL DEX with ve(3,3) gauge emissions on HyperEVM. gauge.earned(tokenId) single-arg variant."
10
+ description = "Hybra V4 CL DEX with ve(3,3) gauge emissions on HyperEVM. gauge.earned(tokenId) single-arg variant. CL NFT mint+remove (WHYPE/USDC pool 0x4C307812…9314) live-confirmed 2026-05-08 with --redeem-type 0 (instant exit, default 1 = 2-year veHYBR lock; tokenId 65929, mint 0xbe581c84…0e17, remove 0x4c271fef…1657). Full gauge stake/claim/unstake cycle (lp farm + lp claim --redeem-type 0 + lp remove --redeem-type 0) live-verified 2026-05-08 against gauge 0xa26921d56981fA43BA598428ea0C4Dd6De89CB8C on tokenId 65932 (mint 0x95cc6130…, gauge.deposit 0x3902fda7…, claim 0x2f3ef634…32ce, unstake 0x412430d0…, remove 0x690593f6…)."
11
11
 
12
12
  [protocol.contracts]
13
13
  # V4 CL
@@ -22,7 +22,9 @@ v2_factory = "0x9c7397c9C5ecC400992843408D3A283fE9108009"
22
22
  voter = "0x5623F012d15EB828C12fe32e46d40AdC2A9e4FA3"
23
23
  ve_token = "0xAE6D5FcE541216BDA471D311425B5412D9f1DEb9"
24
24
  minter = "0xA8265e40e4Cdf6DB345861F4FCb75F9CC63E149b"
25
- rewards_distributor = "0x04FCae9aF38e79B7bb82C6491BDACC2431F0e"
25
+ # rewards_distributor: removed 2026-05-07 — the previously-listed address
26
+ # was malformed (37 hex chars after 0x, should be 40) and no adapter code
27
+ # referenced it. Re-add with the correct address when it's actually wired in.
26
28
  gauge_factory_cl = "0xeB60888176d0c6AF4C539D64b2E83E470a63e4F9"
27
29
  gauge_manager = "0x742CAA5bA7C92ca6CFeBfD0e73c21739b3b65d5e"
28
30
  bribe_factory = "0x2555F79AC6e8096c755096e3A8d175a4Bf5fC82F"
@@ -7,7 +7,7 @@ chain = "hyperevm"
7
7
  native = true
8
8
  verified = true
9
9
  reward_strategy = "lp_fee_only"
10
- description = "First native DEX on HyperEVM — Uniswap V3 fork. NPM↔factory cross-verified on-chain 2026-04-28; WETH9 = WHYPE (0x5555...5555). Quoter address pending."
10
+ description = "First native DEX on HyperEVM — Uniswap V3 fork. NPM↔factory cross-verified on-chain 2026-04-28; WETH9 = WHYPE (0x5555...5555). Quoter address pending. V3 NFT mint+remove (USDC/USDT0 fee=100 pool) live-confirmed 2026-05-08 (tokenId 174094, mint 0xd9a078bf…0184, remove 0x6c5733cc…1d81)."
11
11
 
12
12
  [protocol.contracts]
13
13
  router = "0x4E2960a8cd19B467b82d26D83fAcb0fAE26b094D"
@@ -8,7 +8,7 @@ native = true
8
8
  verified = true
9
9
  native_input_style = "algebra-native"
10
10
  reward_strategy = "on_chain_farming_center"
11
- description = "Algebra V3 ve(3,3) DEX on HyperEVM ($1.3M TVL). Eternal farming verified 2026-04-03 (gauge-verification.md)."
11
+ description = "Algebra V3 ve(3,3) DEX on HyperEVM ($1.3M TVL). Eternal farming verified 2026-04-03 (gauge-verification.md). V3 NFT mint+remove (WHYPE/USDC pool 0x12df9913…513e) live-confirmed 2026-05-08 with --range 5 + slippage bypass (tokenId 71058). Full farm/claim/remove cycle live-verified 2026-05-08 (tokenId 71063, farm tx 0x57d97ffd…24ce, claim 0xdf163dea…290b, remove 0x9a17d5a1…70e3)."
12
12
 
13
13
  [protocol.contracts]
14
14
  router = "0x4e73E421480a7E0C24fB3c11019254edE194f736"
@@ -5,7 +5,8 @@ category = "dex"
5
5
  interface = "uniswap_v2"
6
6
  chain = "mantle"
7
7
  native = false
8
- description = "Merchant Moe on Mantle"
8
+ verified = true
9
+ description = "Merchant Moe LB on Mantle. LB add+remove liquidity (WMNT/USDT binStep=15 pool 0xf6C9020c…2415) live-confirmed 2026-05-08 with adapter pool-realignment fix (LB pools store tokenX/tokenY in factory creation order, NOT lex order — adapter now queries pool.getTokenX/getTokenY and reconciles caller's token order). add tx 0xb379fc81…1dab8, remove tx 0x3580cc51…c7be."
9
10
 
10
11
  [protocol.contracts]
11
12
  router = "0xeaEE7EE68874218c3558b40063c42B82D3E7232a"
@@ -5,7 +5,7 @@ category = "dex"
5
5
  interface = "algebra_v3"
6
6
  chain = "hyperevm"
7
7
  native = true
8
- is_active = false # ve(3,3) gauges return rewardRate=0; emissions tracked off-chain via blaze.nest.aegas.it
8
+ is_active = true # claim path verified live 2026-05-07 via NestOffChainAdapter.buildClaim (tx 0xacb5a608b6ba4e9d63ecc63aa1cdca098133c36a801a741834e074b9e2f7950a). Note: ve(3,3) gauge.rewardRate is still 0 LP/farm read-paths return zero emissions; only the off_chain_api claim route is functional.
9
9
  reward_strategy = "off_chain_api"
10
10
  description = "Algebra V3 ve(3,3) MetaDEX on HyperEVM ($4M TVL). Rewards via NestOffChainAdapter (usenest.xyz/api/blaze)."
11
11
 
@@ -67,7 +67,8 @@ address = "0x45FbF9786cDBDE9E940620F4Af0eb42B76848d17"
67
67
  token0 = "USDH"
68
68
  token1 = "WHYPE"
69
69
  tick_spacing = 10
70
- gauge = "0xDb57bF01A22D11F2c5eE6B7b4E5e2d36f6B34E6"
70
+ # gauge: removed 2026-05-07 — previously listed address was malformed
71
+ # (39 hex chars after 0x, should be 40); nest is is_active=false anyway.
71
72
 
72
73
  [[protocol.pools]]
73
74
  name = "WHYPE/kHYPE"
@@ -83,7 +84,7 @@ address = "0x36De5262ADe55357A15226B85e2f20622D6eB203"
83
84
  token0 = "WHYPE"
84
85
  token1 = "PURR"
85
86
  tick_spacing = 50
86
- gauge = "0xb744C8Aa4F2f5E6B70c7Ab7A6A4F67a8C7B270F"
87
+ # gauge: removed 2026-05-07 — malformed address (39 hex chars).
87
88
 
88
89
  [[protocol.pools]]
89
90
  name = "WHYPE/wstHYPE"
@@ -91,7 +92,7 @@ address = "0x728C8E4E89472B96Bd2B830438E0CB458F141db9"
91
92
  token0 = "WHYPE"
92
93
  token1 = "wstHYPE"
93
94
  tick_spacing = 1
94
- gauge = "0xcF5848f2D4e1a5cF2c8Ee8B72cB3E0fA1D7c1d9"
95
+ # gauge: removed 2026-05-07 — malformed address (39 hex chars).
95
96
 
96
97
  [[protocol.pools]]
97
98
  name = "WHYPE/LHYPE"
@@ -123,4 +124,4 @@ address = "0xb09a299E9f7D333420d347EEBE0456Cb0f8545d5"
123
124
  token0 = "USDH"
124
125
  token1 = "USDT0"
125
126
  tick_spacing = 1
126
- gauge = "0x5A6D3E43c7F2F5C5d4EbA2b8A7cF8e6D1D1B2c1"
127
+ # gauge: removed 2026-05-07 — malformed address (39 hex chars).
@@ -7,7 +7,7 @@ chain = "bnb"
7
7
  native = true
8
8
  verified = true
9
9
  reward_strategy = "none"
10
- description = "PancakeSwap V2 — largest DEX on BNB Chain."
10
+ description = "PancakeSwap V2 — largest DEX on BNB Chain. add+remove liquidity (USDT/USDC pool 0xec655734…5a8c) live-confirmed 2026-05-08 (add tx 0x9cc61459…00f3, remove tx 0x98acd872…e7a1)."
11
11
 
12
12
  [protocol.contracts]
13
13
  router = "0x10ED43C718714eb63d5aA57B78B54704E256024E"
@@ -5,7 +5,8 @@ category = "dex"
5
5
  interface = "uniswap_v3"
6
6
  chain = "bnb"
7
7
  native = false
8
- description = "PancakeSwap V3 on BNB Chain — CAKE emissions via MasterChef V3"
8
+ verified = true
9
+ description = "PancakeSwap V3 on BNB Chain — CAKE emissions via MasterChef V3. V3 NFT mint+remove (USDT/USDC fee=100 pool 0x92b7807b…3121) live-confirmed 2026-05-08 (tokenId 6815439, mint 0xcffbcda4…bd32, remove 0x0439ac24…55be). Full MasterChef V3 stake (safeTransferFrom NFT to MasterChef) → harvest → withdraw cycle live-verified 2026-05-08 (tokenId 6815781, mint 0x246d1c22…8715, stake 0xd58120a9…6d4a, harvest 0xdf971916…5dff, withdraw 0xdf11475e…85da, remove 0xe52c847e…0a55a)."
9
10
 
10
11
  [protocol.contracts]
11
12
  router = "0x13f4EA83D0bd40E75C8222255bc855a974568Dd4"
@@ -7,7 +7,7 @@ chain = "hyperevm"
7
7
  native = true
8
8
  verified = true
9
9
  reward_strategy = "lp_fee_only"
10
- description = "Uniswap V3 fork on HyperEVM ($44M TVL). factory.owner valid + NPM.factory ↔ factory + NPM.WETH9 = WHYPE verified 2026-04-29. No gauge/farming — LP collects trading fees via NPM.collect()."
10
+ description = "Uniswap V3 fork on HyperEVM ($44M TVL). factory.owner valid + NPM.factory ↔ factory + NPM.WETH9 = WHYPE verified 2026-04-29. No gauge/farming — LP collects trading fees via NPM.collect(). V3 NFT mint+remove (USDC/USDT0 fee=100 pool) live-confirmed 2026-05-08 (tokenId 436298, mint 0xc8e01517…7db0, remove 0x70278bba…6b3e)."
11
11
 
12
12
  [protocol.contracts]
13
13
  router = "0x1EbDFC75FfE3ba3de61E7138a3E8706aC841Af9B"
@@ -9,7 +9,7 @@ native = false
9
9
  verified = true
10
10
  reward_strategy = "auto_stake"
11
11
  reward_tokens = ["xRAM", "WHYPE"]
12
- description = "Ramses V3 concentrated liquidity (x(3,3) model) on HyperEVM ($2.8M TVL). factory bytecode + NPM.WETH9 = WHYPE + WHYPE/USDT0 pool slot0 active verified 2026-04-29. NPM.factory()/voter.length() revert by design (uses pool_deployer + gaugeForPool, non-standard but documented x(3,3) interface). 'Auto-stake' = no separate deposit; rewards via gauge.getReward(account, tokens[])."
12
+ description = "Ramses V3 concentrated liquidity (x(3,3) model) on HyperEVM ($2.8M TVL). factory bytecode + NPM.WETH9 = WHYPE + WHYPE/USDT0 pool slot0 active verified 2026-04-29. NPM.factory()/voter.length() revert by design (uses pool_deployer + gaugeForPool, non-standard but documented x(3,3) interface). 'Auto-stake' = no separate deposit; rewards via gauge.getReward(account, tokens[]). V3 NFT mint+remove (USDC/USDT0 pool 0x46abBdfC…E63e) live-confirmed 2026-05-08 with corrected adapter (Ramses-specific 11-field MintParams + selector 0x6d70c415, no sqrtPriceX96; tickSpacing-aware slot0 7-field decoder). tokenId 182740, mint 0x8cdf9c53…66aa, remove 0xa569bf21…da69."
13
13
 
14
14
  [protocol.contracts]
15
15
  # V3 CL AMM
@@ -8,7 +8,7 @@ native = true
8
8
  verified = true
9
9
  reward_strategy = "auto_stake"
10
10
  reward_tokens = ["RAM", "WHYPE"]
11
- description = "Ramses V2 AMM (x(3,3) model) on HyperEVM. 'auto_stake' is misleading — router.addLiquidity does NOT auto-deposit; caller must invoke gauge.deposit(amount). WHYPE/RAM gauge rewards RAM (0x555570...), not xRAM (0xAE6D5F... isReward=false). Claim via gauge.getReward(account, [RAM, WHYPE])."
11
+ description = "Ramses V2 AMM (x(3,3) model) on HyperEVM. 'auto_stake' is misleading — router.addLiquidity does NOT auto-deposit; caller must invoke gauge.deposit(amount). WHYPE/RAM gauge rewards RAM (0x555570...), not xRAM (0xAE6D5F... isReward=false). Claim via gauge.getReward(account, [RAM, WHYPE]). add+remove liquidity (USDC/USDT0 volatile pool 0x4378d583…60cd) live-confirmed 2026-05-08 (add tx 0x0cc02f44…7118, remove tx 0xf2632c31…5954)."
12
12
 
13
13
  [protocol.contracts]
14
14
  # V2 AMM
@@ -5,7 +5,8 @@ category = "dex"
5
5
  interface = "solidly_v2"
6
6
  chain = "bnb"
7
7
  native = true
8
- description = "Thena V1 (Solidly) on BNB ($2M TVL) [gauge emissions inactive: rewardRate=0 for all reward tokens as of 2026-04-03]"
8
+ verified = true
9
+ description = "Thena V1 (Solidly) on BNB ($2M TVL) [gauge emissions inactive: rewardRate=0 for all reward tokens as of 2026-04-03; voter.gauges(0x262029c9…013a) returns 0x0 — vAMM-USDT/USDC has no registered gauge, so stake/claim cycle is N/A]. add+remove liquidity live-confirmed 2026-05-08 (add tx 0xfcf9d05d…f45e, remove tx 0x6ce8e6b3…4965)."
9
10
  [protocol.contracts]
10
11
  router = "0x20a304a7d126758dfe6B243D0fc515F83bCA8431"
11
12
  factory = "0xAFD89d21BdB66d00817d4153E055830B1c2B3970"
@@ -5,7 +5,8 @@ category = "dex"
5
5
  interface = "uniswap_v2"
6
6
  chain = "monad"
7
7
  native = false
8
- description = "Trader Joe (LFJ) V1/V2.2 DEX on Monad — multi-chain DEX with Liquidity Book"
8
+ verified = true
9
+ description = "Trader Joe (LFJ) V1/V2.2 DEX on Monad — multi-chain DEX with Liquidity Book. LB add+remove liquidity (WMON/AUSD pool 0xC8d65149…245F) live-confirmed 2026-05-08 with the same MerchantMoe-shared adapter fix (pool tokenX/tokenY canonical-order reconciliation; AUSD<WMON lex but pool stores tokenX=WMON). add tx 0x75d0e828…4ad0, remove tx 0x62989ed6…4952."
9
10
 
10
11
  [protocol.contracts]
11
12
  router = "0x4faCe5b0EF2757Ceb9151D14C036A1135931C70E"
@@ -5,7 +5,8 @@ category = "dex"
5
5
  interface = "uniswap_v2"
6
6
  chain = "monad"
7
7
  native = false
8
- description = "Uniswap V2 on Monad"
8
+ verified = true
9
+ description = "Uniswap V2 on Monad. add+remove liquidity (WMON/AUSD pool 0x84d8901d…ca25) live-confirmed 2026-05-08 (add tx 0xf052493c…a324, remove tx 0x0f7b3f7b…b553)."
9
10
 
10
11
  [protocol.contracts]
11
12
  router = "0x4B2ab38DBF28D31D467aA8993f6c2585981D6804"
@@ -5,7 +5,8 @@ category = "dex"
5
5
  interface = "uniswap_v3"
6
6
  chain = "base"
7
7
  native = false
8
- description = "Uniswap V3 on Base"
8
+ verified = true
9
+ description = "Uniswap V3 on Base. V3 NFT mint+remove (USDC/USDT fee=100 pool 0xd56da2b7…5da1) live-confirmed 2026-05-08 (tokenId 5083156, mint 0x358e01c2…fab8, remove 0xfb0535fd…062a)."
9
10
 
10
11
  [protocol.contracts]
11
12
  router = "0x2626664c2603336E57B271c5C0b26F421741e481"
@@ -5,9 +5,11 @@ category = "dex"
5
5
  interface = "uniswap_v3"
6
6
  chain = "bnb"
7
7
  native = false
8
- description = "Uniswap V3 on BNB Chain ($100M TVL)"
8
+ verified = true
9
+ description = "Uniswap V3 on BNB Chain ($100M TVL). V3 NFT mint+remove (USDT/USDC fee=100 pool 0x2c3c320d…7d68) live-confirmed 2026-05-08 with --range 5 (tokenId 1912084, mint 0x9c5027bf…250f, remove 0x504ab401…2287)."
9
10
 
10
11
  [protocol.contracts]
11
12
  router = "0xB971eF87ede563556b2ED4b1C0b0019111Dd85d2"
12
13
  factory = "0xdB1d10011AD0Ff90774D0C6Bb92e5C5c8b4461F7"
13
14
  quoter = "0x78D78E420Da98ad378D7799bE8f4AF69033EB077"
15
+ position_manager = "0x7b8A01B39D58278b5DE7e48c8449c9f4F5170613"
@@ -5,7 +5,8 @@ category = "dex"
5
5
  interface = "uniswap_v3"
6
6
  chain = "mantle"
7
7
  native = false
8
- description = "Uniswap V3 on Mantle — DAO-recognized deployment by GFX Labs"
8
+ verified = true
9
+ description = "Uniswap V3 on Mantle — DAO-recognized deployment by GFX Labs. V3 NFT mint+remove (USDC/USDT fee=100 pool 0x8cfee38a…9d2c) live-confirmed 2026-05-08 (tokenId 1404, mint 0x2ca3fc8f…676e, remove 0xa13ecd4c…af72)."
9
10
 
10
11
  [protocol.contracts]
11
12
  router = "0x447B8E40B0CdA8e55F405C86bC635D02d0540aB8"
@@ -5,7 +5,8 @@ category = "dex"
5
5
  interface = "uniswap_v3"
6
6
  chain = "monad"
7
7
  native = false
8
- description = "Uniswap V3 on Monad — concentrated liquidity DEX leveraging Monad's high-performance EVM"
8
+ verified = true
9
+ description = "Uniswap V3 on Monad — concentrated liquidity DEX leveraging Monad's high-performance EVM. V3 NFT mint+remove (WMON/AUSD fee=100 pool 0x99e94823…1bfa8) live-confirmed 2026-05-08 with --range 20 + --amount-{a,b}-min 0 (low-liquidity pool needs slippage bypass; tokenId 29176, mint 0xba8ebee9…80cf, remove 0x683e7773…c5a4)."
9
10
 
10
11
  [protocol.contracts]
11
12
  router = "0xfE31F71C1b106EAc32F1A19239c9a9A72ddfb900"
@@ -18,3 +18,19 @@ feusde = "0x835FEBF893c6DdDee5CF762B0f8e31C5B06938ab"
18
18
  feusdhl = "0x9c59a9389D8f72DE2CdAf1126F36EA4790E2275e"
19
19
  feusdt0_frontier = "0x9896a8605763106e57A51aa0a97Fe8099E806bb3"
20
20
  feusdhl_frontier = "0x66c71204B70aE27BE6dC3eb41F9aF5868E68fDb6"
21
+
22
+ # Named-market shortcuts so direct Morpho Blue ops can use a friendly name
23
+ # instead of the 32-byte hex. Source: blue-api.morpho.org, verified 2026-05-07.
24
+ [[protocol.markets]]
25
+ name = "WHYPE-USDT0"
26
+ id = "0xd5a9fba2309a0b85972a96f2cc45f9784e786d712944d8fc0b31a6d9cb4f21d3"
27
+ loan_asset = "USDT0"
28
+ collateral_asset = "WHYPE"
29
+ lltv = "770000000000000000"
30
+
31
+ [[protocol.markets]]
32
+ name = "wstHYPE-USDT0"
33
+ id = "0xf7d557e9a88edda08758188faf12aba046168de4a7abdb3a7919a019d884f9ba"
34
+ loan_asset = "USDT0"
35
+ collateral_asset = "wstHYPE"
36
+ lltv = "620000000000000000"
@@ -6,7 +6,7 @@ interface = "aave_v3"
6
6
  chain = "hyperevm"
7
7
  native = true
8
8
  verified = true
9
- description = "Aave V3 fork — largest native lending on HyperEVM. 17 reserves listed, provider.getPool ↔ pool verified 2026-04-29."
9
+ description = "Aave V3 fork — largest native lending on HyperEVM. 17 reserves listed, provider.getPool ↔ pool verified 2026-04-29; full borrow lifecycle (supply→toggle→borrow→repay→withdraw) live-confirmed 2026-05-08 (tx 0x2822360f…da78)."
10
10
 
11
11
  [protocol.contracts]
12
12
  pool = "0x00A89d7a5A02160f20150EbEA7a2b5E4879A1A8b"
@@ -6,7 +6,7 @@ interface = "aave_v3"
6
6
  chain = "hyperevm"
7
7
  native = true
8
8
  verified = true
9
- description = "HypurrFi Pooled — Aave V3 fork on HyperEVM. 19 reserves listed, provider.getPool ↔ pool verified 2026-04-29."
9
+ description = "HypurrFi Pooled — Aave V3 fork on HyperEVM. 19 reserves listed, provider.getPool ↔ pool verified 2026-04-29; full borrow lifecycle (supply→toggle→borrow→repay→withdraw) live-confirmed 2026-05-08 (tx 0xc16e0f43…832e)."
10
10
 
11
11
  [protocol.contracts]
12
12
  pool = "0xceCcE0EB9DD2Ef7996e01e25DD70e461F918A14b"
@@ -7,7 +7,7 @@ chain = "bnb"
7
7
  native = false
8
8
  verified = true
9
9
  reward_strategy = "none"
10
- description = "Kinza Finance — Aave V3 fork on BNB. On-chain verified 2026-04-03."
10
+ description = "Kinza Finance — Aave V3 fork on BNB. On-chain verified 2026-04-03; full borrow lifecycle (supply→toggle-collateral→borrow→repay→withdraw) live-confirmed 2026-05-08 (tx 0xed974c6f…aad3)."
11
11
 
12
12
  [protocol.contracts]
13
13
  pool = "0xcb0620b181140e57d1c0d8b724cde623ca963c8c"
@@ -9,3 +9,20 @@ description = "Morpho Blue on Monad — permissionless lending primitive"
9
9
 
10
10
  [protocol.contracts]
11
11
  morpho_blue = "0xD5D960E8C380B724a48AC59E2DfF1b2CB4a1eAee"
12
+
13
+ # Named-market shortcuts so the CLI doesn't need a 32-byte hex on every call.
14
+ # Resolved against `markets[]` by MorphoBlueAdapter.resolveMarketIdByName().
15
+ # Source: blue-api.morpho.org, verified 2026-05-07.
16
+ [[protocol.markets]]
17
+ name = "WMON-AUSD"
18
+ id = "0xfa0b720389b546fcf8562c18cda8c00460072b63776add7fbfe8cd4f06d7c3ba"
19
+ loan_asset = "AUSD"
20
+ collateral_asset = "WMON"
21
+ lltv = "770000000000000000"
22
+
23
+ [[protocol.markets]]
24
+ name = "TETH-TUSD"
25
+ id = "0xfdfec1ced463198bba499c38a43c04a5919cab0472a298c4c68041b225d16563"
26
+ loan_asset = "TUSD"
27
+ collateral_asset = "TETH"
28
+ lltv = "860000000000000000"
@@ -18,5 +18,9 @@ comptroller_lsbnb = "0xd933909A4a2b7A4638903028f44D1d38ce27c352"
18
18
  comptroller_btc = "0x9DF11376Cf28867E2B0741348044780FbB7cb1d6"
19
19
  comptroller_lsteth = "0xBE609449Eb4D76AD8545f957bBE04b596E8fC529"
20
20
  comptroller_meme = "0x33B6fa34cd23e5aeeD1B112d5988B026b8A5567d"
21
- vusdt = "0xca2D81AA7C09A1a025De797600A7081146dCeEd9"
21
+ # NOTE: this address is vlisUSD on the stablecoins isolated pool — Venus Flux
22
+ # does NOT have a BSC-USDT market in the stablecoins pool that we route to.
23
+ # The legacy `vusdt` key was mislabeled and broke compound_v2 vToken resolution
24
+ # for USDT (the adapter would resolve underlying() = lisUSD, not USDT).
25
+ vlisusd = "0xca2D81AA7C09A1a025De797600A7081146dCeEd9"
22
26
  oracle = "0x6592b5DE802159F3E74B2486b091D11a8256ab8A"