{ "market": "BDS_MAINNET_UNISWAPV3", "version": 4, "billing": { "credit_per_epoch": 0.0001388888888888889, "credit_per_epoch_note": "1/7200 credits per credit_weight unit per GET (bds-agenthub-billing-metering CREDIT_PER_EPOCH)", "credit_per_stream_session": 0.01 }, "endpoints": [ { "path": "/mpp/pool/{pool_address}/metadata", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "pool_address", "in": "path", "type": "string", "required": true } ], "description": "MPP: metadata for a single Uniswap V3 pool", "credit_weight": 1 }, { "path": "/mpp/token/{token_address}/pools", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "token_address", "in": "path", "type": "string", "required": true } ], "description": "MPP: pools that include a given token (step 1 before per-pool token/price; required for USDC/WETH and other hub tokens)", "credit_weight": 1 }, { "path": "/mpp/ethPrice", "method": "GET", "metered": true, "sse": false, "params": [], "description": "MPP: ETH price snapshot for the latest finalized epoch", "credit_weight": 5 }, { "path": "/mpp/ethPrice/{block_number}", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "block_number", "in": "path", "type": "integer", "required": true } ], "description": "MPP: ETH price snapshot at a specific block (epoch)", "credit_weight": 10 }, { "path": "/mpp/token/price/{token_address}/{pool_address}", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "token_address", "in": "path", "type": "string", "required": true }, { "name": "pool_address", "in": "path", "type": "string", "required": true } ], "description": "MPP: USD price for one token in one pool (latest epoch). Preferred over tokenPrices/all; pair with GET /mpp/token/{token}/pools", "credit_weight": 5 }, { "path": "/mpp/token/price/{token_address}/{pool_address}/{block_number}", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "token_address", "in": "path", "type": "string", "required": true }, { "name": "pool_address", "in": "path", "type": "string", "required": true }, { "name": "block_number", "in": "path", "type": "integer", "required": true } ], "description": "MPP: USD price for one token in one pool at a block (Pulse/Guard). Pair with GET /token/{token}/pools", "credit_weight": 10 }, { "path": "/mpp/snapshot/base_all_pools/{token_address}", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "token_address", "in": "path", "type": "string", "required": true } ], "description": "MPP: base snapshots for all pools of a token", "credit_weight": 1 }, { "path": "/mpp/snapshot/base/{pool_address}", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "pool_address", "in": "path", "type": "string", "required": true } ], "description": "MPP: base snapshot for a pool at the latest finalized epoch", "credit_weight": 1 }, { "path": "/mpp/snapshot/base/{pool_address}/{block_number}", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "pool_address", "in": "path", "type": "string", "required": true }, { "name": "block_number", "in": "path", "type": "integer", "required": true } ], "description": "MPP: base snapshot for a pool at a specific block", "credit_weight": 1 }, { "path": "/mpp/snapshot/trades/{pool_address}", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "pool_address", "in": "path", "type": "string", "required": true } ], "description": "MPP: trades snapshot for a pool at the latest finalized epoch", "credit_weight": 1 }, { "path": "/mpp/snapshot/trades/{pool_address}/{block_number}", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "pool_address", "in": "path", "type": "string", "required": true }, { "name": "block_number", "in": "path", "type": "integer", "required": true } ], "description": "MPP: trades snapshot for a pool at a specific block", "credit_weight": 1 }, { "path": "/mpp/snapshot/allTrades", "method": "GET", "metered": true, "sse": false, "params": [], "description": "MPP: all-pool trades snapshot at the latest finalized epoch (Bearer metering)", "credit_weight": 1 }, { "path": "/mpp/snapshot/allTrades/{block_number}", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "block_number", "in": "path", "type": "integer", "required": true } ], "description": "MPP: all-pool trades snapshot for a given epoch (block number)", "credit_weight": 1 }, { "path": "/mpp/stream/allTrades", "method": "GET", "metered": true, "sse": true, "params": [ { "name": "from_epoch", "in": "query", "type": "integer", "required": false } ], "description": "SSE stream of all-pool trades per finalized epoch (flat session debit; credit_weight ignored by metering)", "credit_weight": 1, "billing_modifier": { "type": "stream_session", "credits_per_connection": 0.01 } }, { "path": "/mpp/tokenPrices/all/{token_address}", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "token_address", "in": "path", "type": "string", "required": true } ], "description": "MPP: USD prices across all pools (<=20 pools only). NOT for USDC/WETH/hub tokens — use /mpp/token/{token}/pools then /mpp/token/price/{token}/{pool}", "credit_weight": 10 }, { "path": "/mpp/tokenPrices/all/{token_address}/{block_number}", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "token_address", "in": "path", "type": "string", "required": true }, { "name": "block_number", "in": "path", "type": "integer", "required": true } ], "description": "MPP: USD prices across all pools at a block (<=20 pools). NOT for USDC/WETH/hub tokens — use /mpp/token/{token}/pools then /mpp/token/price/{token}/{pool}/{block}", "credit_weight": 10 }, { "path": "/mpp/tradeVolumeAllPools/{token_address}/{time_interval}", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "token_address", "in": "path", "type": "string", "required": true }, { "name": "time_interval", "in": "path", "type": "integer", "required": true } ], "description": "MPP: aggregated trade volume across all pools for a token over a time window (seconds)", "credit_weight": 1 }, { "path": "/mpp/tradeVolume/{pool_address}/{time_interval}", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "pool_address", "in": "path", "type": "string", "required": true }, { "name": "time_interval", "in": "path", "type": "integer", "required": true } ], "description": "MPP: aggregated trade volume for a pool over a time window (seconds)", "credit_weight": 1 }, { "path": "/mpp/poolTrades/{pool_address}/{start_timestamp}/{end_timestamp}", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "pool_address", "in": "path", "type": "string", "required": true }, { "name": "start_timestamp", "in": "path", "type": "integer", "required": true }, { "name": "end_timestamp", "in": "path", "type": "integer", "required": true } ], "description": "MPP: trades for a pool between Unix start and end timestamps", "credit_weight": 1 }, { "path": "/mpp/timeSeries/{token_address}/{pool_address}/{time_interval}/{step_seconds}", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "token_address", "in": "path", "type": "string", "required": true }, { "name": "pool_address", "in": "path", "type": "string", "required": true }, { "name": "time_interval", "in": "path", "type": "integer", "required": true }, { "name": "step_seconds", "in": "path", "type": "integer", "required": true } ], "description": "MPP: token price time series for a pool with interval and step (seconds). Dashboard/analytics; use token/price/{block} for trading.", "credit_weight": 5, "billing_modifier": { "type": "lookback_multiplier", "param": "time_interval", "tiers": [ { "max_seconds": 600, "multiplier": 1 }, { "max_seconds": 1800, "multiplier": 2 }, { "max_seconds": 3600, "multiplier": 4 }, { "max_seconds": 7200, "multiplier": 8 }, { "max_seconds": 14400, "multiplier": 16 }, { "max_seconds": 21600, "multiplier": 32 }, { "max_seconds": 43200, "multiplier": 64 }, { "max_seconds": 86400, "multiplier": 128 }, { "max_seconds": 172800, "multiplier": 256 }, { "max_seconds": 345600, "multiplier": 512 }, { "max_seconds": 604800, "multiplier": 1024 } ], "overflow_multiplier": 2048 } }, { "path": "/mpp/dailyActiveTokens", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "page", "in": "query", "type": "integer", "required": false }, { "name": "size", "in": "query", "type": "integer", "required": false }, { "name": "metadata", "in": "query", "type": "boolean", "required": false }, { "name": "time_interval", "in": "query", "type": "integer", "required": false } ], "description": "MPP: paginated daily active tokens (sorted by frequency)", "credit_weight": 1 }, { "path": "/mpp/dailyActivePools", "method": "GET", "metered": true, "sse": false, "params": [ { "name": "page", "in": "query", "type": "integer", "required": false }, { "name": "size", "in": "query", "type": "integer", "required": false }, { "name": "metadata", "in": "query", "type": "boolean", "required": false }, { "name": "time_interval", "in": "query", "type": "integer", "required": false } ], "description": "MPP: paginated daily active pools (sorted by frequency)", "credit_weight": 1 } ] }