# 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_INTEGRATION` and 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.ts` and `chains.ts`. Set `CHAIN_*_DODO_PMM_INTEGRATION` or `CHAIN_*_DODO_POOL_MANAGER` and `CHAIN_*_RPC_URL` per chain and run the indexer for those chains. ### MCP - **Chain 138:** - `MockDVMPool.sol` now includes `getOraclePrice()`, `_K_`, and `_LP_FEE_RATE_` so the default `dodo_pmm_v2_like` profile works. - Add each pool to `allowlist.json` with base/quote tokens and profile `dodo_pmm_v2_like`. - Run MCP with `CHAIN=138` and Chain 138 `RPC_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_like` for 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](../02-architecture/AI_AGENTS_57XX_MCP_ADDENDUM.md) — Multi-chain MCP, Uniswap profile, automation triggers - [MCP_AI_POOL_MANAGEMENT_PLAN_UPGRADES.md](../03-deployment/MCP_AI_POOL_MANAGEMENT_PLAN_UPGRADES.md) — Plan upgrades and completed items (allowlist scripts, runbook steps) - [LIQUIDITY_POOLS_MASTER_MAP.md](LIQUIDITY_POOLS_MASTER_MAP.md) — Pool map 138 & 651940 - [POOLS_AND_NETWORKS_FULL_DESIGN.md](POOLS_AND_NETWORKS_FULL_DESIGN.md) — All 61 pools, 6 networks - [AI_AGENTS_57XX_MCP_CONTRACTS_AND_CHAINS.md](../02-architecture/AI_AGENTS_57XX_MCP_CONTRACTS_AND_CHAINS.md) — MCP allowlist and chains - [DODO_PMM_INTEGRATION.md](../../smom-dbis-138/docs/integration/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`