- Marked submodules ai-mcp-pmm-controller, explorer-monorepo, and smom-dbis-138 as dirty to reflect recent changes. - Updated documentation to clarify operator script usage, including dotenv loading and task execution instructions. - Enhanced the README and various index files to provide clearer navigation and task completion guidance. Made-with: Cursor
8.1 KiB
Pool Access — Standard DODO Dashboard, API, and MCP
Last Updated: 2026-02-28
Purpose: Whether all designed pools (61 across 6 networks) can be accessed via the standard DODO dashboard, API, and MCP, and what is required.
Short answer
| Access method | Chain 138 pools | cW* edge pools (5 public chains) | Requirement |
|---|---|---|---|
| Standard DODO dashboard | ❌ No | ⚠️ Only if real DODO + chain supported | 138 uses Mock DVM; dashboard does not support custom chain 138. |
| API (token-aggregation) | ✅ Yes | ✅ Yes (when env set) | Chain 138: set CHAIN_138_DODO_PMM_INTEGRATION. cW* chains 1, 10, 56, 100, 137: added to dex-factories and chains.ts; set CHAIN_*_DODO_PMM_INTEGRATION or CHAIN_*_DODO_POOL_MANAGER and run indexer for those chains. |
| MCP (ai-mcp-pmm-controller) | ✅ Yes (after allowlist) | ⚠️ Per-chain + allowlist | Chain 138: MockDVMPool now has getOraclePrice, K, LP_FEE_RATE so dodo_pmm_v2_like profile works; add each pool to allowlist and set RPC to 138. Other chains: one MCP instance per chain + allowlist. |
Not all pools can be accessed by all three today. Below is what works, what’s missing, and what to change.
1. Standard DODO dashboard
What it is: The official DODO app (e.g. app.dodoex.io) and its subgraph/indexer for supported chains.
| Pool scope | Accessible? | Reason |
|---|---|---|
| Chain 138 (10 pools) | ❌ No | Chain 138 is a custom/private chain. The standard DODO dashboard only supports chains DODO officially supports (e.g. Ethereum, BSC, Polygon, Arbitrum). It does not connect to Chain 138 or index Mock DVM pools. |
| cW edge pools* (51 on chains 1, 10, 56, 100, 137) | ⚠️ Only if | (1) Pools are real DODO protocol pools on that chain, and (2) DODO’s dashboard supports that chain. If you deploy via your own factory or a fork, they will not appear unless DODO adds your contracts/chain. |
| Private / bridge / other | ❌ No | Private and bridge LPs are not part of the public DODO frontend. |
Conclusion: No for Chain 138. Maybe for cW* only when they are official DODO pools on a DODO-supported chain. For full visibility you need your own custom dashboard or API + UI that talks to your RPC and indexer.
2. API (token-aggregation)
What it is: The token-aggregation service indexes pools and exposes REST endpoints (tokens, pools, quote, report).
| Pool scope | Accessible? | Requirement |
|---|---|---|
| Chain 138 | ✅ Yes | Set CHAIN_138_DODO_PMM_INTEGRATION=0x79cdbaFBaA0FdF9F55D26F360F54cddE5c743F7D (and RPC) in the service env. The pool indexer uses getAllPools(), then getPoolConfig, getPoolReserves, getPoolPriceOrOracle per pool. Once pools exist and the indexer runs, they appear in /api/v1/tokens, /api/v1/pools, /api/v1/quote, and report endpoints. |
| ALL Mainnet (651940) | ⚠️ If configured | Set CHAIN_651940_DODO_POOL_MANAGER (and optional dodoPmmIntegration) in dex-factories / env. Today no DODO pool list is documented for 651940. |
| cW edge (chains 1, 10, 56, 100, 137)* | ✅ Yes (when env set) | dex-factories.ts and chains.ts now include chainIds 1, 10, 56, 100, 137. Set CHAIN_*_DODO_PMM_INTEGRATION or CHAIN_*_DODO_POOL_MANAGER (and CHAIN_*_RPC_URL) so the indexer can index DODO/pools on those chains. |
Conclusion: Yes for Chain 138 once integration address is set and pools are created. Yes for cW* on chains 1, 10, 56, 100, 137 once the corresponding CHAIN_*_DODO_* and RPC env vars are set and the indexer runs for those chains.
3. MCP (ai-mcp-pmm-controller)
What it is: MCP hub with read-only tools dodo.get_pool_state, dodo.identify_pool_interface, and optional risk/simulation. Pools must be in allowlist; state is read via a pool profile (expected view methods).
| Pool scope | Accessible? | Requirement |
|---|---|---|
| Chain 138 | ✅ Yes (after allowlist) | (1) Allowlist: Add each pool address and base/quote token to config/allowlist.json with profile dodo_pmm_v2_like. (2) MockDVMPool was updated to expose getOraclePrice(), _K_, _LP_FEE_RATE_ so the existing MCP profile works. Pools created from a new MockDVMFactory (deployed after this change) are MCP-ready; pools from an existing factory may need a new factory deploy to get the updated pool bytecode. (3) Run MCP with CHAIN=138 and RPC_URL pointing to Chain 138. |
| cW edge (each chain)* | ⚠️ Per chain | One MCP instance is single-chain (CHAIN, RPC_URL). For each of the 5 chains: run an MCP instance (or add multi-chain support), add that chain’s pool addresses to the allowlist, and use a profile that matches the pool interface (DODO v2–like or custom). |
Conclusion: Yes for any pool after (1) allowlisting, (2) profile/interface alignment (Chain 138 needs mock profile or MockDVMPool stubs), (3) correct RPC per chain.
4. What to do so “all pools” are accessible
Standard DODO dashboard
- Chain 138: Use a custom dashboard that uses your RPC + token-aggregation API (or direct contract reads). The standard DODO app will not show 138.
- cW:* If you want them on the official DODO UI, deploy official DODO pools on supported chains; otherwise use your own UI fed by API/MCP.
API
- Chain 138: Set
CHAIN_138_DODO_PMM_INTEGRATIONand run the indexer; no code change needed. - cW:* Chain configs and DODO env-driven entries for 1, 10, 56, 100, 137 are in
dex-factories.tsandchains.ts. SetCHAIN_*_DODO_PMM_INTEGRATIONorCHAIN_*_DODO_POOL_MANAGERandCHAIN_*_RPC_URLper chain and run the indexer for those chains.
MCP
- Chain 138:
MockDVMPool.solnow includesgetOraclePrice(),_K_, and_LP_FEE_RATE_so the defaultdodo_pmm_v2_likeprofile works.- Add each pool to
allowlist.jsonwith base/quote tokens and profiledodo_pmm_v2_like. - Run MCP with
CHAIN=138and Chain 138RPC_URL.
- cW (each chain):*
- Run an MCP instance per chain (or implement multi-chain in the server).
- Allowlist all pool addresses for that chain.
- Use a profile that matches the pool contract (e.g.
dodo_pmm_v2_likefor real DODO pools).
5. Summary table (all 61 pools)
| Access | Chain 138 (10) | cW* (51 on 5 chains) |
|---|---|---|
| Standard DODO dashboard | ❌ No (custom chain + Mock DVM) | ⚠️ Only if real DODO on supported chain |
| API | ✅ Yes (set integration env, run indexer) | ✅ Yes when CHAIN_DODO and RPC env set for each chain |
| MCP | ✅ Yes after allowlist + RPC (MockDVMPool has profile-compatible view methods) | ⚠️ Yes per chain after allowlist + profile + RPC |
So: all pools can be accessed via API and MCP once the above config and code changes are in place; they cannot all be accessed by the standard DODO dashboard (138 never; cW* only in the special case above).
References
- AI_AGENTS_57XX_MCP_ADDENDUM.md — Multi-chain MCP, Uniswap profile, automation triggers
- MCP_AI_POOL_MANAGEMENT_PLAN_UPGRADES.md — Plan upgrades and completed items (allowlist scripts, runbook steps)
- LIQUIDITY_POOLS_MASTER_MAP.md — Pool map 138 & 651940
- POOLS_AND_NETWORKS_FULL_DESIGN.md — All 61 pools, 6 networks
- AI_AGENTS_57XX_MCP_CONTRACTS_AND_CHAINS.md — MCP allowlist and chains
- DODO_PMM_INTEGRATION.md — Pool creation and integration
- Token-aggregation:
smom-dbis-138/services/token-aggregation,src/config/dex-factories.ts,src/indexer/pool-indexer.ts - MCP:
ai-mcp-pmm-controller/config/allowlist.json,config/pool_profiles.json,config/server.py