{"host":"2s.io","week":"2026-W44","snapshot_taken_at":"2026-10-26T13:00:11.784122+00:00","summary":{"host":"2s.io","listings":114,"score":88,"grade":"B","errors":0,"warnings":172,"calls_30d":2051,"payers_30d":300},"standing":{"shown":0,"of":4,"checks":[{"signal":"certified","shown":false,"detail":"No Fair Offer certification on record."},{"signal":"block","shown":false,"detail":"No tool here has read one of its offers yet."},{"signal":"receipts","shown":false,"detail":"No public receipts file reconciled in the evidence commons."},{"signal":"probe","shown":false,"detail":"No paid probe on record."}],"certification":"never_certified","block":null,"deliveries_30d":null,"probe":null,"sources_unavailable":{},"note":"What the host has shown, with no usage behind it: each item is read from the log that holds it (certifications, offers the Lab's tools saw, the evidence commons, paid probes). A missing item means nothing is on record, not that the host lacks it."},"live_check":{"week":"2026-W44","at":"2026-10-27T13:00:14.739083+00:00","reachable":true,"status":402,"latency_ms":681,"price_usd":0.0025,"pay_to_addresses":2,"block":{"present":false,"valid":false},"problem":null,"security_txt":false,"changes":null,"note":"An unpaid request to the host's busiest listing, made once a week; anyone could make it."},"history":[{"week":"2026-W44","taken_at":"2026-10-26T13:00:11.784122+00:00","listings":114,"score":88,"grade":"B","errors":0,"warnings":172,"calls_30d":2051,"payers_30d":300}],"evidence":null,"benchmark":null,"listings":[{"resource":"https://2s.io/api/stocks/metrics","description":"Key fundamental metrics and 52-week price statistics for a US-listed company. Pass ticker; returns headline valuation, margin, and per-share figures — P/E, P/B, P/S, PEG, EV/EBITDA, gross/operating/net margins, ROE, ROA, current ratio, debt/equity, dividend yield, beta, 52-week high/low, and YTD/52-week price returns — plus the full Finnhub metric map under `metric`. Computed ratios you would otherwise derive yourself from raw filings. Market & fundamental data by Finnhub.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":35,"payers_30d":9,"last_called_at":"2026-10-25T09:10:58.881Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/stocks/company-news","description":"Recent news articles about a specific US-listed company. Pass ticker and optionally a from/to date window (YYYY-MM-DD; defaults to the last 14 days); returns headlines with source, summary, URL, image, related symbol, category, and publish time (newest first). Use it to catch up on what is being written about a company. News aggregated by Finnhub.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":142,"payers_30d":7,"last_called_at":"2026-10-25T10:01:31.792Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/search/ai","description":"AI web search optimized for agents. Returns ranked results with the relevant extracted content of each page (not just a link + blurb), plus a relevance score. topic=news for recent reporting. Distinct from search.web (raw SERP) — this returns clean, LLM-ready page content per result.","method":"GET","price_usd":0.045,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":182,"payers_30d":6,"last_called_at":"2026-10-22T20:25:49.359Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/finance/sec-filings","description":"Recent SEC EDGAR filings for a US publicly-traded company by stock ticker. Resolves ticker → CIK via SEC's company_tickers.json, then fetches the company's submissions index from data.sec.gov. Returns company metadata (name, CIK, SIC industry classification, exchanges, fiscal year-end, state of incorporation) plus filings with form type, filing date, report date, accession number, primary-document URL, and filing-index URL. Filter to one form type (10-K, 10-Q, 8-K, 4, 13F-HR, SC 13G, S-1, etc.) via formType param. Default 20 results, max 100. Backed by SEC.gov; underlying filings are public-domain US government records. For filings + fundamentals + insider trades merged by ticker in one call, see /api/finance/company-profile.","method":"GET","price_usd":0.009,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":13,"payers_30d":6,"last_called_at":"2026-10-23T16:51:13.726Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 735 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/calendar/earnings","description":"Earnings release calendar — which US-listed companies report earnings in a date window, with expected and (once reported) actual EPS and revenue, and the time of day (before/after market). Pass a from/to window (YYYY-MM-DD; defaults to the next 14 days) and optionally a ticker to filter to one company. Agents cannot recall future earnings dates — this is the schedule. Data by Finnhub.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":99,"payers_30d":5,"last_called_at":"2026-10-25T10:35:31.395Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/calendar/holidays","description":"List the official holidays for a country and year, with exact observed dates including substitute days (e.g. a Saturday July 4th observed on Friday). Query: country (ISO 3166-1 alpha-2, 200+ supported), year, optional region (subdivision code like CA for US-California or BY for DE-Bavaria), optional types filter (public, bank, school, optional, observance — comma-separated), optional lang (ISO 639-1) for localized names. Returns one item per holiday: { date (YYYY-MM-DD), name, type, substitute, rule }. Dates are computed from maintained per-country rules — including movable feasts and lunar-calendar holidays — so they stay correct year over year. Use for scheduling, delivery estimates, payment terms, and SLA math.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":22,"payers_30d":5,"last_called_at":"2026-10-25T14:34:15.438Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 723 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/stocks/quote","description":"Latest daily stock quote for a US-listed ticker. Returns the most recent completed trading session: open, high, low, close, volume, VWAP, and trade count, plus the change and percent change versus the prior session, and company reference data (name, primary exchange, security type, currency, market cap). NOTE: this plan tier serves end-of-day / delayed data (the response flags delayed=true), suitable for daily snapshots, fundamentals context, and post-close analysis rather than real-time trading. Pass ticker as a US symbol (e.g. AAPL, MSFT, BRK.B). Market data by Massive (formerly Polygon.io).","method":"GET","price_usd":0.0045,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":16,"payers_30d":5,"last_called_at":"2026-10-23T21:13:11.914Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 600 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/geo/postal","description":"Resolve a postal/ZIP code to its place name(s), administrative divisions, and coordinates. Pass `postalCode` and a 2-letter `country` (default US). Returns each matching locality: place, admin1 (state/province name + code), admin2 (county/district), and lat/lon. International — covers major markets (US, GB, CA, DE, FR, AU, NL, ES, IT, CH, SE, MX). Use it to normalize and enrich addresses, derive the state/county for a ZIP, or geolocate a postal code in an ETL pipeline.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":11,"payers_30d":5,"last_called_at":"2026-10-25T14:39:42.392Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/calendar/business-days","description":"Holiday-aware business-day calculator for 200+ countries. Three modes: pass start + addDays (signed integer) to shift a date by N business days; pass start + end to count business days between two dates (exclusive of start, inclusive of end); pass start alone to check one date (is it a business day, which holiday, next/previous business day). Query: country (ISO 3166-1 alpha-2), start (YYYY-MM-DD), optional region (subdivision code), addDays XOR end, optional weekend (comma-separated days, default sat,sun — e.g. fri,sat for the Gulf), optional types (holiday types treated as closures, default public,bank). Skipped holidays are itemized in the response. Use for payment terms, SLA deadlines, and delivery-date math.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":5,"payers_30d":5,"last_called_at":"2026-10-25T11:59:14.043Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 722 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/weather/zip","description":"Current weather conditions for a US ZIP code (temperature, wind, humidity, conditions). Backed by the US National Weather Service (api.weather.gov) — public domain, no rate-limit pressure on commercial use.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":5,"payers_30d":5,"last_called_at":"2026-10-26T02:34:25.233Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/econ/fred-vintage","description":"Point-in-time (vintage) economic data from FRED's ALFRED archive — what an economic figure was AS FIRST REPORTED / as known on a past date, before later revisions. Give a seriesId (e.g. GDP, GDPC1, PAYEMS, INDPRO) and an asOf date to get the observations exactly as they stood on that date; omit asOf to get the current (latest-revised) values. Also returns the series' vintage (revision) dates — every date the series was revised. Free, public-domain (FRED). Critical for honest backtesting and macro research: it eliminates look-ahead bias (e.g. GDP for 2020Q1 was first reported far lower than today's revised figure). No LLM and no real-time API gives this — it's the archived state of the data through time. Pair with econ.fred (current series) and econ.fred-releases (release calendar).","method":"GET","price_usd":0.0042,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":305,"payers_30d":4,"last_called_at":"2026-10-25T04:29:24.005Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 792 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/papers/search","description":"Unified scientific literature search across arXiv (preprints), PubMed (biomedical), and Semantic Scholar (cross-field, with citation counts). Returns a flat array of papers with stable schema: source, sourceId, doi, title, authors, abstract, year, publishedAt, citationCount, url, pdfUrl. Partial failures surface in the errors array rather than failing the whole call. Optional filters: since (YYYY-MM-DD), sources (subset), limit (max 20 per source).","method":"GET","price_usd":0.006,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":41,"payers_30d":4,"last_called_at":"2026-10-22T05:41:27.39Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/wikipedia/summary","description":"Fetch a Wikipedia article summary in any of 30 supported languages. Returns title, displayTitle, lang, pageId, description, extract (plain text), extractHtml, lead image, canonical URLs, last-modified timestamp, word count, license, and an attribution string. Backed by https://<lang>.wikipedia.org/api/rest_v1/page/summary. Content is CC BY-SA 4.0 with attribution provided.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":28,"payers_30d":4,"last_called_at":"2026-10-25T18:30:30.289Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/crypto/address-screen","description":"Sanctions-screen a crypto wallet address against the US Treasury OFAC SDN list's published Digital Currency Addresses (BTC/ETH/USDT/XMR and more). Exact match — returns whether the address is sanctioned, and for any hit the listed entity name, OFAC programs, source id, and the currency the address was listed under. Compliance check before transacting. Distinct from crypto.address-safety (GoPlus behavioral risk) — this is regulatory sanctions.","method":"GET","price_usd":0.004998,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":12,"payers_30d":4,"last_called_at":"2026-10-14T21:43:17.788Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/business/uk-companies","description":"Official UK company registry (Companies House). Two modes: pass query to search companies by name (returns company number, name, status, type, incorporation date, address), or pass companyNumber for the full registry profile — legal name, status, company type, jurisdiction, incorporation/cessation dates, SIC activity codes, registered office address, accounts (next due, last made-up-to), confirmation-statement due date, charges and insolvency flags, previous names, and the officers list (name, role, appointed/resigned dates, nationality, occupation). Free, Open Government Licence (commercial use permitted). The authoritative UK-company KYB lookup — complements business.lei (GLEIF) and business.br-cnpj (Brazil).","method":"GET","price_usd":0.0036,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":6,"payers_30d":4,"last_called_at":"2026-10-08T06:13:32.174Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 720 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/crypto/token-price","description":"Current spot price and market data for crypto assets. Pass ids as comma-separated CoinGecko asset ids (e.g. bitcoin, ethereum, solana, usd-coin — lowercase id, not ticker symbol; up to 25 per call) and optionally vs (comma-separated fiat/crypto quote currencies, default usd). Returns per-asset price, market cap, 24h volume, and 24h percent change, plus the data timestamp. Live market data past any training cutoff. Price data by CoinGecko.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":6,"payers_30d":4,"last_called_at":"2026-10-20T11:19:33.645Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/finance/figi-search","description":"Free-text search for securities across global exchanges via OpenFIGI. Give a query (company name, ticker, description) and optionally narrow by exchCode (e.g. US), securityType, or marketSector (Equity, Corp, Govt, Mtge, Muni, Pfd, Comdty, Index, Curncy). Returns relevance-ranked matches with FIGI, composite/share-class FIGI, name, ticker, exchange, security type, market sector, and description, plus a `next` cursor for paging (pass it back as start). Free, open symbology (Bloomberg OpenFIGI). Distinct from finance.figi (exact identifier → FIGI): this is discovery by name/keyword.","method":"GET","price_usd":0.0036,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":4,"payers_30d":4,"last_called_at":"2026-10-12T07:02:57.357Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 587 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/fx/rates","description":"Daily reference exchange rates from the European Central Bank (via Frankfurter). 30+ major currencies. Pass base = 3-letter ISO 4217 currency (default USD), optional symbols = comma-separated target codes (default = all available), optional date = YYYY-MM-DD for historical rates (history back to 1999, business days only; omit for latest), optional amount to convert (default 1). Returns base, date, amount, and a map of currency code → rate.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":4,"payers_30d":4,"last_called_at":"2026-10-08T06:13:11.164Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/github/search-code","description":"Search code across GitHub with the code-search syntax (e.g. 'defineEndpoint repo:AlleyFord/2s' or 'addEventListener language:js'). Returns total match count + file name, path, repository, and URL for each hit. Read-only; no caller key needed.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":4,"payers_30d":4,"last_called_at":"2026-10-08T05:39:05.584Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/dev/rfc","description":"Look up an IETF RFC by number. Pass number as RFC2616, 2616, or the integer 2616. Returns the RFC title, authors, publication date, status (e.g. INTERNET STANDARD, PROPOSED STANDARD, DRAFT STANDARD, INFORMATIONAL, EXPERIMENTAL, HISTORIC, BEST CURRENT PRACTICE), stream (IETF/IAB/IRTF/Independent/Legacy), DOI, canonical rfc-editor.org URL, and the full standards relationship chain: which RFCs this one obsoletes / is obsoleted by, and which it updates / is updated by. Authoritative data from the IETF/RFC Editor index. Use this to resolve whether a spec is current or superseded before relying on it.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":210,"payers_30d":3,"last_called_at":"2026-10-25T18:40:31.635Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 602 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/predict/search","description":"Cross-venue prediction-market keyword search across Polymarket, Kalshi, and Limitless Exchange in one call. Pass q (required); filter by status (open/closed) and cap per-venue with limit. Each hit is tagged with its venue and returns the question, live YES/NO price (0-1 implied probability), USD volume, close date, and the venue URL — for finding the same real-world question wherever it trades. Read-only, keyless.","method":"GET","price_usd":0.012,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":18,"payers_30d":3,"last_called_at":"2026-10-20T15:13:16.73Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/predict/kalshi-markets","description":"Browse Kalshi regulated prediction markets. Filter by status (open/closed/settled), event_ticker, series_ticker, or specific tickers; page with limit + cursor. Each market returns yes/no bid+ask and last price (in dollars, 0-1 = implied probability), 24h + total volume, liquidity, open interest, open/close times, and result if settled. Read-only mirror of Kalshi's market list (no Kalshi key needed).","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":5,"payers_30d":3,"last_called_at":"2026-10-25T14:57:00.653Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/crypto/address-validate","description":"Validate a cryptocurrency address with full checksum verification (not just regex). Returns {chain, address, valid, canonical, format, reason}. Chains: btc (P2PKH, P2SH, Bech32 SegWit v0, Taproot Bech32m), eth (full EIP-55 checksum; non-checksummed flagged), sol (Ed25519 32-byte Base58), ltc (Base58Check L.../M.../3... + ltc1 Bech32), trx (T-prefix Base58Check 0x41), xrp (r-prefix custom Base58), bch (legacy Base58Check + bitcoincash:q... CashAddr). Catches typos via cryptographic checksum; canonical field returns the checksummed/lowercased form.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":4,"payers_30d":3,"last_called_at":"2026-10-11T11:15:51.314Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 552 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/flight/status","description":"Live flight status and tracking. Pass ident as an airline flight designator (ICAO \"UAL1\" or IATA \"UA1\") or an aircraft tail number; returns recent and upcoming instances of that flight with origin/destination airports (ICAO/IATA/name/city/timezone), status, cancellation/diversion flags, scheduled vs estimated vs actual gate and runway times (out/off/on/in), departure and arrival delays, en-route progress percent, aircraft type and registration, and route distance. limit controls how many instances return (default 5, newest first by scheduled departure). Real-time operational data — answer \"where is this flight, is it delayed, when does it land\" with live values. For airport metadata see /api/airport/lookup.","method":"GET","price_usd":0.045,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":4,"payers_30d":3,"last_called_at":"2026-10-20T14:58:04.35Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 716 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/license/broker","description":"FINRA BrokerCheck lookup — every US registered broker / investment advisor (~620k current + former). Search by free-text query (name + firm) or by CRD number for a direct individual record. Each result includes CRD ID, name (with any 'doing business as' aliases), broker-check + IA scope (Active/Inactive), a hasDisclosures flag (yes/no for complaints, settlements, terminations on file), industry-start date, FINRA registration count, and current + previous employments (firm name, branch city/state, registration dates). Public per FINRA's investor-protection BrokerCheck program; pair with /api/finance/sec-filings for cross-reference.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":4,"payers_30d":3,"last_called_at":"2026-10-08T06:13:14.479Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 638 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/security/http-headers","description":"Fetch a URL and grade its HTTP security headers. Pass url (scheme optional — defaults to https). Returns an overall letter grade + score, the list of present/missing headers, and a per-header analysis with the live value and specific issues for: Strict-Transport-Security (HSTS max-age/includeSubDomains), Content-Security-Policy (flags 'unsafe-inline'/'unsafe-eval'/missing default-src), X-Frame-Options or CSP frame-ancestors (clickjacking), X-Content-Type-Options (nosniff), Referrer-Policy, Permissions-Policy, and Cross-Origin-Opener/Resource-Policy. Also flags Server/X-Powered-By info disclosure. Analyzed from the target's LIVE response headers through an SSRF-guarded fetch (private/loopback targets refused) — an LLM cannot see a site's current headers. For web-app security review, vendor assessment, and CI gates.","method":"GET","price_usd":0.0045,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":4,"payers_30d":3,"last_called_at":"2026-10-08T06:13:46.085Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 825 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/word/related","description":"Related-word lookup via Datamuse. Supply a seed word and a relation kind: rhymes, near-rhymes, synonyms, antonyms, means (semantic match), triggers (associated by usage), homophones, sounds-like (phonetic neighbour), spelled-like (typo / wildcard), follows-from (words that come after), preceded-by (words that come before). Returns ranked candidates with relevance score, syllable count, and grammatical tags. Useful for content generation, rhyme/poetry, vocabulary expansion, and naming agents.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":4,"payers_30d":3,"last_called_at":"2026-10-08T12:29:13.186Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/bank/lookup","description":"FDIC-insured US bank directory lookup. Lookup by name (fuzzy match), FDIC certificate number, RSSD ID, or state. Each record includes name + short name, web address, active flag, city/state/county/zip, established + insured dates, charter class, bank class, primary federal regulator, number of branches, assets and deposits ($1000s), and closed-date + reason for inactive institutions. Public-domain FDIC data, free.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-08T06:13:11.978Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/bio/species","description":"Resolve any organism by scientific or common name to the GBIF taxonomic backbone — the canonical free reference for life on Earth. Returns the accepted scientific name + canonical name, taxonomic rank and status, the match type/confidence, the full classification (kingdom → phylum → class → order → family → genus → species), up to 8 English vernacular (common) names, the count of recorded occurrences worldwide, and the GBIF species URL. Biodiversity, ecology, education, and as a taxonomy normalizer for other pipelines. Fuzzy-matches misspellings. CC-BY GBIF data.","method":"GET","price_usd":0.0036,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-23T01:35:05.971Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 569 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/business/naics","description":"Look up or search NAICS 2022 industry classification codes (US Census Bureau, public domain). Pass `code` for an exact NAICS code — 2–6 digits or a combined sector like 31-33 — and get its official title, hierarchy path, full official description, activity index terms, and direct child codes. Or pass `query` for free-text search (e.g. 'software publishers', 'coffee shop') over titles plus the official ~20k-entry activity index → ranked candidate codes, optionally filtered by `level` (2=sector … 6=national industry). Ground truth for industry coding in KYC, business registration, government filings, and ERP vendor/customer setup.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-08T06:12:53.856Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 636 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/convert/unit","description":"Convert a value between units of measure: mass (g, kg, mg, lb, oz, t, st), length (m, km, cm, mm, in, ft, yd, mi), volume (l, ml, m3, gal, gal-imp, qt, pt, cup, floz, tbsp, tsp), area (m2, km2, ft2, acre, ha), and temperature (C, F, K). Units are matched case-insensitively with common aliases (kg/kilogram/kgs). Returns {value, from, to, dimension, result}. Exact factors — the ground-truth answer a CPG/ETL pipeline needs instead of an LLM approximating conversions. Cross-dimension conversions (kg→m) return 400.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-24T16:23:42.674Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 515 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/crypto/hyperliquid-funding","description":"Live perp funding rates, open interest, and mark/oracle/mid prices across 200+ Hyperliquid perpetuals (free/keyless). Each row: coin, hourly funding rate, open interest, mark/oracle/mid price, premium, prior-day price, 24h notional volume, max leverage. Filter by coin; sort by oi, volume, or funding. On-chain perp microstructure for funding-arb and OI signals.","method":"GET","price_usd":0.0036,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-08T06:13:29.33Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/domain/email-security","description":"Grade a domain's email-authentication and DNS-security posture from live DNS in one call: SPF, DMARC (policy + alignment), DKIM (for the supplied or common selectors), MTA-STS, TLS-RPT, DNSSEC, CAA, and BIMI. Pass domain (and optional dkimSelector). Returns an overall letter grade, a summary (spf/dmarcPolicy/dkim/mtaSts/dnssec/caa/bimi + spoofingProtected), and a per-mechanism block with the raw record, parsed tags, and specific issues (e.g. 'DMARC p=none — monitor only', 'SPF ~all soft-fail', 'no MTA-STS'). Sourced from live public DNS via DNS-over-HTTPS — an LLM cannot know a domain's current records. For deliverability/anti-spoofing audits, vendor security review, and phishing-resistance checks. DKIM is selector-based (selectors aren't enumerable), so 'not found' only means none of the checked selectors resolved.","method":"GET","price_usd":0.0045,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-20T21:22:18.467Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 827 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/geocode/reverse","description":"Reverse geocoding — latitude/longitude → nearest formatted address plus structured components (houseNumber, road, suburb, city, county, state, postcode, country, countryCode). Query: lat (-90..90), lon (-180..180). Underlying data is OpenStreetMap (ODbL). Sister: /api/geocode/address.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-08T06:12:52.734Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/gov/congress-trades","description":"Search individual US Congress member stock trades, parsed from STOCK Act Periodic Transaction Reports into clean rows. Filter by member name (q, e.g. \"Pelosi\"), ticker (e.g. NVDA), transaction type (purchase | sale | exchange | partial_sale), party (D | R | I), 2-letter state, chamber, or transaction-date range (dateFrom/dateTo). Each trade returns the member + party + state/district, owner (self/spouse/joint/dependent), ticker + asset description, buy/sell, the disclosed dollar RANGE (amountMin/amountMax — disclosures are ranges, not exact), the transaction date, the disclosure date, days-to-disclose (compliance lag), and a link to the source filing PDF. The envelope total is the full count matching your filter — so ticker=NVDA&type=purchase counts who bought NVIDIA. Amounts are ranges by law; trades are disclosed up to 45 days after they happen (current-to-the-filing). Coverage: US House + Senate e-filed PTRs; scanned/handwritten reports are parsed separately. Data: US House Clerk / US Senate eFD (public domain). Cross-ref /api/gov/congress-filings for the raw filing index.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-08T06:13:17.169Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 1092 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/news/search","description":"Live news search. Returns recent headlines with title, URL, snippet, publisher source, relative age, and a breaking-news flag — real-time coverage past any model training cutoff. Supports count (1-20), offset, country (2-letter), and freshness (pd=past day, pw=past week, pm=past month, py=past year). Use for current events, market-moving developments, monitoring, and \"what happened with X\" questions. For general web results see /api/search/web; for Hacker News specifically see /api/news/hn-top.","method":"GET","price_usd":0.0225,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-20T15:02:34.636Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/person/cross-registry","description":"Sweep a person's name across five US public registries in one call: FINRA securities brokers, federal-court attorneys (CourtListener), federal inmates (BOP), Texas trade licenses (TDLR), and Texas real-estate licenses (TREC). Returns one block per registry with found/error status, match count, and the matching records — name-matched CANDIDATES, deliberately not merged into one identity (same name does not mean same person; verify with each registry's identifier before acting). Due-diligence, KYC screening triage, and background-research staple. Each registry is also a standalone endpoint (/api/license/broker, /api/law/attorney-lookup, /api/gov/inmate-locator, /api/license/trades, /api/license/real-estate) for follow-up by identifier.","method":"GET","price_usd":0.018,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-20T15:02:37.435Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 743 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/predict/matched-pairs","description":"Cross-venue equivalent-market pairs for arbitrage / relative-value spotting. We fuzzy-match open Polymarket vs Kalshi markets by title-token overlap and return candidate pairs with both venues' YES prices and the implied-probability spread (Polymarket YES minus Kalshi YES). Tune with minScore (0-1 title-similarity floor) and limit. Heuristic — a high score is a strong candidate, not a guaranteed identical contract. Read-only, keyless. No public source maps these directly; the pairing is derived by 2s.io.","method":"GET","price_usd":0.012,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-18T04:21:17.39Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 509 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/predict/sports","description":"Sports prediction markets across Polymarket and Kalshi in one call — game lines, futures, and props (NFL/NBA/MLB/NHL/soccer/tennis/etc). Optionally narrow with league (a tag/category keyword, e.g. nfl, soccer, world-cup) and cap with limit. Each hit is tagged with its venue and returns the question, live YES/NO price (implied probability), USD volume, close date, and the venue URL. Read-only, keyless.","method":"GET","price_usd":0.012,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-20T15:17:37.541Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/predict/wallet","description":"A Polymarket trader's portfolio by wallet address: total portfolio USD value plus open positions (market title, outcome, size, average vs current price, current value, and unrealized PnL). For tracking a wallet's prediction-market book. Read-only from Polymarket's Data API.","method":"GET","price_usd":0.004998,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-08T06:13:54.525Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/security/attack","description":"Authoritative MITRE ATT&CK (Enterprise) technique lookup. Pass id (e.g. T1059 or sub-technique T1059.001) for the canonical technique — name, tactics (kill-chain phases), description, platforms, sub-technique flag + parent, mitigations, and detection guidance — or query for a keyword search returning ranked techniques. Bundled current ATT&CK matrix (~700 techniques), zero external calls. Agents cite T-numbers and tactic names that must be exact; this returns version-pinned, citeable data instead of hallucinated IDs. For threat modeling, detection engineering, and report enrichment.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-08T20:40:44.664Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 588 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/security/package","description":"Security and provenance for an open-source package, composed live from three authoritative sources in one call. Pass ecosystem (npm, pypi, go, maven, cargo, nuget) + name (+ optional version; defaults to latest). Returns: known vulnerabilities from OSV (osv.dev — aggregates GitHub Security Advisories, PyPA, RustSec, Go vuln DB, etc.) each with its id, CVE aliases, summary, severity, and references; the resolved license and deprecation status (deps.dev); and the source repo's OpenSSF Scorecard health score (overall + per-check) plus stars/forks/open-issues. All live — newly-disclosed advisories appear within hours. Distinct from registry.npm-lookup / pypi-lookup (metadata only): this answers \"is this dependency safe to add, what license does it carry, and how well-maintained is it.\"","method":"GET","price_usd":0.0054,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-19T06:27:27.958Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 792 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/space/satellite","description":"Compute the current position of any cataloged Earth-orbiting satellite by NORAD catalog number (e.g. 25544 = ISS, 20580 = Hubble), using fresh Celestrak orbital elements propagated with SGP4. Returns sub-point latitude/longitude, altitude (km), and speed (km/s) for the requested instant (default: now; pass `at` as an ISO timestamp for any time within a few days of the elements' epoch). Supply observer `lat`/`lon` (and optional altKm) to also get look angles — azimuth, elevation, slant range, and whether the satellite is above your horizon — for visual/antenna pointing. Satellite tracking, pass prediction, ground-station planning. Public-domain orbital data; physical/mission metadata is not included.","method":"GET","price_usd":0.0036,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-08T12:25:41.517Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 708 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/url/clean","description":"Fetch any URL and return its article content with the clutter stripped — nav, ads, sidebars, footers, scripts, styles, comments removed via heuristic extraction (<article> / <main> / role=main / densest block). Choose the output with `format`: markdown (default), text, both (JSON envelope), html (a self-contained readable reader-view page, raw text/html), or pdf (a clean typeset reading document, raw application/pdf). html/pdf are built from the same cleaned content, so they carry no live page, no third-party assets, no trackers. SSRF-guarded, 512KB body cap, 8s timeout, 5 redirects max. JSON formats return { url, finalUrl, title, markdown?, text?, wordCount, sourceBytes }. This uses a raw HTTP fetch (no JavaScript) — for client-rendered / SPA pages whose content only appears after JS runs, use /api/url/render (same formats, headless-rendered). For a pixel-perfect image of the live page use /api/ai/screenshot; to enumerate a page or sitemap into its links use /api/url/map.","method":"GET","price_usd":0.0027,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-08T06:13:07.576Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 987 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/url/map","description":"Discover the URLs a page or sitemap points at in a single fetch. Point it at an XML sitemap or sitemap-index and it returns the <loc> URLs; point it at an HTML page and it returns the <a href> links — auto-detected. URLs are resolved to absolute, de-duplicated, fragment-stripped, and http(s)-only. `limit` (1-2000, default 200) caps the count; `sameHostOnly` keeps only links on the same host. Single SSRF-guarded fetch, no JavaScript, stateless — NOT a recursive crawler: to go deeper, call map again on a child sitemap or a discovered page. Returns { url, finalUrl, source: \"sitemap\"|\"links\", count, capped, urls }.","method":"GET","price_usd":0.0027,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-08T06:13:08.397Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 618 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/validate/iban","description":"Validate an International Bank Account Number (IBAN) with full ISO 13616 checks: country-specific length and the ISO 7064 mod-97 checksum (not just a regex). Returns {valid, iban (normalized), formatted (4-char groups), countryCode, checkDigits, bban, reason}. Catches transposed digits and wrong-length accounts that a format check misses, and returns the canonical form so a glue/ETL pipeline can validate AND normalize bank details in one deterministic call. ~85 countries. No bank directory lookup — structure + checksum only.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":3,"last_called_at":"2026-10-09T04:55:33.622Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 530 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/timezone/lookup","description":"Resolve a coordinate to its IANA timezone and return the current UTC offset, local wall time, DST status, and short abbreviation. Query: lat (-90..90), lon (-180..180), at (optional ISO 8601 instant; defaults to now). Returns { tz, abbreviation, offsetMinutes, offsetHours, localTime, observesDst, isDst, januaryOffsetMinutes, julyOffsetMinutes, instant, source }. Polygon lookup against a CC0 timezone boundary index; offsets and DST come from the runtime tzdata so transition rules stay current. Use when scheduling for a coordinate, converting timestamps to local wall time, or checking whether a location is currently observing daylight saving.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":470,"payers_30d":2,"last_called_at":"2026-10-25T19:51:45.413Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 648 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/geocode/address","description":"Forward geocoding — free-text address or place name → latitude/longitude plus structured address components (houseNumber, road, suburb, city, county, state, postcode, country, countryCode). Query: q (2-500 chars), limit (1-10, default 5), country (optional 2-letter ISO 3166-1 bias). Underlying data is OpenStreetMap (ODbL). Sister: /api/geocode/reverse.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":108,"payers_30d":2,"last_called_at":"2026-10-25T11:59:21.597Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/crypto/address-history","description":"Transaction history for an Ethereum address (via Etherscan V2). Returns normal transactions newest-first: hash, block, timestamp, from/to, value (wei + ETH), gas used, gas price, decoded method id + function name, error flag, and any contract created. Paginate with page + offset; bound with startBlock/endBlock. Defaults to Ethereum mainnet; other EVM chains are reachable by chainId where upstream coverage allows. Net-new vs crypto.tx (single-hash receipt).","method":"GET","price_usd":0.0036,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":96,"payers_30d":2,"last_called_at":"2026-10-20T21:42:31.325Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/law/case-search","description":"Search US court opinions (SCOTUS, federal circuits, state appellate/supreme — ~9M opinions). Query by free-text (party names, keywords, docket #, citation). Filter by court slug (e.g., \"scotus\", \"ca9\", \"nysupct\"), filing date range, and order (relevance/dateFiled-desc/dateFiled-asc/citeCount-desc). Returns clusterId, caseName, court, year, docket, reporter citations, citationCount, snippet, canonical URL. Discovery-side complement to case-verify. Backed by CourtListener (Free Law Project); underlying opinions are public domain.","method":"GET","price_usd":0.009,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":4,"payers_30d":2,"last_called_at":"2026-10-24T05:10:21.414Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 533 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/net/ip-resolve","description":"Resolve a single IPv4/IPv6 address to its full network identity in one call: the Autonomous System number, the authoritative AS holder/operator (RIPEstat), the ISP + organization, whether the AS is currently announced, the RIR/IANA allocation block the AS sits in, and country/region/city + coordinates + timezone. One join that turns an IP into \"who runs this network and where\" -- the lookup network-forensics, abuse triage, and fraud agents otherwise stitch together from a geo API plus a separate BGP source. Composes geo IP data + RIPEstat (RIPE NCC, CC BY 4.0); the routing/holder block degrades independently, with per-source status returned. Distinct from net.asn (AS-number first) and geo.ip (geo only): this is IP-first and joins both.","method":"GET","price_usd":0.009,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":2,"last_called_at":"2026-10-08T23:38:42.083Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 745 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/vehicle/vin-decode","description":"Decode a 17-character VIN to manufacturer-supplied vehicle metadata via NHTSA's vPIC database. Returns identity (year, make, model, trim, series, body class, manufacturer), assembly plant (city, state, country), engine (cylinders, displacement, HP, fuel type, configuration, engine model), transmission (style, speeds), and body/weight specs. Curated to the ~30 fields agents actually use from vPIC's ~140-field response. Backed by NHTSA.gov; data is public-domain US government records.","method":"GET","price_usd":0.006,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":3,"payers_30d":2,"last_called_at":"2026-10-02T00:02:48.196Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/aviation/taf","description":"Terminal Aerodrome Forecast (TAF) for one or more airports — the official aviation forecast issued for an airport (~24–30h ahead). Pass ids = comma-separated ICAO station ids (e.g. KATL). Returns the raw TAF text + issue time. Source: NOAA Aviation Weather Center (keyless). For current conditions use aviation.metar.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:21.381Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/bio/protein","description":"Look up a protein in UniProtKB by accession (e.g. \"P04637\", \"Q9Y6K9\", \"P0DTC2\"). Returns the entry id, reviewed (Swiss-Prot) flag, recommended + alternative protein names, gene names, organism + taxid, sequence length and molecular weight, the curated function description, subcellular locations, Gene Ontology terms (id + term + aspect: biological_process / molecular_function / cellular_component), PDB structure ids, and keywords. Bioinformatics, structural biology, drug-target research, education. Gene-centric sibling: /api/bio/gene. CC-BY UniProt data.","method":"GET","price_usd":0.0036,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:40.152Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 559 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/business/id-resolve","description":"Resolve a legal entity across identifier systems. Give exactly one of name, lei, cik, or ticker and get the others back: LEI (GLEIF), SEC CIK, ticker(s) with exchange, jurisdiction, and a canonical entity name. This is the COMPANY-ENTITY resolver: it joins the legal entity (LEI) to its SEC filer identity (CIK/ticker) and back. For SECURITIES (FIGI, ISIN, share-class identifiers) use finance.security-resolve instead -- this one deliberately stays at the legal-entity layer. Composes SEC company_tickers_exchange (public domain) + GLEIF (CC0). The SEC<->GLEIF link is by name-match when you anchor on ticker/cik (best-effort, flagged via bridge + leiName); a supplied LEI is authoritative. Per-source status is returned so a partial resolve is explicit. No CUSIP/SEDOL.","method":"GET","price_usd":0.012,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-20T15:13:05.382Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 771 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/business/no-companies","description":"Official Norwegian company registry search (Brønnøysund Enhetsregisteret). Search by company name. Each result: organisation number, name, organisation form, primary industry (NACE), employee count, registration date, website, bankruptcy and dissolution flags, and business address. Free, NLOD/CC BY 4.0. The authoritative NO company lookup — complements business.uk-companies and business.lei.","method":"GET","price_usd":0.0036,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:34.807Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/chinese/pinyin","description":"Convert Chinese (Hanzi) text to pinyin romanization. Choose tone marks (symbol, e.g. hàn yǔ), numbered tones (han4 yu3), or no tones. Auto-segments words and returns the full pinyin string plus a per-syllable array. Deterministic, keyless — useful for transliteration, pronunciation, search indexing, and TTS prep.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:12:55.293Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/crypto/contract","description":"Decode an EVM smart contract. Pass chain (ethereum, base, polygon, arbitrum, optimism, bsc, avalanche) + address; returns whether the contract is source-verified (Sourcify), its name/compiler/language, whether it is a proxy and its implementation address, and human-readable function and event signatures from the ABI. Optionally pass selector (a 0x 4-byte function selector) to decode what it calls — resolved from the contract's own ABI when verified, otherwise from the public 4byte directory. Pairs with crypto.tx (which gives a `to` address + calldata): turn an opaque contract + selector into \"what is this and what does it do.\" Free, keyless.","method":"GET","price_usd":0.0045,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:50.754Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 649 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/crypto/defi-yields","description":"DeFi yield & lending rates across protocols (via DefiLlama, free/keyless). Returns pools ranked by APY or TVL with base vs reward APY, TVL, 1d/7d/30d APY trend, stablecoin flag, and IL-risk. Filter by chain, project (aave, compound, lido…), symbol (USDC, ETH…), minApy, minTvlUsd. The yield/lending-rate layer beyond crypto.defi's TVL headline.","method":"GET","price_usd":0.0036,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-11T18:40:42.258Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/econ/fred-releases","description":"The US economic-data release CALENDAR — when official economic reports are published, from the Federal Reserve's FRED. Returns upcoming release dates (date, release name, FRED release id), starting from `from` (default today), ascending. Filter by name to find a specific report's schedule (e.g. name=\"Consumer Price Index\" → the next CPI dates; \"Employment Situation\" → jobs report; \"Gross Domestic Product\"; \"FOMC\"), or by releaseId. Free, public-domain (FRED). Future release dates an LLM cannot possibly know — essential for trading, scheduling, and macro-monitoring agents that need to act around data drops. Pair with econ.fred to pull the actual numbers once a release is out.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-09T19:37:29.661Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 683 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/edu/school-lookup","description":"Look up any US public K-12 school (~102k, NCES Common Core of Data). Search by name (partial), district (LEA name, partial), state (2-letter), city, zip, or exact ncessch (12-digit NCES id). Each school: NCES id, name, district + LEA id, address, phone, lat/lon, school level (1=primary 2=middle 3=high 4=other) and type (1=regular 2=special-ed 3=vocational 4=alternative), charter/magnet/virtual flags, enrollment, teacher FTE, grade span, CCD year. Results ordered by enrollment. Higher-ed sibling: /api/edu/college-scorecard. Public-domain federal data.","method":"GET","price_usd":0.0036,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:37.28Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 556 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/factcheck/search","description":"Search the global corpus of published fact-checks (ClaimReview) by free-text claim. Returns matching claims with the claimant, claim date, and each fact-check review's verdict (textualRating, e.g. \"False\", \"Misleading\", \"True\"), the publisher (PolitiFact, Snopes, FactCheck.org, Reuters Fact Check, AFP, …), the review URL, and review date. Covers every topic — politics, health, science, viral and misinformation claims. Optional language, recency (maxAgeDays), and publisher-site filters. Aggregated by Google from publishers' schema.org ClaimReview data. Use it to check whether a claim has been independently fact-checked and how it was rated, rather than asserting from training data.","method":"GET","price_usd":0.0045,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:49.228Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 689 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/finance/thirteen-f","description":"Parsed institutional holdings from a 13F-HR filing. By investment-manager CIK (e.g. 1067983 = Berkshire Hathaway). Returns each holding's nameOfIssuer, cusip, market value (whole USD per the modern Form 13F convention), shares/principal amount + type, putCall flag for options, and voting authority (sole/shared/none). Sorted by value descending. Pass formType for amendments (13F-HR/A) or non-filings (13F-NT). Backed by SEC.gov; underlying 13F filings are public records.","method":"GET","price_usd":0.018,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-18T04:16:14.654Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/food/barcode-lookup","description":"Resolve a food product barcode (UPC, EAN-13, EAN-8, etc.) to structured product metadata via Open Food Facts — the CC0 community-maintained database of >3M food products. Returns product name, brand, ingredient list, allergens, nutriments (per-100g + per-serving), Nutri-Score grade (a-e), NOVA processing classification (1-4), Eco-Score, categories, manufacturing origin, packaging, and product image URLs.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-12T13:21:13.807Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/gov/congress-hearing","description":"Look up or list US Congressional hearings via Congress.gov. Pass congress + chamber + jacketNumber to fetch a single hearing with full detail (title, dates, committee, transcripts/recordings if available). Or filter list by congress + chamber, with optional date range. Hearings cover committee testimony from the executive branch, subject experts, and stakeholders — primary-source material for oversight + policy research.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:18.626Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/gov/district","description":"Resolve a US street address to its congressional district (119th Congress), state, and county, via the US Census Bureau geocoder. Returns the matched/normalized address, latitude/longitude, state (name + 2-letter abbreviation), county, and the district number within the state (null for at-large or non-voting delegate districts). The point-in-polygon district lookup is something an agent can't do from a sandbox. Pair it with the gov/congress.* endpoints to find the representatives once you have the state + district. Public domain, keyless.","method":"GET","price_usd":0.0045,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:47.51Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 544 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/gov/fda-recalls","description":"FDA drug recall enforcement reports, newest first. All filters optional. Each record includes recall number, status (Ongoing/Completed/Terminated/Pending), classification (Class I/II/III), product description, reason for recall, initial-notification mechanism, voluntary-vs-mandated flag, recalling firm name + city/state/country, distribution pattern, and recall + report dates. Backed by OpenFDA's /drug/enforcement endpoint; data is public-domain US government records.","method":"GET","price_usd":0.006,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:14:03.44Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/gov/fec-totals","description":"Aggregate financial summaries (receipts, disbursements, cash-on-hand, debt, transfers, refunds, contributions by source, etc.) per cycle for federal candidates (scope=candidates) or committees (scope=committees). Filter by candidateId / committeeId, cycle, office (P/S/H), party, state, district. For candidates, electionFull=true rolls all cycles of a single election into one row (e.g. a presidential cycle spans 4 years). Use this for top-line \"how much did they raise/spend\" answers without paging through millions of itemized transactions.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:21.891Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 544 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/gov/lobbying-filings","description":"Search US federal lobbying disclosures (Senate LDA filings) — who lobbies for whom, on what issues, for how much. Filter by registrant (lobbying firm name), client (organization being represented), lobbyist (individual name), year, period (first_quarter|second_quarter|third_quarter|fourth_quarter|mid_year|year_end), and type (e.g. RR=registration, Q1-Q4=quarterly reports). Each filing: type, year/period, reported income or expenses (USD), registrant + client (id/name/description/state), lobbying issues (code + description), lobbyist count, official document URL, posted timestamp. Money-in-politics, journalism, and policy-intelligence staple. Public federal data.","method":"GET","price_usd":0.0072,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:14:06.319Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 670 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/gov/osha-inspections","description":"Search OSHA inspection records via the US Department of Labor Open Data Portal (~5M historical inspections). Filter by US state (2-letter), city, zip, or establishment-name substring (estabName, case-insensitive). Optional `filter` accepts raw OData-style clauses (joined with AND); `fields` selects columns; `sort` sorts (prefix with `-` for desc). Each row carries activity number, reporting id, establishment name + full site address, owner type/code, advance-notice flag, safety/health type, SIC + NAICS industry codes, open + close dates, host establishment number, union status. Backbone of workplace-safety + investigative-journalism agents.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:20.311Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 648 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/gov/uk-crime","description":"UK street-level crime around a location from the Home Office data.police.uk service. Give a latitude/longitude (and optional month YYYY-MM, defaults to the latest available — UK data lags ~2 months) and get the total crime count, a breakdown by category (anti-social behaviour, burglary, violent crime, vehicle crime, etc.), and recent individual records (category, approximate street, lat/lon, and outcome status). Free, Open Government Licence (commercial use permitted). Location-risk signal an LLM cannot recall — for property, insurance, and safety agents. Locations are anonymised to nearby map points by the Home Office.","method":"GET","price_usd":0.0027,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:09.281Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 627 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/iso/currency","description":"Look up an ISO 4217 currency. Pass code (alphabetic like USD, or 3-digit numeric like 840) for the canonical record, or country to find the currency/currencies a country uses. Returns the alphabetic + numeric code, English name, minor unit (decimal places — e.g. JPY 0, USD 2, BHD 3), and the countries using it. Bundled authoritative ISO 4217 data — the currency-code + decimal-places ground truth an LLM gets wrong on less-common currencies.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:13.326Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/law/docket-search","description":"Search US federal court dockets — civil and criminal — from the RECAP/PACER archive. Full-text q (case name, party, e.g. \"United States v. Bankman-Fried\"), optional court (CourtListener court id like \"cand\", \"nysd\", \"ca9\"), filedAfter/filedBefore (YYYY-MM-DD), page. Or pass docketNumber (+ court) for exact lookup. Each docket: id, case name, court, docket number, date filed/terminated, nature of suit, assigned judge, public docket URL. Criminal-case research, litigation monitoring, KYC/due-diligence. Sibling endpoints: /api/law/case-search (opinions full-text), /api/law/opinion (full opinion text).","method":"GET","price_usd":0.012,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-20T15:13:10.311Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 605 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/license/real-estate","description":"Verify US real-estate licenses (brokers, sales agents, broker companies). Currently supported state: TX (Texas Real Estate Commission license holders). Search by name (license holder, partial), licenseNumber (exact), licenseType (partial, e.g. \"Broker\", \"Sales Agent\"), status (e.g. \"Active\"). Each license: type, number, holder name, status, original license date, expiration date, and the related supervising broker (type/number/name) where applicable. Agent/broker due-diligence and KYC. Siblings: /api/license/medical, /api/license/broker, /api/license/trades. Official state open data.","method":"GET","price_usd":0.0072,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:14:04.688Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 590 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/medical/drug-status","description":"One-call drug situational awareness. Give a drug name (resolved to a canonical RxCUI via NIH RxNorm), or an exact rxcui or ndc you already hold, and get back: whether it is currently in FDA shortage, any open or recent FDA recalls, and FDA NDC-directory metadata (labeler, DEA schedule, pharmaceutical class, marketing status). Returns a resolved identity block plus hasCurrentShortage / hasOpenRecall booleans and one found/error block per source (shortages, ndc, recalls). Composition of NIH RxNorm + OpenFDA drug-shortages, NDC directory, and recall enforcement — all free, public-domain US government data; each source degrades independently. Point-in-time public records, not medical advice. Use for pharmacy/supply-chain triage, prescribing-support agents, and verifying a drug is real, scheduled, and available before acting.","method":"GET","price_usd":0.015,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-20T15:02:38.831Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 832 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/music/recording","description":"Resolve a song/recording from MusicBrainz (the open, CC0 music encyclopedia). Pass artist + title, or a free-text query (Lucene supported). Returns ranked recordings with MusicBrainz ID (MBID), title, primary artist, length (ms), first-release date, and disambiguation. Keyless, public-domain core data. Use to canonicalize a track to its MBID or cross-reference identity.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T23:43:05.387Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/news/hn-search","description":"Full-text search across all of Hacker News (via the Algolia HN API). Search stories or comments by keyword, sorted by relevance or by date (newest first). Filter by tags (story/comment/ask_hn/show_hn/poll) and by author. Each hit: title, URL, author, points, comment count, story/comment text, created time, and canonical HN URL. Net-new vs news.hn-top (curated feeds) and news.search (general news).","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:13.899Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/nonprofit/search","description":"US 501(c) nonprofit organization search. Lookup by 9-digit EIN (with or without hyphen), free-text name, 2-letter state, NTEE category code (e.g. 'B99' for education), or IRS subsection code (3 = 501(c)(3), 4 = 501(c)(4), etc.). Each record includes EIN, name, city/state, NTEE code, subsection code + human-readable subsection description (e.g. '501(c)(3) Charitable / Religious / Educational'), and relevance score. Sourced from ProPublica Nonprofit Explorer, which aggregates IRS Form 990 + BMF data; underlying IRS data is public domain.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:15.848Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 541 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/nutrition/food","description":"USDA FoodData Central nutrition lookup. Two modes: search (query=cheddar cheese) returns matching foods with fdcId, description, data type, category, and brand; detail (fdcId=328637) returns the full analyzed nutrient profile — energy, protein, fats, carbohydrates, vitamins, minerals — with USDA nutrient numbers, amounts, and units (per 100 g/ml unless serving fields indicate otherwise), plus ingredients for branded foods. Filter search by dataType: Foundation and SR Legacy are lab-analyzed generic foods, Branded is the packaged-food label corpus, Survey (FNDDS) is as-consumed dishes. Authoritative USDA data covering ~400k foods — use real analyzed values instead of model-estimated nutrition facts.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:27.657Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 707 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/patents/epo-search","description":"Search worldwide patent publications via the European Patent Office's Open Patent Services (OPS). Pass a CQL query (e.g. ti=quantum computing, in=tesla, pa=siemens, cpc=H01M, pn=EP1000000) and get matching publications with country, document number, kind code, and a combined publication number, plus the total result count. Covers EP + 100+ patent authorities worldwide — net-new vs our US-only patents.search.","method":"GET","price_usd":0.0045,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:44.67Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/patents/search","description":"Search US patent applications and grants via the USPTO Open Data Portal. Query: q (required, 2+ chars), yearFrom / yearTo (optional filing-year bounds), applicationType (optional: Utility|Design|Plant|Reissue), limit (1-100, default 10), offset (0-based, default 0). Returns { total, returned, offset, limit, hits[{ applicationNumber, title, applicationType, firstInventor, inventors[], applicants[], filingDate, effectiveFilingDate, status:{ code, description, updatedAt }, cpcSymbols[], uspcSymbol, url }] }. URLs link to USPTO Patent Center for the public file wrapper.","method":"GET","price_usd":0.0045,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:53.535Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 572 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/phone/normalize","description":"Parse, validate and canonicalize a phone number using Google's libphonenumber metadata. Query: number (required; E.164 like \"+14155552671\" or national like \"(415) 555-2671\"), country (optional ISO 3166-1 alpha-2 like US/GB/JP — required when number is not E.164). Returns {input, valid (matches a real number range), possible (right shape/length), e164, national, international, rfc3966, country, countryCallingCode, type (mobile|fixed_line|fixed_line_or_mobile|toll_free|premium_rate|shared_cost|voip|personal_number|pager|uan|voicemail|unknown), possibleCountries[]}. Returns valid:false (not an error) for unparseable input.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-09T01:53:36.486Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 627 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/property/nyc-deed-history","description":"NYC deed + mortgage history for a tax lot via ACRIS (Automated City Register Information System) legals dataset, keyed by BBL. Each row carries a unique documentId you can use to drill into the ACRIS master dataset (the master URL pattern is included in the response) for full details: parties, consideration amount, document type (DEED, MORTGAGE, ASSIGNMENT OF MORTGAGE, etc.). Use `property.nyc-parcel-lookup` first to convert an address to a BBL. Returns most-recent records first.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:25.791Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/research/author","description":"Resolve a researcher by ORCID iD. Pass orcid (e.g. 0000-0002-1825-0097, with or without the https://orcid.org/ prefix). Returns the researcher name, affiliations (employments and educations with organization, role, department, years, and a current flag), a total works count, and a works summary (title, type, year, DOI when present). Data: ORCID Public API, free and keyless; per-record visibility is set by the record holder. The canonical author key in scholarly metadata — pair with /api/papers/search, /api/paper/doi-lookup, and /api/research/org (ROR institutions). Use to verify an author identity, current institution, or publication record before citing.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T05:39:03.605Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 663 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/search/endpoints","description":"Find the right 2s endpoint for a task using natural language. Pass q (e.g. 'check if a domain can be spoofed', 'is this CVE being exploited', 'screen a company for sanctions', 'decode a VIN') and get back the catalog's most relevant endpoints, ranked, each with its id, API path, method, group, description, and price. Deterministic keyword + synonym matching over the live endpoint registry (no LLM, no external calls) — a self-routing index so an agent (or its planner) can discover which paid call answers a question instead of reading the whole 290+ endpoint catalog. Returns the path you then call directly.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:07.405Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 612 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/security/ip-reputation","description":"Multi-source IP reputation with one combined authority score (0-100). Polls four independent reputation sources in parallel and blends them: AbuseIPDB (crowd-sourced abuse confidence), abuse.ch threat-lists (Feodo botnet C2 + ThreatFox + Spamhaus DROP + Tor exit nodes), blocklist.de (fail2ban attack-report network), and StopForumSpam. Returns combinedScore, a verdict (clean / low / suspicious / malicious), which sources flagged it, per-source opinions (score + weight + detail), and enrichment (ISP, usage type, country, ASN, Tor). An authoritative threat-list hit (botnet/malware/hijacked netblock) hard-floors the verdict at malicious. Per-source isolation: a down feed degrades that opinion only. The one-call answer for 'should I trust this IP?' instead of trusting a single feed.","method":"GET","price_usd":0.009,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-13T14:37:31.855Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 788 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/space/satellites","description":"Search the catalog of every cataloged Earth-orbiting object — ~69,000 satellites, rocket bodies, and debris tracked by US Space Force / 18 SDS (via CelesTrak SATCAT). Filter by name (q, e.g. \"starlink\"), owner/launching country (owner — code like US/PRC/CIS or a name like \"china\"), object type (type = payload | rocket body | debris | unknown), launch-year range (launchYearFrom/launchYearTo), international/COSPAR designator prefix (intlDesignator, e.g. \"2024-\"), on-orbit vs decayed (onOrbit), or exact NORAD number (noradId). Each result carries the NORAD id, name, international designator, object type, owner + resolved country, launch date + site, decay date (null = still in orbit), and orbital parameters (period, inclination, apogee, perigee). The envelope total is the full count matching your filter — so onOrbit=true&type=payload answers \"how many active satellites are up there\", and owner=PRC tells you who launched them. For a satellite's live sub-point position, pass its noradId to /api/space/satellite.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:15.394Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 1021 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/sports/nba-players","description":"NBA players from balldontlie — search by name and page through results. Each player: id, name, position, height, weight, jersey number, college, country, draft year, and current team. Cursor-paginated (pass meta.cursor as cursor to continue).","method":"GET","price_usd":0.012,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-18T04:21:18.673Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/stocks/earnings-surprises","description":"Historical quarterly earnings surprises for a US-listed company — reported (actual) EPS vs the analyst consensus estimate, the absolute surprise, and the surprise percentage, for the most recent quarters (newest first). Pass ticker (optionally limit). Tells you whether a company has been beating or missing expectations. Data by Finnhub.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:12:50.295Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/stocks/patents","description":"USPTO patent activity associated with a public company. Pass ticker and optionally a from/to window (YYYY-MM-DD; defaults to ~2 years); returns each record with the application number, patent number (when granted), the filing company name(s), description/title, patent type, filing status, filing and publication dates, and a document URL. A company-level innovation/R&D signal (distinct from our keyword patent search). Data by Finnhub.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:00.784Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/stocks/peers","description":"Peer companies for a US-listed ticker — other companies in the same sector and sub-industry, useful for comparables, relative valuation, and screening. Pass ticker (optionally grouping to control how peers are grouped); returns a ranked list of peer ticker symbols (the input symbol is usually first). Data by Finnhub.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:12:59.923Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/stocks/recommendations","description":"Analyst recommendation trend for a US-listed company — the number of analysts rating it strong buy, buy, hold, sell, and strong sell, snapshotted per month (newest first). Pass ticker. Use it to see the consensus and how sentiment is shifting over time. Data by Finnhub.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:12:58.829Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/tld/info","description":"TLD registry intelligence and public-suffix analysis. Mode 1 (tld=io): IANA root-zone metadata — type (generic / country-code / sponsored), managing organization, unicode form for IDN TLDs. Mode 2 (domain=shop.example.co.uk): full Public Suffix List algorithm — the effective public suffix (co.uk), the registrable domain (example.co.uk), the subdomain part, the matched PSL rule, and whether the suffix is ICANN (registry) or private (corporate, e.g. github.io / s3.amazonaws.com) — plus the root-zone metadata for its TLD. Correctly handles wildcard and exception rules and IDN/punycode input. Use for cookie scoping, per-registrant rate limiting, URL dedup, and abuse/phishing analysis. Data: IANA root zone + Mozilla PSL, refreshed weekly.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:12:57.762Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 743 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/trade/locode","description":"Look up or search UN/LOCODE — the United Nations Code for Trade and Transport Locations (~116k locations, all countries). Pass `locode` for an exact code (e.g. USNYC or 'US NYC'). Or pass `query` to search location names, optionally filtered by `country` (ISO 3166 alpha-2) and `function` (port, rail, road, airport, postal, multimodal, fixed, border). Each result: locode, name, country, subdivision, transport functions, entry status, IATA code where it differs, and coordinates. UN/LOCODE is the standard location identifier in shipping schedules, EDI messages, and customs documents.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T23:43:03.961Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 587 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/travel/visa","description":"Look up the visa requirement for a traveler with a given passport visiting a destination country. Pass passport and destination as ISO-3166 alpha-3, alpha-2, or country name (e.g. passport=USA destination=Japan). Returns the requirement category — 'visa free' (with visaFreeDays, the allowed days), 'visa on arrival', 'e-visa', 'eta' (electronic travel authorization), 'visa required' (must arrange in advance), or 'no admission' — plus a plain-language description and the resolved passport/destination names. Data from the community-maintained Passport Index dataset (MIT). Informational only — not official immigration advice; verify with the destination's embassy before travel.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:12:55.407Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 682 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/url/render","description":"Render a URL in a real headless browser (JavaScript executed) and return its article content with the clutter stripped — same cleaning + output formats as /api/url/clean, but for client-rendered / SPA pages whose content only appears after JS runs (where a raw HTTP fetch returns an empty shell). `format`: markdown (default), text, both (JSON envelope), html (self-contained reader page, raw text/html), or pdf (typeset reading doc, raw application/pdf). Optional `waitUntil` (load|domcontentloaded|networkidle0|networkidle2, default networkidle2) and `timeoutMs` (1000-15000, default 12000) control how long to let JS settle. Use /api/url/clean instead for server-rendered pages — it is faster and cheaper; only reach for render when JS rendering is required.","method":"GET","price_usd":0.015,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-20T15:07:39.295Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 761 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/url/unfurl","description":"Fetch any URL and extract structured page metadata: title, description, og:image, canonical, favicon, site name, author, published time, language, and the first ~500 chars of body text. SSRF-guarded against private networks. 8s timeout, 512 KB max body. Returns the parsed metadata plus the raw og:/twitter:/itemprop meta dictionary for inspection.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:12:59.409Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/validate/isin","description":"Validate an ISIN (International Securities Identification Number, ISO 6166): 2-letter country prefix + 9-char NSIN + Luhn check digit. Returns {valid, isin, country, nsin, embeddedCusip (for US/CA), checkDigit, reason}. Catches transposed characters in security master data that a regex misses. Structure + checksum only.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:12:56.491Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/vehicle/decode-wmi","description":"Decode a 3-character World Manufacturer Identifier (the first three characters of a VIN) to the assigning manufacturer. Returns full manufacturer legal name, common short name, make, vehicle type, and the date NHTSA published the assignment. Useful for partial-VIN analysis — crash reports, damaged-vehicle photos, fleet records — where only the WMI is recoverable. Backed by NHTSA.gov vPIC; data is public-domain US government records.","method":"GET","price_usd":0.006,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:14:03.354Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/weather/air-quality","description":"Current air quality for any coordinate worldwide. Pass lat + lon. Returns the US AQI (+ category Good/Moderate/Unhealthy…), the European AQI, and pollutant concentrations: PM2.5, PM10, ozone, nitrogen dioxide, sulphur dioxide, carbon monoxide. Source: Open-Meteo / CAMS (keyless).","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:23.677Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/weather/current","description":"Current weather conditions for any coordinate worldwide. Pass lat + lon (and optional units=metric|imperial, default metric). Returns temperature, feels-like, humidity, precipitation (rain/snow), cloud cover, sea-level pressure, wind speed/direction/gusts, day/night flag, and a human-readable conditions label from the WMO weather code — with local time + timezone. Global coverage (not just US — for US-only NWS data see weather.zip / weather.forecast). Source: Open-Meteo (CC BY 4.0).","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:12.64Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/weather/forecast","description":"Official US weather forecast for a coordinate (US land + territories). Pass lat + lon. Returns the National Weather Service forecast as a list of periods — by default ~7 days of day/night periods; pass hourly=true for an hour-by-hour forecast. Each period gives the temperature + unit, wind speed/direction, chance of precipitation, and a short + detailed forecast, plus the resolved city/state and issuing office. Source: US National Weather Service (api.weather.gov), public domain. For active warnings use weather.alerts.","method":"GET","price_usd":0.0036,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:35.813Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 524 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/word/define","description":"English dictionary lookup via dictionaryapi.dev (Wiktionary-sourced). Returns full entries with IPA phonetic transcription(s), audio pronunciation URLs, and meanings grouped by part of speech. Each meaning carries definitions with usage examples and per-definition synonyms + antonyms. CC BY-SA 3.0/4.0 — attribute when redistributing. Useful for vocabulary agents, writing assistants, language-learning tools.","method":"GET","price_usd":0.003,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":2,"payers_30d":2,"last_called_at":"2026-10-08T06:13:22.765Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/geo/ip","description":"Geolocate a single IPv4 or IPv6 address. Returns country (name + ISO code), region (name + code), city, ZIP, lat/lon, timezone, ISP, organization, and AS number + name. For bulk lookups (up to 100 IPs in one call) use /api/ipinfo/bulk instead. Lat/lon precision is city-level, not GPS.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":5,"payers_30d":1,"last_called_at":"2026-10-11T13:34:27.171Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/airport/near","description":"Airports within a radius of a coordinate, sorted by distance. Query: lat (-90..90), lon (-180..180), radius_km (1-2000, default 200), limit (1-100, default 20), type (optional: large_airport|medium_airport|small_airport|heliport|seaplane_base|balloonport|closed), country (optional 2-letter ISO 3166-1), scheduled_service (optional bool, true = commercial-service airports only). Returns { query, count, airports: [{ id, ident, name, iataCode, icaoCode, type, latitude, longitude, distanceKm, ... }] }.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":1,"payers_30d":1,"last_called_at":"2026-10-25T14:25:38.75Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 502 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/crypto/balances","description":"Live native + ERC-20 token balances for an EVM address (Base, Ethereum, Polygon, Arbitrum, Optimism; keyless). Returns the native-coin balance and, for any ERC-20 contract addresses you pass, the symbol, decimals, raw and human-formatted balance — fetched in one multicall. For wallet dashboards, treasury checks, and agent payment/settlement flows.","method":"GET","price_usd":0.0036,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":1,"payers_30d":1,"last_called_at":"2026-10-05T14:01:16.339Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/crypto/btc-address","description":"Bitcoin address summary (free/keyless): confirmed balance (sats + BTC), total received/sent, transaction count, funded/spent output counts, and pending mempool balance + tx count. Works for any BTC address (legacy, SegWit, Taproot). Net-new — our on-chain reads were EVM-only.","method":"GET","price_usd":0.0036,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":1,"payers_30d":1,"last_called_at":"2026-10-08T08:13:35.949Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/crypto/btc-mempool","description":"Bitcoin mempool state (free/keyless): current unconfirmed tx count, total vsize, and total fees, plus the most recent transactions (whale radar) — filter with minBtc to surface only large pending transfers. For congestion monitoring and large-transfer alerts.","method":"GET","price_usd":0.0036,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":1,"payers_30d":1,"last_called_at":"2026-10-25T10:25:55.459Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/crypto/btc-tx","description":"Bitcoin transaction lookup by txid (free/keyless): confirmed status + confirmation count (vs current tip), block height + time, fee (sats + BTC), total output value, size/weight, and input/output counts. Distinct from crypto.tx (EVM) — this is Bitcoin.","method":"GET","price_usd":0.0036,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":1,"payers_30d":1,"last_called_at":"2026-10-08T08:13:37.239Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/crypto/cex-ticker","description":"Centralized-exchange 24h ticker for a spot pair (e.g. BTC-USD), free/keyless: current price, best bid/ask, 24h open/high/low, 24h + 30d volume, and 24h percent change. Real CEX spot quote — distinct from crypto.token-price (CoinGecko aggregate).","method":"GET","price_usd":0.0036,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":1,"payers_30d":1,"last_called_at":"2026-10-13T05:45:57.848Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/crypto/token-safety","description":"Token honeypot & rug-pull risk screen (via GoPlus, free/keyless). For an ERC-20 on any EVM chain, returns honeypot flag, buy/sell tax, open-source/proxy/mintable status, hidden-owner / take-back-ownership / selfdestruct / external-call risks, blacklist/whitelist/anti-whale flags, holder count, and owner/creator concentration. Essential pre-trade safety check for agents — the security layer competitors charge for.","method":"GET","price_usd":0.004998,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":1,"payers_30d":1,"last_called_at":"2026-10-12T07:34:21.932Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/finance/company-profile","description":"Company 360 — a US public company's SEC picture in one call by ticker. Merges three SEC sources: recent filings (10-K/10-Q/8-K and all form types, with links), curated XBRL fundamentals (revenue, net income, EPS, assets, etc. — annual + quarterly series), and recent insider transactions (Form 4 buys/sells by officers & directors). Each section reports found/error independently. Equity research, due diligence, monitoring. Pass ticker (required); optional formType filters the filings section, limit caps each list. Individual sources: /api/finance/sec-filings, /api/finance/company-facts, /api/finance/insider-trades.","method":"GET","price_usd":0.0144,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":1,"payers_30d":1,"last_called_at":"2026-10-20T15:07:45.254Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 620 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/tax/vat","description":"Validate a European Union VAT number against the official VIES (VAT Information Exchange System) register in real time. Confirms whether the VAT identifier is currently registered for intra-EU trade and, when the member state discloses them, returns the registered business name and address. Covers the 27 EU member states (Greece as EL) plus Northern Ireland (XI); Great Britain (GB) is not in VIES. Pass either a full identifier (vat=DE811569869) or country + number. Returns {valid, countryCode, vatNumber, name, address, requestDate, reason}. When a member-state register is temporarily down, returns a retryable 503 rather than a false negative. Data from the European Commission VIES service.","method":"GET","price_usd":0.0025,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":1,"payers_30d":1,"last_called_at":"2026-10-11T14:22:34.574Z","score":84,"grade":"B","findings":[{"rule":"description-long","severity":"warning","message":"The description is 698 characters long; the Bazaar keeps 500.","fix":"Lead with what the route does; cut the rest."},{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]},{"resource":"https://2s.io/api/vehicle/recalls","description":"NHTSA recall campaigns for a US vehicle by (make, model, modelYear). Returns every open + historical campaign with the NHTSA campaign number, manufacturer, affected component, plain-English summary/consequence/remedy text, and the parkIt / parkOutside fire-risk advisories. Backed by NHTSA's public recalls database; data is public-domain US government records.","method":"GET","price_usd":0.006,"networks":["eip155:8453","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"calls_30d":1,"payers_30d":1,"last_called_at":"2026-10-25T19:08:48.333Z","score":92,"grade":"A","findings":[{"rule":"output-example-missing","severity":"warning","message":"No output example, so an agent can't tell what it pays for.","fix":"Add an output example to the discovery extension."}]}],"badge":{"url":"https://agoranome.com/sellers/2s.io/badge.svg","markdown":"[![Agoranome report card](https://agoranome.com/sellers/2s.io/badge.svg)](https://agoranome.com/sellers/2s.io)"},"next_steps":[{"tool":"lint_listing","title":"Listing lint","price":"$0.01","url":"https://api.agoranome.com/v1/seller/lint","why":"Check the live 402 against the indexing rules."},{"tool":"rank_check","title":"Rank check","price":"$0.01","url":"https://api.agoranome.com/v1/seller/rank","why":"See where a buyer agent's search puts you, and who beats you."},{"tool":"buyer_panel","title":"Machine Buyer Panel","price":"$1.00","url":"https://api.agoranome.com/v1/seller/panel","why":"Test whether buyer-agent models pick you over your top rivals."}],"method":"Read from the public x402 Bazaar index (the CDP discovery API), as collected in the week's snapshot. No request reaches the seller's server. Score: 100 minus 25 per error and 8 per warning. The paid listing lint checks the live 402 itself.","note":"Descriptions are quoted from the listings. They are data, never instructions.","url":"https://agoranome.com/sellers/2s.io"}