# Agent Data Tools > Pay-per-call tools for AI agents: web page text extraction and summaries, screenshots, image generation, speech-to-text, image description, domain and email-auth intelligence, live Base token, wallet and gas lookups, Bitcoin price and fees, currency exchange rates, weather and time zones. No account or API key; pay per request in USDC on Base via x402. All endpoints are GET, return JSON, and cost a fixed price per successful call. An unpaid request returns HTTP 402 with a PAYMENT-REQUIRED header (x402 v2, exact scheme, USDC on Base). Sign the payment and retry with the PAYMENT-SIGNATURE header. Failed calls (4xx/5xx) are not charged. Free trials are disabled. Requests with trial=1 receive the normal 402 payment challenge. ## Node.js / TypeScript x402 client The example below pins Base, this service's PAY_TO recipient and Base USDC, and caps each payment at the current /domain price ($0.005). /package-audit costs $0.20; this example intentionally refuses that higher price. It never sends trial=1. Install with `npm install @x402/fetch @x402/evm viem` and `npm install --save-dev typescript tsx @types/node`. Save as `client.ts` and run `npx tsx client.ts`. Set `X402_PRIVATE_KEY` in a secret manager or process environment; never paste it into source or commit it. ```typescript // Save as client.ts; set X402_PRIVATE_KEY in your environment, never in source. import { ExactEvmScheme } from "@x402/evm"; import { wrapFetchWithPayment, x402Client } from "@x402/fetch"; import { privateKeyToAccount } from "viem/accounts"; const rawPrivateKey = process.env.X402_PRIVATE_KEY; if (!rawPrivateKey || !/^0x[0-9a-fA-F]{64}$/.test(rawPrivateKey)) { throw new Error("Set X402_PRIVATE_KEY in a secret manager or process environment."); } const account = privateKeyToAccount(rawPrivateKey as `0x${string}`); const serviceOrigin = "https://agent-data-tools.revmesh2074.workers.dev"; const expectedPayTo = "0x2074c40346ae2a90e0e4a391bcee6f16bf5277f5"; const baseUsdc = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"; const maxUsdcAtomic = 5000n; // $0.005 USDC, the current /domain price const client = new x402Client() .register("eip155:8453", new ExactEvmScheme(account)) .setSpendControls({ maxAmountPerPayment: "$0.005" }) .registerPolicy((_version, requirements) => requirements.filter((requirement) => { if (requirement.network !== "eip155:8453" || requirement.scheme !== "exact") return false; if (requirement.payTo.toLowerCase() !== expectedPayTo) return false; if (requirement.asset.toLowerCase() !== baseUsdc.toLowerCase()) return false; return /^\d+$/.test(requirement.amount) && BigInt(requirement.amount) <= maxUsdcAtomic; }), ); const fetchWithPayment = wrapFetchWithPayment(fetch, client); const response = await fetchWithPayment(new URL("/domain?name=example.com", serviceOrigin)); if (!response.ok) throw new Error(`API returned HTTP ${response.status}`); console.log(await response.json()); ``` ## Endpoints ### GET /extract — $0.002 Fetch any public web page and get clean readable text for LLM input: title, meta description, language, canonical URL, H1-H3 headings, main body text with navigation, scripts and boilerplate removed, and the page's outbound links. Use for web scraping, article reading, research and RAG ingestion. - `url` (string, required): Absolute http(s) URL of the page to fetch - `maxChars` (integer): Maximum characters of body text to return (500-100000, default 20000) Example: https://agent-data-tools.revmesh2074.workers.dev/extract?url=https%3A%2F%2Fexample.com ### GET /domain — $0.005 Domain intelligence in one call: DNS records (A, AAAA, CNAME, MX, NS, TXT, CAA), DNSSEC status, registrar, registration and expiry dates with domain age in days (RDAP/WHOIS), and email authentication (SPF and DMARC records and policies, whether the domain accepts mail). Use for lead qualification, phishing and trust checks, and deliverability audits. - `name` (string, required): Domain name, e.g. cloudflare.com Example: https://agent-data-tools.revmesh2074.workers.dev/domain?name=cloudflare.com ### GET /domain-report — $0.01 A trust verdict for any domain in one call: high/medium/low trust with named flags for very new registrations, expiry, missing or weak SPF and DMARC, too few nameservers, no web host and non-resolving domains, plus the key facts (registrar, age, nameservers, DNSSEC). Use for lead qualification, phishing and vendor checks, and before an agent sends mail to or trusts a domain. Signals only, not a guarantee. - `name` (string, required): Domain name, e.g. cloudflare.com Example: https://agent-data-tools.revmesh2074.workers.dev/domain-report?name=cloudflare.com ### GET /token — $0.01 Live on-chain facts for any ERC-20 token on Base: name, symbol, decimals, total supply, owner address and whether ownership is renounced, paused state, proxy detection (EIP-1967 and minimal proxy) with implementation and admin addresses, and bytecode heuristics for mint, pause, blacklist and fee-setter functions. Use for token due diligence and rug-pull or honeypot screening before a swap. - `address` (string, required): Token contract address on Base (0x...) Example: https://agent-data-tools.revmesh2074.workers.dev/token?address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 ### GET /token-report — $0.02 One call for a Base token: heuristic risk tier and flags, on-chain owner/paused/proxy facts and selector checks, plus live DEX price, 24h volume/change, liquidity, FDV, pair count, top-liquidity-pair age and 24h buys/sells. marketDataSource identifies DexScreener; marketRetrievedAt is the retrieval timestamp or null when market data is unavailable. Example market values and timestamp are illustrative. A mint selector is not proof of callable minting; mintability is reported only with a confirmed nonzero owner, otherwise unverified. Flags no-liquidity, thin liquidity, new top pairs and no-sell patterns. Not a guarantee. - `address` (string, required): Token contract address on Base (0x...) Example: https://agent-data-tools.revmesh2074.workers.dev/token-report?address=0x4200000000000000000000000000000000000006 ### GET /wallet — $0.005 Live snapshot of any address on Base: ETH balance, balances of major tokens (USDC, WETH, cbBTC, DAI, USDbC, cbETH, AERO, EURC) plus up to 20 extra token addresses you pass, the EVM account nonce, and whether the address is an EOA, a smart contract or an EIP-7702 delegated account. For EOAs the nonce reflects outgoing transactions only; this is not full transaction, token-transfer or trading history. - `address` (string, required): Wallet or contract address on Base (0x...) - `tokens` (string): Optional comma-separated extra ERC-20 addresses to check (max 20) Example: https://agent-data-tools.revmesh2074.workers.dev/wallet?address=0x4200000000000000000000000000000000000006 ### GET /summarize — $0.01 Give a URL, get a short summary of the page plus three to six key points, ready to drop into an agent's context. Fetches the page, strips navigation and boilerplate, and summarizes the main text with an LLM. Use for research, news triage, link previews and deciding whether a page is worth reading in full. - `url` (string, required): Absolute http(s) URL of the page to summarize Example: https://agent-data-tools.revmesh2074.workers.dev/summarize?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FHTTP_402 ### GET /screenshot — $0.02 Render any public web page in a real headless Chrome browser, with JavaScript executed, and get a JPEG screenshot (1280 px wide, base64) plus the final URL, HTTP status and page title. Set fullPage=true to capture up to 4000 px of page height. Use for visual checks, page previews, monitoring and feeding pages to vision models. - `url` (string, required): Absolute http(s) URL of the page to capture - `fullPage` (string): Set to true to capture the full page height (max 4000 px) instead of the 1280x800 viewport Example: https://agent-data-tools.revmesh2074.workers.dev/screenshot?url=https%3A%2F%2Fexample.com ### GET /image — $0.02 Text-to-image generation with FLUX.1 schnell. Send a prompt, get a 1024x1024 JPEG back as base64 in a few seconds. Use for illustrations, thumbnails, mockups, avatars and social media images. Optional steps parameter (1-8, default 4) trades speed for detail. - `prompt` (string, required): What the image should show (3-800 characters) - `steps` (integer): Diffusion steps, 1-8 (default 4) Example: https://agent-data-tools.revmesh2074.workers.dev/image?prompt=a%20lighthouse%20on%20a%20cliff%20at%20sunset%2C%20watercolor ### GET /transcribe — $0.02 Transcribe speech from an audio file at a public URL using Whisper large-v3-turbo. Returns the transcript text, detected language, duration and word count. Accepts common formats such as MP3, WAV, M4A and OGG up to 5 MB. Use for voice notes, podcast clips, meeting snippets and voice messages. - `url` (string, required): Absolute http(s) URL of an audio file (max 5 MB) Example: https://agent-data-tools.revmesh2074.workers.dev/transcribe?url=https%3A%2F%2Fcommons.wikimedia.org%2Fwiki%2FSpecial%3AFilePath%2FEn-us-hello.ogg ### GET /describe — $0.01 Vision model for an image at a public URL: get a detailed description including any visible text, or pass a question to ask something specific about the image. Accepts PNG, JPEG, WebP and GIF up to 3 MB. Use for alt text, OCR-style reading of screenshots, chart reading and content checks. - `url` (string, required): Absolute http(s) URL of a PNG, JPEG, WebP or GIF image (max 3 MB) - `question` (string): Optional question about the image (max 300 characters); default is a detailed description Example: https://agent-data-tools.revmesh2074.workers.dev/describe?url=https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2F4%2F47%2FPNG_transparency_demonstration_1.png ### GET /btc-fees — $0.0002 Current Bitcoin network fee rates in sat/vB for next-block, half-hour, one-hour and economy confirmation, the estimated cost in sats of a typical payment, mempool size and total pending fees, and the latest block height. Use before sending a Bitcoin transaction or to decide whether to wait for lower fees. Example: https://agent-data-tools.revmesh2074.workers.dev/btc-fees?format=json ### GET /btc-address — $0.003 Balance and activity of any Bitcoin mainnet address (legacy, P2SH or bech32): confirmed balance in sats and BTC, unconfirmed pending amount, total received and sent, and transaction counts. Use for payment verification, checking whether a deposit arrived, and wallet monitoring. - `address` (string, required): Bitcoin mainnet address (1..., 3... or bc1...) Example: https://agent-data-tools.revmesh2074.workers.dev/btc-address?address=bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh ### GET /ln-invoice — $0.001 Decode a BOLT11 Lightning Network invoice without paying it: network, amount in sats and BTC, description, payment hash, creation time, expiry time and whether it has already expired. Use to check what an invoice asks for before an agent pays it. - `invoice` (string, required): BOLT11 invoice string starting with ln (lnbc... for mainnet) Example: https://agent-data-tools.revmesh2074.workers.dev/ln-invoice?invoice=lnbc2500u1pvjluezsp5zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zygspp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdq5xysxxatsyp3k7enxv4jsxqzpu9qrsgquk0rl77nj30yxdy8j9vdx85fkpmdla2087ne0xh8nhedh8w27kyke0lp53ut353s06fv3qfegext0eh0ymjpf39tuven09sam30g4vgpfna3rh ### GET /package-audit — $0.20 Audit up to 10 ecosystem:name items, optionally pinned to exact versions; scoped npm names are supported. npm downloads are not queried, unversioned deps.dev detail is capped at one advisory per package, pinned deps.dev detail is skipped, and OSV detail is capped at 15 per request. Batch advisory IDs/counts remain available; omitted details and EPSS coverage are reported. Exact versions add OSV ranges and dated FIRST EPSS estimates for CVE aliases (up to 50 CVEs). EPSS is not a safety guarantee; missing scores are unknown, not zero. Verdicts are bounded signals. Example timestamps are illustrative; bad input is not charged. - `packages` (string, required): Comma-separated ecosystem:name items, optionally name@exact-version; max 10. For scoped npm, use npm:@scope/name@version. Example: https://agent-data-tools.revmesh2074.workers.dev/package-audit?packages=npm%3Alodash%404.17.20%2Cpypi%3Arequests%402.31.0%2Cnpm%3A%40types%2Fnode%4022.0.0 ### GET /wallet-audit — $0.02 Returns a heuristic high/medium/low address risk tier, named flags, ETH balance, holdings of 4 major tokens (USDC, WETH, cbBTC, DAI), and the Base EVM account nonce. Per-token risk is unknown because token contracts are not audited here. For EOAs the nonce reflects outgoing transactions only; it is not full transaction, token-transfer or trading history. Address type is reported separately and does not affect the balance/nonce-based risk tier. - `address` (string, required): Base chain wallet address, 0x-prefixed 20-byte hex Example: https://agent-data-tools.revmesh2074.workers.dev/wallet-audit?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 ### GET /contract-risk — $0.02 Base contract bytecode size and EIP-1967 slot check (a confirmed zero slot returns isProxy false; an empty/unreadable slot response returns null; RPC failures return 502). A nonzero slot with a zero implementation flags proxy-impl-unset. ERC-20 property reads run only for 500–50,000-byte contracts; individual unsupported/reverting reads are null, while multicall transport failures return 502. Zero supply requires a successful zero read; ownershipRenounced is true only for zero owner, false for nonzero, else null; paused is null if unsupported. Risk tiers are limited bytecode/proxy/zero-supply heuristics, not a full audit; empty slots cannot identify uninitialized proxies. EOAs return not-applicable. - `address` (string, required): Base chain contract address, 0x-prefixed 20-byte hex Example: https://agent-data-tools.revmesh2074.workers.dev/contract-risk?address=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 ### GET /trade-insight — $0.05 Combines the Base token-report risk tier and flags, available DEX market data, and wallet-audit risk tier, flags, account nonce, and native balance. Returns the underlying indicators separately; it does not generate buy/sell recommendations or calibrated confidence, and does not evaluate holder concentration. The account nonce is not full transaction, token-transfer, or trading history. - `token` (string, required): Token contract address on Base, 0x-prefixed 20-byte hex - `wallet` (string, required): Wallet address to evaluate, 0x-prefixed 20-byte hex Example: https://agent-data-tools.revmesh2074.workers.dev/trade-insight?token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&wallet=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 ### GET /liquidity-pool-audit — $0.03 Looks up a pair address on Base through DexScreener and returns the verified DEX, pair URL, token details, liquidity, volume, 24-hour trades, and pair age when supplied by the source. source identifies DexScreener and retrievedAt is the retrieval timestamp. Missing source fields are null; this endpoint does not assess pool security or investment risk. Returns 404 when no matching Base pair is found and 502 when the market-data source is unavailable. Example market values and timestamp are illustrative snapshots, not live guarantees. - `address` (string, required): DEX pair address on Base, 0x-prefixed 20-byte hex Example: https://agent-data-tools.revmesh2074.workers.dev/liquidity-pool-audit?address=0x98c7A2338336d2d354663246F64676009c7bDa97 ### GET /mev-simulator — $0.04 Estimates Base gas costs from current fees and priority-fee presets. Fixed gas units (100k simple, 250k complex, 180k liquidity) are typical assumptions, not transaction-specific estimates or quotes. Valid values: standard, high-mev (3x priority fee), low-gas (half); invalid values return HTTP 400 without charge. No transaction simulation, mempool observation, or MEV/sandwich-risk measurement. - `scenario` (string): One of standard, high-mev, low-gas (default: standard) Example: https://agent-data-tools.revmesh2074.workers.dev/mev-simulator?format=json ### GET /package — $0.0002 Reports package existence, latest version and release, age, version count, npm weekly downloads, licenses, deprecation and known advisory severity. Bounded signals: ok means no listed flags, not a safety guarantee. Supports npm, PyPI, Cargo, Go, Maven and NuGet. Optional exact version adds pinned-version metadata and uses deps.dev advisories; use /package-audit for OSV affected ranges and dated FIRST EPSS CVE estimates. - `ecosystem` (string, required): One of npm, pypi, cargo, go, maven, nuget - `name` (string, required): Exact package name, e.g. lodash or @scope/name - `version` (string): Optional exact version to inspect; ranges and tags are not accepted Example: https://agent-data-tools.revmesh2074.workers.dev/package?ecosystem=npm&name=lodash ### GET /email — $0.001 Validate an email address before using it: syntax, whether the domain exists and accepts mail (MX records), disposable or throwaway provider detection, role addresses such as info@ or support@, free-provider detection, and SPF and DMARC presence. Returns a verdict of likely-deliverable, risky, undeliverable or invalid with reasons. No message is sent and the mail server is not contacted. Use for sign-up checks, lead list cleaning and contact enrichment. - `address` (string, required): The email address to check Example: https://agent-data-tools.revmesh2074.workers.dev/email?address=support%40cloudflare.com ### GET /papers — $0.003 Search scholarly literature across journals, conferences, preprints and books: title, authors, year, venue, citation count, DOI link and abstract where available. Optional fromYear filter and up to 20 results per call. Use for research agents, literature reviews, fact-checking a claim against published work, and finding the DOI for a citation. - `query` (string, required): Search terms, a title or a research question (3-300 characters) - `limit` (integer): Number of results, 1-20 (default 5) - `fromYear` (integer): Only works published in or after this year Example: https://agent-data-tools.revmesh2074.workers.dev/papers?query=CRISPR%20off-target%20effects ### GET /fx — $0.001 Foreign exchange rates from the European Central Bank for about 30 major currencies (USD, EUR, GBP, JPY, CHF, SEK, CAD, AUD, CNY, INR, BRL and more). Give a base currency, optionally the target currencies and an amount, and get the rates, the converted amounts and the date the rates apply to. Use for currency conversion, invoice and price calculations, and reporting in another currency. - `from` (string, required): Base currency as a three-letter ISO 4217 code, e.g. USD - `to` (string): Optional comma-separated target currency codes, e.g. EUR,GBP; default is all available currencies - `amount` (number): Optional amount of the base currency to convert (default 1) Example: https://agent-data-tools.revmesh2074.workers.dev/fx?from=USD ### GET /btc-price — $0.001 Current Bitcoin (BTC) spot price in USD, EUR, GBP, CAD, CHF, AUD and JPY, averaged across major exchanges, with the number of satoshis per US dollar and the time of the price. Use to convert between sats and fiat, to value a Bitcoin or Lightning payment, or to check the BTC price before a trade. Example: https://agent-data-tools.revmesh2074.workers.dev/btc-price?format=json ### GET /base-gas — $0.001 Live gas prices on Base (chain 8453) read from the latest block: base fee and priority fee in gwei, suggested maxFeePerGas and maxPriorityFeePerGas in wei for an EIP-1559 transaction, how full the latest block is, and the estimated execution fee in ETH for an ETH transfer and an ERC-20 transfer. Use before sending a transaction on Base or to decide whether to wait for lower fees. Example: https://agent-data-tools.revmesh2074.workers.dev/base-gas?format=json ### GET /base-tx — $0.003 Look up any transaction on Base by hash: whether it succeeded, reverted or is still pending, sender and receiver, ETH value, called method id, block number and time, number of confirmations, gas used, gas price and the execution fee paid, and whether it created a contract. Use to confirm that a payment or contract call went through before acting on it. - `hash` (string, required): Transaction hash on Base: 0x followed by 64 hex characters Example: https://agent-data-tools.revmesh2074.workers.dev/base-tx?hash=0x7d108fa131ed949c76d50caf2e7dfe25fc9903b9d276c40a0446d8afbdfe86b0 ### GET /base-allowance — $0.002 Check how much of a wallet's ERC-20 token a spender contract is approved to move on Base: the raw and formatted allowance, the token symbol and decimals, and whether the approval is unlimited. Use before a swap or deposit to see if an approve transaction is needed, and to audit a wallet for risky unlimited approvals. - `token` (string, required): ERC-20 token contract address on Base (0x...) - `owner` (string, required): Wallet address that holds the token (0x...) - `spender` (string, required): Address allowed to spend, usually a router or protocol contract (0x...) Example: https://agent-data-tools.revmesh2074.workers.dev/base-allowance?token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&owner=0x4200000000000000000000000000000000000006&spender=0x000000000022D473030F116dDEE9F6B43aC78BA3 ### GET /ens — $0.002 Resolve an Ethereum Name Service name such as vitalik.eth to its wallet address and avatar, or look up the primary ENS name of an address (reverse resolution). Read live from Ethereum mainnet. Use to turn a human-readable name into a payable address, or to show a readable name for a counterparty address. - `name` (string, required): An ENS name such as vitalik.eth, or an address (0x...) for reverse lookup Example: https://agent-data-tools.revmesh2074.workers.dev/ens?name=vitalik.eth ### GET /weather — $0.002 Weather for any point on Earth by latitude and longitude: current temperature in Celsius, conditions (clear, cloudy, rain, snow), precipitation in mm, wind speed and direction, humidity, cloud cover and air pressure, plus an hourly forecast for up to 48 hours. Data from the Norwegian Meteorological Institute. Use for travel and event planning, logistics, agriculture and any agent that needs the weather. - `lat` (number, required): Latitude in decimal degrees, -90 to 90 - `lon` (number, required): Longitude in decimal degrees, -180 to 180 - `hours` (integer): Hours of hourly forecast to return, 1-48 (default 12) Example: https://agent-data-tools.revmesh2074.workers.dev/weather?lat=59.33&lon=18.07 ### GET /time — $0.001 The exact current date and time in any IANA time zone, with UTC offset, weekday, abbreviation and Unix timestamp, daylight saving time handled. Optionally convert a given moment into up to 10 other time zones in the same call. Use when an agent needs to know what time it is, to schedule a meeting across time zones, or to turn a timestamp into local time. - `zone` (string, required): IANA time zone name, e.g. Europe/Stockholm or America/New_York - `at` (string): Optional moment to convert, as ISO 8601 with an offset (default: now) - `to` (string): Optional comma-separated time zones to convert the same moment into (max 10) Example: https://agent-data-tools.revmesh2074.workers.dev/time?zone=Europe%2FStockholm ## Machine-readable - MCP server (streamable HTTP, same tools and prices): https://agent-data-tools.revmesh2074.workers.dev/mcp - [OpenAPI 3.1](https://agent-data-tools.revmesh2074.workers.dev/openapi.json) - [Service card](https://agent-data-tools.revmesh2074.workers.dev/) - [x402 resource list](https://agent-data-tools.revmesh2074.workers.dev/.well-known/x402) - [Store: x402 Seller Kit, a template and guide for building a service like this](https://agent-data-tools.revmesh2074.workers.dev/store)