Uniswap pool, V3 pool: state and price
Uniswap v3 pools for a token pair on Ethereum, Base, Arbitrum, Optimism or Polygon, read live from the factory and each pool: pool address per fee tier (0.01%, 0.05%, 0.3%, 1%), price of each token in the other, current tick, in-range liquidity and both token balances held, deepest pool first. Tokens by 0x address or ticker. Use to find the right pool, check depth before a swap or read a spot price.
Inputs
| Name | Type | Description |
|---|---|---|
tokenA (required) | string | First token: 0x address or ticker |
tokenB (required) | string | Second token: 0x address or ticker |
chain | string | ethereum (default), base, arbitrum, optimism or polygon |
Request
Over HTTP, with a card key from /credits:
curl -H "Authorization: Bearer adt_…" "https://agent-data-tools.revmesh2074.workers.dev/uniswap/pool?tokenA=WETH&tokenB=USDC"
Or one of your 25 free calls, no key:
curl "https://agent-data-tools.revmesh2074.workers.dev/uniswap/pool?tokenA=WETH&tokenB=USDC&trial=1"
Without a key, the same URL answers 402 Payment Required with x402 and MPP terms, so an agent with a wallet pays per call in USDC (Base, Polygon, Arbitrum or Solana over x402; Base or Tempo over MPP) and retries.
Example result
{
"chain": "Base",
"tokenA": {
"address": "0x4200000000000000000000000000000000000006",
"symbol": "WETH"
},
"tokenB": {
"address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"symbol": "USDC"
},
"pools": [
{
"address": "0xd0b53D9277642d899DF5C87A3966A349A798F224",
"feeTier": 500,
"priceAinB": 2338.2,
"priceBinA": 0.000427679,
"tick": -199500,
"liquidity": "1234567890123",
"balanceA": 5100.2,
"balanceB": 9800000.5
}
],
"source": "Uniswap v3 factory and pool contracts, read live"
}
From an AI agent (MCP)
Add the MCP server to Claude, Cursor or any MCP client. This tool is uniswap_pool, and the first 25 successful calls are free:
https://agent-data-tools.revmesh2074.workers.dev/mcp