Base only · unsigned inspection is free
Try the data shape before connecting a wallet.
Build agent lookups, token detail views, or research snapshots using contract reads pinned to one recorded Base block. A paid Token Facts request costs 0.01 USDC on Base. These examples and offer inspections are free.
1. Inspect a recorded JSON example
The example is Base USDC at block 51937125, timestamp 2026-09-29T06:33:17.000Z. It is not current token data and contains no payment receipt.
Open the free facts JSONRead the API schema
{
"network": "eip155:8453",
"block": {
"number": "51937125",
"hash": "0x88b4483e150b2979ee0653c30a9502a05ec9041b5e09bebd765341bb8bf48add",
"timestamp": "2026-09-29T06:33:17.000Z"
},
"erc20": {
"name": "USD Coin",
"symbol": "USDC",
"decimals": 6,
"totalSupply": "4374668578110657",
"totalSupplyFormatted": "4374668578.110657"
},
"proxy": {
"standard": "zeppelinos",
"implementation": "0x2Ce6311ddAE708829bc0784C967b7d77D19FD779",
"admin": "0x4fc7850364958d97B4d3f5A08f79db2493f8cA44",
"beacon": null
},
"unknowns": [
"Safety, liquidity, holders and admin powers are not assessed.",
"Only EIP-1967, ZeppelinOS and EIP-1167 proxy patterns are checked.",
"Name and symbol are whatever the contract returns; they do not prove who issued the token.",
"Owner is read only from owner(); roles and other access controls are not checked."
]
}Supply values are strings to preserve integer precision. Keep the raw value and decimals, or use totalSupplyFormatted; do not convert raw supply to a JavaScript Number.
2. Inspect the live payment requirements
Opening the unsigned URL below returns HTTP 402 with a base64 JSON PAYMENT-REQUIRED header. HTTP 402 is the expected offer, not a completed purchase. This does not read new facts or validate token safety.
Open the unsigned Token Facts offer
Download the inspection helper as token-facts-inspect.mjs, then run this in Node 20 or later. Importing it performs no request; calling it sends one unsigned GET. It checks the advertised price, recipient, asset, chain and resource against this guide's configured offer.
node --input-type=module <<'JS'
import { inspectTokenFacts } from './token-facts-inspect.mjs';
const offer = await inspectTokenFacts();
console.log(offer.challenge.accepts); // review the terms; no payment submitted
JSYou can pass {contractAddress: '0x…'} for another Base address. Use lowercase, uppercase, or a valid EIP-55 checksum. The helper checks address shape only; the paid endpoint validates the full query. If the offer changes, download the helper again and review the new terms.
3. Integrate only the fields your workflow needs
- Agent tools: retain block.number and block.hash with the answer. An address with no code returns isContract false.
- Wallet interfaces: name and symbol are whatever the contract returns, not proof of its issuer. owner() does not include every role or access control.
- Research: null means a read reverted or returned nothing. Preserve unknowns and evidence with the snapshot.
Proxy checks cover EIP-1967, ZeppelinOS and EIP-1167 patterns only. No security audit, safety verdict, liquidity, holder analysis, or trading advice is provided. Official Token Brief project-source coverage currently includes Base USDC only.
When you choose to buy
Use a standard x402 v2 client with the endpoint's advertised requirements and your own wallet. The inspection helper never signs, retries a signed payment, or submits one. Retain the exact signed request for recovery; this guide does not add automatic paid retries.
- 400: malformed payment or query; no settlement attempted.
- 402: payment required, or a verification rejection; inspect the response before proceeding.
- 409: authorization already bound to another purchase; do not reuse it for a different contract.
- 503: unavailable service or an unresolved settlement. Retain the same signed request and do not sign another payment while its outcome is unresolved.