Research new Base tokens, review eight risk checks and compare what changed since your last saved inspection. Use the browser or connect your agent. See the USDC price before each purchase. No accounts. No API keys.
What is this
Start with discovery, inspect a token, then save the evidence for your next visit. Agents use the same pay-per-call API through HTTP or MCP. Every purchase has its own quote; a listing is not a safety assessment.
Browse selected Base pools above a liquidity floor, with observation dates and
coverage limits. Agents can also read Uniswap v4 creation events through
/api/base/fresh. Token attribution can be unavailable.
Review trading restrictions, taxes, owner permissions, holder concentration and deployer evidence. Missing or conflicting provider data stays visible. Passing automated checks does not guarantee safety.
Keep dated inspections in your browser and compare later observations. Evidence loss remains a warning. Add a calendar reminder when you want to return; inspections always require a new explicit purchase.
Try it
The 402 response is the product: a price quote any agent can read and pay programmatically. Run this and you'll see one.
GET /api/base/fresh
pools born on Base in the last 10 minutes
The quote needs nothing at all. Paying is optional and needs a browser wallet holding a cent of USDC on Base — the same signature your agent would make, just done by hand.
Watch a full run that was already paid for → A pool eight seconds old, a verdict on its token, and both settlement transactions linked so you can check them.
# free — status, catalog, and a sample of every shape curl https://agenttoll.app/api/health curl https://agenttoll.app/api/catalog curl https://agenttoll.app/api/demo # a paid endpoint, unpaid: you get the quote curl -i https://agenttoll.app/api/base/fresh HTTP/1.1 402 Payment Required PAYMENT-REQUIRED: <base64> price $0.004 USDC network eip155:8453 (Base) + the request and response schema, so no second fetch is needed
// In the cloned repository: npm install && npm run build import { createPaymentClient } from "./dist/payment-policy.js"; const client = createPaymentClient("base", undefined, { totalBudgetUsdc: "0" }); console.log(await client.getPaymentQuote( "/api/base/fresh")); // Validates price, network, asset and recipient. // No wallet and no payment. Use the MCP setup below // when you want to enable bounded paid calls.
Catalog
Base onchain data first — gas, any token by contract address, wallet portfolios, address analytics, DEX pools and a spam-filtered new-token radar — plus market and Turkish-lira feeds.
| Endpoint | What you get | Price |
|---|---|---|
GET /api/base/safety/:address | Token safety checks: honeypot simulation, taxes, owner privileges, holder concentration, liquidity risk, deployer history | $0.003 |
GET /api/base/scout | Radar + safety in one call: today's new pools, each with a verdict already attached | $0.008 |
GET /api/base/fresh | Pools read straight off Base seconds after they exist, before indexers see them | $0.004 |
GET /api/base/radar/history | A past day's snapshot, exactly as committed to public git the day it was taken | $0.002 |
GET /api/base/scorecard | The radar's track record: verdicts then vs prices now, per cohort | $0.005 |
GET /api/base/portfolio/:address | Observed Base holdings valued in USD, largest first, with coverage limits | $0.003 |
GET /api/base/radar | New-token radar: fresh Base pools that already have real liquidity | $0.003 |
GET /api/base/trending | Trending DEX pools on Base: price, volume, liquidity | $0.002 |
GET /api/base/token/:address | Onchain USD price for any Base token by contract address | $0.001 |
GET /api/base/name/:nameOrAddress | Basename both ways: name → address + records, or address → primary name | $0.001 |
GET /api/base/address/:address | Base address snapshot: basename, ETH balance, tx count, contract or EOA | $0.001 |
GET /api/gas | Base network gas price and latest block | $0.001 |
GET /api/brief | One-call market brief: BTC/ETH/SOL, Base gas, sentiment | $0.005 |
GET /api/price/:symbol | Spot price (USD) + 24h change for any asset | $0.001 |
GET /api/trending | Tokens trending across the market right now | $0.002 |
GET /api/feargreed | Crypto Fear & Greed index with yesterday comparison | $0.001 |
GET /api/try/premium | Turkish lira premium: implied vs official USD/TRY | $0.002 |
GET /api/try/spread | Turkish exchange spread: BTCTurk and Paribu TRY quotes vs the global price | $0.002 |
GET /api/watch/address/:address | New activity for a Base address since your cursor | $0.002 |
GET /api/watch/radar | Only the pools that appeared since your cursor | $0.003 |
GET /api/watch/price/:symbol | Price alert check against your reference and threshold | $0.001 |
GET /api/catalog | Machine-readable catalog of everything for sale | free |
GET /api/demo | Sample response shapes for every paid endpoint | free |
GET /api/stats | Qualifying small USDC transfers, with known operator activity reported separately | free |
GET /api/health | Service status | free |
GET /api/ready | Payment provider and Base RPC readiness | free |
Selected responses are cached; lifetimes vary by source. Handler failures before settlement are not billed. If a signed request times out or its response is lost, inspect the receipt and wallet before retrying: settlement may already have happened.
Watch endpoints
A snapshot is useful once. Agents that run on a schedule want the diff.
Address and radar watches return a cursor; send it back as
?since=. Drain address pages while hasMore is true and
deduplicate transaction hashes. Radar coverage is partial; the price watch
checks a threshold and has no cursor.
# inspect the quote — no wallet or payment curl -i "https://agenttoll.app/api/watch/radar" HTTP/1.1 402 Payment Required # after payment via the bounded client or MCP tool, # pass the returned cursor unchanged to the next call: # /api/watch/radar?since=<returned-cursor> # Each paid poll costs $0.003, including an empty result. # Results cover the current ranked listing, not every pool.
How it works
Your agent calls an endpoint. The server replies 402 Payment Required
with a machine-readable price quote.
The agent signs a USDC authorization for the quoted amount — no gas on the client, no account, no API key.
The request retries with the payment header. Settlement lands on Base and the data comes back in the same round trip.
MCP
AgentToll ships an MCP server. Add it to Claude Desktop or Claude Code and use 21 data tools plus two free quote and budget tools. Start without a wallet; add a dedicated wallet and a finite session budget when you want to pay.
{
"mcpServers": {
"agenttoll": {
"command": "npx",
"args": ["-y", "agenttoll-mcp@0.14.0"]
}
}
}
Use agenttoll-mcp@0.14.0 or newer. If you installed 0.13.0 or
earlier, update your MCP configuration and restart it to receive the free
tools and payment budget controls.
get_price, get_base_gas, get_trending,
get_base_token_price, get_base_address_info,
get_fear_greed, get_base_trending_pools,
get_market_brief, get_new_token_radar,
get_try_premium, get_try_spread, get_base_portfolio,
check_token_safety, get_fresh_pools, scout_new_tokens,
get_radar_scorecard, get_radar_history, resolve_basename,
watch_base_address, watch_new_tokens,
watch_price_alert, get_payment_quote and
get_payment_budget.
To enable payments, set AGENT_PRIVATE_KEY and
AGENTTOLL_BUDGET_USDC. The budget applies to one running MCP instance;
a restart does not cancel previously signed authorizations.
Transparency
/api/stats counts the actual USDC transfers to our address on Base,
and excludes known operator wallets from the external count. Transfers can include
tests and unsolicited payments; they do not establish API sales or unique customers.
No accounts, no API keys, no sessions. Even the watch endpoints keep the cursor on your side, not ours.
Settlement starts after the data handler succeeds. A connection loss or timeout after signing can leave the payment outcome unknown; check your receipt and wallet before retrying.
Prices fall through CoinGecko → Binance → Coinbase, Base tokens through GeckoTerminal → DexScreener, and RPC calls across three providers. The response names the source that answered.
The whole tollbooth is on GitHub. Fork it and run your own — the payment rail is the interesting part, and it's yours too.