{"provider":{"host":"agent402.tools","name":"Text-to-speech","score":80.7,"live":true,"checkedAt":"2026-10-27T18:18:09.058Z","uptime72h":100,"lastCheck":{"httpStatus":402,"ms":525,"note":"valid x402 v2 terms"},"endpoints":666,"networks":["eip155:10","eip155:1329","eip155:137","eip155:143","eip155:42161","eip155:42220","eip155:43114","eip155:4663","eip155:5042","eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"cheapestUsd":"0.001","income7dUsd":"174.735025","payers7d":118,"transfers7d":4163,"payoutAddressShared":false,"claimed":false,"page":"https://logicnodes.io/observatory/p/agent402.tools"},"endpoints":[{"url":"https://agent402.tools/api/add-time","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Add (or subtract) a duration to a date. duration like \"2d\", \"-3h\", \"1w 2d\", \"90m\". Returns the resulting UTC ISO timestamp."},{"url":"https://agent402.tools/api/age","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Compute a precise age (years, months, days) from a birth date to today (or a given date), plus total days."},{"url":"https://agent402.tools/api/amortization","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Build the full per-period amortization schedule for a fully-amortizing loan. Each row reports the period number, payment, the principal vs. interest split for that payment, and the remaining balance after that payment. Use this when the user wants to see how interest tapers over the life of the loan, or to model an extra-payment scenario by reading the balance at any period."},{"url":"https://agent402.tools/api/annuity","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Present and future value of a level annuity (equal periodic payments). Supports an ordinary annuity (payments at period end) and an annuity-due (payments at period start)."},{"url":"https://agent402.tools/api/asn-info","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Look up the Autonomous System (ASN), prefix, country, registry, and allocation date for an IPv4 address - or for a hostname (which is resolved first). Uses Team Cymru's free DNS-based IP→ASN mapping; no HTTPS upstream, no auth, no rate-limit headaches."},{"url":"https://agent402.tools/api/b20-feature-id","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Pure-CPU helper: turn a B20 feature string (e.g. base.b20_asset) into its bytes32 feature id and ready-to-send isActivated(bytes32) calldata for the Activation Registry. No network egress."},{"url":"https://agent402.tools/api/barcode-decode","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Decode a barcode or QR code from an image. Send a base64 PNG or JPEG (or a data: URL); returns the decoded text and the symbology. Reads QR, DataMatrix, and 1D barcodes (EAN/UPC/Code39/Code128/ITF/Codabar). Deterministic, no network, no model."},{"url":"https://agent402.tools/api/base-convert","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Convert an integer between number bases (radix 2-36), e.g. binary↔hex↔decimal. Arbitrary size via BigInt."},{"url":"https://agent402.tools/api/base-detect","method":"GET","priceMicroUsd":1000,"networks":["eip155:8453"],"description":""},{"url":"https://agent402.tools/api/base32","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Base32 (RFC 4648) encode or decode text. mode: encode (default) or decode."},{"url":"https://agent402.tools/api/base58","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Base58 encode or decode text (Bitcoin/IPFS alphabet). mode: encode (default) or decode."},{"url":"https://agent402.tools/api/base64","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Base64 encode or decode text. mode: encode (default) or decode. Handles URL-safe base64 on decode."},{"url":"https://agent402.tools/api/binary-text","method":"GET","priceMicroUsd":1000,"networks":["eip155:8453"],"description":""},{"url":"https://agent402.tools/api/block-info","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Header-level detail for one block on Ethereum, Base, Polygon, Arbitrum, or Optimism: hash, timestamp (unix + ISO), transaction count, gas used/limit, base fee. Pass a block number, 0x hex, or \"latest\". Keyless multi-endpoint failover."},{"url":"https://agent402.tools/api/block-number","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"The latest block number on Ethereum, Base, Polygon, Arbitrum or Optimism from keyless public nodes with fallback. Use it as the cheapest possible on-chain read: a liveness check for a chain, a timestamp anchor for a query, or the first paid call to prove an x402 client works end to end."},{"url":"https://agent402.tools/api/bond-price","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Price a fixed-coupon bond from its yield to maturity: present-value the coupons plus face. Returns clean price, coupon per period, current yield, and premium/discount vs par."},{"url":"https://agent402.tools/api/braille-convert","method":"GET","priceMicroUsd":1000,"networks":["eip155:8453"],"description":""},{"url":"https://agent402.tools/api/break-even","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Break-even point for a product: the units and revenue at which total revenue covers fixed plus variable costs. Also returns contribution margin and margin ratio."},{"url":"https://agent402.tools/api/brotli-compress","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Compress a string with Brotli (RFC 7932) and return it as base64. Brotli typically beats gzip by 15-25% on text - useful when bytes matter (e.g. cramming context into an LLM prompt, fitting under a transport cap). Slower than gzip; pick gzip if speed matters more than ratio."},{"url":"https://agent402.tools/api/brotli-decompress","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Decompress a base64-encoded Brotli payload. Returns the result as utf8 (text) or base64 (binary). Refuses to expand past 10MB to defend against zip bombs."},{"url":"https://agent402.tools/api/business-days","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Count business days (Mon–Fri) between two dates, inclusive of the start, exclusive of the end. Optional list of holiday dates to skip."},{"url":"https://agent402.tools/api/cagr","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Compound annual growth rate between a beginning and ending value over N years: (end/begin)^(1/years) - 1. Also returns total growth over the whole period."},{"url":"https://agent402.tools/api/calc","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Safely evaluate an arithmetic expression (+ - * / % ^ and parentheses). No code execution - a real parser, not eval."},{"url":"https://agent402.tools/api/captcha-generate","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Mint a stateless captcha challenge to gate your OWN endpoint: returns a human prompt plus a salted sha256 answer hash you keep and verify later (sha256(salt + normalized answer) === answerHash) - no server state, no shared secret. Types: math (arithmetic) or alnum (character code), difficulty 1–3. Deterministic tooling for running bot protection, not defeating it."},{"url":"https://agent402.tools/api/card-validate","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Validate a payment card number (Luhn checksum) and detect the brand. Numbers are not stored or logged."},{"url":"https://agent402.tools/api/case","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Convert text between camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, Title Case, lower, UPPER."},{"url":"https://agent402.tools/api/chain-info","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"One-call chain state snapshot: chain id, latest block number, and current gas price (wei + gwei) for Ethereum, Base, Polygon, Arbitrum, or Optimism. Keyless multi-endpoint failover."},{"url":"https://agent402.tools/api/chain/nonce","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"The transaction count of an account, which is the nonce its next transaction must carry. Ask for block \"pending\" to include transactions already in the mempool, which is what you want before signing; the default \"latest\" counts only mined transactions. Returns the count as a decimal string and as hex. EVM chains: ethereum, base, polygon, arbitrum, optimism."},{"url":"https://agent402.tools/api/chain/pending","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"The chain's pending block: how many transactions are queued for the next block, the base fee they will pay, and the gas already used against the limit. This is the node's own view of what is about to be mined, so it answers \"is the chain congested right now\" without an indexer. Transaction hashes are included when the node returns them. EVM chains: ethereum, base, polygon, arbitrum, optimism."},{"url":"https://agent402.tools/api/chain/storage","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Read one 32-byte storage slot from a contract, the raw state under whatever the source code calls it. Returns the word as hex plus three readings of the same bytes - unsigned integer, address (low 20 bytes) and boolean - because a slot is untyped on chain and only the caller knows which it meant. Useful for proxy implementation slots, paused flags and any value the ABI does not expose. EVM chains: ethereum, base, polygon, arbitrum, optimism."},{"url":"https://agent402.tools/api/chain/total-supply","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"The circulating total supply of an ERC-20, read from the token contract itself rather than from an aggregator, so it is the number the chain holds at the block you asked for. Returns the raw uint256 and the same figure formatted with the token's own decimals. A contract that does not implement totalSupply answers 422 rather than a fabricated zero. EVM chains: ethereum, base, polygon, arbitrum, optimism."},{"url":"https://agent402.tools/api/char-frequency","method":"GET","priceMicroUsd":1000,"networks":["eip155:8453"],"description":""},{"url":"https://agent402.tools/api/checksum","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Compute MD5, SHA-1, SHA-256, SHA-512, and CRC32 checksums of a string in a single call. Useful for verifying file or payload integrity across different checksum standards without needing five separate tools."},{"url":"https://agent402.tools/api/cidr","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Parse an IPv4 CIDR block: network address, broadcast, first/last host, netmask, and host count. Optionally test if an IP is inside it."},{"url":"https://agent402.tools/api/color","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Convert a color between hex, RGB, and HSL. Accepts \"#1a2b3c\", \"rgb(26,43,60)\", or \"hsl(210,40%,17%)\"."},{"url":"https://agent402.tools/api/color-blindness","method":"GET","priceMicroUsd":1000,"networks":["eip155:8453"],"description":""},{"url":"https://agent402.tools/api/color-convert","method":"GET","priceMicroUsd":1000,"networks":["eip155:8453"],"description":""},{"url":"https://agent402.tools/api/color-name","method":"GET","priceMicroUsd":1000,"networks":["eip155:8453"],"description":""},{"url":"https://agent402.tools/api/color-palette","method":"GET","priceMicroUsd":1000,"networks":["eip155:8453"],"description":""},{"url":"https://agent402.tools/api/combinatorics","method":"GET","priceMicroUsd":1000,"networks":["eip155:8453"],"description":""},{"url":"https://agent402.tools/api/compress-compare","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Run the same input through gzip, brotli, and raw deflate at max settings and report each one's output size and ratio. Use this to decide which algorithm to actually use - the answer depends on your content (binary often resists compression entirely; English prose squeezes well with brotli; JSON sits in between)."},{"url":"https://agent402.tools/api/constant-compare","method":"GET","priceMicroUsd":1000,"networks":["eip155:8453"],"description":""},{"url":"https://agent402.tools/api/correlation","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Pearson correlation coefficient between two equal-length numeric series. Returns r (the correlation, -1 to 1), r² (variance explained), n (sample size). Use this to ask things like: is a stock's daily return correlated with a macro indicator? Are two FRED series moving together?"},{"url":"https://agent402.tools/api/count","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Count characters, words, lines, and (optionally) occurrences of a substring in text."},{"url":"https://agent402.tools/api/country-info","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Country facts by name or ISO code: official name, capital, region, currencies, languages, timezones, dialing code, TLD, and more. Committed open dataset (world-countries, ODbL, plus the IANA timezone country map) - offline and deterministic."},{"url":"https://agent402.tools/api/crc32","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"CRC-32 checksum of a text string (hex), the IEEE polynomial used by zip/png/gzip."},{"url":"https://agent402.tools/api/cron-next","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Parse a 5-field cron expression and return the next N run times (UTC)."},{"url":"https://agent402.tools/api/crypto-orderbook","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"L2 order-book snapshot for a spot pair: best bid/ask, mid price, spread (absolute + %), and the top N aggregated price levels per side (default 25, max 100). Pairs use BASE-QUOTE format (BTC-USD, ETH-USD, SOL-USDC). Backed by Coinbase Exchange's public market-data API - keyless; coverage is Coinbase-listed markets."},{"url":"https://agent402.tools/api/crypto-price","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Live spot price for one or many coins in any quote currency: last price, 24h change, 24h volume and market cap per coin, from a maintained market feed and answered in under a second. Use it when an agent needs a current crypto price to size, compare or display, or a cheap read to poll on a schedule."},{"url":"https://agent402.tools/api/crypto-trending","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Trending coins on CoinGecko in the last 24 hours, ranked by user search activity on the site (currently ~15 results). Includes coin id, symbol, market cap rank, current price (BTC-denominated), and score. Useful signal for detecting narrative shifts before they hit price charts."},{"url":"https://agent402.tools/api/csv-lint","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Validate CSV structure: consistent column counts across rows, properly closed quotes, delimiter detection. Returns row/column counts and any structural errors. Pure CPU."},{"url":"https://agent402.tools/api/date-diff","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Difference between two dates/times in ms, seconds, minutes, hours, days, and a human summary."},{"url":"https://agent402.tools/api/date-format","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Parse a datetime from any format (ISO 8601, Unix timestamp in seconds or milliseconds, RFC 2822, or natural date string) and return it in every common format: ISO 8601, Unix (seconds), Unix (ms), RFC 2822, date-only, time-only, day of week, and human-relative (e.g. '3 days ago')."},{"url":"https://agent402.tools/api/day-of-year","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Get the day number within the year (1-366) for any date, plus days remaining, leap-year status, percent of year complete, and a simple (Sunday-start) week number."},{"url":"https://agent402.tools/api/decide/execute","method":"POST","priceMicroUsd":1000,"networks":["eip155:8453"],"description":"Run a decision's plan through Agent402: first-party steps run directly, third-party steps are paid on your behalf (paid on Base, or by credits or card) and relayed at the seller's price plus a disclosed routing fee. Priced at the plan's budget (or your maxBudgetUsd, whichever you set) less a valid execution credit; spend stops at that budget, fallbacks are tried in order, and any unspent amount comes back as a credit. A run where no step succeeds is not charged."},{"url":"https://agent402.tools/api/dedupe-lines","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Remove duplicate lines, preserving first-seen order. Returns the deduped text and how many were removed."},{"url":"https://agent402.tools/api/defi-dex-volume","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Decentralized exchanges ranked by 24h spot volume with 7d, 30d, 1y and all-time volume, change, the chains each trades on and sector totals. Use it when an agent needs to know where onchain spot volume is happening or how a DEX's share is moving."},{"url":"https://agent402.tools/api/defi-tvl","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Look up the current Total Value Locked (TVL) for a DeFi protocol via DeFiLlama's public API. Identify the protocol by its DeFiLlama slug (uniswap, aave, lido, ethena, etc.). Returns the total TVL plus per-chain breakdown and 24h/7d/30d change where DeFiLlama exposes it."},{"url":"https://agent402.tools/api/dex-pair","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Look up the Uniswap V3 pool address for a token pair + fee tier on Ethereum, Base, Polygon, Arbitrum, or Optimism. Pass either order (tokenA/tokenB) - the factory sorts internally. Returns 0x0…0 if no pool has been deployed for that combination yet."},{"url":"https://agent402.tools/api/dex-top-pools","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Top DEX pools (Uniswap, Sushi, Curve, Aerodrome, etc.) ranked by current TVL - filterable by chain and project. Sourced from DeFiLlama's public Yields API (keyless). Each row carries chain, project slug, symbol pair, TVL in USD, current APY, and pool ID for follow-up queries."},{"url":"https://agent402.tools/api/dmarc-check","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Fetch and validate a domain's DMARC policy at _dmarc.<domain> (RFC 7489). Surfaces the enforcement policy (none/quarantine/reject), reporting addresses, alignment modes, and common misconfigs (no rua, p=none stuck for months, percent <100). Pair with SPF and DKIM for full Feb-2024 sender-rule compliance."},{"url":"https://agent402.tools/api/dns","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Live DNS lookup for a domain: returns name, type and records[]. Supported record types: A, AAAA (addresses as strings), MX ({exchange, priority} objects), TXT (each record an array of its strings), NS and CNAME (hostnames). For SPF, DMARC or a full mail-security read use spf-check, dmarc-check or email-deliverability."},{"url":"https://agent402.tools/api/drug-adverse-events","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Top reported adverse reactions for a drug from the FDA FAERS database (openFDA), ranked by report count - a fast read on a drug's real-world safety signal. Live FDA data, no key."},{"url":"https://agent402.tools/api/duration","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Parse a duration like \"2h30m\" / \"1d4h\" / \"90s\" to seconds, or humanize a number of seconds."},{"url":"https://agent402.tools/api/easter-date","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Compute the date of Easter Sunday for a given year using the Anonymous Gregorian algorithm (Meeus/Jones/Butcher). Also returns Good Friday, Ash Wednesday, Palm Sunday, Pentecost, and the day-of-year for Easter."},{"url":"https://agent402.tools/api/edgar-company-lookup","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Resolve a US stock ticker (e.g. AAPL) to its SEC CIK number, the primitive every other EDGAR call needs. Returns ticker, cik (zero-padded, 0000320193), cikInt (320193) and the registered company name. Backed by SEC's company_tickers.json (public domain). A company name sent where the ticker goes is answered with a 404 that names the likely tickers (\"Tesla\" -> TSLA)."},{"url":"https://agent402.tools/api/effective-annual-rate","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Convert a nominal annual rate (APR) compounded m times per year into the effective annual rate (EAR / APY): (1 + apr/m)^m - 1. Set continuous:true for e^apr - 1."},{"url":"https://agent402.tools/api/email-guard","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Read one email the way an agent that triages mail should before acting on it: observations with evidence and offsets, no score and no verdict. Send the raw RFC 5322 message (multipart, base64 and quoted-printable decoded, 1 MB cap) or the parts you already hold (subject, from, replyTo, html, text, links)."},{"url":"https://agent402.tools/api/email-validate","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Validate an email address: syntax check plus live MX record lookup on the domain (deliverability signal, not a guarantee)."},{"url":"https://agent402.tools/api/ens-resolve","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Resolve an ENS name (e.g. vitalik.eth) to its Ethereum address - so an agent can turn a human-readable recipient into a payable address. Read-only on Ethereum mainnet."},{"url":"https://agent402.tools/api/epoch-convert","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Convert between Unix epoch timestamps and ISO 8601 date strings in both directions. Provide either an epoch (seconds or milliseconds) or an ISO date string. Returns both representations plus UTC and date components."},{"url":"https://agent402.tools/api/feedback","method":"POST","priceMicroUsd":1000,"networks":["eip155:10","eip155:1329","eip155:137","eip155:143","eip155:42161","eip155:42220","eip155:43114","eip155:4663","eip155:5042","eip155:8453"],"description":"Tell this server whether a call you paid for delivered what it promised. Bound to the receipt: give it the settlement transaction from that call's PAYMENT-RESPONSE (or Payment-Receipt) header and a verdict of \"good\" or \"bad\", and only the wallet the ledger records as having paid for that exact call can write it - so a rating here is always a real customer about a real purchase. One verdict per settlement transaction (sending another replaces yours, it never stacks)."},{"url":"https://agent402.tools/api/feedback/summary","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"What paying buyers said about each tool on this server: good and bad counts and the number of distinct wallets behind them, over a window you choose. Every verdict counted here was written by the wallet that paid for that specific call, one per settlement transaction, so the numbers cannot be inflated by anyone who did not buy. Counts only - no payer addresses and no review text, ever. Bad counts are published beside good ones, including ours."},{"url":"https://agent402.tools/api/finance","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Financial math. op: \"compound\" (future value of principal at a rate) or \"loan\" (monthly payment + total for a loan)."},{"url":"https://agent402.tools/api/forecast-eval","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Backtest a forecasting method on the input series by holding out the last `testSize` observations, forecasting them, and computing MAPE (mean absolute percentage error) + RMSE (root mean squared error). Lets an agent pick which method (mean / naive / drift / ses / holt / holt-winters) actually fits its data before committing to a forward forecast."},{"url":"https://agent402.tools/api/forecast-holt","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Holt's linear trend method - level + trend (no seasonality). Two smoothing parameters: alpha (level) and beta (trend). Forecast extrapolates as a straight line from the last fitted level along the last fitted trend, so it grows or shrinks linearly with horizon. Use this when your series has a persistent up/down trend but no seasonal cycle (e.g. a SaaS MRR climb, a deflating cohort retention curve)."},{"url":"https://agent402.tools/api/forecast-holt-winters","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Holt-Winters triple exponential smoothing - level + trend + seasonal component. Use for series with a repeating cycle (weekly retail traffic, monthly utility usage, quarterly revenue). Additive seasonality (constant amplitude) or multiplicative (amplitude grows with level). `period` is optional - if omitted, the kit auto-detects via autocorrelation on first differences and surfaces what it picked (with the ACF strength) so you can audit. Needs at least two full seasonal cycles to fit reliably."},{"url":"https://agent402.tools/api/forecast-naive","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Three textbook baseline forecasts: mean (forecast = average of history), naive (forecast = last value), drift (linear extrapolation from first to last point). Use as a sanity floor - any sophisticated method (SES, Holt, Holt-Winters) should beat the best of these on a backtest, otherwise the extra complexity isn't earning its keep. Returns point forecasts + 95% prediction intervals per Hyndman §3.1."},{"url":"https://agent402.tools/api/forecast-ses","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Simple exponential smoothing (SES) - level-only forecast for series without trend or seasonality. Higher alpha (closer to 1) tracks recent values aggressively; lower alpha (closer to 0) smooths through noise. Default alpha=0.3 is a common conservative pick; pass an explicit alpha or use forecast-eval to pick the one that minimizes backtest error. Forecast is flat (= last fitted level) for all horizons."},{"url":"https://agent402.tools/api/gas-estimate","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Current gas price on Base, Polygon, Arbitrum, Optimism, Ethereum, Monad, Celo, Avalanche, Sei, or Robinhood Chain - for an agent budgeting a transaction: returns network, gasPriceGwei and gasPriceWei (decimal strings) from the chain's own eth_gasPrice, the node's suggested all-in price per gas unit. Multiply by the gas a transaction uses (21000 for a plain transfer) for its fee. Read-only."},{"url":"https://agent402.tools/api/gcd-lcm","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Greatest common divisor and least common multiple of two or more integers, computed exactly (arbitrary precision). Useful for cycle alignment, scheduling periods and fraction work. Signs are ignored; a zero makes the LCM zero. Results beyond 2^53 come back as strings so no digit is lost."},{"url":"https://agent402.tools/api/geo-distance","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Great-circle distance between two latitude/longitude points using the haversine formula. Returns kilometers and miles. Deterministic."},{"url":"https://agent402.tools/api/geocode","method":"GET","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Resolve a free-form address or place name to coordinates: lat/lon, display name, bounding box, place type. OpenStreetMap/Nominatim, no key."},{"url":"https://agent402.tools/api/gunzip","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Decompress a base64-encoded gzip payload. Returns the result as utf8 (text) or base64 (binary). Refuses to expand past 10MB to defend against zip bombs."},{"url":"https://agent402.tools/api/gzip","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Compress a string with gzip (RFC 1952) and return it as base64. Reports input bytes, output bytes, and the compression ratio so you can decide if it was worth doing. Input can be plain text (utf8) or already-binary content (base64 or hex)."},{"url":"https://agent402.tools/api/hash","method":"POST","priceMicroUsd":1000,"networks":["eip155:1329"],"description":"Cryptographic hash of a text string - sha256 (default), sha512, sha1 or md5 - returned as hex and base64. Use it for content fingerprints, integrity checks and deterministic ids; pure computation, instant."},{"url":"https://agent402.tools/api/hex","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Hex encode or decode text. mode: encode (default) or decode."},{"url":"https://agent402.tools/api/hidden-text-scan","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Check an email or web page for text a person reading it would not see but an AI reading it would: HTML comments, display:none or hidden elements, white-on-white or off-screen text, zero-width and tag characters, base64 that decodes to a directive, and directives in alt, title, aria-label, data or meta attributes."},{"url":"https://agent402.tools/api/hkdf-expand","method":"GET","priceMicroUsd":1000,"networks":["eip155:8453"],"description":""},{"url":"https://agent402.tools/api/hmac","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"HMAC signature of a message with a shared key. Algorithms: sha256 (default), sha512, sha1. Returns hex and base64."},{"url":"https://agent402.tools/api/html-entities","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Encode text to HTML entities or decode them back. mode: encode (default) or decode."},{"url":"https://agent402.tools/api/html-links","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Enumerate every <a href> in an HTML string with its anchor text and rel attribute. Optionally resolves relative hrefs against a base URL and filters by a regex on the href. The deterministic way to crawl a page's outlinks without writing a regex."},{"url":"https://agent402.tools/api/html-meta","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Extract <title>, <meta description>, OpenGraph/Twitter cards, canonical URL, and JSON-LD blocks from an HTML string. Distinct from /api/meta which fetches a URL - feed this the HTML you already have (from /api/render, /api/extract.body, or your own fetch)."},{"url":"https://agent402.tools/api/html-select","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Run a CSS selector against an HTML string and return the matches (text, attrs, and optionally outerHTML for each). The deterministic alternative to regex when you already have the HTML and know the selector - pairs with /api/render or any page you've fetched yourself."},{"url":"https://agent402.tools/api/html-strip","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Strip all HTML tags and return plain text. Preserves block-level structure (paragraphs and headings become newline-separated). Faster and more predictable than running extract on a raw HTML string when you already have it."},{"url":"https://agent402.tools/api/html-table","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Extract a <table> from an HTML string as JSON rows (header-keyed) or CSV. Useful for prices, schedules, sports stats, or anything an agent has already fetched as HTML. If multiple tables match, the first is used."},{"url":"https://agent402.tools/api/html-to-markdown","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Convert an HTML fragment or document you already have into clean markdown. (To fetch + convert a live URL, use /api/extract.)"},{"url":"https://agent402.tools/api/http-check","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Check any public URL: status code, latency, final URL after redirects, and response headers. The uptime primitive for agent monitors."},{"url":"https://agent402.tools/api/iban-validate","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Validate an IBAN: country code, length, and the ISO 13616 mod-97 checksum."},{"url":"https://agent402.tools/api/ics-parse","method":"POST","priceMicroUsd":1000,"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"Parse iCalendar (.ics) text into structured JSON events: summary, start/end, location, organizer, attendees, status, and RRULE. Optional bounded recurrence expansion (expand:true, capped occurrences). Deterministic, pure CPU - send the ICS text, not a URL."}]}