{"chain":"Base","pair":"weth-usdc","week":"2026-W44","pools":[{"venue":"uniswap-v3","pool":"0xb4cb800910b228ed3d0834cf79d697127bbb00e5","fee_tier_ppm":100,"fee_tier_pct":0.01,"liquidity":"46150227490198733","swaps_observed":4000,"volume_token0_observed":167.23478949569298,"fee_revenue_proxy":0.01672347895,"fee_revenue_proxy_per_day":0.07601581341,"proxy_per_day_per_liquidity":1.647138433e-18,"token0":"WETH","token1":"USDC","unit":"WETH units (fee × observed volume)","covered_days":0.22,"window_days":7,"window_complete":false,"method":"UniswapV3Factory.getPool + pool slot0()/liquidity()/fee() over public RPC, then the pool's own Swap logs walked backwards in bounded windows; value = fee_ppm/1e6 × Σ|amount0| in token0 units over covered_days. Keyless, no indexer.","evidence_tier":1,"caveat":"A fee-revenue PROXY over the window actually covered, in token0 units — not revenue, not an APR, not a yield, and never scaled up to a full week. Impermanent loss, the in-range share of any position, MEV and every non-Uniswap venue are outside it.","as_of":"2026-10-26T16:38:25.389+00:00","unknown_reason":null},{"venue":"uniswap-v3","pool":"0xd0b53d9277642d899df5c87a3966a349a798f224","fee_tier_ppm":500,"fee_tier_pct":0.05,"liquidity":"888869612915536000","swaps_observed":4000,"volume_token0_observed":1494.988249109345,"fee_revenue_proxy":0.7474941246,"fee_revenue_proxy_per_day":3.397700566,"proxy_per_day_per_liquidity":3.82249603e-18,"token0":"WETH","token1":"USDC","unit":"WETH units (fee × observed volume)","covered_days":0.22,"window_days":7,"window_complete":false,"method":"UniswapV3Factory.getPool + pool slot0()/liquidity()/fee() over public RPC, then the pool's own Swap logs walked backwards in bounded windows; value = fee_ppm/1e6 × Σ|amount0| in token0 units over covered_days. Keyless, no indexer.","evidence_tier":1,"caveat":"A fee-revenue PROXY over the window actually covered, in token0 units — not revenue, not an APR, not a yield, and never scaled up to a full week. Impermanent loss, the in-range share of any position, MEV and every non-Uniswap venue are outside it.","as_of":"2026-10-26T16:38:25.389+00:00","unknown_reason":null},{"venue":"uniswap-v3","pool":"0x6c561b446416e1a00e8e93e221854d6ea4171372","fee_tier_ppm":3000,"fee_tier_pct":0.3,"liquidity":"29357522299816453165","swaps_observed":4000,"volume_token0_observed":19215.46864212346,"fee_revenue_proxy":57.64640593,"fee_revenue_proxy_per_day":87.34303929,"proxy_per_day_per_liquidity":2.975150232e-18,"token0":"WETH","token1":"USDC","unit":"WETH units (fee × observed volume)","covered_days":0.66,"window_days":7,"window_complete":false,"method":"UniswapV3Factory.getPool + pool slot0()/liquidity()/fee() over public RPC, then the pool's own Swap logs walked backwards in bounded windows; value = fee_ppm/1e6 × Σ|amount0| in token0 units over covered_days. Keyless, no indexer.","evidence_tier":1,"caveat":"A fee-revenue PROXY over the window actually covered, in token0 units — not revenue, not an APR, not a yield, and never scaled up to a full week. Impermanent loss, the in-range share of any position, MEV and every non-Uniswap venue are outside it.","as_of":"2026-10-26T16:38:25.389+00:00","unknown_reason":null},{"venue":"uniswap-v3","pool":"0x0b1c2dcbbfa744ebd3fc17ff1a96a1e1eb4b2d69","fee_tier_ppm":10000,"fee_tier_pct":1,"liquidity":"72628820994019635","swaps_observed":1286,"volume_token0_observed":197.06922963537988,"fee_revenue_proxy":1.970692296,"fee_revenue_proxy_per_day":0.2815274709,"proxy_per_day_per_liquidity":3.876250048e-18,"token0":"WETH","token1":"USDC","unit":"WETH units (fee × observed volume)","covered_days":7,"window_days":7,"window_complete":true,"method":"UniswapV3Factory.getPool + pool slot0()/liquidity()/fee() over public RPC, then the pool's own Swap logs walked backwards in bounded windows; value = fee_ppm/1e6 × Σ|amount0| in token0 units over covered_days. Keyless, no indexer.","evidence_tier":1,"caveat":"A fee-revenue PROXY over the window actually covered, in token0 units — not revenue, not an APR, not a yield, and never scaled up to a full week. Impermanent loss, the in-range share of any position, MEV and every non-Uniswap venue are outside it.","as_of":"2026-10-26T16:38:25.389+00:00","unknown_reason":null},{"venue":"uniswap-v4","pool":null,"fee_tier_ppm":null,"fee_tier_pct":null,"liquidity":null,"swaps_observed":null,"volume_token0_observed":null,"fee_revenue_proxy":null,"fee_revenue_proxy_per_day":null,"proxy_per_day_per_liquidity":null,"token0":null,"token1":null,"unit":"WETH units (fee × observed volume)","covered_days":null,"window_days":7,"window_complete":false,"method":"Would be StateView.getSlot0(poolId) + getLiquidity(poolId) against the v4 StateView at 0xa3c0c9b65bad0b08107aa264b0f3db444b867a71; no poolId is published for this pair.","evidence_tier":1,"caveat":"Uniswap v4 is a singleton PoolManager: the deployment page publishes the core contracts and no pool address or pool id for any pair, and a pool id is a hash of the whole PoolKey (fee, tick spacing, hooks) which no public doc gives us for this pair. Unknown, not zero.","as_of":"2026-10-26T16:38:25.389+00:00","unknown_reason":"Uniswap v4 is a singleton PoolManager: the deployment page publishes the core contracts and no pool address or pool id for any pair, and a pool id is a hash of the whole PoolKey (fee, tick spacing, hooks) which no public doc gives us for this pair. Unknown, not zero."}],"chosen":{"pool":"0x0b1c2dcbbfa744ebd3fc17ff1a96a1e1eb4b2d69","venue":"uniswap-v3","fee_tier_ppm":10000,"because":"chosen by Sato Route on 2026-10-28, because it showed the highest observed fee-revenue proxy per day per unit of in-range liquidity among the 4 pools whose window we could read, ahead of the 0.05% tier — a reading of 7 day(s) of flow, with impermanent loss not modelled","chosen_by":[{"signal":"fee-revenue proxy per day per unit liquidity","value":3.876250048e-18,"source_field":"agent_metrics_history.value ÷ covered_days ÷ extra.sample.liquidity"},{"signal":"fee tier","value":10000,"source_field":"pool.fee()"},{"signal":"in-range liquidity","value":"72628820994019635","source_field":"pool.liquidity()"},{"signal":"swaps observed","value":1286,"source_field":"pool Swap logs over covered_days"},{"signal":"window covered","value":7,"source_field":"agent_metrics_history.covered_days"},{"signal":"impermanent loss","value":null,"source_field":"not modelled — no field, by design"}]},"unranked":[],"as_of":"2026-10-26T16:38:25.389+00:00","checked_at":"2026-10-28T06:02:28.190Z","caveat":"A recommendation from observed readings, not advice and not a verdict. IMPERMANENT LOSS IS NOT MODELLED — the largest term in what an LP actually ends up with is absent from this answer entirely. The fee-revenue figure is a PROXY (the pool's published fee rate × the swap volume we counted over the window named in covered_days, in token0's own units); it is not revenue, an APR or a yield, and it is never scaled up from the covered window to a full week. Uniswap v4 and every non-Uniswap venue are outside the reading and come back as unknown, never zero. No pool here is called safe, best or profitable.","rules":["Never sum across venues, chains or stages — the grain exists to make that impossible.","null means UNKNOWN. It never means zero.","Every number names the method that produced it and the window it covered.","A route is a recommendation, chosen on the fields in chosen_by as they read at checked_at."],"docs_url":"https://satohub.ai/api/openapi.json","meta":{"signature":{"alg":"EdDSA","kid":"b04bd38b","sig":"CXwQe61iKRv_jAVmLW0C041Nx_q9ZIQRLDGH01l8p6fV3T9C1gmm--CBq48RKdxOw726GqaYY6_ym0lnoowiCw","signed_at":"2026-10-28T06:02:28.429Z","jwks_url":"https://satohub.ai/.well-known/jwks.json","canonicalization":"utf8(signed_at) || 0x0A || canonicalJson(body with meta.signature removed; the meta object itself is kept, and is present in every signed body); canonicalJson = JSON with object keys sorted by Unicode code point, array order preserved, no whitespace"}}}