- CCIP/trustless bridge contracts, GRU tokens, DEX/PMM tests, reserve vault. - Token-aggregation service routes, planner, chain config, relay env templates. - Config snapshots and multi-chain deployment markdown updates. - gitignore services/btc-intake/dist/ (tsc output); do not track dist. Run forge build && forge test before deploy (large solc graph). Made-with: Cursor
8.8 KiB
CMC and CoinGecko Reporting — Full API for All Tokens and Liquidity
This document describes the Token Aggregation Service reporting API used to expose all coins, tokens, liquidity, and other reportable data in formats suitable for CoinMarketCap (CMC) and CoinGecko listing submissions and sync.
Endpoints
Base path: /api/v1/report
| Endpoint | Description | Cache |
|---|---|---|
GET /report/all |
Unified report: all tokens, pools, liquidity, volume, summary, and cross-chain data | 2 min |
GET /report/coingecko |
Token list and market data in CoinGecko-friendly format (includes crossChain) | 2 min |
GET /report/cmc |
Token list and DEX pairs in CoinMarketCap-friendly format (includes crossChain) | 2 min |
GET /report/cross-chain |
Cross-chain pools, bridge volume by lane, atomic swaps (138↔1, 138↔651940, etc.) | 2 min |
GET /report/token-list |
Flat canonical token list (all chains or ?chainId=138) |
5 min |
GET /report/canonical |
Raw canonical token spec (symbol, name, type, decimals, addresses) | 10 min |
Query Parameters
chainId(optional): For/report/alland/report/token-list, limit to one chain (e.g.138,651940). For/report/coingeckoand/report/cmc, set the chain for the response (default138).
1. Full Report — GET /api/v1/report/all
Returns all canonical tokens with DB-backed market data and pools, plus per-chain pool list and summary (total liquidity, volume, counts).
Example:
curl "http://localhost:3000/api/v1/report/all"
curl "http://localhost:3000/api/v1/report/all?chainId=138"
Response shape:
generatedAt: ISO timestampchains: list of chain IDs includedtokens:{ [chainId]: TokenReport[] }— each token hasaddress,symbol,name,type,decimals,market(priceUsd, volume24h, volume7d, volume30d, marketCapUsd, liquidityUsd),pools(poolAddress, dex, tvl, volume24h),fromDbpools:{ [chainId]: LiquidityPool[] }summary:totalLiquidityUsdByChain,totalVolume24hUsdByChain,tokenCountByChain,poolCountByChain
Use this for dashboards, internal analytics, and as the source of truth for “all reportable data.”
2. CoinGecko Format — GET /api/v1/report/coingecko
Returns tokens in a structure aligned with CoinGecko’s API and listing expectations: contract address, symbol, name, decimals, optional market_data (current_price, total_volume, market_cap, liquidity_usd), and liquidity_pools (pool_address, dex_id, tvl_usd, volume_24h_usd).
Example:
curl "http://localhost:3000/api/v1/report/coingecko?chainId=138"
Use for:
- Preparing CoinGecko listing submissions (contract address, symbol, name, decimals, platform).
- Feeding an internal or external job that syncs to CoinGecko (e.g. after they support custom chains).
- One-shot exports for manual submission.
Note: CoinGecko may not list ChainID 138 or 651940 until they add the platform. The response still provides a single, consistent format for all our tokens and liquidity.
3. CoinMarketCap Format — GET /api/v1/report/cmc
Returns tokens with contract address, symbol, name, decimals, volume_24h, market_cap, liquidity_usd, and pairs (pair_address, dex_id, base, quote, liquidity_usd, volume_24h_usd).
Example:
curl "http://localhost:3000/api/v1/report/cmc?chainId=138"
Use for:
- CMC DEX/listing submission or sync when the chain is supported.
- Internal reporting that mirrors CMC’s expected fields.
4. Token List — GET /api/v1/report/token-list
Flat list of all canonical tokens (per chain or all supported chains): chainId, address, symbol, name, decimals, type (base, w, asset, debt).
Example:
curl "http://localhost:3000/api/v1/report/token-list"
curl "http://localhost:3000/api/v1/report/token-list?chainId=651940"
Use for:
- DEX/UIs that need a single token list.
- Indexer or cron jobs that ensure every canonical token is registered in the DB.
5. Canonical Spec — GET /api/v1/report/canonical
Raw canonical token definitions (no DB merge): symbol, name, type, decimals, currencyCode, addresses by chainId. No market or pool data.
Use for: Tooling and config that need the authoritative list of tokens and their chains/addresses.
Canonical Token Set and Addresses
The report uses the canonical token list in src/config/canonical-tokens.ts. It includes:
- Base (GRU-M1): cUSDC, cUSDT, cAUSDT, cEURC, cEURT, cGBPC, cGBPT, cAUDC, cJPYC, cCHFC, cCADC, cXAUC, cXAUT, plus env-gated ALL Mainnet gold landings
cAXAUC/cAXAUT - Public transport mirrors (cW):* cWUSDC, cWUSDT, cWUSDW, live cWAUSDT mirrors on BSC, Polygon, Avalanche, and Celo, plus env-gated ALL Mainnet gold wrappers
cWAXAUC/cWAXAUT - W-tokens (ISO-4217): USDW, EURW, GBPW, AUDW, JPYW, CHFW, CADW
- Asset (ac):* acUSDC, acUSDT, acEURC, acGBPC, acAUDC, acJPYC, acCHFC, acCADC, acXAUC
- Debt (vdc / sdc):** vdcUSDC, sdcUSDC, vdcEURC, sdcEURC, vdcGBPC, sdcGBPC, vdcAUDC, sdcAUDC, vdcJPYC, sdcJPYC, vdcCHFC, sdcCHFC, vdcCADC, sdcCADC, vdcXAUC, sdcXAUC
Addresses per chain can be:
- Set via env:
CUSDC_ADDRESS_138,CUSDT_ADDRESS_138, etc. - Filled by the indexer when tokens are discovered on-chain.
- Updated in the canonical config after deployment.
Only tokens with a non-empty address for the requested chain appear in /report/coingecko, /report/cmc, and in the per-chain sections of /report/all and /report/token-list.
For the live ALL Mainnet AUSDT -> cWAUSDT -> cAUSDT corridor, that means:
cWAUSDTappears on BSC, Polygon, Avalanche, and CelocAUSDTappears on Chain 138 via the live deployed address
For the planned ALL Mainnet gold corridor, the report remains intentionally env-gated until the destination contracts are live:
cAXAUC/cAXAUTonly appear on chain651940whenCAXAUC_ADDRESS_651940/CAXAUT_ADDRESS_651940are setcWAXAUC/cWAXAUTonly appear on chain651940whenCWAXAUC_ADDRESS_651940/CWAXAUT_ADDRESS_651940are set- generic
cXAUC/cXAUTdo not appear on651940; those remain canonical Chain 138 symbols
ERC-20 and DEX Compatibility
All canonical tokens are designed to be ERC-20 compliant and usable in DEX liquidity pools (see smom-dbis-138/docs/tokenization/TOKEN_SCOPE_GRU.md). Base and asset tokens are fully transferable; debt tokens can be deployed with optional transferability. The report API does not enforce on-chain checks; it reports whatever is in the canonical list and DB (addresses, market data, pools).
6. Cross-Chain Report — GET /api/v1/report/cross-chain
Returns cross-chain liquidity pools, bridge volume by lane, and atomic swap volume for Chain 138 and ALL Mainnet (651940). Covers CCIP (WETH9/WETH10), Alltra (138↔651940), Trustless (Lockbox), and Universal CCIP Bridge.
Example:
curl "http://localhost:3000/api/v1/report/cross-chain?chainId=138"
Response shape:
crossChainPools: Array of{ type, sourceChainId, destChainId, destChainName, bridgeAddress, tokenSymbol, bridgeType, isActive }volumeByLane: Array of{ sourceChainId, destChainId, destChainName, bridgeType, tokenSymbol, volume24hWei, volume7dWei, volume30dWei, txCount24h, txCount7d, txCount30d }atomicSwapVolume24h: Total atomic swap volume (swap-then-bridge) in last 24hbridgeVolume24hTotal: Total bridge volume in last 24hevents: Raw cross-chain events (limited to 500)
Use for: CMC/CoinGecko submission alongside single-chain reports. Include as crossChain attachment or reference URL when platforms support custom chain data.
Note: /report/coingecko and /report/cmc now include a crossChain field when cross-chain data is available.
CMC / CoinGecko Listing Checklist
- Deploy and index: Ensure tokens are deployed and the indexer has run so DB has addresses and (if applicable) market/pool data.
- Set addresses: Configure canonical addresses via env or config so
/report/coingeckoand/report/cmcinclude all desired tokens. - Export: Use
GET /api/v1/report/coingeckoandGET /api/v1/report/cmcto obtain the payload for submission or sync. - Submit: Use each platform’s official process (e.g. CoinGecko “Submit coin”, CMC DEX/listing forms) and attach or map the exported data as required.
- Ongoing: Re-export periodically or run a scheduled job that pushes liquidity/volume to CMC/CoinGecko if they provide an API for custom chains.
Related
- GRU M1 listing prep (dry-runs, dominance simulation, peg stress-tests):
../../../../docs/gru-m1/README.md - Token scope (base, W, asset, debt):
smom-dbis-138/docs/tokenization/TOKEN_SCOPE_GRU.md - CoinGecko submission (cUSDC/cUSDT):
docs/04-configuration/coingecko/COINGECKO_SUBMISSION_GUIDE.md - Token Aggregation API:
README.mdandGET /api/v1/tokens,GET /api/v1/tokens/:address,GET /api/v1/pools/:poolAddress