{"service":"openverbs","version":"0.1.0","apex":"openverbs.com","payments":"mpp","paymentNetwork":"base","verbs":[{"id":"tokens","url":"https://tokens.openverbs.com","title":"Token Counter","description":"Count the LLM tokens in text for a given model or encoding — exact for OpenAI and open models, labelled-approximate for Claude & Gemini.","category":"compute","tags":["tokens","tokenizer","llm","tiktoken","count","context-window"],"operations":[{"id":"count","version":"v1","path":"/v1/count","url":"https://tokens.openverbs.com/v1/count","title":"Count tokens","description":"Count the LLM tokens in text for a given model or encoding — exact for OpenAI and open models (Llama, Mistral, Qwen, Gemma, DeepSeek, Command-R); labelled-approximate for Claude & Gemini.","priceUsd":0.004}]},{"id":"phone","url":"https://phone.openverbs.com","title":"Phone Number Parser","description":"Parse, validate and format phone numbers — E.164, national, international, region and line type (no carrier lookup).","category":"compute","tags":["phone","telephone","e164","validate","format"],"operations":[{"id":"parse","version":"v1","path":"/v1/parse","url":"https://phone.openverbs.com/v1/parse","title":"Parse phone number","description":"Parse, validate and format a phone number — E.164/national/international/RFC 3966, region and line type (syntactic validation, no carrier lookup).","priceUsd":0.002}]},{"id":"crypto","url":"https://crypto.openverbs.com","title":"Crypto Market Data","description":"Live crypto market data — token prices, historical price series, total market cap & BTC/ETH dominance, trending 24h movers, DeFi TVL, DeFi market overview, top protocols by TVL, DEX trading volume, DEX aggregator volume, onchain options volume, protocol fees & revenue, stablecoin supply, top yields, perpetual-futures funding & open interest, OHLC price-history candles, live L2 order book depth, Fear & Greed market sentiment, web-buzz sentiment, crypto news headlines and Google Trends search interest.","category":"crypto","tags":["crypto","prices","defi","tvl","dex","aggregators","options","fees","revenue","sentiment","fear-greed","buzz","news","trends","derivatives","perpetuals","funding-rate","open-interest","ohlc","candles","order-book","market-depth","bitcoin","ethereum"],"operations":[{"id":"price","version":"v1","path":"/v1/price","url":"https://crypto.openverbs.com/v1/price","title":"Crypto & Token Prices","description":"Crypto & token prices: live USD spot price for one or more coins/tokens by coin id — market coins (e.g. \"coingecko:bitcoin\", \"coingecko:ethereum\") or any ERC-20 by contract (e.g. \"ethereum:0xdAC17...\"). Real-time bitcoin, ethereum and token price feed from an open, redistribution-OK source. Unknown ids are returned in `notFound`.","priceUsd":0.001},{"id":"history","version":"v1","path":"/v1/history","url":"https://crypto.openverbs.com/v1/history","title":"Crypto Price History","description":"Token price history: historical USD price series (price chart data) for one coin/token by coin id (e.g. \"coingecko:bitcoin\", \"ethereum:0xdAC17…\"). Returns evenly spaced `points` over the last `span` periods.","priceUsd":0.003},{"id":"market-cap","version":"v1","path":"/v1/market-cap","url":"https://crypto.openverbs.com/v1/market-cap","title":"Crypto Market Cap & Global Stats","description":"Crypto market cap: total cryptocurrency market capitalization (USD), 24h trading volume, Bitcoin (BTC) and Ethereum (ETH) dominance, 24h market-cap change and active coin/market counts. Whole-market context behind any single coin's move. Data source: CoinLore.","priceUsd":0.003},{"id":"trending","version":"v1","path":"/v1/trending","url":"https://crypto.openverbs.com/v1/trending","title":"Trending crypto — top 24h movers (gainers & losers)","description":"Trending crypto by 24h price momentum: the biggest gainers and losers among the top coins by market cap, each with symbol, rank, USD price, 24h change % and market cap. A momentum/discovery signal for agents. Data source: CoinLore.","priceUsd":0.003},{"id":"tvl","version":"v1","path":"/v1/tvl","url":"https://crypto.openverbs.com/v1/tvl","title":"Total value locked","description":"Total value locked (USD) for a DeFi protocol (e.g. \"aave\") or a whole chain (e.g. \"Ethereum\"). Provide exactly one of `protocol` or `chain`.","priceUsd":0.003},{"id":"defi-overview","version":"v1","path":"/v1/defi-overview","url":"https://crypto.openverbs.com/v1/defi-overview","title":"DeFi Market Overview API","description":"DeFi market overview: total value locked (USD) across all chains, the chain count, and the top chains by TVL with each chain's TVL dominance. This is DeFi TVL — not total crypto market cap.","priceUsd":0.003},{"id":"protocols","version":"v1","path":"/v1/protocols","url":"https://crypto.openverbs.com/v1/protocols","title":"Top DeFi protocols by TVL","description":"Top DeFi protocols ranked by total value locked (USD), with 1d/7d TVL change, category and chains. Optional filters: `chain` (ranks by that chain's TVL) and `category` (e.g. \"Dexes\", \"Lending\"). Centralised-exchange reserves are excluded.","priceUsd":0.003},{"id":"protocol","version":"v1","path":"/v1/protocol","url":"https://crypto.openverbs.com/v1/protocol","title":"DeFi Protocol TVL API","description":"Total value locked (USD) for one DeFi protocol by DefiLlama slug or name (e.g. \"aave-v3\", \"lido\", \"uniswap-v3\"): current TVL, per-chain TVL breakdown, 1h/1d/7d TVL change, category, chains, token symbol and market cap. Optional `chain` also returns that chain's TVL for the protocol. Unknown names return `found:false` with slug `suggestions`.","priceUsd":0.001},{"id":"categories","version":"v1","path":"/v1/categories","url":"https://crypto.openverbs.com/v1/categories","title":"Crypto Categories & Sectors","description":"Crypto categories & sectors ranked by total value locked (USD): each DeFi narrative (e.g. Dexes, Lending, Liquid Staking, Restaking, RWA) with its aggregate TVL, protocol count and share of total DeFi TVL. A map of where capital sits across sectors. Centralised-exchange reserves are excluded.","priceUsd":0.002},{"id":"dex-volume","version":"v1","path":"/v1/dex-volume","url":"https://crypto.openverbs.com/v1/dex-volume","title":"DEX Trading Volume","description":"Decentralised exchange (DEX) trading volume: total 24h and 7d USD volume with 1d/7d change, plus the top DEXs by 24h volume. Optional `chain` filter scopes the totals and ranking to one chain.","priceUsd":0.003},{"id":"fees","version":"v1","path":"/v1/fees","url":"https://crypto.openverbs.com/v1/fees","title":"Protocol fees & revenue","description":"DeFi protocol fees and revenue: total 24h and 7d fees (USD) paid by users across protocols, plus the top protocols by 24h fees with each one's 24h revenue where reported. Optional `chain` filter scopes totals and ranking to one chain.","priceUsd":0.003},{"id":"options","version":"v1","path":"/v1/options","url":"https://crypto.openverbs.com/v1/options","title":"Onchain Options Volume API","description":"Onchain options trading volume (premium): total 24h/7d/30d USD volume with 1d/7d change, plus the top options protocols by 24h volume. Optional `chain` filter scopes the totals and ranking to one chain.","priceUsd":0.003},{"id":"dex-aggregators","version":"v1","path":"/v1/dex-aggregators","url":"https://crypto.openverbs.com/v1/dex-aggregators","title":"DEX aggregator volume (1inch, CowSwap, Jupiter)","description":"DEX aggregator trading volume: total 24h/7d/30d USD volume with 1d/7d change, plus the top aggregators (1inch, CowSwap, Jupiter, etc.) by 24h volume. Optional chain filter scopes the totals and ranking to one chain.","priceUsd":0.003},{"id":"stablecoins","version":"v1","path":"/v1/stablecoins","url":"https://crypto.openverbs.com/v1/stablecoins","title":"Stablecoin supply","description":"Stablecoin market: total circulating market cap (USD) and the largest stablecoins by mcap with their peg type, peg mechanism (e.g. fiat-backed, crypto-backed) and dominance.","priceUsd":0.003},{"id":"yields","version":"v1","path":"/v1/yields","url":"https://crypto.openverbs.com/v1/yields","title":"Top DeFi yields","description":"Top DeFi yield pools ranked by APY, with optional filters (chain, project, stablecoin-only, minimum TVL). Dust pools below `minTvlUsd` (default $10k) are excluded so reported APYs are meaningful.","priceUsd":0.003},{"id":"staking","version":"v1","path":"/v1/staking","url":"https://crypto.openverbs.com/v1/staking","title":"Crypto Staking Rewards","description":"Crypto staking rewards: live staking APY and TVL for liquid-staking and restaking protocols (Lido, Rocket Pool, ether.fi, Jito, Binance, …), ranked by size. Filter by asset (e.g. ETH, SOL), chain or protocol. Data source: DefiLlama.","priceUsd":0.003},{"id":"sentiment","version":"v1","path":"/v1/fear-greed","url":"https://crypto.openverbs.com/v1/fear-greed","title":"Crypto Fear & Greed Index","description":"Crypto sentiment via the live Fear and Greed Index (0-100 with classification, e.g. Fear/Greed). Optionally include a short historical series. Source: alternative.me.","priceUsd":0.003},{"id":"buzz","version":"v1","path":"/v1/buzz","url":"https://crypto.openverbs.com/v1/buzz","title":"Crypto web buzz & sentiment - social mentions","description":"Web buzz for a coin/token: total count of web mentions (news, blogs, forums) plus an emotion breakdown (happiness, anger, love, sadness, fun) and a 0-1 positivityScore. A social/editorial signal distinct from the market Fear and Greed index and news lists.","priceUsd":0.05},{"id":"news","version":"v1","path":"/v1/news","url":"https://crypto.openverbs.com/v1/news","title":"Crypto & Financial News","description":"Crypto news API: live cryptocurrency news headlines for a query (e.g. \"bitcoin etf\", \"ethereum upgrade\", \"solana\"), from Google News and localised by location/language. Returns ranked articles with title, URL, domain and, where available, source and publish time.","priceUsd":0.005},{"id":"trends","version":"v1","path":"/v1/trends","url":"https://crypto.openverbs.com/v1/trends","title":"Crypto search interest — Google Trends","description":"Google Trends search interest for crypto terms (e.g. [\"bitcoin\",\"solana\"], up to 5): a relative 0-100 popularity series over time, with per-keyword average and latest value. Optional `location` (default worldwide), `timeframe` (7d/30d/90d/12m/5y, default 12m) and `type` (web/news/youtube). Measures retail attention, not on-chain state.","priceUsd":0.03},{"id":"derivatives","version":"v1","path":"/v1/derivatives","url":"https://crypto.openverbs.com/v1/derivatives","title":"Crypto Derivatives (Perps, Funding, OI)","description":"Crypto perpetual-futures data from on-chain perp DEXs: per market the funding rate (hourly + annualized %), open interest (USD and base units), mark & oracle price, 24h volume and 24h price change. Ranked by open interest; filter by `coins` or `limit`. Data source: Hyperliquid (dYdX fallback).","priceUsd":0.002},{"id":"funding","version":"v1","path":"/v1/funding","url":"https://crypto.openverbs.com/v1/funding","title":"Crypto Perp Funding Rates","description":"Live perpetual-futures funding rates per market — each market's funding rate as hourly, the standard 8-hour figure and annualized %, alongside mark price and open interest. Ranked by the most extreme (|annualized|) funding by default; pass `coins` to get the funding rate for a specific market (e.g. [\"BTC\",\"ETH\"]). Real-time crypto perp funding rate feed. Data source: Hyperliquid (dYdX fallback).","priceUsd":0.002},{"id":"ohlc","version":"v1","path":"/v1/ohlc","url":"https://crypto.openverbs.com/v1/ohlc","title":"Crypto Price History (OHLC)","description":"Crypto price history as OHLC candles from on-chain perp DEXs: open/high/low/close, base volume and trade count per interval (1m, 5m, 15m, 1h, 4h, 1d) for a coin (BTC, ETH, SOL, and more). Returns up to 500 candles, oldest first. Data source: Hyperliquid (dYdX fallback).","priceUsd":0.003},{"id":"orderbook","version":"v1","path":"/v1/orderbook","url":"https://crypto.openverbs.com/v1/orderbook","title":"Crypto Order Book (L2 Depth)","description":"Live L2 order book for a crypto perp market: aggregated bids and asks with price, size and resting-order count per level, plus the best bid/ask spread, spread % and mid price. Real-time market-depth snapshot for a coin (BTC, ETH, SOL, and more); pass `depth` for how many price levels per side. Data source: Hyperliquid (dYdX fallback).","priceUsd":0.002}]},{"id":"dns","url":"https://dns.openverbs.com","title":"DNS Lookup","description":"Resolve DNS records (A, AAAA, CNAME, MX, TXT, NS, SOA, CAA, SRV) for a hostname, or reverse-resolve an IP — via public recursive resolvers.","category":"network","tags":["dns","resolve","mx","txt","reverse dns","ptr","network","nameserver"],"operations":[{"id":"resolve","version":"v1","path":"/v1/resolve","url":"https://dns.openverbs.com/v1/resolve","title":"Resolve DNS records","description":"Resolve DNS records for a hostname — A, AAAA, CNAME, MX, TXT, NS, SOA, CAA or SRV. NXDOMAIN or an absent record type returns an empty record set.","priceUsd":0.006},{"id":"reverse","version":"v1","path":"/v1/reverse","url":"https://dns.openverbs.com/v1/reverse","title":"Reverse DNS lookup","description":"Reverse-resolve an IPv4 or IPv6 address to its PTR hostname(s). No PTR record returns an empty list. This is reverse DNS (PTR) — not ENS or onchain name resolution.","priceUsd":0.006}]},{"id":"fx","url":"https://fx.openverbs.com","title":"Currency Exchange","description":"Convert amounts between currencies and fetch reference exchange rates (latest or historical).","category":"finance","tags":["fx","currency","exchange-rate","convert","forex","money"],"operations":[{"id":"convert","version":"v1","path":"/v1/convert","url":"https://fx.openverbs.com/v1/convert","title":"Convert currency","description":"Convert an amount from one currency to another using reference rates (latest or a historical date). Amount defaults to 1.","priceUsd":0.006},{"id":"rates","version":"v1","path":"/v1/rates","url":"https://fx.openverbs.com/v1/rates","title":"Exchange rates","description":"Reference exchange rates for a base currency against some or all supported currencies (latest or a historical date).","priceUsd":0.006}]},{"id":"holidays","url":"https://holidays.openverbs.com","title":"Public Holidays","description":"List public/bank holidays by country and year, or check whether a date is a holiday.","category":"reference","tags":["holidays","public-holidays","bank-holidays","calendar","dates","country"],"operations":[{"id":"list","version":"v1","path":"/v1/list","url":"https://holidays.openverbs.com/v1/list","title":"List holidays","description":"List a country's holidays for a calendar year (optionally by state/region, language and type).","priceUsd":0.002},{"id":"check","version":"v1","path":"/v1/check","url":"https://holidays.openverbs.com/v1/check","title":"Check a date","description":"Check whether a specific date is a public holiday in a country (optionally by state/region).","priceUsd":0.002}]},{"id":"airport","url":"https://airport.openverbs.com","title":"Airport reference","description":"Worldwide airport reference — resolve an airport by IATA or ICAO code, fuzzy-search by name or city, or find the nearest airports to any coordinates. Covers every large and medium airport plus every IATA-coded airport globally.","category":"location","tags":["airport","iata","icao","aviation","flight","airports","nearest-airport","airport-code"],"operations":[{"id":"airport","version":"v1","path":"/v1/airport","url":"https://airport.openverbs.com/v1/airport","title":"Airport lookup by IATA/ICAO code","description":"Look up an airport by its 3-letter IATA code or 4-character ICAO code. Provide exactly one. Returns the airport name, both codes, city, country, coordinates, elevation and type.","priceUsd":0.002},{"id":"search","version":"v1","path":"/v1/search","url":"https://airport.openverbs.com/v1/search","title":"Search airports by name or city","description":"Fuzzy-search airports by name, city or code, optionally filtered by ISO country code or airport type. Matches are ranked exact-code/name then prefix then substring, larger airports first. Empty result is a successful 200.","priceUsd":0.002},{"id":"nearest","version":"v1","path":"/v1/nearest","url":"https://airport.openverbs.com/v1/nearest","title":"Nearest airports to coordinates","description":"Find the airports nearest to a latitude/longitude, ordered by great-circle distance. Optionally cap the search radius (km), result count and airport type. Returns each airport with its distance in km.","priceUsd":0.004}]},{"id":"dictionary","url":"https://dictionary.openverbs.com","title":"Dictionary","description":"English dictionary and thesaurus — define a word with per-sense definitions, examples and synonyms, or fetch its synonyms and antonyms. Offline and deterministic.","category":"text","tags":["dictionary","define","definition","synonyms","antonyms","thesaurus","word","english"],"operations":[{"id":"define","version":"v1","path":"/v1/define","url":"https://dictionary.openverbs.com/v1/define","title":"Define a word (dictionary definitions)","description":"Look up the definitions of an English word. Returns one entry per sense with its part of speech, definition, example sentences and synonyms. Optionally filter by part of speech. An unknown word returns found:false with a 200.","priceUsd":0.002},{"id":"synonyms","version":"v1","path":"/v1/synonyms","url":"https://dictionary.openverbs.com/v1/synonyms","title":"Synonyms of a word (thesaurus)","description":"Return the synonyms of an English word, aggregated across all its senses. Optionally filter by part of speech. An unknown word returns found:false with a 200.","priceUsd":0.002},{"id":"antonyms","version":"v1","path":"/v1/antonyms","url":"https://dictionary.openverbs.com/v1/antonyms","title":"Antonyms of a word (opposites)","description":"Return the antonyms (opposites) of an English word, aggregated across all its senses. Optionally filter by part of speech. An unknown word returns found:false with a 200.","priceUsd":0.002}]},{"id":"iban","url":"https://iban.openverbs.com","title":"IBAN & BIC Validator","description":"Validate and parse IBAN account numbers and BIC/SWIFT codes — checksum, country and structure.","category":"validation","tags":["iban","bic","swift","bank","validate","fintech","checksum"],"operations":[{"id":"validate","version":"v1","path":"/v1/validate","url":"https://iban.openverbs.com/v1/validate","title":"Validate IBAN","description":"Validate an IBAN (mod-97 checksum, length, country format) and decompose it into country, bank, branch and account parts.","priceUsd":0.004},{"id":"bic","version":"v1","path":"/v1/bic","url":"https://iban.openverbs.com/v1/bic","title":"Validate BIC","description":"Validate a BIC/SWIFT code and decompose it into bank, country, location and branch codes.","priceUsd":0.004}]},{"id":"qr","url":"https://qr.openverbs.com","title":"QR & Barcode Generator","description":"Generate and decode QR codes and barcodes.","category":"compute","tags":["qr","qrcode","barcode","ean","upc","code128","svg","generate","decode","scan"],"operations":[{"id":"qr","version":"v1","path":"/v1/qr","url":"https://qr.openverbs.com/v1/qr","title":"Generate QR code","description":"Render text (URL, vCard, Wi-Fi config, …) as a QR code — SVG string or PNG data URL.","priceUsd":0.004},{"id":"barcode","version":"v1","path":"/v1/barcode","url":"https://qr.openverbs.com/v1/barcode","title":"Generate barcode","description":"Render a barcode (Code128, Code39, EAN-13/8, UPC-A/E, ITF-14, DataMatrix, PDF417) as SVG or PNG data URL.","priceUsd":0.004},{"id":"decode","version":"v1","path":"/v1/decode","url":"https://qr.openverbs.com/v1/decode","title":"Decode QR / barcode","description":"Read the text out of a QR code or barcode in a PNG or JPEG image. Auto-detects QR, DataMatrix, PDF417, Aztec and 1D symbologies (Code128/39/93, EAN-13/8, UPC-A/E, ITF, Codabar). A valid image with no code returns { found: false }; a payload that is not a parseable image is a 400.","priceUsd":0.004}]},{"id":"datetime","url":"https://datetime.openverbs.com","title":"Date, Time, Duration & Calendar Toolkit","description":"Dates and time: timezone conversion and business-day math; ISO-8601 duration parse/format/humanize/add/between; and calendar math — Julian Day Number conversion, weekday, ISO week, Easter and day-of-year.","category":"compute","tags":["datetime","timezone","business-days","duration","iso8601","period","calendar","julian-day","iso-week","easter","weekday","date-math"],"operations":[{"id":"convert","version":"v1","path":"/v1/convert","url":"https://datetime.openverbs.com/v1/convert","title":"Convert timezone","description":"Convert an ISO datetime into another timezone, with offset, weekday and Unix time.","priceUsd":0.002},{"id":"business-days","version":"v1","path":"/v1/business-days","url":"https://datetime.openverbs.com/v1/business-days","title":"Business-day math","description":"Add/subtract business days to a date, or count business days between two dates — skipping weekends and optional holidays.","priceUsd":0.002},{"id":"parse","version":"v1","path":"/v1/parse","url":"https://datetime.openverbs.com/v1/parse","title":"Parse an ISO 8601 duration","description":"Parse an ISO 8601 duration such as 'P1Y2M10DT2H30M' into its components. Returns a normalized ISO string and totalSeconds — but totalSeconds is null when the duration contains years or months, because those are calendar-variable (use /v1/add or /v1/between for exact date math).","priceUsd":0.002},{"id":"format","version":"v1","path":"/v1/format","url":"https://datetime.openverbs.com/v1/format","title":"Build an ISO 8601 duration","description":"Assemble an ISO 8601 duration string from individual components (years, months, weeks, days, hours, minutes, seconds) and an optional sign. All components must be non-negative and at least one must be non-zero.","priceUsd":0.002},{"id":"humanize","version":"v1","path":"/v1/humanize","url":"https://datetime.openverbs.com/v1/humanize","title":"Humanize an ISO 8601 duration","description":"Render an ISO 8601 duration as an English phrase, e.g. 'P1Y2M' → '1 year and 2 months'. Components are shown in descending order with correct pluralization.","priceUsd":0.002},{"id":"add","version":"v1","path":"/v1/add","url":"https://datetime.openverbs.com/v1/add","title":"Add a duration to a date","description":"Add an ISO 8601 duration to a start date or date-time and return the resulting UTC instant. Calendar-aware: months and years honor month lengths (e.g. Jan 31 + P1M clamps to the last day of February). A negative-signed duration subtracts.","priceUsd":0.002},{"id":"between","version":"v1","path":"/v1/between","url":"https://datetime.openverbs.com/v1/between","title":"Duration between two dates","description":"Compute the calendar breakdown (years, months, days, hours, minutes, seconds) between two ISO 8601 dates/date-times, plus exact totalSeconds. If end precedes start the result is flagged negative rather than erroring.","priceUsd":0.002},{"id":"to-jdn","version":"v1","path":"/v1/to-jdn","url":"https://datetime.openverbs.com/v1/to-jdn","title":"Date → Julian Day Number","description":"Convert a proleptic-Gregorian calendar date to its Julian Day Number (the integer count of days since JDN 0, 1 January 4713 BC in the proleptic Julian calendar).","priceUsd":0.004},{"id":"from-jdn","version":"v1","path":"/v1/from-jdn","url":"https://datetime.openverbs.com/v1/from-jdn","title":"Julian Day Number → date","description":"Convert a Julian Day Number back to a proleptic-Gregorian date, with the ISO weekday (1=Monday..7=Sunday) and its name.","priceUsd":0.004},{"id":"weekday","version":"v1","path":"/v1/weekday","url":"https://datetime.openverbs.com/v1/weekday","title":"Day of week","description":"Return the ISO weekday (1=Monday..7=Sunday) and its name for a Gregorian date.","priceUsd":0.004},{"id":"iso-week","version":"v1","path":"/v1/iso-week","url":"https://datetime.openverbs.com/v1/iso-week","title":"ISO-8601 week number","description":"Return the ISO-8601 week-numbering year, week number (1..53) and weekday (1=Monday..7=Sunday) for a Gregorian date. The ISO year can differ from the calendar year around New Year.","priceUsd":0.004},{"id":"easter","version":"v1","path":"/v1/easter","url":"https://datetime.openverbs.com/v1/easter","title":"Gregorian Easter","description":"Compute the date of Western (Gregorian) Easter Sunday for a year in 1583..9999 using the Anonymous Gregorian computus.","priceUsd":0.004},{"id":"day-of-year","version":"v1","path":"/v1/day-of-year","url":"https://datetime.openverbs.com/v1/day-of-year","title":"Day of year","description":"Return the ordinal day of the year (1..366), the number of days in that year and whether it is a leap year.","priceUsd":0.004}]},{"id":"tls","url":"https://tls.openverbs.com","title":"TLS Certificate Inspector","description":"Inspect the TLS/SSL certificate a host presents — issuer, expiry, SANs, fingerprint and trust status.","category":"network","tags":["tls","ssl","certificate","https","expiry","security","x509"],"operations":[{"id":"inspect","version":"v1","path":"/v1/inspect","url":"https://tls.openverbs.com/v1/inspect","title":"Inspect SSL/TLS certificate","description":"Open an SSL/TLS connection to a host and report its certificate — issuer, subject, validity window, days remaining, SANs, fingerprint and trust status.","priceUsd":0.006}]},{"id":"rdap","url":"https://rdap.openverbs.com","title":"Domain RDAP Lookup","description":"Look up domain registration data (registrar, dates, status, nameservers, DNSSEC).","category":"network","tags":["rdap","whois","domain","registrar","expiry","dns","registration"],"operations":[{"id":"domain","version":"v1","path":"/v1/domain","url":"https://rdap.openverbs.com/v1/domain","title":"Domain registration","description":"Look up a domain's RDAP registration data — registrar, status, creation/expiry/update dates, nameservers and DNSSEC. Unregistered domains return found:false.","priceUsd":0.006}]},{"id":"email","url":"https://email.openverbs.com","title":"Email Validator","description":"Validate email addresses — syntax, MX deliverability and disposable/role detection (no mailbox probing).","category":"email","tags":["email","validate","mx","deliverability","disposable","verification"],"operations":[{"id":"validate","version":"v1","path":"/v1/validate","url":"https://email.openverbs.com/v1/validate","title":"Validate email","description":"Validate an email address — syntax, MX/A deliverability lookup, and disposable / role-based address detection. No mailbox probing.","priceUsd":0.006}]},{"id":"vat","url":"https://vat.openverbs.com","title":"VAT Validator","description":"Validate business VAT/GST numbers against official government registers for Norway, Finland, France, Czech Republic, Poland and Latvia, with one operation per jurisdiction. Each check confirms the number is live and returns registered entity details where disclosed.","category":"validation","tags":["vat","gst","norway","finland","france","czechia","poland","latvia","tax","validate","business","compliance"],"operations":[{"id":"norway","version":"v1","path":"/v1/norway","url":"https://vat.openverbs.com/v1/norway","title":"Validate Norwegian VAT number","description":"Validate a Norwegian VAT (MVA) number against the official business register. Validity means the entity exists and is entered in the VAT register.","priceUsd":0.006},{"id":"finland","version":"v1","path":"/v1/finland","url":"https://vat.openverbs.com/v1/finland","title":"Validate Finnish VAT number","description":"Validate a Finnish VAT (ALV) number against the official VAT register. Validity means the entity exists and holds a live registration.","priceUsd":0.006},{"id":"france","version":"v1","path":"/v1/france","url":"https://vat.openverbs.com/v1/france","title":"Validate French VAT number","description":"Validate a French VAT (TVA) number against the official company register. Validity means the SIREN exists and the company is administratively active.","priceUsd":0.006},{"id":"czechia","version":"v1","path":"/v1/czechia","url":"https://vat.openverbs.com/v1/czechia","title":"Validate Czech VAT number","description":"Validate a Czech VAT (DIČ) number for a legal entity against the official register. Validity means the subject exists and is live in the VAT (DPH) register.","priceUsd":0.006},{"id":"poland","version":"v1","path":"/v1/poland","url":"https://vat.openverbs.com/v1/poland","title":"Validate Polish VAT number","description":"Validate a Polish VAT (NIP) number against the official VAT register. Validity means the taxpayer's VAT status is active (Czynny).","priceUsd":0.006},{"id":"latvia","version":"v1","path":"/v1/latvia","url":"https://vat.openverbs.com/v1/latvia","title":"Validate Latvian VAT number","description":"Validate a Latvian VAT (PVN) number against the official VAT-payers register. Validity means the number has a currently active entry in the register.","priceUsd":0.006}]},{"id":"wikidata","url":"https://wikidata.openverbs.com","title":"Wikidata Knowledge","description":"Search entities and fetch normalized entity records (label, description, claims).","category":"reference","tags":["wikidata","knowledge","entities","search","reference"],"operations":[{"id":"search","version":"v1","path":"/v1/search","url":"https://wikidata.openverbs.com/v1/search","title":"Search Wikidata","description":"Search Wikidata for entities matching a text query, returning candidate Q-ids with labels and descriptions.","priceUsd":0.006},{"id":"entity","version":"v1","path":"/v1/entity","url":"https://wikidata.openverbs.com/v1/entity","title":"Get Wikidata entity","description":"Fetch a Wikidata entity by Q-id: label, description, aliases and its claims (property → values).","priceUsd":0.006}]},{"id":"color","url":"https://color.openverbs.com","title":"Color Toolkit","description":"Color conversion, WCAG contrast, harmony schemes and nearest named color.","category":"compute","tags":["color","colour","wcag","contrast","accessibility","palette","hex","hsl","oklch"],"operations":[{"id":"convert","version":"v1","path":"/v1/convert","url":"https://color.openverbs.com/v1/convert","title":"Convert color","description":"Parse any CSS color and return it as hex, rgb, hsl, hwb, lab, lch and oklch.","priceUsd":0.002},{"id":"contrast","version":"v1","path":"/v1/contrast","url":"https://color.openverbs.com/v1/contrast","title":"WCAG contrast","description":"Compute the WCAG 2.1 contrast ratio between two colors and whether it passes AA/AAA.","priceUsd":0.002},{"id":"scheme","version":"v1","path":"/v1/scheme","url":"https://color.openverbs.com/v1/scheme","title":"Color scheme","description":"Generate a harmony scheme (complementary, analogous, triadic, tetradic, monochromatic) from a base color.","priceUsd":0.002},{"id":"nearest-named","version":"v1","path":"/v1/nearest-named","url":"https://color.openverbs.com/v1/nearest-named","title":"Nearest named color","description":"Find the nearest CSS named color to a given color, by perceptual distance.","priceUsd":0.002}]},{"id":"password","url":"https://password.openverbs.com","title":"Password Toolkit","description":"Password strength estimation and secure generation (random or passphrase).","category":"compute","tags":["password","passphrase","strength","generate","security","diceware"],"operations":[{"id":"strength","version":"v1","path":"/v1/strength","url":"https://password.openverbs.com/v1/strength","title":"Password strength","description":"Estimate password strength: score, guesses, crack-time and feedback. Never stored.","priceUsd":0.002},{"id":"generate","version":"v1","path":"/v1/generate","url":"https://password.openverbs.com/v1/generate","title":"Generate password","description":"Generate a secure random password (characters) or a wordlist passphrase.","priceUsd":0.002}]},{"id":"ical","url":"https://ical.openverbs.com","title":"iCalendar Toolkit","description":"Parse .ics, expand RRULE recurrences and build .ics documents.","category":"compute","tags":["ical","icalendar","ics","calendar","rrule","recurrence","events"],"operations":[{"id":"parse","version":"v1","path":"/v1/parse","url":"https://ical.openverbs.com/v1/parse","title":"Parse iCalendar","description":"Parse an .ics document into structured calendar events (summary, times, location, RRULE, attendees).","priceUsd":0.002},{"id":"expand","version":"v1","path":"/v1/expand","url":"https://ical.openverbs.com/v1/expand","title":"Expand recurrence","description":"Expand an RRULE recurrence rule into its occurrence datetimes, with a human-readable description.","priceUsd":0.002},{"id":"create","version":"v1","path":"/v1/create","url":"https://ical.openverbs.com/v1/create","title":"Create iCalendar","description":"Build a valid .ics document from event fields (summary, start/end, location, …).","priceUsd":0.002}]},{"id":"semver","url":"https://semver.openverbs.com","title":"SemVer Toolkit","description":"Parse, compare and range-test semantic versions.","category":"compute","tags":["semver","version","parse","compare","range","satisfies"],"operations":[{"id":"parse","version":"v1","path":"/v1/parse","url":"https://semver.openverbs.com/v1/parse","title":"Parse version","description":"Parse a semantic version into major/minor/patch, prerelease and build metadata.","priceUsd":0.002},{"id":"compare","version":"v1","path":"/v1/compare","url":"https://semver.openverbs.com/v1/compare","title":"Compare versions","description":"Compare two semantic versions and report which is greater (precedence-aware).","priceUsd":0.002},{"id":"satisfies","version":"v1","path":"/v1/satisfies","url":"https://semver.openverbs.com/v1/satisfies","title":"Range satisfaction","description":"Test whether a version satisfies a semver range (^, ~, x-ranges, ||, hyphen).","priceUsd":0.002}]},{"id":"slug","url":"https://slug.openverbs.com","title":"Slug Toolkit","description":"Convert text into URL-safe slugs with accent transliteration.","category":"compute","tags":["slug","slugify","url","permalink","transliterate","text"],"operations":[{"id":"create","version":"v1","path":"/v1/create","url":"https://slug.openverbs.com/v1/create","title":"Create slug","description":"Convert text into a URL-safe slug: transliterate accents, apply a locale character map, and join with a separator.","priceUsd":0.002}]},{"id":"mime","url":"https://mime.openverbs.com","title":"MIME Toolkit","description":"Resolve filenames to MIME types and MIME types to extensions.","category":"compute","tags":["mime","media-type","content-type","extension","mime-db"],"operations":[{"id":"lookup","version":"v1","path":"/v1/lookup","url":"https://mime.openverbs.com/v1/lookup","title":"Lookup MIME type","description":"Resolve a filename, path or extension to its MIME type, charset and full Content-Type.","priceUsd":0.002},{"id":"extension","version":"v1","path":"/v1/extension","url":"https://mime.openverbs.com/v1/extension","title":"MIME to extension","description":"Resolve a MIME type to its default file extension.","priceUsd":0.002}]},{"id":"web","url":"https://web.openverbs.com","title":"Web Content Toolkit","description":"Fetch a public URL and extract its readable article, link-preview metadata, structured data (JSON-LD/Open Graph/microdata), sitemap URLs, HTTP/security response headers, trace its redirect chain, check its robots.txt crawl rules, extract and classify all its hyperlinks, or audit its on-page SEO.","category":"content","tags":["web","extract","readability","unfurl","opengraph","metadata","scrape","markdown","jsonld","structured","sitemap","schema","headers","redirects","robots","links","seo","audit"],"operations":[{"id":"extract","version":"v1","path":"/v1/extract","url":"https://web.openverbs.com/v1/extract","title":"Extract readable content","description":"Fetch a URL and return its main article as clean HTML, Markdown and plain text.","priceUsd":0.006},{"id":"unfurl","version":"v1","path":"/v1/unfurl","url":"https://web.openverbs.com/v1/unfurl","title":"Unfurl link preview","description":"Fetch a URL and return link-preview metadata from Open Graph, Twitter Card and standard meta tags.","priceUsd":0.006},{"id":"structured","version":"v1","path":"/v1/structured","url":"https://web.openverbs.com/v1/structured","title":"Extract structured data","description":"Fetch a URL and pull out its machine-readable structured data: all JSON-LD blocks (schema.org), Open Graph and Twitter Card tags, standard named meta tags, and inline microdata items. Also returns the page title, canonical URL, language and the distinct schema.org types found. Ideal for turning a product, article, recipe, event or organization page into structured fields without bespoke scraping.","priceUsd":0.006},{"id":"sitemap","version":"v1","path":"/v1/sitemap","url":"https://web.openverbs.com/v1/sitemap","title":"Discover and parse sitemaps","description":"Discover a site's XML sitemaps (via robots.txt Sitemap: directives, an explicit sitemap URL, or the conventional /sitemap.xml) and parse them into a bounded list of URLs with their lastmod, changefreq and priority. Follows sitemap-index files to their child sitemaps. Fetches and URL counts are capped (with a `truncated` flag) to stay fast and memory-bounded. The reliable way for an agent to enumerate a site's pages.","priceUsd":0.006},{"id":"headers","version":"v1","path":"/v1/headers","url":"https://web.openverbs.com/v1/headers","title":"Inspect HTTP response headers","description":"Fetch a URL (following redirects) and return the final response's HTTP headers, the server banner and content-type, plus a security-header audit reporting HSTS, Content-Security-Policy, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy and the cross-origin policies (with the missing ones listed). No body is downloaded or parsed.","priceUsd":0.003},{"id":"redirects","version":"v1","path":"/v1/redirects","url":"https://web.openverbs.com/v1/redirects","title":"Trace URL redirect chain","description":"Follow a URL's redirect chain (301/302/303/307/308) to its final destination and return every hop with its status and Location. Unwraps link shorteners and cloaked/tracking links so an agent can see where a link really goes before following it. Each hop is SSRF-validated and the chain is capped.","priceUsd":0.003},{"id":"robots","version":"v1","path":"/v1/robots","url":"https://web.openverbs.com/v1/robots","title":"Check robots.txt crawl rules","description":"Fetch a site's robots.txt and evaluate crawl permissions: given a URL (plus optional extra paths) and a user-agent, return whether each path is allowed or disallowed, the rule that matched, the user-agent group, the crawl-delay and any declared sitemaps. Implements the Robots Exclusion Protocol (RFC 9309) with longest-match-wins, Allow-over-Disallow tie-breaking and * / $ wildcards.","priceUsd":0.006},{"id":"links","version":"v1","path":"/v1/links","url":"https://web.openverbs.com/v1/links","title":"Extract and classify page links","description":"Fetch a URL and extract every hyperlink on the page, each resolved to an absolute URL and classified as internal vs external (by registrable host), with its anchor text, rel attributes (nofollow, sponsored, ugc) and whether it opens in a new tab. Returns internal/external/nofollow counts. For SEO link audits, internal-linking analysis and outbound-link/nofollow compliance checks.","priceUsd":0.006},{"id":"seo-audit","version":"v1","path":"/v1/seo-audit","url":"https://web.openverbs.com/v1/seo-audit","title":"On-page SEO audit","description":"Fetch a public page and grade its on-page SEO: title and meta-description length, H1 and heading outline, canonical, meta-robots indexability, viewport/lang/charset, hreflang, Open Graph and Twitter Card completeness, image alt coverage and word count — plus optional focus-keyword placement and density. Returns a pass/warn/fail verdict per check and an overall 0–100 score.","priceUsd":0.006}]},{"id":"pdf","url":"https://pdf.openverbs.com","title":"PDF Text Extraction","description":"Extract text and metadata from a PDF document by URL or base64.","category":"content","tags":["pdf","pdf-extract","pdf-to-text","extract-text","document-text"],"operations":[{"id":"extract","version":"v1","path":"/v1/extract","url":"https://pdf.openverbs.com/v1/extract","title":"PDF Text Extraction","description":"Extract plain text and metadata (title, author, producer, page count) from a PDF supplied by URL or base64 — heavy pdf.js parsing an agent can't self-run.","priceUsd":0.006}]},{"id":"format","url":"https://format.openverbs.com","title":"Format Toolkit","description":"Convert, validate, detect, infer-schema and canonicalize structured data — JSON, YAML, XML, CSV, TSV, TOML, NDJSON, INI, .env, .properties, plist, querystring.","category":"compute","tags":["format","convert","detect","canonicalize","infer-schema","json","yaml","xml","csv","tsv","toml","ndjson","ini","env","properties","plist","querystring","json5","jsonc","jsonschema","validate","transcode"],"operations":[{"id":"convert","version":"v1","path":"/v1/convert","url":"https://format.openverbs.com/v1/convert","title":"Convert structured data","description":"Transcode a document between json, json5, jsonc, yaml, xml, csv, tsv, toml, ndjson, ini, env, properties, plist and querystring. Any source converts to any target through a JSON hub. Malformed input or a target that cannot represent the structure is rejected before payment.","priceUsd":0.004},{"id":"validate","version":"v1","path":"/v1/validate","url":"https://format.openverbs.com/v1/validate","title":"Validate against a JSON Schema","description":"Parse a document (json, json5, jsonc, yaml, xml, csv, tsv, toml, ndjson, ini, env, properties, plist or querystring) and validate it against a JSON Schema. Returns whether it is valid and a list of precise, path-tagged errors. Malformed input or an invalid schema is rejected before payment.","priceUsd":0.004},{"id":"detect","version":"v1","path":"/v1/detect","url":"https://format.openverbs.com/v1/detect","title":"Detect the format of a blob","description":"Sniff which structured format an unknown document is. Because formats overlap, returns every plausible format with a 0–1 score plus the best guess — honest about ambiguity rather than pretending certainty.","priceUsd":0.004},{"id":"infer-schema","version":"v1","path":"/v1/infer-schema","url":"https://format.openverbs.com/v1/infer-schema","title":"Infer a JSON Schema","description":"Infer a JSON Schema (draft-07) from a sample document in any supported format. Types are inferred, present keys are marked required, and heterogeneous array item schemas are merged. The result validates out of the box with /v1/validate.","priceUsd":0.004},{"id":"canonicalize","version":"v1","path":"/v1/canonicalize","url":"https://format.openverbs.com/v1/canonicalize","title":"Canonicalize JSON (RFC 8785)","description":"Parse a document (in any format) and re-emit it in the RFC 8785 JSON Canonicalization Scheme form — sorted keys, canonical number/string formatting — plus the SHA-256 of the canonical bytes for stable hashing, signing and dedup.","priceUsd":0.004}]},{"id":"data","url":"https://data.openverbs.com","title":"Data Toolkit","description":"Query, diff, patch, merge and flatten JSON — JMESPath queries, RFC 6902 JSON Patch diff/apply, deep merge and flatten/unflatten —","category":"compute","tags":["data","json","jmespath","query","diff","patch","json-patch","rfc6902","merge","deepmerge","flatten","unflatten","transform"],"operations":[{"id":"query","version":"v1","path":"/v1/query","url":"https://data.openverbs.com/v1/query","title":"Query JSON with JMESPath","description":"Evaluate a JMESPath expression against a JSON value and return the selected/projected result. A malformed expression is rejected before payment.","priceUsd":0.004},{"id":"diff","version":"v1","path":"/v1/diff","url":"https://data.openverbs.com/v1/diff","title":"Diff two JSON documents","description":"Compute the RFC 6902 JSON Patch that transforms `source` into `target`. The patch is a minimal array of add/remove/replace operations.","priceUsd":0.004},{"id":"patch","version":"v1","path":"/v1/patch","url":"https://data.openverbs.com/v1/patch","title":"Apply a JSON Patch","description":"Apply an RFC 6902 JSON Patch to a JSON document and return the result. An invalid or unresolvable patch (e.g. a failed `test`, or a path that does not exist) is rejected before payment.","priceUsd":0.004},{"id":"merge","version":"v1","path":"/v1/merge","url":"https://data.openverbs.com/v1/merge","title":"Deep-merge JSON documents","description":"Deep-merge an ordered list of JSON documents, left to right. Objects are merged key-by-key; arrays, scalars and null in a later document replace the earlier value (last-wins, no array concatenation).","priceUsd":0.004},{"id":"flatten","version":"v1","path":"/v1/flatten","url":"https://data.openverbs.com/v1/flatten","title":"Flatten a nested object","description":"Flatten a nested object/array into a single-level object whose keys are the delimited paths to each leaf (default delimiter `.`). Requires an object or array.","priceUsd":0.004},{"id":"unflatten","version":"v1","path":"/v1/unflatten","url":"https://data.openverbs.com/v1/unflatten","title":"Unflatten a delimited object","description":"Rebuild a nested object from a single-level object whose keys are delimited paths (default delimiter `.`) — the inverse of flatten. Requires a flat object.","priceUsd":0.004}]},{"id":"jwt","url":"https://jwt.openverbs.com","title":"JWT Toolkit","description":"Decode, verify and sign JSON Web Tokens (HS/RS/ES/PS) against your own secrets and keys —","category":"compute","tags":["jwt","jws","token","auth","decode","verify","sign","hmac","rsa","ecdsa","jose","security"],"operations":[{"id":"decode","version":"v1","path":"/v1/decode","url":"https://jwt.openverbs.com/v1/decode","title":"Decode a JWT","description":"Decode a JSON Web Token WITHOUT verifying its signature and return the header, payload and signature. A structurally malformed token is rejected before payment. Never trust a decoded payload you have not verified.","priceUsd":0.004},{"id":"verify","version":"v1","path":"/v1/verify","url":"https://jwt.openverbs.com/v1/verify","title":"Verify a JWT","description":"Verify a JSON Web Token's signature and claims against a shared secret (HS*) or a PEM public key (RS/ES/PS). Returns { valid, payload } on success or { valid: false, reason } for a bad signature, expired/not-yet-active token, or a failed issuer/audience/subject check. Pass `algorithms` to pin the accepted signing algorithms and prevent algorithm-confusion attacks.","priceUsd":0.004},{"id":"sign","version":"v1","path":"/v1/sign","url":"https://jwt.openverbs.com/v1/sign","title":"Sign a JWT","description":"Mint a signed JSON Web Token from a JSON claims object, using a shared secret (HS*) or a PEM private key (RS/ES/PS). Supports expiresInSec, notBeforeSec, issuer, audience, subject and keyid. An unusable key or option is rejected before payment.","priceUsd":0.004}]},{"id":"hash","url":"https://hash.openverbs.com","title":"Hash Toolkit","description":"Cryptographic digests and HMACs — SHA-2, SHA-3, BLAKE2, SHA-1, MD5, RIPEMD-160 — with hex/base64 I/O.","category":"compute","tags":["hash","digest","hmac","sha256","sha512","sha3","blake2","md5","checksum","signature","webhook","crypto"],"operations":[{"id":"hash","version":"v1","path":"/v1/hash","url":"https://hash.openverbs.com/v1/hash","title":"Hash data","description":"Compute a cryptographic digest (SHA-2, SHA-3, BLAKE2, and legacy SHA-1/MD5/RIPEMD-160) of some data. The input may be utf8/hex/base64/base64url and the digest is returned as hex/base64/base64url.","priceUsd":0.002},{"id":"hmac","version":"v1","path":"/v1/hmac","url":"https://hash.openverbs.com/v1/hmac","title":"HMAC data","description":"Compute a keyed HMAC of some data with a secret key — the standard way to sign and verify webhooks (Stripe, GitHub, etc.) and API requests. Data and key may each be utf8/hex/base64/base64url; the tag is returned as hex/base64/base64url.","priceUsd":0.002}]},{"id":"pack","url":"https://pack.openverbs.com","title":"Pack Toolkit","description":"Serialize JSON to and from compact binary formats — MessagePack and CBOR — carried as base64/hex.","category":"compute","tags":["pack","msgpack","messagepack","cbor","binary","serialize","encode","decode","base64","compact"],"operations":[{"id":"encode","version":"v1","path":"/v1/encode","url":"https://pack.openverbs.com/v1/encode","title":"Encode JSON to MessagePack/CBOR","description":"Serialize a JSON value into a compact MessagePack or CBOR byte stream, returned as a base64 (default), base64url or hex string, along with the byte length.","priceUsd":0.004},{"id":"decode","version":"v1","path":"/v1/decode","url":"https://pack.openverbs.com/v1/decode","title":"Decode MessagePack/CBOR to JSON","description":"Decode a MessagePack or CBOR byte stream (supplied as a base64/base64url/hex string) back into a JSON value. A malformed envelope, malformed bytes, or a value that is not JSON-representable is rejected before payment.","priceUsd":0.004}]},{"id":"text","url":"https://text.openverbs.com","title":"Text Toolkit","description":"String utilities — case conversion, base64/base32/hex/URL encoding, and unified/structured text diffing —","category":"compute","tags":["text","string","case","camelcase","snakecase","slug","base64","base32","hex","url","encode","decode","diff"],"operations":[{"id":"case","version":"v1","path":"/v1/case","url":"https://text.openverbs.com/v1/case","title":"Convert case","description":"Recase a string into camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, dot.case, path/case, Sentence case, Capital Case, Train-Case, no case, Title Case, or plain UPPER/lower — the word boundaries are detected regardless of the input casing.","priceUsd":0.002},{"id":"encode","version":"v1","path":"/v1/encode","url":"https://text.openverbs.com/v1/encode","title":"Encode text","description":"Encode a UTF-8 string into base64, base64url, hex, base32, or URL percent-encoding.","priceUsd":0.002},{"id":"decode","version":"v1","path":"/v1/decode","url":"https://text.openverbs.com/v1/decode","title":"Decode text","description":"Decode a base64, base64url, hex, base32, or URL percent-encoded string back into UTF-8 text. Malformed input for the chosen encoding is rejected as a clean 400.","priceUsd":0.002},{"id":"diff","version":"v1","path":"/v1/diff","url":"https://text.openverbs.com/v1/diff","title":"Diff text","description":"Diff two texts. The default `unified` mode returns a unified-diff patch string; `lines`, `words`, and `chars` modes return a structured array of added/removed/unchanged parts.","priceUsd":0.002}]},{"id":"unit","url":"https://unit.openverbs.com","title":"Unit Converter","description":"Convert between physical and digital units — length, mass, volume, temperature, speed, pressure, energy, power, storage, time, angle and more.","category":"compute","tags":["unit","convert","conversion","measurement","length","mass","temperature","volume","speed","pressure","energy","digital"],"operations":[{"id":"convert","version":"v1","path":"/v1/convert","url":"https://unit.openverbs.com/v1/convert","title":"Convert units","description":"Convert a value between units — length, mass, volume, temperature, area, speed, pressure, energy, power, digital storage, time, angle, frequency and more. Unknown units or a conversion between incompatible measures (e.g. kg → km) are rejected as a clean 400.","priceUsd":0.002},{"id":"list","version":"v1","path":"/v1/list","url":"https://unit.openverbs.com/v1/list","title":"List units","description":"List the supported units and their metadata (abbreviation, measure, system, singular/plural names), optionally filtered to a single measure — a discovery endpoint for choosing valid `from`/`to` values.","priceUsd":0.002}]},{"id":"math","url":"https://math.openverbs.com","title":"Expression Evaluator","description":"Safely evaluate mathematical expressions with variables and standard functions — sandboxed.","category":"compute","tags":["math","calculator","expression","eval","arithmetic","formula","compute"],"operations":[{"id":"eval","version":"v1","path":"/v1/eval","url":"https://math.openverbs.com/v1/eval","title":"Evaluate expression","description":"Evaluate a mathematical expression with optional named variables — arithmetic, comparison and logic operators plus functions like sqrt, abs, min, max, sin, cos, log, floor, round, etc. A syntax error, an undefined variable, or a non-finite result is a clean 400. The factorial operator is disabled for safety.","priceUsd":0.004},{"id":"variables","version":"v1","path":"/v1/variables","url":"https://math.openverbs.com/v1/variables","title":"List expression variables","description":"Parse an expression and return the free variables it references, without evaluating it — so an agent can discover which inputs a formula needs before supplying values. A syntax error is a clean 400.","priceUsd":0.004}]},{"id":"random","url":"https://random.openverbs.com","title":"Secure Random","description":"Cryptographically-secure randomness — bytes, integers, strings and array sampling — unbiased.","category":"compute","tags":["random","crypto","csprng","bytes","integer","string","sample","shuffle","token"],"operations":[{"id":"bytes","version":"v1","path":"/v1/bytes","url":"https://random.openverbs.com/v1/bytes","title":"Random bytes","description":"Generate cryptographically-secure random bytes, returned as hex, base64 or base64url.","priceUsd":0.002},{"id":"integer","version":"v1","path":"/v1/integer","url":"https://random.openverbs.com/v1/integer","title":"Random integers","description":"Generate one or more uniformly-distributed random integers in an inclusive [min, max] range.","priceUsd":0.002},{"id":"string","version":"v1","path":"/v1/string","url":"https://random.openverbs.com/v1/string","title":"Random string","description":"Generate a random string of a given length from a named charset (alphanumeric, alpha, lower, upper, numeric, hex, base58) or a custom alphabet. Unbiased character selection.","priceUsd":0.002},{"id":"sample","version":"v1","path":"/v1/sample","url":"https://random.openverbs.com/v1/sample","title":"Random sample","description":"Draw a random sample from a provided array — without replacement by default (a fair shuffle), or with replacement when unique is false. count defaults to 1.","priceUsd":0.002}]},{"id":"finance","url":"https://finance.openverbs.com","title":"Finance Calculator","description":"Financial math — loan amortization, simple/compound interest, future & present value, NPV and IRR.","category":"compute","tags":["finance","loan","amortization","interest","npv","irr","present-value","future-value","annuity","money"],"operations":[{"id":"loan","version":"v1","path":"/v1/loan","url":"https://finance.openverbs.com/v1/loan","title":"Loan amortization","description":"Compute the level monthly payment, total paid and total interest of a fully-amortizing loan. Handles a 0% rate. Set schedule=true to also return the full month-by-month amortization table.","priceUsd":0.004},{"id":"interest","version":"v1","path":"/v1/interest","url":"https://finance.openverbs.com/v1/interest","title":"Simple / compound interest","description":"Grow a principal by simple or compound interest over a number of years. Compound interest uses compoundsPerYear compounding periods (default 12, monthly).","priceUsd":0.004},{"id":"future-value","version":"v1","path":"/v1/future-value","url":"https://finance.openverbs.com/v1/future-value","title":"Future value","description":"Future value of a present sum and/or a level annuity, given a per-period rate and number of periods. Set dueAtBeginning=true for an annuity-due (payments at the start of each period).","priceUsd":0.004},{"id":"present-value","version":"v1","path":"/v1/present-value","url":"https://finance.openverbs.com/v1/present-value","title":"Present value","description":"Present value of a future sum and/or a level annuity, given a per-period rate and number of periods. Set dueAtBeginning=true for an annuity-due.","priceUsd":0.004},{"id":"npv","version":"v1","path":"/v1/npv","url":"https://finance.openverbs.com/v1/npv","title":"Net present value","description":"Net present value of a series of cash flows discounted at a per-period rate. cashflows[0] is the time-0 flow (typically the initial outlay, negative).","priceUsd":0.004},{"id":"irr","version":"v1","path":"/v1/irr","url":"https://finance.openverbs.com/v1/irr","title":"Internal rate of return","description":"Internal rate of return (per period) of a series of cash flows, solved with a bounded bisection. Requires at least one positive and one negative flow; flows with no sign change or no bracketable root are rejected as a clean 400.","priceUsd":0.004}]},{"id":"ip","url":"https://ip.openverbs.com","title":"IP Toolkit","description":"IPv4/IPv6 address and subnet math — parse & classify, subnet calculator, CIDR membership and IPv6 expand/compress.","category":"network","tags":["ip","ipv4","ipv6","cidr","subnet","network","netmask","address"],"operations":[{"id":"parse","version":"v1","path":"/v1/parse","url":"https://ip.openverbs.com/v1/parse","title":"Parse & classify IP","description":"Parse an IPv4 or IPv6 address and classify it — version, normalized form and RFC range (unicast, private, loopback, linkLocal, multicast, uniqueLocal, ipv4Mapped, …). Detects IPv4-mapped IPv6.","priceUsd":0.002},{"id":"subnet","version":"v1","path":"/v1/subnet","url":"https://ip.openverbs.com/v1/subnet","title":"Subnet calculator","description":"Compute network details of a CIDR block — network & broadcast address, usable host range, total and usable address counts. Works for IPv4 and IPv6 (counts returned as strings for large IPv6 blocks). Honours RFC 3021 for /31.","priceUsd":0.002},{"id":"contains","version":"v1","path":"/v1/contains","url":"https://ip.openverbs.com/v1/contains","title":"CIDR membership","description":"Test whether an IP address falls within a CIDR block. A well-formed address of a different family (or simply outside the block) returns contains=false — not an error.","priceUsd":0.002},{"id":"expand","version":"v1","path":"/v1/expand","url":"https://ip.openverbs.com/v1/expand","title":"Expand / compress IPv6","description":"Return both the fully-expanded (eight 4-hex groups) and canonical compressed (RFC 5952) forms of an address. IPv4 is returned unchanged in both fields.","priceUsd":0.002}]},{"id":"html","url":"https://html.openverbs.com","title":"HTML Toolkit","description":"HTML string safety — entity encode/decode, strip tags to plain text and sanitize untrusted HTML to a safe allowlist.","category":"content","tags":["html","entities","encode","decode","sanitize","strip","xss","escape"],"operations":[{"id":"encode","version":"v1","path":"/v1/encode","url":"https://html.openverbs.com/v1/encode","title":"HTML entity encode","description":"Encode text to HTML entities so it can be safely embedded in markup. By default uses hex numeric references; set useNamedReferences for named entities (&amp;, &copy;) or encodeEverything to encode every character.","priceUsd":0.002},{"id":"decode","version":"v1","path":"/v1/decode","url":"https://html.openverbs.com/v1/decode","title":"HTML entity decode","description":"Decode HTML entities (named, decimal and hex numeric references) back into plain text.","priceUsd":0.002},{"id":"strip","version":"v1","path":"/v1/strip","url":"https://html.openverbs.com/v1/strip","title":"Strip HTML to text","description":"Remove all HTML tags, returning the plain text content. Entities are decoded to real characters by default (set decodeEntities=false to keep them encoded).","priceUsd":0.002},{"id":"sanitize","version":"v1","path":"/v1/sanitize","url":"https://html.openverbs.com/v1/sanitize","title":"Sanitize HTML","description":"Sanitize untrusted HTML to a safe allowlist. Keeps common formatting and links but removes dangerous scripting tags, inline event handlers and unsafe URL schemes. Ideal for rendering user-supplied HTML.","priceUsd":0.002}]},{"id":"checkdigit","url":"https://checkdigit.openverbs.com","title":"Check Digit Validator","description":"Validate common check-digit schemes — Luhn (cards), ISBN-10/13, EAN/UPC/GTIN, IMEI and US ABA routing numbers. Malformed input is rejected, a wrong check digit returns valid:false.","category":"validation","tags":["checkdigit","luhn","isbn","ean","upc","gtin","imei","routing","aba","validate","barcode"],"operations":[{"id":"luhn","version":"v1","path":"/v1/luhn","url":"https://checkdigit.openverbs.com/v1/luhn","title":"Luhn check","description":"Validate a number by the Luhn (mod-10) algorithm — the scheme behind credit/debit card numbers and many IDs. Spaces and hyphens are ignored. A mismatched check digit is a successful { valid: false }.","priceUsd":0.002},{"id":"isbn","version":"v1","path":"/v1/isbn","url":"https://checkdigit.openverbs.com/v1/isbn","title":"ISBN check","description":"Validate an ISBN-10 (mod-11, trailing X allowed) or ISBN-13 (GTIN mod-10) book number. Length after removing spaces/hyphens selects the scheme.","priceUsd":0.002},{"id":"ean","version":"v1","path":"/v1/ean","url":"https://checkdigit.openverbs.com/v1/ean","title":"EAN / UPC / GTIN check","description":"Validate a GTIN barcode number — EAN-8, UPC-A (12), EAN-13 or GTIN-14 — by the standard mod-10 check digit. Length selects the scheme.","priceUsd":0.002},{"id":"imei","version":"v1","path":"/v1/imei","url":"https://checkdigit.openverbs.com/v1/imei","title":"IMEI check","description":"Validate a 15-digit mobile device IMEI by its Luhn check digit. Spaces and hyphens are ignored.","priceUsd":0.002},{"id":"routing","version":"v1","path":"/v1/routing","url":"https://checkdigit.openverbs.com/v1/routing","title":"ABA routing check","description":"Validate a 9-digit US ABA bank routing number by its weighted (3,7,1) mod-10 checksum. Spaces and hyphens are ignored.","priceUsd":0.002}]},{"id":"geometry","url":"https://geometry.openverbs.com","title":"Geometry Toolkit","description":"Planar geometry — circle, rectangle and triangle metrics, polygon area/perimeter/centroid (shoelace) and point distances.","category":"compute","tags":["geometry","area","perimeter","triangle","polygon","circle","distance","shoelace","centroid"],"operations":[{"id":"circle","version":"v1","path":"/v1/circle","url":"https://geometry.openverbs.com/v1/circle","title":"Circle","description":"Diameter, circumference and area of a circle from its radius.","priceUsd":0.004},{"id":"rectangle","version":"v1","path":"/v1/rectangle","url":"https://geometry.openverbs.com/v1/rectangle","title":"Rectangle","description":"Area, perimeter and diagonal of a rectangle from its width and height.","priceUsd":0.004},{"id":"triangle","version":"v1","path":"/v1/triangle","url":"https://geometry.openverbs.com/v1/triangle","title":"Triangle (SSS)","description":"Area (Heron's formula), perimeter and interior angles of a triangle from its three side lengths. Sides that violate the triangle inequality are rejected as a clean 400.","priceUsd":0.004},{"id":"polygon","version":"v1","path":"/v1/polygon","url":"https://geometry.openverbs.com/v1/polygon","title":"Polygon","description":"Area (shoelace formula), perimeter and centroid of a simple polygon given its vertices in order. Vertices are treated as a closed ring (last connects to first).","priceUsd":0.004},{"id":"distance","version":"v1","path":"/v1/distance","url":"https://geometry.openverbs.com/v1/distance","title":"Point distance","description":"Euclidean, Manhattan and Chebyshev distance between two 2-D points.","priceUsd":0.004}]},{"id":"numeral","url":"https://numeral.openverbs.com","title":"Numeral Systems","description":"Numeral-system conversions — arbitrary-base radix conversion, Roman numerals (both ways) and English number words / ordinals.","category":"compute","tags":["numeral","radix","base","binary","hex","roman","ordinal","words","number","convert"],"operations":[{"id":"radix","version":"v1","path":"/v1/radix","url":"https://numeral.openverbs.com/v1/radix","title":"Radix (base) conversion","description":"Convert an integer between numeral bases 2–36 (binary, octal, hex, base36, …). Arbitrary size via BigInt; digits are case-insensitive and a leading minus is allowed.","priceUsd":0.002},{"id":"roman","version":"v1","path":"/v1/roman","url":"https://numeral.openverbs.com/v1/roman","title":"Roman numerals","description":"Convert between integers (1–3999) and Roman numerals in either direction — a digit string is encoded to Roman, a Roman numeral is decoded to an integer. Non-canonical numerals (IIII, IC) are rejected.","priceUsd":0.002},{"id":"ordinal","version":"v1","path":"/v1/ordinal","url":"https://numeral.openverbs.com/v1/ordinal","title":"Ordinal","description":"Format a non-negative integer as an ordinal — both the suffixed form (21st) and the ordinal words (twenty-first).","priceUsd":0.002},{"id":"words","version":"v1","path":"/v1/words","url":"https://numeral.openverbs.com/v1/words","title":"Number to words","description":"Spell an integer out in English words, e.g. 123 → \"one hundred twenty-three\". Negatives are prefixed with \"minus\".","priceUsd":0.002}]},{"id":"inflect","url":"https://inflect.openverbs.com","title":"Inflection & Case","description":"English word inflection — pluralize, singularize, count-aware phrasing — and identifier case conversion across all common styles.","category":"content","tags":["inflect","pluralize","singularize","case","camelcase","snakecase","kebabcase","text","grammar"],"operations":[{"id":"pluralize","version":"v1","path":"/v1/pluralize","url":"https://inflect.openverbs.com/v1/pluralize","title":"Pluralize","description":"Return the plural form of an English word (handles irregulars — person → people, mouse → mice).","priceUsd":0.002},{"id":"singularize","version":"v1","path":"/v1/singularize","url":"https://inflect.openverbs.com/v1/singularize","title":"Singularize","description":"Return the singular form of an English word (handles irregulars — people → person, mice → mouse).","priceUsd":0.002},{"id":"count","version":"v1","path":"/v1/count","url":"https://inflect.openverbs.com/v1/count","title":"Count-aware phrasing","description":"Choose the singular or plural form for a given count, e.g. (apple, 3) → \"apples\", (apple, 1) → \"apple\". By default the count is prepended (\"3 apples\"); set includeCount=false to omit it.","priceUsd":0.002},{"id":"case","version":"v1","path":"/v1/case","url":"https://inflect.openverbs.com/v1/case","title":"Case conversion","description":"Split an identifier or phrase into words and render it in every common case — camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, dot.case, path/case, Title Case and Sentence case. Handles acronyms (HTMLParser → html parser).","priceUsd":0.002}]},{"id":"markdown","url":"https://markdown.openverbs.com","title":"Markdown Toolkit","description":"Markdown processing — render GFM to sanitized HTML, extract a heading table of contents and parse YAML front-matter.","category":"content","tags":["markdown","md","render","html","toc","frontmatter","gfm","yaml"],"operations":[{"id":"render","version":"v1","path":"/v1/render","url":"https://markdown.openverbs.com/v1/render","title":"Render Markdown","description":"Render GitHub-Flavored Markdown to HTML. Output is sanitized by default (scripts, event handlers and javascript: URLs removed); set sanitize=false to keep raw HTML.","priceUsd":0.002},{"id":"toc","version":"v1","path":"/v1/toc","url":"https://markdown.openverbs.com/v1/toc","title":"Table of contents","description":"Extract the heading outline from Markdown — depth, text and a unique GitHub-style anchor slug for each heading. Optionally limit to a maximum heading depth.","priceUsd":0.002},{"id":"frontmatter","version":"v1","path":"/v1/frontmatter","url":"https://markdown.openverbs.com/v1/frontmatter","title":"Parse front-matter","description":"Split YAML front-matter from a document — returns the parsed metadata object and the remaining content body. Malformed YAML is rejected as a clean 400.","priceUsd":0.002}]},{"id":"stats","url":"https://stats.openverbs.com","title":"Statistics","description":"Descriptive and inferential statistics — summary stats, percentiles/quantiles, Pearson correlation and linear regression.","category":"compute","tags":["stats","statistics","mean","median","stdev","percentile","quantile","correlation","regression","variance"],"operations":[{"id":"summary","version":"v1","path":"/v1/summary","url":"https://stats.openverbs.com/v1/summary","title":"Descriptive summary","description":"Full descriptive summary of a numeric sample: count, sum, min/max/range, mean, median, mode(s), variance, standard deviation and the quartiles (q1/q3/iqr). Set sample=true for the sample variance/stdev (÷ n-1) instead of the population form (÷ n).","priceUsd":0.004},{"id":"percentile","version":"v1","path":"/v1/percentile","url":"https://stats.openverbs.com/v1/percentile","title":"Percentiles / quantiles","description":"Evaluate one or more percentiles (0–100) of a numeric sample using linear interpolation between order statistics (the R-7 / Excel PERCENTILE.INC method). 50 is the median, 25/75 the quartiles.","priceUsd":0.004},{"id":"correlation","version":"v1","path":"/v1/correlation","url":"https://stats.openverbs.com/v1/correlation","title":"Pearson correlation","description":"Pearson correlation coefficient and covariance of two equal-length paired series. Rejected as a clean 400 if the lengths differ or either series has zero variance (correlation undefined).","priceUsd":0.004},{"id":"regression","version":"v1","path":"/v1/regression","url":"https://stats.openverbs.com/v1/regression","title":"Linear regression","description":"Ordinary-least-squares linear regression of y on x: slope, intercept, correlation r and coefficient of determination r². Pass predictAt to also evaluate the fitted line at a given x. Rejected as a clean 400 if lengths differ or x has zero variance.","priceUsd":0.004}]},{"id":"url","url":"https://url.openverbs.com","title":"URL Toolkit","description":"WHATWG URL parsing and manipulation — parse into components, normalize/canonicalize, resolve references against a base, and parse/build query strings.","category":"web","tags":["url","uri","parse","normalize","resolve","query-string","querystring","whatwg"],"operations":[{"id":"parse","version":"v1","path":"/v1/parse","url":"https://url.openverbs.com/v1/parse","title":"Parse URL","description":"Parse an absolute URL into its WHATWG components: protocol/scheme, credentials, host/hostname/port, origin, pathname (plus path segments), search (plus a decoded query object) and hash. A string that is not a valid absolute URL is rejected as a clean 400.","priceUsd":0.002},{"id":"normalize","version":"v1","path":"/v1/normalize","url":"https://url.openverbs.com/v1/normalize","title":"Normalize URL","description":"Canonicalize a URL: WHATWG parsing already lowercases the host, resolves dot-segments and drops default ports; on top of that, query parameters are sorted by default and you can optionally drop the fragment or a trailing slash. Returns the normalized URL and whether it changed.","priceUsd":0.002},{"id":"resolve","version":"v1","path":"/v1/resolve","url":"https://url.openverbs.com/v1/resolve","title":"Resolve reference","description":"Resolve a relative or absolute reference against a base URL, following RFC 3986 reference resolution (e.g. base 'https://a.com/x/y' + ref '../z' → 'https://a.com/z'). The base must itself be a valid absolute URL, else a clean 400.","priceUsd":0.002},{"id":"query","version":"v1","path":"/v1/query","url":"https://url.openverbs.com/v1/query","title":"Query string parse / build","description":"Two directions over query strings. action='parse' decodes a query string (with or without a leading '?') into an object, collapsing repeated keys into arrays. action='build' encodes a params object into a query string, expanding array values into repeated keys; set sort=true to order keys alphabetically.","priceUsd":0.002}]},{"id":"money","url":"https://money.openverbs.com","title":"Money Toolkit","description":"Locale-aware money handling — format and parse currency strings, round to minor units with selectable modes, and split amounts with exact minor-unit allocation. (Currency conversion lives in the fx verb.)","category":"compute","tags":["money","currency","format","parse","round","allocate","banker-rounding","minor-units","intl"],"operations":[{"id":"format","version":"v1","path":"/v1/format","url":"https://money.openverbs.com/v1/format","title":"Format currency","description":"Format a numeric amount as currency for a given locale using Intl, honouring the currency's own minor-unit convention (USD→2, JPY→0). display selects the symbol, narrow symbol, ISO code or full name. An unknown currency or locale is a clean 400.","priceUsd":0.002},{"id":"parse","version":"v1","path":"/v1/parse","url":"https://money.openverbs.com/v1/parse","title":"Parse money string","description":"Parse a formatted money string back into a number, using the locale's grouping and decimal separators (so '1.234,56' in de-DE → 1234.56). Currency symbols/codes and whitespace are stripped; parentheses or a leading minus mean negative. A string with no numeric amount is a clean 400.","priceUsd":0.002},{"id":"round","version":"v1","path":"/v1/round","url":"https://money.openverbs.com/v1/round","title":"Round to minor units","description":"Round an amount to a currency's minor units (or an explicit minorUnits) with a chosen rounding mode: half-even (banker's, default), half-up, half-down, ceil, floor or trunc. Give a currency to derive minor units automatically (USD→2, JPY→0).","priceUsd":0.002},{"id":"allocate","version":"v1","path":"/v1/allocate","url":"https://money.openverbs.com/v1/allocate","title":"Allocate without losing cents","description":"Split an amount into parts using integer minor-unit math so the shares always sum back to the exact original — no rounding drift. Pass parts for an even split, or ratios for a weighted one (e.g. [1,1,1] splits $100 into 33.34/33.33/33.33). The leftover minor units go to the largest fractional remainders.","priceUsd":0.002}]},{"id":"timecode","url":"https://timecode.openverbs.com","title":"SMPTE Timecode","description":"SMPTE timecode toolkit — parse, rebase between frame rates and do frame-exact arithmetic, with correct non-drop and drop-frame (29.97/59.94) counting.","category":"media","tags":["timecode","smpte","drop-frame","frames","video","fps","editing"],"operations":[{"id":"parse","version":"v1","path":"/v1/parse","url":"https://timecode.openverbs.com/v1/parse","title":"Parse timecode","description":"Parse an SMPTE timecode (HH:MM:SS:FF, or HH:MM:SS;FF for drop-frame) at a given frame rate into its components, total frame count and real-time seconds. Drop-frame is auto-detected from a ';' separator unless dropFrame is set. Out-of-range or non-existent drop-frame values are a clean 400.","priceUsd":0.002},{"id":"convert","version":"v1","path":"/v1/convert","url":"https://timecode.openverbs.com/v1/convert","title":"Convert / rebase timecode","description":"Rebase a timecode (or a raw frame count) from one frame rate to another on a real-time basis, so the wall-clock position is preserved. Give a source frameRate plus timecode or totalFrames, and a toFrameRate (with optional toDropFrame). Returns the target timecode, frame count and seconds.","priceUsd":0.002},{"id":"add","version":"v1","path":"/v1/add","url":"https://timecode.openverbs.com/v1/add","title":"Timecode arithmetic","description":"Add or subtract from a timecode, either another timecode (b) or a raw frame count (frames), at a given frame rate. Uses frame-exact SMPTE math (including drop-frame). A result below zero is rejected as a clean 400.","priceUsd":0.002}]},{"id":"jsonschema","url":"https://jsonschema.openverbs.com","title":"JSON Schema","description":"JSON Schema tooling — validate a value against a schema (draft-07 with standard formats) and infer a schema from an example.","category":"compute","tags":["json-schema","jsonschema","validate","validation","schema","infer","draft-07"],"operations":[{"id":"validate","version":"v1","path":"/v1/validate","url":"https://jsonschema.openverbs.com/v1/validate","title":"Validate against JSON Schema","description":"Validate a JSON value against a JSON Schema (draft-07, with the standard string formats enabled). An invalid schema is rejected as a clean 400 before payment; a valid schema that the data simply fails to satisfy is a successful result with valid=false and a list of errors (path, keyword, message).","priceUsd":0.004},{"id":"infer","version":"v1","path":"/v1/infer","url":"https://jsonschema.openverbs.com/v1/infer","title":"Infer schema from a sample","description":"Infer a JSON Schema (draft-07) from an example value, walking objects and arrays recursively. Set detectFormat=true to tag strings that look like date-time/date/email/uri/uuid, requireAll=false to leave object properties optional, and additionalProperties=true to allow extra keys.","priceUsd":0.004}]},{"id":"otp","url":"https://otp.openverbs.com","title":"One-Time Passwords","description":"HOTP (RFC 4226) and TOTP (RFC 6238) one-time passwords — generate counter- and time-based codes, verify a code within a drift window, and build otpauth:// provisioning URIs.","category":"compute","tags":["otp","totp","hotp","2fa","mfa","authenticator","rfc6238","rfc4226","otpauth"],"operations":[{"id":"totp","version":"v1","path":"/v1/totp","url":"https://otp.openverbs.com/v1/totp","title":"TOTP (time-based)","description":"Generate an RFC 6238 time-based one-time password from a base32 secret. Uses the current time by default, or an explicit unix timestamp (seconds); configurable period (default 30s), digits (default 6) and algorithm (default SHA1). Also returns the counter and seconds remaining in the window.","priceUsd":0.004},{"id":"hotp","version":"v1","path":"/v1/hotp","url":"https://otp.openverbs.com/v1/hotp","title":"HOTP (counter-based)","description":"Generate an RFC 4226 counter-based HMAC one-time password from a base32 secret and counter. Configurable digits (6–10, default 6) and algorithm (SHA1/SHA256/SHA512, default SHA1). An invalid base32 secret is a clean 400.","priceUsd":0.004},{"id":"verify","version":"v1","path":"/v1/verify","url":"https://otp.openverbs.com/v1/verify","title":"Verify a TOTP code","description":"Verify a submitted TOTP code against a base32 secret, scanning ±window time steps (default ±1) to tolerate clock drift. Returns valid plus the matching step offset (delta). A code that does not match is a successful result with valid=false — not an error.","priceUsd":0.004},{"id":"uri","version":"v1","path":"/v1/uri","url":"https://otp.openverbs.com/v1/uri","title":"Build otpauth:// URI","description":"Build an otpauth:// provisioning URI (the string encoded in authenticator QR codes) for a totp or hotp secret. Includes label, issuer, algorithm, digits and period (totp) or counter (hotp). The secret must be valid base32.","priceUsd":0.004}]},{"id":"fraction","url":"https://fraction.openverbs.com","title":"Fraction Toolkit","description":"Exact rational arithmetic (BigInt) — simplify to lowest terms, add/subtract/multiply/divide, and convert between fractions and decimals including repeating decimals.","category":"compute","tags":["fraction","rational","ratio","simplify","arithmetic","decimal","repeating-decimal","bigint"],"operations":[{"id":"simplify","version":"v1","path":"/v1/simplify","url":"https://fraction.openverbs.com/v1/simplify","title":"Simplify a fraction","description":"Reduce a fraction to lowest terms and describe it: numerator/denominator (denominator normalized positive), sign, whether it is an integer, and a mixed-number form when improper. A zero denominator is a clean 400.","priceUsd":0.002},{"id":"arithmetic","version":"v1","path":"/v1/arithmetic","url":"https://fraction.openverbs.com/v1/arithmetic","title":"Fraction arithmetic","description":"Add, subtract, multiply or divide two fractions and return the exact, fully-reduced result. All computation is done in BigInt so there is no floating-point error. Dividing by a zero fraction is a clean 400.","priceUsd":0.002},{"id":"from-decimal","version":"v1","path":"/v1/from-decimal","url":"https://fraction.openverbs.com/v1/from-decimal","title":"Decimal to fraction","description":"Convert a decimal string to an exact reduced fraction. For a repeating decimal, set repeat to the number of trailing fractional digits that repeat (e.g. value='0.1666', repeat=1 → 1/6; value='0.3', repeat=1 → 1/3). A non-numeric value is a clean 400.","priceUsd":0.002},{"id":"to-decimal","version":"v1","path":"/v1/to-decimal","url":"https://fraction.openverbs.com/v1/to-decimal","title":"Fraction to decimal","description":"Expand a fraction to its decimal form by exact long division, detecting a repeating cycle and rendering it in parenthesis notation (e.g. 1/6 → '0.1(6)', 1/7 → '0.(142857)'). maxDigits caps a non-repeating expansion. A zero denominator is a clean 400.","priceUsd":0.002}]},{"id":"matrix","url":"https://matrix.openverbs.com","title":"Matrix Algebra","description":"Dense linear algebra — multiply and transpose matrices, compute determinants, invert square matrices, and solve linear systems A·x = b via Gaussian elimination. Singular matrices return honest negative results rather than errors.","category":"compute","tags":["matrix","linear-algebra","determinant","inverse","transpose","solve","gaussian-elimination","math"],"operations":[{"id":"multiply","version":"v1","path":"/v1/multiply","url":"https://matrix.openverbs.com/v1/multiply","title":"Multiply matrices","description":"Multiply two matrices A·B. The inner dimensions must agree (columns of A equal rows of B); a mismatch or a ragged/empty matrix is a clean 400.","priceUsd":0.004},{"id":"transpose","version":"v1","path":"/v1/transpose","url":"https://matrix.openverbs.com/v1/transpose","title":"Transpose a matrix","description":"Transpose a matrix, swapping rows and columns. A ragged/empty matrix is a clean 400.","priceUsd":0.004},{"id":"determinant","version":"v1","path":"/v1/determinant","url":"https://matrix.openverbs.com/v1/determinant","title":"Determinant","description":"Compute the determinant of a square matrix via Gaussian elimination with partial pivoting. A non-square, ragged or empty matrix is a clean 400; a singular matrix simply returns 0.","priceUsd":0.004},{"id":"inverse","version":"v1","path":"/v1/inverse","url":"https://matrix.openverbs.com/v1/inverse","title":"Invert a matrix","description":"Invert a square matrix via Gauss-Jordan elimination. A non-square, ragged or empty matrix is a clean 400. A singular (non-invertible) matrix is NOT an error — it returns a successful { invertible:false, inverse:null }.","priceUsd":0.004},{"id":"solve","version":"v1","path":"/v1/solve","url":"https://matrix.openverbs.com/v1/solve","title":"Solve a linear system","description":"Solve the linear system A·x = b for a square coefficient matrix A and vector b via Gaussian elimination with partial pivoting. A non-square A or a b of the wrong length is a clean 400. A singular system is NOT an error — it returns a successful { solvable:false, solution:null }.","priceUsd":0.004}]},{"id":"regex","url":"https://regex.openverbs.com","title":"Regular Expressions","description":"ReDoS-safe regular expressions powered by RE2 — test, find matches with numbered and named capture groups, replace, and split. RE2 guarantees linear-time evaluation, so untrusted patterns can never cause catastrophic backtracking.","category":"text","tags":["regex","regexp","re2","match","replace","split","capture-groups","redos-safe"],"operations":[{"id":"test","version":"v1","path":"/v1/test","url":"https://regex.openverbs.com/v1/test","title":"Test for a match","description":"Test whether a RE2 pattern matches anywhere in the input. Returns { matched }. RE2 guarantees linear-time evaluation, so this is safe against catastrophic backtracking. An invalid pattern is a clean 400; no match is a successful 200.","priceUsd":0.004},{"id":"match","version":"v1","path":"/v1/match","url":"https://regex.openverbs.com/v1/match","title":"Find matches and capture groups","description":"Find the first match (or all matches with all=true) of a RE2 pattern, returning each match's text, start/end offsets, and numbered and named capture groups. No match is a successful 200 with an empty match list.","priceUsd":0.004},{"id":"replace","version":"v1","path":"/v1/replace","url":"https://regex.openverbs.com/v1/replace","title":"Replace matches","description":"Replace matches of a RE2 pattern with a replacement string. Replaces all matches by default (set all=false for first-only). The replacement may reference capture groups with $1, $2 or ${name}. Returns the resulting string.","priceUsd":0.004},{"id":"split","version":"v1","path":"/v1/split","url":"https://regex.openverbs.com/v1/split","title":"Split by a pattern","description":"Split the input into parts on each match of a RE2 pattern. An optional limit caps the number of parts (0 = unlimited). Returns the parts array and its count.","priceUsd":0.004}]},{"id":"bitwise","url":"https://bitwise.openverbs.com","title":"Bitwise Integer Ops","description":"Arbitrary-precision integer bit manipulation — AND/OR/XOR across many operands, width-bounded NOT, logical shift, circular rotate, and bit analysis (population count, trailing zeros, power-of-two). No 32-bit ceiling.","category":"compute","tags":["bitwise","bits","and","or","xor","shift","rotate","popcount","bigint"],"operations":[{"id":"and","version":"v1","path":"/v1/and","url":"https://bitwise.openverbs.com/v1/and","title":"Bitwise AND","description":"Bitwise AND across two or more non-negative integers (given as decimal strings, evaluated as arbitrary-precision BigInt). Returns the result in decimal, hex and binary.","priceUsd":0.002},{"id":"or","version":"v1","path":"/v1/or","url":"https://bitwise.openverbs.com/v1/or","title":"Bitwise OR","description":"Bitwise OR across two or more non-negative integers (given as decimal strings, evaluated as arbitrary-precision BigInt). Returns the result in decimal, hex and binary.","priceUsd":0.002},{"id":"xor","version":"v1","path":"/v1/xor","url":"https://bitwise.openverbs.com/v1/xor","title":"Bitwise XOR","description":"Bitwise XOR across two or more non-negative integers (given as decimal strings, evaluated as arbitrary-precision BigInt). Returns the result in decimal, hex and binary.","priceUsd":0.002},{"id":"not","version":"v1","path":"/v1/not","url":"https://bitwise.openverbs.com/v1/not","title":"Bitwise NOT","description":"One's-complement NOT of a non-negative integer within an explicit bit width (two's-complement domain). The value must fit in `width` bits. Returns decimal, hex and binary.","priceUsd":0.002},{"id":"shift","version":"v1","path":"/v1/shift","url":"https://bitwise.openverbs.com/v1/shift","title":"Bit shift","description":"Shift a non-negative integer left or right by `amount` bits. A right shift is logical (fills with zeros). A left shift grows freely unless a `width` is given, in which case the result is masked to that width and the input must fit it. Returns decimal, hex and binary.","priceUsd":0.002},{"id":"rotate","version":"v1","path":"/v1/rotate","url":"https://bitwise.openverbs.com/v1/rotate","title":"Bit rotate","description":"Circularly rotate a non-negative integer left or right within an explicit bit width (bits shifted off one end reappear at the other). The value must fit in `width` bits. Returns decimal, hex and binary.","priceUsd":0.002},{"id":"analyze","version":"v1","path":"/v1/analyze","url":"https://bitwise.openverbs.com/v1/analyze","title":"Analyze bits","description":"Inspect a non-negative integer's bit structure: bit length, set-bit count (population count), trailing-zero count, power-of-two test, and hex/binary representations. An optional width zero-pads the binary form.","priceUsd":0.002}]},{"id":"checksum","url":"https://checksum.openverbs.com","title":"Integrity Checksums","description":"Fast non-cryptographic integrity checksums — CRC-32, CRC-16 (CCITT/XMODEM/Modbus/IBM variants), Adler-32 and Fletcher-16/32 — for error detection in files and protocols. For security use the `hash` verb instead.","category":"compute","tags":["checksum","crc32","crc16","adler32","fletcher","integrity","error-detection"],"operations":[{"id":"crc32","version":"v1","path":"/v1/crc32","url":"https://checksum.openverbs.com/v1/crc32","title":"CRC-32 (IEEE)","description":"CRC-32 (IEEE 802.3 polynomial, as used by zip, gzip and PNG) over the input payload. Returns the checksum as an unsigned integer and 8-digit hex. Non-cryptographic — for error detection only.","priceUsd":0.002},{"id":"crc16","version":"v1","path":"/v1/crc16","url":"https://checksum.openverbs.com/v1/crc16","title":"CRC-16 (multiple variants)","description":"CRC-16 over the input payload in one of several standard variants (ccitt-false, xmodem, modbus, ibm; default ccitt-false). Returns the checksum as an unsigned integer and 4-digit hex. Non-cryptographic.","priceUsd":0.002},{"id":"adler32","version":"v1","path":"/v1/adler32","url":"https://checksum.openverbs.com/v1/adler32","title":"Adler-32","description":"Adler-32 checksum (as used by zlib) over the input payload. Faster than CRC-32 but weaker for short inputs. Returns the checksum as an unsigned integer and 8-digit hex. Non-cryptographic.","priceUsd":0.002},{"id":"fletcher","version":"v1","path":"/v1/fletcher","url":"https://checksum.openverbs.com/v1/fletcher","title":"Fletcher-16 / Fletcher-32","description":"Fletcher checksum over the input payload, in 16-bit (default) or 32-bit width. Returns the checksum as an unsigned integer and hex. Non-cryptographic.","priceUsd":0.002}]},{"id":"numtheory","url":"https://numtheory.openverbs.com","title":"Number Theory","description":"Elementary number theory on arbitrary-precision integers — GCD and LCM, prime factorization, primality testing, Euler's totient, and modular exponentiation.","category":"compute","tags":["number-theory","gcd","lcm","prime","factorization","totient","modpow","bigint"],"operations":[{"id":"gcd","version":"v1","path":"/v1/gcd","url":"https://numtheory.openverbs.com/v1/gcd","title":"Greatest common divisor","description":"Greatest common divisor of two or more non-negative integers (arbitrary precision).","priceUsd":0.004},{"id":"lcm","version":"v1","path":"/v1/lcm","url":"https://numtheory.openverbs.com/v1/lcm","title":"Least common multiple","description":"Least common multiple of two or more positive integers (arbitrary precision).","priceUsd":0.004},{"id":"factorize","version":"v1","path":"/v1/factorize","url":"https://numtheory.openverbs.com/v1/factorize","title":"Prime factorization","description":"Prime-factorize a positive integer (≤ 10^15 so the computation is always fast). Returns the prime factors with exponents, the divisor count, and whether n is prime.","priceUsd":0.004},{"id":"is-prime","version":"v1","path":"/v1/is-prime","url":"https://numtheory.openverbs.com/v1/is-prime","title":"Primality test","description":"Miller-Rabin primality test (with witnesses that are exact for all 64-bit integers) on an arbitrary-precision integer. Returns { prime }.","priceUsd":0.004},{"id":"totient","version":"v1","path":"/v1/totient","url":"https://numtheory.openverbs.com/v1/totient","title":"Euler's totient","description":"Euler's totient φ(n) — the count of integers in [1, n] coprime to n — for a positive integer ≤ 10^15 (it is computed from the prime factorization).","priceUsd":0.004},{"id":"modpow","version":"v1","path":"/v1/modpow","url":"https://numtheory.openverbs.com/v1/modpow","title":"Modular exponentiation","description":"Compute (base ^ exponent) mod modulus efficiently for arbitrary-precision integers. The modulus must be positive.","priceUsd":0.004}]},{"id":"combinatorics","url":"https://combinatorics.openverbs.com","title":"Combinatorics","description":"Exact combinatorial counting on arbitrary-precision integers — factorials, permutations (nPr), combinations (nCr), multinomial coefficients and Catalan numbers.","category":"compute","tags":["combinatorics","factorial","permutations","combinations","binomial","multinomial","catalan","bigint"],"operations":[{"id":"factorial","version":"v1","path":"/v1/factorial","url":"https://combinatorics.openverbs.com/v1/factorial","title":"Factorial","description":"Exact factorial n! for 0 ≤ n ≤ 20000, returned as a decimal string with its digit count.","priceUsd":0.004},{"id":"permutations","version":"v1","path":"/v1/permutations","url":"https://combinatorics.openverbs.com/v1/permutations","title":"Permutations (nPr)","description":"Number of ordered arrangements of r items from n, nPr = n!/(n-r)!. Requires r ≤ n and r ≤ 10000.","priceUsd":0.004},{"id":"combinations","version":"v1","path":"/v1/combinations","url":"https://combinatorics.openverbs.com/v1/combinations","title":"Combinations (nCr)","description":"Binomial coefficient nCr = n!/(r!(n-r)!), the number of unordered r-subsets of n. Requires r ≤ n and min(r, n-r) ≤ 10000.","priceUsd":0.004},{"id":"multinomial","version":"v1","path":"/v1/multinomial","url":"https://combinatorics.openverbs.com/v1/multinomial","title":"Multinomial coefficient","description":"Multinomial coefficient (k1+k2+…)! / (k1! k2! …) — the number of ways to partition n = Σki items into labelled groups of the given sizes. The sum must be ≤ 20000.","priceUsd":0.004},{"id":"catalan","version":"v1","path":"/v1/catalan","url":"https://combinatorics.openverbs.com/v1/catalan","title":"Catalan number","description":"The n-th Catalan number Cₙ = C(2n, n)/(n+1), counting balanced bracketings, binary trees, and many other structures. Requires n ≤ 10000.","priceUsd":0.004}]},{"id":"spreadsheet","url":"https://spreadsheet.openverbs.com","title":"Spreadsheet References","description":"A1 / R1C1 cell-reference arithmetic — convert A1 references to row/column coordinates and back, translate column letters to indices, and parse A1 ranges into their extent.","category":"compute","tags":["spreadsheet","excel","a1","r1c1","cell","column","range"],"operations":[{"id":"a1-to-rc","version":"v1","path":"/v1/a1-to-rc","url":"https://spreadsheet.openverbs.com/v1/a1-to-rc","title":"A1 reference → row/column","description":"Parse an A1-style cell reference (e.g. \"B3\" or \"$AA$100\") into 1-based row and column numbers, plus the column letters and whether each part is absolute.","priceUsd":0.004},{"id":"rc-to-a1","version":"v1","path":"/v1/rc-to-a1","url":"https://spreadsheet.openverbs.com/v1/rc-to-a1","title":"Row/column → A1 reference","description":"Build an A1-style cell reference from 1-based row and column numbers, optionally marking the row and/or column absolute ($).","priceUsd":0.004},{"id":"column","version":"v1","path":"/v1/column","url":"https://spreadsheet.openverbs.com/v1/column","title":"Column letter ↔ number","description":"Convert between a spreadsheet column letter and its 1-based index in either direction. Provide exactly one of `letter` (e.g. \"AA\") or `number` (e.g. 27); the response always contains both.","priceUsd":0.004},{"id":"range","version":"v1","path":"/v1/range","url":"https://spreadsheet.openverbs.com/v1/range","title":"Parse an A1 range","description":"Parse an A1 range like \"A1:C10\" into its start and end cells (normalized so start is the top-left) and its extent — row count, column count and total cell count.","priceUsd":0.004}]},{"id":"distribution","url":"https://distribution.openverbs.com","title":"Probability Distributions","description":"Probability distributions — normal, Student's t, binomial and Poisson — each with density/mass, cumulative distribution and quantile (inverse-CDF) functions.","category":"compute","tags":["distribution","probability","statistics","normal","gaussian","t","binomial","poisson","cdf","quantile"],"operations":[{"id":"normal","version":"v1","path":"/v1/normal","url":"https://distribution.openverbs.com/v1/normal","title":"Normal (Gaussian) distribution","description":"Normal distribution with optional mean (default 0) and standard deviation sd (default 1). `function` selects the density (pdf), cumulative distribution (cdf) or quantile / inverse-CDF.","priceUsd":0.004},{"id":"t","version":"v1","path":"/v1/t","url":"https://distribution.openverbs.com/v1/t","title":"Student's t distribution","description":"Student's t distribution with df degrees of freedom (> 0). `function` selects the density (pdf), cumulative distribution (cdf) or quantile / inverse-CDF.","priceUsd":0.004},{"id":"binomial","version":"v1","path":"/v1/binomial","url":"https://distribution.openverbs.com/v1/binomial","title":"Binomial distribution","description":"Binomial distribution with `trials` (n ≥ 0, ≤ 1e6) and success `probability` (0..1). `function` selects the mass (pmf), cumulative distribution (cdf) or quantile / inverse-CDF.","priceUsd":0.004},{"id":"poisson","version":"v1","path":"/v1/poisson","url":"https://distribution.openverbs.com/v1/poisson","title":"Poisson distribution","description":"Poisson distribution with rate `lambda` (> 0, ≤ 1e9). `function` selects the mass (pmf), cumulative distribution (cdf) or quantile / inverse-CDF.","priceUsd":0.004}]},{"id":"chem","url":"https://chem.openverbs.com","title":"Chemistry","description":"Periodic-table lookup and molar-mass computation — look up any of the 118 elements by symbol, name or atomic number, search the table, and compute the molar mass and composition of a chemical formula.","category":"science","tags":["chemistry","periodic-table","element","molar-mass","molecular-weight","formula","science"],"operations":[{"id":"element","version":"v1","path":"/v1/element","url":"https://chem.openverbs.com/v1/element","title":"Element lookup","description":"Look up a periodic-table element by exactly one of `symbol` (e.g. \"Fe\"), `name` (e.g. \"iron\") or atomic `number` (1..118). Returns its number, symbol, name, standard atomic weight and whether that weight is a true standard atomic weight.","priceUsd":0.004},{"id":"search","version":"v1","path":"/v1/search","url":"https://chem.openverbs.com/v1/search","title":"Element search","description":"Search the periodic table by name or symbol substring. Exact matches rank first, then prefix matches, then substring matches. Returns up to `limit` elements (default 20) plus the total match count.","priceUsd":0.004},{"id":"molar-mass","version":"v1","path":"/v1/molar-mass","url":"https://chem.openverbs.com/v1/molar-mass","title":"Molar mass","description":"Compute the molar mass (g/mol) of a chemical formula. Supports nested parentheses and brackets, element multipliers, and hydrate dot notation with coefficients (e.g. \"Ca(OH)2\", \"CuSO4·5H2O\", \"K4[Fe(CN)6]\"). Returns the total mass and the per-element composition with mass fraction percentages.","priceUsd":0.004}]},{"id":"creditcard","url":"https://creditcard.openverbs.com","title":"Payment Card Numbers","description":"Payment-card number utilities — Luhn validation, network/brand detection, masking, display formatting and Luhn-valid TEST-number generation. Not a fraud or authorization check.","category":"validation","tags":["credit-card","payment","luhn","pan","iin","bin","mask","validation"],"operations":[{"id":"validate","version":"v1","path":"/v1/validate","url":"https://creditcard.openverbs.com/v1/validate","title":"Validate a card number","description":"Validate a payment-card number: Luhn check-digit test plus network detection and length check. A syntactically valid number that fails Luhn returns `valid:false` (a 200, not an error).","priceUsd":0.002},{"id":"network","version":"v1","path":"/v1/network","url":"https://creditcard.openverbs.com/v1/network","title":"Detect the card network","description":"Detect the issuing network/brand (Visa, Mastercard, American Express, Discover, Diners Club, JCB, UnionPay, Maestro) from the card's IIN prefix, with the network's valid lengths. Returns `network:null` for an unrecognized prefix.","priceUsd":0.002},{"id":"mask","version":"v1","path":"/v1/mask","url":"https://creditcard.openverbs.com/v1/mask","title":"Mask a card number","description":"Mask a card number for display, keeping the first six and last four digits (the PCI-permitted maximum) and replacing the rest with a mask character (default `*`).","priceUsd":0.002},{"id":"format","version":"v1","path":"/v1/format","url":"https://creditcard.openverbs.com/v1/format","title":"Group a card number","description":"Format a card number into the conventional display groups for its network (4-6-5 for Amex, 4-6-4 for 14-digit Diners, otherwise groups of four).","priceUsd":0.002},{"id":"generate","version":"v1","path":"/v1/generate","url":"https://creditcard.openverbs.com/v1/generate","title":"Generate a TEST card number","description":"Generate a random Luhn-valid TEST card number for the given network (default Visa). For testing only — these are not issued cards and cannot be charged. The response is always flagged `test:true`.","priceUsd":0.002}]},{"id":"macaddress","url":"https://macaddress.openverbs.com","title":"MAC Addresses","description":"MAC / EUI-48 & EUI-64 address utilities — parse and normalize any notation, inspect unicast/multicast and universal/local properties, reformat, derive the EUI-64 / IPv6 link-local identifier, and generate random addresses.","category":"network","tags":["mac-address","eui-48","eui-64","networking","oui","ipv6","link-local"],"operations":[{"id":"parse","version":"v1","path":"/v1/parse","url":"https://macaddress.openverbs.com/v1/parse","title":"Parse & normalize a MAC address","description":"Parse a MAC / EUI-48 or EUI-64 address from any common notation (colon, hyphen, Cisco dot, or bare hex) and return it in every canonical form plus its integer value.","priceUsd":0.002},{"id":"info","version":"v1","path":"/v1/info","url":"https://macaddress.openverbs.com/v1/info","title":"Inspect address properties","description":"Report the properties of a MAC address encoded in its first octet: unicast vs multicast (I/G bit), universal vs locally-administered (U/L bit), the broadcast address, and — for EUI-48 — the OUI and NIC portions.","priceUsd":0.002},{"id":"format","version":"v1","path":"/v1/format","url":"https://macaddress.openverbs.com/v1/format","title":"Reformat a MAC address","description":"Reformat a MAC address into the requested notation (colon, hyphen, Cisco dot or bare) and case (lower default or upper).","priceUsd":0.002},{"id":"to-eui64","version":"v1","path":"/v1/to-eui64","url":"https://macaddress.openverbs.com/v1/to-eui64","title":"EUI-48 → EUI-64 / IPv6 IID","description":"Derive the modified EUI-64 interface identifier from a 48-bit MAC (insert FFFE, flip the U/L bit) and the resulting IPv6 link-local address (fe80::/64).","priceUsd":0.002},{"id":"generate","version":"v1","path":"/v1/generate","url":"https://macaddress.openverbs.com/v1/generate","title":"Generate a random MAC address","description":"Generate a random EUI-48 MAC address. By default it is locally-administered and unicast (safe for testing); set `local:false` for a universal-bit address or `multicast:true` for a group address.","priceUsd":0.002}]},{"id":"physics","url":"https://physics.openverbs.com","title":"Physics constants","description":"CODATA 2018 physical-constants lookup — resolve any of the fundamental constants by key, symbol or name, search the table, or list them by category. Each result carries the recommended value, unit and relative standard uncertainty.","category":"science","tags":["physics","constants","codata","science","units","fundamental-constants"],"operations":[{"id":"constant","version":"v1","path":"/v1/constant","url":"https://physics.openverbs.com/v1/constant","title":"Constant lookup","description":"Look up a physical constant by its key (e.g. \"speed-of-light\"), symbol (e.g. \"c\") or exact name. Returns the CODATA 2018 recommended value, unit, relative standard uncertainty (0 for values that are exact by SI definition) and category.","priceUsd":0.004},{"id":"search","version":"v1","path":"/v1/search","url":"https://physics.openverbs.com/v1/search","title":"Constant search","description":"Search the constants table by key, symbol or name substring. Exact matches rank first, then prefix matches, then substring matches. Returns up to `limit` constants (default 20) plus the total match count.","priceUsd":0.004},{"id":"list","version":"v1","path":"/v1/list","url":"https://physics.openverbs.com/v1/list","title":"Constant list","description":"List every physical constant in the dataset, or only those in a given category (universal, adopted, electromagnetic, atomic, physico-chemical). Returns the constants, the total count and the set of available categories.","priceUsd":0.004}]},{"id":"wallet","url":"https://wallet.openverbs.com","title":"Crypto wallet addresses","description":"Blockchain address validation and normalisation — validate Ethereum and Bitcoin addresses, detect a chain from an address, apply the EIP-55 checksum, and normalise addresses to canonical form.","category":"crypto","tags":["wallet","address","ethereum","bitcoin","eip55","bech32","base58check","blockchain","web3"],"operations":[{"id":"validate","version":"v1","path":"/v1/validate","url":"https://wallet.openverbs.com/v1/validate","title":"Address validation","description":"Validate a blockchain address. Supply `chain` to check against a specific chain, or omit it to auto-detect. Ethereum addresses report their EIP-55 checksum state; Bitcoin covers base58check (P2PKH/P2SH) and bech32/bech32m segwit (P2WPKH/P2WSH/P2TR). A well-formed but invalid address returns `valid:false` — not an error.","priceUsd":0.004},{"id":"detect","version":"v1","path":"/v1/detect","url":"https://wallet.openverbs.com/v1/detect","title":"Chain detection","description":"Guess which chain an address belongs to from its shape and encoding, without requiring the caller to know it up front. Returns the chain, format and address type, or nulls when nothing matches.","priceUsd":0.004},{"id":"eip55","version":"v1","path":"/v1/eip55","url":"https://wallet.openverbs.com/v1/eip55","title":"EIP-55 checksum","description":"Apply the EIP-55 mixed-case checksum to an Ethereum address, regardless of its input casing. Returns the checksummed address and whether it differed from the input. Non-hex input is rejected before payment.","priceUsd":0.004},{"id":"normalize","version":"v1","path":"/v1/normalize","url":"https://wallet.openverbs.com/v1/normalize","title":"Address normalisation","description":"Normalise an address to its canonical form — Ethereum to its EIP-55 checksummed form, bech32 Bitcoin to lowercase (base58check is left untouched as it is case-sensitive). An address that is not a valid address of a known chain is rejected before payment.","priceUsd":0.004}]},{"id":"music","url":"https://music.openverbs.com","title":"Music theory","description":"Music-theory primitives — parse notes and their frequency/MIDI number, name the interval between two notes, transpose, and build scales and chords with correct diatonic spelling. Standard pitch A4 = 440 Hz.","category":"media","tags":["music","theory","note","pitch","frequency","scale","chord","interval","midi"],"operations":[{"id":"note","version":"v1","path":"/v1/note","url":"https://music.openverbs.com/v1/note","title":"Note parse","description":"Parse a note in scientific pitch notation (e.g. \"A4\", \"C#5\", \"Bb3\") into its letter, accidental, pitch class (0..11), octave, MIDI number and frequency in Hz (A4 = 440 Hz).","priceUsd":0.002},{"id":"interval","version":"v1","path":"/v1/interval","url":"https://music.openverbs.com/v1/interval","title":"Interval between notes","description":"Name the interval between two notes (`to` at or above `from`) — its size in semitones, its diatonic number and its quality (perfect/major/minor/augmented/diminished). Correct spelling matters: C→F# is an augmented fourth, C→Gb a diminished fifth.","priceUsd":0.002},{"id":"transpose","version":"v1","path":"/v1/transpose","url":"https://music.openverbs.com/v1/transpose","title":"Transpose a note","description":"Transpose a note by a (possibly negative) number of semitones. Result is spelled chromatically with sharps, or flats when `preferFlats` is true.","priceUsd":0.002},{"id":"scale","version":"v1","path":"/v1/scale","url":"https://music.openverbs.com/v1/scale","title":"Build a scale","description":"Build a scale from a root note and type (major, natural-minor, harmonic-minor, melodic-minor, dorian, phrygian, lydian, mixolydian, locrian, major-pentatonic, minor-pentatonic, blues, chromatic). Heptatonic scales and modes are spelled diatonically (F major → F G A Bb C D E). Returns the note names, MIDI numbers and semitone intervals.","priceUsd":0.002},{"id":"chord","version":"v1","path":"/v1/chord","url":"https://music.openverbs.com/v1/chord","title":"Build a chord","description":"Build a chord from a root note and quality (major, minor, dim, aug, maj7, min7, dom7, dim7, half-dim7, sus2, sus4, maj6, min6). Notes are spelled by stacked thirds (C dom7 → C E G Bb). Returns the note names, MIDI numbers and semitone intervals.","priceUsd":0.002}]},{"id":"astro","url":"https://astro.openverbs.com","title":"Astronomy","description":"Astronomy primitives — the astronomical Julian Date of an instant, sunrise/sunset/solar-noon for a location, the Moon's phase and illumination, and the astronomical season. All times UTC.","category":"science","tags":["astronomy","sun","sunrise","sunset","moon","moon-phase","season","julian-date","ephemeris"],"operations":[{"id":"julian-date","version":"v1","path":"/v1/julian-date","url":"https://astro.openverbs.com/v1/julian-date","title":"Astronomical Julian Date","description":"Compute the astronomical Julian Date (JD, fractional, epoch noon 1 Jan 4713 BC) and Modified Julian Date (MJD = JD − 2400000.5) of a UTC instant. Unlike `calendar`'s integer Julian Day Number, this carries the time-of-day fraction.","priceUsd":0.004},{"id":"sun","version":"v1","path":"/v1/sun","url":"https://astro.openverbs.com/v1/sun","title":"Sunrise / sunset","description":"Compute sunrise, sunset, solar noon and day length for a latitude/longitude (east-positive) and date, using the NOAA sunrise equation. All times are UTC ISO-8601. Locations in polar day or night return null rise/set with a `polar` flag — a successful result, not an error.","priceUsd":0.004},{"id":"moon-phase","version":"v1","path":"/v1/moon-phase","url":"https://astro.openverbs.com/v1/moon-phase","title":"Moon phase","description":"Compute the Moon's phase name, age in days since the last new moon and illuminated fraction (0..1) for a UTC date/time. Uses the mean synodic month (29.53 days).","priceUsd":0.004},{"id":"season","version":"v1","path":"/v1/season","url":"https://astro.openverbs.com/v1/season","title":"Astronomical season","description":"Determine the astronomical season for a date, based on the Sun's apparent ecliptic longitude (0°=March equinox, 90°=June solstice, …). Defaults to the northern hemisphere; pass `hemisphere` to flip.","priceUsd":0.004}]},{"id":"iso","url":"https://iso.openverbs.com","title":"ISO registries","description":"ISO standard registries — 3166-1 countries, 4217 currencies and 639 languages. Resolve any record by its codes or name, or fuzzy-search across one or all registries.","category":"reference","tags":["iso","iso-3166","iso-4217","iso-639","country","currency","language","locale","codes"],"operations":[{"id":"country","version":"v1","path":"/v1/country","url":"https://iso.openverbs.com/v1/country","title":"ISO 3166-1 country lookup","description":"Look up a country by its ISO 3166-1 alpha-2 code, alpha-3 code, numeric code or English name. Provide exactly one field. Returns all codes plus the UN region.","priceUsd":0.002},{"id":"currency","version":"v1","path":"/v1/currency","url":"https://iso.openverbs.com/v1/currency","title":"ISO 4217 currency lookup","description":"Look up an active ISO 4217 currency by its alphabetic code or numeric code. Provide exactly one field. Returns the code, numeric code, name and number of minor units (decimal places).","priceUsd":0.002},{"id":"language","version":"v1","path":"/v1/language","url":"https://iso.openverbs.com/v1/language","title":"ISO 639 language lookup","description":"Look up a language by its ISO 639-1 alpha-2 code, ISO 639-2 alpha-3 code (bibliographic or terminologic) or English name. Provide exactly one field.","priceUsd":0.002},{"id":"search","version":"v1","path":"/v1/search","url":"https://iso.openverbs.com/v1/search","title":"Search ISO registries","description":"Fuzzy-search countries, currencies and languages by name or code. Scope with `registry` (defaults to all). Matches are ranked exact-code/name → prefix → substring.","priceUsd":0.002}]},{"id":"postal","url":"https://postal.openverbs.com","title":"Postal codes","description":"Postal / ZIP code validation by country — check a code against its ISO 3166-1 alpha-2 pattern, normalise casing and whitespace, inspect a country's pattern, or list every supported country.","category":"validation","tags":["postal-code","zip-code","postcode","validation","address","iso-3166"],"operations":[{"id":"validate","version":"v1","path":"/v1/validate","url":"https://postal.openverbs.com/v1/validate","title":"Validate a postal code","description":"Check whether a postal / ZIP code is well-formed for a country (ISO 3166-1 alpha-2). A malformed code is a successful result with `valid:false`, not an error — only an unsupported country or empty code is a 400.","priceUsd":0.002},{"id":"format","version":"v1","path":"/v1/format","url":"https://postal.openverbs.com/v1/format","title":"Normalise a postal code","description":"Normalise a postal code's casing and whitespace (uppercase, collapse runs of spaces) and report whether the normalised form is valid for the country.","priceUsd":0.002},{"id":"spec","version":"v1","path":"/v1/spec","url":"https://postal.openverbs.com/v1/spec","title":"Country postal-code pattern","description":"Return the validation regular expression (source and flags) used for a country's postal codes.","priceUsd":0.002},{"id":"countries","version":"v1","path":"/v1/countries","url":"https://postal.openverbs.com/v1/countries","title":"List supported countries","description":"List every ISO 3166-1 alpha-2 country code for which a postal-code pattern is available.","priceUsd":0.002}]},{"id":"encoding","url":"https://encoding.openverbs.com","title":"Character encoding","description":"Character-set and Unicode utilities — detect the charset of a byte buffer, transcode bytes between character sets, apply Unicode normalisation forms, and inspect a string's code points and byte layout.","category":"text","tags":["encoding","charset","unicode","utf-8","utf-16","latin1","normalization","transcode","code-point"],"operations":[{"id":"detect","version":"v1","path":"/v1/detect","url":"https://encoding.openverbs.com/v1/detect","title":"Detect character set","description":"Guess the character set of a base64-encoded byte buffer: sniffs a byte-order mark, then falls back to ASCII / UTF-8 validation and a UTF-16 NUL-pattern heuristic. Returns a best-effort charset with a confidence label — a low-confidence guess is still a successful 200.","priceUsd":0.002},{"id":"transcode","version":"v1","path":"/v1/transcode","url":"https://encoding.openverbs.com/v1/transcode","title":"Transcode between character sets","description":"Decode a base64 byte buffer from one character set and re-encode it into another (utf-8, utf-16le, utf-16be, latin1, ascii). Characters that the target set cannot represent, or bytes invalid for the source set, are clean 400s.","priceUsd":0.002},{"id":"normalize","version":"v1","path":"/v1/normalize","url":"https://encoding.openverbs.com/v1/normalize","title":"Unicode normalisation","description":"Apply a Unicode normalisation form (NFC, NFD, NFKC or NFKD) to a string. Reports whether the text changed and its length in UTF-16 code units and code points.","priceUsd":0.002},{"id":"inspect","version":"v1","path":"/v1/inspect","url":"https://encoding.openverbs.com/v1/inspect","title":"Inspect code points","description":"Break a string into its Unicode code points, each with its U+ notation, decimal value and UTF-8 / UTF-16 byte layout, plus total byte lengths.","priceUsd":0.002}]},{"id":"nato","url":"https://nato.openverbs.com","title":"Phonetic & Morse","description":"NATO/ICAO phonetic alphabet and international Morse code — spell text phonetically and back, and encode/decode Morse.","category":"text","tags":["nato","icao","phonetic-alphabet","morse","morse-code","spelling","radio"],"operations":[{"id":"spell","version":"v1","path":"/v1/spell","url":"https://nato.openverbs.com/v1/spell","title":"Spell with the phonetic alphabet","description":"Spell text using the NATO/ICAO phonetic alphabet (A→Alfa, B→Bravo, …), including digits and spaces (→Space). Characters with no phonetic spelling are clean 400s.","priceUsd":0.002},{"id":"unspell","version":"v1","path":"/v1/unspell","url":"https://nato.openverbs.com/v1/unspell","title":"Decode phonetic words","description":"Turn a string of phonetic words back into text (\"Sierra Oscar Sierra\" → \"SOS\"). Accepts common alternative spellings (Alpha, Juliet, Niner). Unknown words are clean 400s.","priceUsd":0.002},{"id":"to-morse","version":"v1","path":"/v1/to-morse","url":"https://nato.openverbs.com/v1/to-morse","title":"Encode Morse code","description":"Encode text into international (ITU) Morse code. Letters are separated by spaces and words by \"/\". Supports A-Z, 0-9 and common punctuation; unsupported characters are clean 400s.","priceUsd":0.002},{"id":"from-morse","version":"v1","path":"/v1/from-morse","url":"https://nato.openverbs.com/v1/from-morse","title":"Decode Morse code","description":"Decode international Morse code back into text. Letters are separated by whitespace and words by \"/\". Unknown Morse sequences are clean 400s.","priceUsd":0.002}]},{"id":"emoji","url":"https://emoji.openverbs.com","title":"Emoji","description":"Emoji utilities — look an emoji up by shortcode or name, fuzzy-search by keyword, inspect an emoji's code points and metadata, and build country-flag emoji.","category":"content","tags":["emoji","shortcode","unicode","flag","search","gemoji"],"operations":[{"id":"lookup","version":"v1","path":"/v1/lookup","url":"https://emoji.openverbs.com/v1/lookup","title":"Look up an emoji","description":"Resolve an emoji by its shortcode (e.g. \"smile\" or \":smile:\") or exact name. Provide exactly one field. Returns the emoji, its metadata and code points.","priceUsd":0.002},{"id":"search","version":"v1","path":"/v1/search","url":"https://emoji.openverbs.com/v1/search","title":"Search emoji","description":"Fuzzy-search emoji by name, shortcode or keyword tag, ranked exact → prefix → substring.","priceUsd":0.002},{"id":"info","version":"v1","path":"/v1/info","url":"https://emoji.openverbs.com/v1/info","title":"Inspect an emoji","description":"Given an emoji character (or any string), return its code points and — if known — its name, category, shortcodes and tags. An unknown emoji is a successful result with `known:false`, not an error.","priceUsd":0.002},{"id":"flag","version":"v1","path":"/v1/flag","url":"https://emoji.openverbs.com/v1/flag","title":"Country flag emoji","description":"Build the flag emoji for an ISO 3166-1 alpha-2 country code from its regional-indicator symbols (e.g. \"US\" → 🇺🇸). Non two-letter codes are clean 400s.","priceUsd":0.002}]},{"id":"chemeq","url":"https://chemeq.openverbs.com","title":"Chemical equations","description":"Chemical-reaction maths — balance equations into whole-number coefficients (exact rational null-space), run mole/mass stoichiometry from one known species to another, and find the limiting reagent with theoretical yields.","category":"science","tags":["chemistry","equation","balance","stoichiometry","limiting-reagent","moles"],"operations":[{"id":"balance","version":"v1","path":"/v1/balance","url":"https://chemeq.openverbs.com/v1/balance","title":"Balance a chemical equation","description":"Balance an equation such as \"H2 + O2 -> H2O\" into the smallest whole-number coefficients using exact rational linear algebra. Equations that cannot be balanced with positive coefficients are clean 400s.","priceUsd":0.004},{"id":"stoichiometry","version":"v1","path":"/v1/stoichiometry","url":"https://chemeq.openverbs.com/v1/stoichiometry","title":"Reaction stoichiometry","description":"Given a reaction and a known amount (moles or grams) of one species, compute the amount of a target species. The equation is balanced automatically.","priceUsd":0.004},{"id":"limiting","version":"v1","path":"/v1/limiting","url":"https://chemeq.openverbs.com/v1/limiting","title":"Limiting reagent & theoretical yield","description":"Given a reaction and the supplied amount of every reactant, identify the limiting reagent and compute leftover reactant and theoretical product yields.","priceUsd":0.004}]},{"id":"dice","url":"https://dice.openverbs.com","title":"Dice","description":"RPG dice-notation utilities — parse notation like \"3d6+2\" or \"4d6kh3\", roll it with a cryptographically secure RNG, or compute the exact probability distribution (mean, variance, min/max and the full pmf) with no sampling.","category":"games","tags":["dice","rpg","random","probability","statistics","notation"],"operations":[{"id":"parse","version":"v1","path":"/v1/parse","url":"https://dice.openverbs.com/v1/parse","title":"Parse dice notation","description":"Parse dice notation such as \"3d6+2\", \"4d6kh3\" (keep highest 3) or \"2d20dl1\" (drop lowest 1) into structured terms. Malformed notation is a clean 400.","priceUsd":0.002},{"id":"roll","version":"v1","path":"/v1/roll","url":"https://dice.openverbs.com/v1/roll","title":"Roll dice","description":"Roll dice notation with a cryptographically secure RNG, optionally repeated. Returns per-die rolls, the kept dice and the total for each roll.","priceUsd":0.002},{"id":"stats","version":"v1","path":"/v1/stats","url":"https://dice.openverbs.com/v1/stats","title":"Exact dice statistics","description":"Compute the exact probability distribution of a dice notation — mean, variance, standard deviation, min/max and the full probability mass function — with no sampling. Notations whose outcome range is too large for exact computation are clean 400s.","priceUsd":0.002}]},{"id":"braille","url":"https://braille.openverbs.com","title":"Braille","description":"Unicode braille utilities — transcribe text to grade-1 (uncontracted) English braille and back, and convert between braille cells and their raised-dot numbers.","category":"content","tags":["braille","accessibility","unicode","transcription","dots"],"operations":[{"id":"encode","version":"v1","path":"/v1/encode","url":"https://braille.openverbs.com/v1/encode","title":"Text to braille","description":"Transcribe text to Unicode braille (grade-1 / uncontracted English braille), with capital and number signs. Characters with no grade-1 representation are clean 400s.","priceUsd":0.002},{"id":"decode","version":"v1","path":"/v1/decode","url":"https://braille.openverbs.com/v1/decode","title":"Braille to text","description":"Transcribe a Unicode braille string back to text, honouring capital and number signs. Non-braille or unmapped cells are clean 400s.","priceUsd":0.002},{"id":"to-dots","version":"v1","path":"/v1/to-dots","url":"https://braille.openverbs.com/v1/to-dots","title":"Braille cells to dot numbers","description":"Break a braille string into its cells and the raised-dot numbers (1–8) of each cell.","priceUsd":0.002},{"id":"from-dots","version":"v1","path":"/v1/from-dots","url":"https://braille.openverbs.com/v1/from-dots","title":"Dot numbers to braille cells","description":"Build braille cells from raised-dot numbers (each cell an array of 1–8). Out-of-range or repeated dots are clean 400s.","priceUsd":0.002}]},{"id":"emailauth","url":"https://emailauth.openverbs.com","title":"Email authentication","description":"Parse and validate the email-authentication DNS records SPF, DMARC and DKIM, and evaluate an SPF record against an IPv4/IPv6 address, with honest handling of DNS-dependent SPF mechanisms.","category":"email","tags":["spf","dmarc","dkim","email","dns","authentication"],"operations":[{"id":"spf-parse","version":"v1","path":"/v1/spf-parse","url":"https://emailauth.openverbs.com/v1/spf-parse","title":"Parse an SPF record","description":"Parse an SPF TXT record (\"v=spf1 …\") into its qualified mechanisms and modifiers. Records that do not start with v=spf1 or use unknown mechanisms are clean 400s.","priceUsd":0.004},{"id":"spf-check","version":"v1","path":"/v1/spf-check","url":"https://emailauth.openverbs.com/v1/spf-check","title":"Evaluate an SPF record against an IP","description":"Evaluate an SPF record against an IPv4/IPv6 address using only its literal ip4/ip6/all mechanisms. DNS-dependent mechanisms (include, a, mx, exists, redirect) reached before a match yield an honest `indeterminate` result rather than a guess.","priceUsd":0.004},{"id":"dmarc-parse","version":"v1","path":"/v1/dmarc-parse","url":"https://emailauth.openverbs.com/v1/dmarc-parse","title":"Parse a DMARC record","description":"Parse a DMARC TXT record (\"v=DMARC1; p=…\") into its policy, alignment, sampling and reporting tags. Missing or invalid policy/alignment/pct values are clean 400s.","priceUsd":0.004},{"id":"dkim-parse","version":"v1","path":"/v1/dkim-parse","url":"https://emailauth.openverbs.com/v1/dkim-parse","title":"Parse a DKIM key record","description":"Parse a DKIM public-key DNS TXT record (\"v=DKIM1; k=rsa; p=…\") into its key type, public key, hash algorithms, service types and flags. An empty `p` is reported as a revoked key. A missing `p` tag is a clean 400.","priceUsd":0.004}]},{"id":"readability","url":"https://readability.openverbs.com","title":"Readability","description":"English readability analysis — the standard formulas (Flesch Reading Ease, Flesch–Kincaid, Gunning fog, SMOG, Coleman–Liau, ARI), a consensus grade level, per-word syllable counts and reading/speaking-time estimates.","category":"text","tags":["readability","flesch","grade-level","syllables","reading-time","text"],"operations":[{"id":"score","version":"v1","path":"/v1/score","url":"https://readability.openverbs.com/v1/score","title":"Readability scores","description":"Compute the standard English readability formulas — Flesch Reading Ease, Flesch–Kincaid grade, Gunning fog, SMOG, Coleman–Liau and ARI — along with the underlying sentence/word/syllable statistics. Empty text is a clean 400.","priceUsd":0.002},{"id":"grade","version":"v1","path":"/v1/grade","url":"https://readability.openverbs.com/v1/grade","title":"Consensus grade level","description":"Summarise a text's difficulty as a single consensus US grade level (averaging the five grade formulas), plus the Flesch Reading Ease, a plain-language difficulty band and an approximate age range.","priceUsd":0.002},{"id":"syllables","version":"v1","path":"/v1/syllables","url":"https://readability.openverbs.com/v1/syllables","title":"Count syllables","description":"Count syllables per word and in total across the text.","priceUsd":0.002},{"id":"reading-time","version":"v1","path":"/v1/reading-time","url":"https://readability.openverbs.com/v1/reading-time","title":"Reading & speaking time","description":"Estimate reading and speaking time for a text at configurable words-per-minute rates (defaults: 200 wpm reading, 130 wpm speaking).","priceUsd":0.002}]},{"id":"unicode","url":"https://unicode.openverbs.com","title":"Unicode","description":"Inspect Unicode code points and look up characters by name, block or script over a Unicode Character Database subset. Handles algorithmic CJK, Tangut and Hangul names.","category":"text","tags":["unicode","codepoint","character","unicode block","script","ucd"],"operations":[{"id":"inspect","version":"v1","path":"/v1/inspect","url":"https://unicode.openverbs.com/v1/inspect","title":"Inspect a code point","description":"Resolve a single code point (given as 'char' or 'codepoint') to its name, general category, block, script and plane. Provide exactly one of the two inputs.","priceUsd":0.002},{"id":"name","version":"v1","path":"/v1/name","url":"https://unicode.openverbs.com/v1/name","title":"Look up character by name","description":"Reverse lookup: resolve a Unicode character name (e.g. 'SNOWMAN', 'CJK UNIFIED IDEOGRAPH-4E2D', 'HANGUL SYLLABLE GA') to its code point. Loose whitespace/case matching. An unknown name is a successful `found:false`.","priceUsd":0.002},{"id":"block","version":"v1","path":"/v1/block","url":"https://unicode.openverbs.com/v1/block","title":"Look up a Unicode block","description":"Resolve a Unicode block name (loose matching) to its range, size, count of assigned characters and a small sample. An unknown block is a successful `found:false`. This is a Unicode Character Database block — not a blockchain block.","priceUsd":0.002},{"id":"script","version":"v1","path":"/v1/script","url":"https://unicode.openverbs.com/v1/script","title":"Look up a Unicode script","description":"Resolve a Unicode script name (loose matching) to its code point ranges, total size and a small sample. An unknown script is a successful `found:false`.","priceUsd":0.002}]},{"id":"useragent","url":"https://useragent.openverbs.com","title":"User-Agent","description":"Parse and classify User-Agent strings — browser, engine, OS and device — and detect bots, crawlers, AI agents and HTTP tools. Unknown components are reported honestly as null.","category":"web","tags":["user-agent","browser","device","bot","crawler","web"],"operations":[{"id":"parse","version":"v1","path":"/v1/parse","url":"https://useragent.openverbs.com/v1/parse","title":"Parse a User-Agent","description":"Break a User-Agent string into browser, engine, operating system (each with a version) and device type. Unidentifiable components are reported as null.","priceUsd":0.002},{"id":"classify","version":"v1","path":"/v1/classify","url":"https://useragent.openverbs.com/v1/classify","title":"Classify a User-Agent","description":"Classify a User-Agent by device form factor and return convenience booleans (isBot, isMobile, isTablet, isDesktop, isTouchCapable) for routing decisions.","priceUsd":0.002},{"id":"is-bot","version":"v1","path":"/v1/is-bot","url":"https://useragent.openverbs.com/v1/is-bot","title":"Detect a bot","description":"Detect whether a User-Agent belongs to a known bot, crawler, AI agent or HTTP tool, and if so return its name and category (search, social, seo, ai, monitoring, tool, …).","priceUsd":0.002}]},{"id":"geocode","url":"https://geocode.openverbs.com","title":"Geocoding","description":"Forward and reverse geocoding: address → coordinates and coordinates → address, with structured, normalized results.","category":"location","tags":["geocode","geocoding","address","coordinates","reverse-geocode","location","maps"],"operations":[{"id":"forward","version":"v1","path":"/v1/forward","url":"https://geocode.openverbs.com/v1/forward","title":"Geocode an address","description":"Convert a free-form address or place name into ranked coordinates with a structured, normalized address. Optionally bias by country and language.","priceUsd":0.006},{"id":"reverse","version":"v1","path":"/v1/reverse","url":"https://geocode.openverbs.com/v1/reverse","title":"Reverse geocode","description":"Convert latitude/longitude coordinates into the nearest structured address. Optionally set the preferred result language.","priceUsd":0.006}]},{"id":"search","url":"https://search.openverbs.com","title":"Web, News, Video, Image, Scholar, Wikipedia & Local Search","description":"Live search-engine results — organic web (Google or Bing), Google News, YouTube videos, Google Images, scholarly/academic papers (OpenAlex), Wikipedia article summaries, local places and autocomplete suggestions — with ranked, structured hits.","category":"web","tags":["search","serp","google","bing","news","jobs","web-search","youtube","images","scholar","wikipedia","local","autocomplete"],"operations":[{"id":"web","version":"v1","path":"/v1/web","url":"https://search.openverbs.com/v1/web","title":"Web Search (Google SERP)","description":"Web search API - live Google (default) or Bing SERP for a query: search engine results returned as ranked organic hits with title, URL, domain and snippet, localised by location and language. A google search api / serp api for agents: search the web, live web search for grounding, RAG and web lookup.","priceUsd":0.01},{"id":"bing","version":"v1","path":"/v1/bing","url":"https://search.openverbs.com/v1/bing","title":"Bing Search (Bing SERP)","description":"Bing search API - live Bing SERP for a query: Bing search engine results returned as ranked organic hits with title, URL, domain and snippet, localised by location and language. A bing serp api for agents: search Bing, live Bing web search for grounding, RAG and cross-engine lookup beyond Google.","priceUsd":0.01},{"id":"news","version":"v1","path":"/v1/news","url":"https://search.openverbs.com/v1/news","title":"News search","description":"News search: live Google News results for a query, localised by location and language. Returns ranked articles with title, URL, domain and, where available, source and timestamp. Real-time news API for current events and headlines.","priceUsd":0.01},{"id":"jobs","version":"v1","path":"/v1/jobs","url":"https://search.openverbs.com/v1/jobs","title":"Jobs search (Google Jobs)","description":"Jobs search: Google Jobs listings for a query (e.g. \"backend engineer\"), localised by location and language. Returns ranked postings with title, employer, location and, where available, salary, contract type, source and posting date. Results are collected on demand, so the call may take a few seconds.","priceUsd":0.01},{"id":"youtube","version":"v1","path":"/v1/youtube","url":"https://search.openverbs.com/v1/youtube","title":"YouTube video search","description":"Live YouTube video-search results for a query, localised by location and language. Returns ranked videos with title, URL, video id, channel, view count, publish date and duration.","priceUsd":0.01},{"id":"local","version":"v1","path":"/v1/local","url":"https://search.openverbs.com/v1/local","title":"Local business & places search","description":"Live Google local-finder (map places) results for a query, localised by location and language. Returns ranked places with title, address, website domain, phone, rating and review count.","priceUsd":0.01},{"id":"images","version":"v1","path":"/v1/images","url":"https://search.openverbs.com/v1/images","title":"Google Image Search","description":"Image search API - live Google Images results for a query, localised by location and language. Returns ranked images with title, direct image URL, source page URL and alt text. A google images / image search api for agents.","priceUsd":0.006},{"id":"scholar","version":"v1","path":"/v1/scholar","url":"https://search.openverbs.com/v1/scholar","title":"Scholarly & Academic Paper Search","description":"Scholarly search API - academic papers and research articles for a query, powered by OpenAlex. Returns ranked works with title, authors, year, venue, DOI, citation count and open-access status. A google-scholar-style research / scholarly articles search for agents. Data source: OpenAlex (CC0).","priceUsd":0.006},{"id":"wikipedia","version":"v1","path":"/v1/wikipedia","url":"https://search.openverbs.com/v1/wikipedia","title":"Wikipedia Article Summary","description":"Wikipedia summary API - the plain-language summary of the best-matching Wikipedia article for a topic or query, in any language. Returns the article title, short description, summary extract, thumbnail image and canonical URL. A wikipedia / encyclopedia lookup for agents grounding answers on a topic. No match returns found:false. Data source: Wikipedia (CC BY-SA 4.0).","priceUsd":0.002},{"id":"suggest","version":"v1","path":"/v1/suggest","url":"https://search.openverbs.com/v1/suggest","title":"Search autocomplete suggestions","description":"Live Google autocomplete suggestions for a partial query, localised by location and language. Returns ranked suggestion strings with a relevance score.","priceUsd":0.01}]},{"id":"sentiment","url":"https://sentiment.openverbs.com","title":"Market & Brand Sentiment","description":"Market & brand sentiment for any keyword, brand, ticker or product, computed from the sentiment of web and news content that mentions it.","category":"web","tags":["crypto sentiment","sentiment","sentiment-analysis","market-sentiment","social-sentiment"],"operations":[{"id":"sentiment","version":"v1","path":"/v1/sentiment","url":"https://sentiment.openverbs.com/v1/sentiment","title":"Market & Brand Sentiment","description":"Market & brand sentiment for any keyword, brand, ticker or product: analyses the sentiment of web & news content mentioning it and returns an overall label (positive/negative/neutral/mixed), a net sentiment score (-1..1), positive/negative/neutral shares and an emotion breakdown (anger, happiness, love, sadness, fun).","priceUsd":0.04}]},{"id":"places","url":"https://places.openverbs.com","title":"Places — Google Business Profiles & Local Business Search","description":"Google Business Data: look up a business's full profile (rating, hours, categories, place_id, coordinates) by name, or search the local-business directory within a radius by category and name.","category":"web","tags":["places","google business profile","place details","local business","google maps","business directory","business hours","poi"],"operations":[{"id":"place-details","version":"v1","path":"/v1/place-details","url":"https://places.openverbs.com/v1/place-details","title":"Google Business Profile / place details lookup","description":"Look up a business's full Google Business Profile by name and location. Returns name, category, star rating and review count, address, phone, website, opening hours by day, Google place_id and CID, coordinates and claimed status. For place enrichment, store-hours and business lookups. Unknown business returns found=false.","priceUsd":0.02},{"id":"business-search","version":"v1","path":"/v1/business-search","url":"https://places.openverbs.com/v1/business-search","title":"Local business directory search","description":"Google Business Profile and Google Maps local business search API: find businesses within a radius of a coordinate, filtered by category and/or name. Returns ranked businesses with name, category, star rating and review count, address, phone, website domain, place_id/CID and coordinates. For local SEO, lead lists and competitor research. No match → empty results.","priceUsd":0.03},{"id":"business-categories","version":"v1","path":"/v1/business-categories","url":"https://places.openverbs.com/v1/business-categories","title":"Local business category counts","description":"Count how many Google businesses fall under each category within a radius of a coordinate, optionally filtered by category or name. Returns categories ranked by business count - for local market sizing, competitor-density analysis and site-selection research. No match → empty results.","priceUsd":0.04}]},{"id":"products","url":"https://products.openverbs.com","title":"Product Search & Data (Amazon + Google Shopping)","description":"Live retail product data for shopping agents — Amazon keyword search, ASIN detail and multi-seller offers, plus Google Shopping product search across sellers, with prices, ratings, reviews and availability.","category":"business","tags":["products","google shopping","amazon","shopping","ecommerce","product-search","price comparison","offers"],"operations":[{"id":"amazon-search","version":"v1","path":"/v1/amazon-search","url":"https://products.openverbs.com/v1/amazon-search","title":"Amazon Product Search API","description":"Amazon product search API - search Amazon products / find products on Amazon by keyword (US). Live Amazon product data: ranked listings with ASIN, title, product URL, image, price range, currency, star rating, review count and Amazon's Choice / Best Seller flags. No matches returns empty results.","priceUsd":0.006},{"id":"amazon-product","version":"v1","path":"/v1/amazon-product","url":"https://products.openverbs.com/v1/amazon-product","title":"Amazon Product Detail API (ASIN lookup)","description":"Amazon product detail API (US) by ASIN - Amazon product data for one ASIN: title, product URL, image, price range, discount, currency, star rating, review count, category path, availability and description. Amazon prices and product-detail lookup. Unknown ASIN returns found=false.","priceUsd":0.006},{"id":"amazon-sellers","version":"v1","path":"/v1/amazon-sellers","url":"https://products.openverbs.com/v1/amazon-sellers","title":"Amazon Offers & Sellers API","description":"Amazon offers & sellers API (US) by ASIN: the buy-box winner plus third-party sellers, each with seller name, price, regular price, discount, condition (new/used), ships-from and seller rating. Amazon offers and sellers for buy-box tracking and price comparison. No offers returns empty results.","priceUsd":0.006},{"id":"google-shopping","version":"v1","path":"/v1/google-shopping","url":"https://products.openverbs.com/v1/google-shopping","title":"Google Shopping Product Search API","description":"Google Shopping product search API - search Google Shopping by keyword (US) and get ranked product offers across sellers. Live Google Shopping data: title, product URL, image, seller, price, currency, star rating, review count, Google product id and delivery info. Compare product prices across merchants. No matches returns empty results.","priceUsd":0.006}]},{"id":"seo","url":"https://seo.openverbs.com","title":"SEO Keyword, Backlink & Site Audit Data","description":"SEO data for content and marketing agents — keyword research (search volume, CPC, difficulty, intent), Google Trends search interest, domain rankings, competitors, backlink profiles (domain rank, referring domains, spam score), on-page SEO audits and page-speed / Core Web Vitals.","category":"business","tags":["seo","keywords","search-volume","backlinks","domain-authority","keyword-research","serp","google-trends","on-page-seo","page-speed","core-web-vitals"],"operations":[{"id":"keyword-ideas","version":"v1","path":"/v1/keyword-ideas","url":"https://seo.openverbs.com/v1/keyword-ideas","title":"Keyword ideas & search volume","description":"Keyword ideas API: discover related keyword ideas from a seed keyword for keyword research, each with Google monthly search volume, CPC, competition, keyword difficulty and search intent. For content planning and SEO research. No ideas returns empty results.","priceUsd":0.04},{"id":"related-keywords","version":"v1","path":"/v1/related-keywords","url":"https://seo.openverbs.com/v1/related-keywords","title":"Related keywords (SERP expansion)","description":"Related keywords API - expand a seed keyword using Google's \"searches related to\" graph, returning the related keywords (traversed to a configurable depth) each with monthly search volume, CPC, competition, keyword difficulty and search intent, plus the further related terms branching off each. For content-cluster planning and keyword discovery. No matches returns empty results.","priceUsd":0.04},{"id":"keyword-variations","version":"v1","path":"/v1/keyword-variations","url":"https://seo.openverbs.com/v1/keyword-variations","title":"Keyword variations from a seed phrase","description":"Keyword variations API: expand a seed phrase into keywords containing that phrase, such as 'running shoes' into 'running shoes for women'. Each includes Google monthly search volume, CPC, competition, keyword difficulty and search intent. No matches returns empty results.","priceUsd":0.04},{"id":"keyword-suggestions","version":"v1","path":"/v1/keyword-suggestions","url":"https://seo.openverbs.com/v1/keyword-suggestions","title":"Keyword suggestions for a website","description":"Keyword suggestions API: discover keywords to target from a website or page using Google Ads Keyword Planner data, with monthly search volume, CPC, advertising competition, bid estimates and monthly search history. Unlike ranked-keywords, these are suggestions, not existing rankings. Returns up to 100 keywords. No data returns empty results.","priceUsd":0.15},{"id":"keyword-overview","version":"v1","path":"/v1/keyword-overview","url":"https://seo.openverbs.com/v1/keyword-overview","title":"Keyword metrics overview","description":"Keyword volume API: get exact SEO metrics for a list of keywords you already have: Google monthly search volume, CPC, competition, keyword difficulty and search intent for each. For prioritising a keyword list. Unknown keywords are omitted.","priceUsd":0.04},{"id":"keyword-volume-history","version":"v1","path":"/v1/keyword-volume-history","url":"https://seo.openverbs.com/v1/keyword-volume-history","title":"Keyword search-volume history (monthly)","description":"Keyword volume history API: get Google monthly search volume history for a list of keywords, back to 2019: a per-keyword month-by-month search-volume time series plus current CPC and competition. For spotting seasonality, demand trends and momentum that a single keyword-overview snapshot misses. Up to 10 keywords per call; unknown keywords are omitted.","priceUsd":0.15},{"id":"search-intent","version":"v1","path":"/v1/search-intent","url":"https://seo.openverbs.com/v1/search-intent","title":"Keyword search intent","description":"Classify the search intent behind keywords: for each keyword, the dominant intent (informational, navigational, commercial or transactional) with a probability, plus any secondary intents. For mapping a keyword list to funnel stage and content type. Up to 1000 keywords per call.","priceUsd":0.03},{"id":"keyword-difficulty","version":"v1","path":"/v1/keyword-difficulty","url":"https://seo.openverbs.com/v1/keyword-difficulty","title":"Bulk keyword difficulty","description":"Keyword difficulty API: get the SEO keyword difficulty score (0-100, how hard it is to rank in Google top 10) for up to 1000 keywords in a single call. For prioritising which keywords to target. Keywords with no data are omitted.","priceUsd":0.03},{"id":"trends","version":"v1","path":"/v1/trends","url":"https://seo.openverbs.com/v1/trends","title":"Google Trends search interest","description":"Google Trends search interest for up to 5 terms: a relative 0-100 popularity series over time, with per-keyword average and latest value. For content timing, seasonality and demand research. Optional location (default worldwide), timeframe (7d/30d/90d/12m/5y, default 12m) and type (web/news/youtube). found=false when no data.","priceUsd":0.03},{"id":"ranked-keywords","version":"v1","path":"/v1/ranked-keywords","url":"https://seo.openverbs.com/v1/ranked-keywords","title":"Keywords a domain ranks for","description":"Get the Google organic keywords a domain already ranks for, each with its ranking position, ranking URL, monthly search volume, CPC, difficulty and search intent. For competitor and site SEO audits. Unknown domain returns empty results.","priceUsd":0.05},{"id":"competitors","version":"v1","path":"/v1/competitors","url":"https://seo.openverbs.com/v1/competitors","title":"Organic search competitors","description":"Find a domain's organic search competitors: rival domains ranking for the same Google keywords, each with the number of common keywords, average position, total ranked keywords and estimated organic traffic. For competitive SEO research. Empty results if none.","priceUsd":0.05},{"id":"serp-competitors","version":"v1","path":"/v1/serp-competitors","url":"https://seo.openverbs.com/v1/serp-competitors","title":"SERP competitors for a keyword set","description":"SERP competitors API - given a set of target Google keywords, find the domains that dominate those search results, each with how many of the keywords they rank for, average and median position, SERP rating, estimated traffic (ETV) and visibility. Unlike a domain-based competitor lookup, this starts from the keywords you want to win. For competitive SEO and content-strategy research. Empty results if none.","priceUsd":0.05},{"id":"page-intersection","version":"v1","path":"/v1/page-intersection","url":"https://seo.openverbs.com/v1/page-intersection","title":"Keyword intersection of specific pages","description":"Given a set of specific page URLs, find the Google keywords those pages jointly rank for, with each page's position, URL and estimated traffic (ETV) per keyword, plus search volume, CPC, competition, difficulty and intent. Page-level, not domain-level. Optional exclude_pages narrows to keywords the pages rank for that others do not.","priceUsd":0.05},{"id":"keyword-gap","version":"v1","path":"/v1/keyword-gap","url":"https://seo.openverbs.com/v1/keyword-gap","title":"Keyword gap vs a competitor","description":"Keyword gap analysis API - find the Google keywords a competitor ranks for that your domain does not, each with the competitor's ranking position and URL plus monthly search volume, CPC, competition, keyword difficulty and search intent. Surfaces content gaps and keyword opportunities for competitive SEO. Empty results if no gap.","priceUsd":0.05},{"id":"domain-overview","version":"v1","path":"/v1/domain-overview","url":"https://seo.openverbs.com/v1/domain-overview","title":"Domain SEO traffic overview","description":"Domain overview: estimate a domain's Google SEO footprint — total organic and paid keywords, estimated traffic (ETV), traffic cost, and how many keywords rank in the top 3, top 10 and top 100. Fast website and domain SEO traffic overview and audit. Unknown domain returns found=false.","priceUsd":0.04},{"id":"traffic-estimate","version":"v1","path":"/v1/traffic-estimate","url":"https://seo.openverbs.com/v1/traffic-estimate","title":"Bulk website traffic estimate","description":"Website traffic estimator API - estimate monthly Google organic and paid traffic (ETV) and ranked-keyword counts for up to 100 domains in a single call. For competitor analysis, prospect/CRM scoring and bulk domain enrichment. Unknown domains return found=false.","priceUsd":0.05},{"id":"backlinks","version":"v1","path":"/v1/backlinks","url":"https://seo.openverbs.com/v1/backlinks","title":"Backlink profile & domain authority","description":"Get a domain's backlink profile and authority: DataForSEO domain rank, total backlinks, referring domains and main domains, referring pages, broken backlinks and spam score. For link analysis and competitor research. Unknown domain returns found=false.","priceUsd":0.06},{"id":"backlinks-history","version":"v1","path":"/v1/backlinks-history","url":"https://seo.openverbs.com/v1/backlinks-history","title":"Backlink profile history","description":"Get a domain's backlink profile over time: a monthly timeseries of domain rank, total backlinks, new and lost backlinks, referring domains (new/lost/total), referring main domains, broken backlinks and crawled pages. For tracking link velocity and growth or a competitor's link building. Unknown domain returns found=false.","priceUsd":0.05},{"id":"referring-domains","version":"v1","path":"/v1/referring-domains","url":"https://seo.openverbs.com/v1/referring-domains","title":"Referring domains (backlink sources)","description":"List the domains linking to a target, each with DataForSEO domain rank, number of backlinks, dofollow count, referring subdomains, broken backlinks, spam score and first/last seen dates. For backlink audits and link building. Unknown domain returns empty results.","priceUsd":0.05},{"id":"backlink-anchors","version":"v1","path":"/v1/backlink-anchors","url":"https://seo.openverbs.com/v1/backlink-anchors","title":"Backlink anchor text profile","description":"Backlink anchor text API - list the anchor texts pointing at a domain, each with how many backlinks, referring domains and referring pages use it, the dofollow/nofollow split, DataForSEO rank, spam score and broken-link count. For anchor-text distribution analysis, over-optimization/penalty audits and link-building research. Unknown domain returns empty results.","priceUsd":0.05},{"id":"relevant-pages","version":"v1","path":"/v1/relevant-pages","url":"https://seo.openverbs.com/v1/relevant-pages","title":"Top ranking pages of a domain","description":"Relevant pages API - list a domain's best-performing pages in Google, each with page-level organic and paid metrics: ranked keyword count, estimated traffic (ETV), traffic cost and position buckets (pos1/top3/top10/top100). For finding a site's top content, competitor content research and page-level SEO audits. Unknown domain returns empty results.","priceUsd":0.05},{"id":"historical-rank","version":"v1","path":"/v1/historical-rank","url":"https://seo.openverbs.com/v1/historical-rank","title":"Domain traffic history (monthly trend)","description":"Historical rank overview API - a monthly time series of a domain's Google organic and paid visibility: ranked keyword count, estimated traffic (ETV), traffic cost and position buckets (pos1/top3/top10/top100) for each month. For tracking a site's SEO trajectory, spotting traffic drops/recoveries and competitor trend analysis. Unknown domain returns an empty series.","priceUsd":0.18},{"id":"on-page","version":"v1","path":"/v1/on-page","url":"https://seo.openverbs.com/v1/on-page","title":"On-Page SEO Audit","description":"On-page SEO audit API - crawl a single URL and return its on-page SEO health: overall score, title & meta description, H1, word count, internal/external link and image counts, load timing (LCP, TTI) and a list of detected issues (missing meta, broken status, not-https, images missing alt, slow load, …).","priceUsd":0.006},{"id":"pagespeed","version":"v1","path":"/v1/pagespeed","url":"https://seo.openverbs.com/v1/pagespeed","title":"Page Speed & Core Web Vitals","description":"Page speed API - Google PageSpeed Insights (Lighthouse) performance audit for a URL on mobile or desktop. Returns the performance score plus lab Core Web Vitals (LCP, FCP, CLS, TBT, Speed Index, TTI) and, where available, real-user (CrUX) field data. Data source: Google PageSpeed Insights.","priceUsd":0.006}]},{"id":"urltrust","url":"https://urltrust.openverbs.com","title":"URL & Domain Trust","description":"Trust and phishing analysis for a link or a domain. `analyze` runs offline lexical phishing checks on a URL (IP hosts, embedded credentials, punycode, brand typosquatting, brand-in-subdomain, abused TLDs, shorteners) → risk score, verdict and reasons. `domain` scores a domain's reputation from live signals (RDAP registration age, DNS/MX presence) → age, records and a trust score.","category":"trust-safety","tags":["url","domain","phishing","trust","security","typosquatting","safety","reputation","scam","rdap","whois","dns","analyze"],"operations":[{"id":"analyze","version":"v1","path":"/v1/analyze","url":"https://urltrust.openverbs.com/v1/analyze","title":"Analyze URL trust","description":"Score how likely a URL is to be phishing or untrustworthy using offline lexical and structural heuristics (no network lookups). Checks raw-IP hosts, embedded credentials, punycode/homoglyph labels, brand typosquatting, brand-in-subdomain, abused TLDs, shorteners, random hostnames, odd ports, plaintext http and executable paths. Returns a 0-100 risk score, a verdict and the reasons.","priceUsd":0.004},{"id":"domain","version":"v1","path":"/v1/domain","url":"https://urltrust.openverbs.com/v1/domain","title":"Score a domain's reputation","description":"Assess how trustworthy a domain is using authoritative live signals, not just its spelling. Fuses RDAP registration data (domain age — the single strongest phishing signal — plus registrar, expiry and registry status flags), DNS resolvability (A/AAAA), MX presence and DNSSEC into a 0-100 risk score with a verdict (low/medium/high) and the exact reasons. Pairs with `urltrust` (lexical) for a complete picture.","priceUsd":0.006},{"id":"techstack","version":"v1","path":"/v1/techstack","url":"https://urltrust.openverbs.com/v1/techstack","title":"Website technology stack lookup","description":"Detect the technology stack a website runs on. Given a domain, returns the software and services it uses (CDN, analytics, frameworks, CMS, payment, hosting, security) grouped by category, plus a domain rank, last-seen date, country and public social links. Unknown domain returns found=false.","priceUsd":0.05}]},{"id":"chain","url":"https://chain.openverbs.com","title":"On-Chain Reads (EVM + Bitcoin)","description":"Live on-chain data. EVM networks (Ethereum, Base, Arbitrum, Optimism, Polygon): gas, address balance/nonce/contract detection, ERC-20 token metadata and wallet token balances, transaction status and block info, plain-language transaction explains, deterministic ERC-20 token-risk scans, ENS name resolution (resolve, reverse, text records), NFT metadata and function-selector/calldata decoding. Bitcoin (`btc-*` ops): recommended fees, mempool congestion, address balance/history and transaction status. Live reads with automatic endpoint fallback.","category":"crypto","tags":["blockchain","evm","ethereum","base","bitcoin","btc","gas","erc20","transaction","onchain","web3","rpc","mempool","token-risk","explain","ens","nft","decode","abi","contract","read-contract","eth_call"],"operations":[{"id":"gas","version":"v1","path":"/v1/gas","url":"https://chain.openverbs.com/v1/gas","title":"Current gas","description":"Live gas conditions for an EVM chain: current gas price, the latest block's base fee (EIP-1559) and the suggested max priority fee — all in both wei and gwei. Ground truth an agent can't compute. Reads live on-chain data with automatic endpoint fallback.","priceUsd":0.002},{"id":"address","version":"v1","path":"/v1/address","url":"https://chain.openverbs.com/v1/address","title":"On-chain Wallet Balance (native)","description":"Native ETH / wallet balance for an address on any EVM chain: native balance (wei + ether), transaction count (nonce), and whether it's a contract or an externally-owned account (with deployed code size). Reads live on-chain data with automatic endpoint fallback.","priceUsd":0.002},{"id":"token","version":"v1","path":"/v1/token","url":"https://chain.openverbs.com/v1/token","title":"ERC-20 Token Metadata","description":"Live ERC-20 metadata read directly from the contract: name, symbol, decimals and total supply (raw + decimal-formatted). Handles both string and legacy bytes32 name/symbol encodings. Returns `isToken:false` for EOAs or non-token contracts. Reads live on-chain data with automatic endpoint fallback.","priceUsd":0.002},{"id":"token-balance","version":"v1","path":"/v1/token-balance","url":"https://chain.openverbs.com/v1/token-balance","title":"ERC-20 Token Balance","description":"Live ERC-20 token balance held by a wallet: calls `balanceOf(address)` on the token contract and returns the raw balance plus a decimal-formatted amount (using the token's own decimals) with its symbol. Distinct from `address` (native ETH balance) and `token` (contract metadata). Reads live on-chain data with automatic endpoint fallback.","priceUsd":0.002},{"id":"token-allowance","version":"v1","path":"/v1/token-allowance","url":"https://chain.openverbs.com/v1/token-allowance","title":"ERC-20 Token Allowance API","description":"Live ERC-20 spending allowance an owner has granted a spender: calls `allowance(owner, spender)` on the token and returns the raw amount, a decimal-formatted amount (using the token's decimals) with its symbol, and an `isUnlimited` flag for effectively-infinite approvals. Use it to audit token approvals / approval risk before signing. Reads live on-chain data with automatic endpoint fallback.","priceUsd":0.002},{"id":"gas-estimate","version":"v1","path":"/v1/gas-estimate","url":"https://chain.openverbs.com/v1/gas-estimate","title":"Onchain Gas Estimate & Tx Simulation API","description":"Simulate a transaction before signing: runs `eth_estimateGas` for `{ to, from?, data?, value? }` and returns the estimated gas units and estimated fee (current gas price x gas, in wei + ETH). If the node rejects the call it returns `ok:false` with the decoded `revertReason` (why it would fail) instead of erroring. Reads live on-chain state with automatic endpoint fallback.","priceUsd":0.004},{"id":"tx","version":"v1","path":"/v1/tx","url":"https://chain.openverbs.com/v1/tx","title":"On-chain Transaction Lookup","description":"Live status and details of a transaction by hash: success/failed/pending, from/to, value (wei + ether), nonce, block number, gas used, effective gas price and any created contract address. Returns `found:false` for unknown hashes. Reads live on-chain data with automatic endpoint fallback.","priceUsd":0.003},{"id":"block","version":"v1","path":"/v1/block","url":"https://chain.openverbs.com/v1/block","title":"On-chain Block / Height","description":"Live block summary by number, hex, or tag (latest/earliest/pending/safe/finalized; default latest): number, hash, parent, timestamp (unix + ISO), transaction count, gas used/limit, base fee and miner. Reads live on-chain data with automatic endpoint fallback.","priceUsd":0.001},{"id":"logs","version":"v1","path":"/v1/logs","url":"https://chain.openverbs.com/v1/logs","title":"Onchain Event Logs & ERC-20 Transfers API","description":"Query a contract's event logs over a bounded block range via `eth_getLogs`: filter by `address` (required) and optional `topics`, get back raw logs (topics, data, block, tx hash, log index) with ERC-20/721 Transfer logs auto-decoded to `{from, to, value}`. Block span is capped (large windows are clamped); results are capped by `limit`. Reads live on-chain data with automatic endpoint fallback.","priceUsd":0.006},{"id":"receipt","version":"v1","path":"/v1/receipt","url":"https://chain.openverbs.com/v1/receipt","title":"Transaction Receipt API","description":"Live transaction receipt by hash via `eth_getTransactionReceipt`: success/failed status, block number, from/to, created contract address, gas used, cumulative gas, effective gas price (wei + gwei), tx type and the emitted event logs (capped). Complements `tx` (which reads the transaction itself). Returns `found:false` for unknown/pending hashes. Reads live on-chain data with automatic endpoint fallback.","priceUsd":0.003},{"id":"proxy","version":"v1","path":"/v1/proxy","url":"https://chain.openverbs.com/v1/proxy","title":"Proxy Implementation Detection API","description":"Detect whether a contract is an upgradeable proxy and resolve its implementation: reads the standard EIP-1967 implementation/admin/beacon slots, EIP-1822 (UUPS), the OpenZeppelin legacy slot, and EIP-1167 minimal-proxy bytecode. Returns the proxy type, implementation, admin and beacon addresses when present. Reads live on-chain data with automatic endpoint fallback.","priceUsd":0.004},{"id":"explain","version":"v1","path":"/v1/explain","url":"https://chain.openverbs.com/v1/explain","title":"Explain a transaction","description":"Decode a transaction into plain language: native ETH transfer, contract call (with decoded method name for common ERC-20/DEX functions like transfer, approve, swap, mint, multicall) or contract creation; ERC-20 and NFT (ERC-721) transfers it triggered (token, from, to, amount/tokenId from logs); gas spent in ETH; success/failed/pending; and a one-line summary. Reads live on-chain data with automatic endpoint fallback.","priceUsd":0.006},{"id":"token-risk","version":"v1","path":"/v1/token-risk","url":"https://chain.openverbs.com/v1/token-risk","title":"ERC-20 token risk scan","description":"Deterministic risk screen of an ERC-20 token from on-chain bytecode and metadata, no third-party risk API. Flags privileged or abuse capabilities: blacklist/freeze, owner mint, pausable transfers, upgradeable proxy and a privileged owner, plus tokens missing symbol/decimals or code. Returns each flag with a severity, a 0-100 score and a verdict. Reads live on-chain data with automatic endpoint fallback.","priceUsd":0.006},{"id":"ens-resolve","version":"v1","path":"/v1/ens-resolve","url":"https://chain.openverbs.com/v1/ens-resolve","title":"ENS Name Resolution","description":"Resolve an ENS name (like alice.eth) to its Ethereum address, read live from the ENS resolver on Ethereum mainnet. Offchain names such as *.base.eth resolve too. Returns `found:false` (a real answer, not an error) when the name has no address record. Live reads with automatic endpoint fallback.","priceUsd":0.003},{"id":"ens-reverse","version":"v1","path":"/v1/ens-reverse","url":"https://chain.openverbs.com/v1/ens-reverse","title":"ENS Reverse Lookup API (address to name)","description":"Reverse-resolve an Ethereum address to its primary ENS name (the reverse record set by the owner), read live on Ethereum mainnet. Returns `found:false` when the address has no primary name set. Live reads with automatic endpoint fallback.","priceUsd":0.003},{"id":"ens-records","version":"v1","path":"/v1/ens-records","url":"https://chain.openverbs.com/v1/ens-records","title":"ENS Text Records API","description":"Read an ENS name's address plus its text records (avatar, url, email, description, com.twitter, com.github and more) in one call, live from the resolver on Ethereum mainnet. Pass `keys` to fetch specific records, or omit it for a sensible default set. Only records that are set are returned. Live reads with automatic endpoint fallback.","priceUsd":0.002},{"id":"nft-metadata","version":"v1","path":"/v1/nft-metadata","url":"https://chain.openverbs.com/v1/nft-metadata","title":"NFT metadata","description":"Resolve one NFT (contract + tokenId) into normalized metadata: name, description, image, attributes and token standard (ERC-721 or ERC-1155). Reads the on-chain tokenURI/uri, then fetches and normalizes the metadata document (ipfs/ar/http/data), rewriting ipfs image links to a gateway URL. Returns `found:false` for non-NFT contracts. Live reads with automatic endpoint fallback.","priceUsd":0.006},{"id":"decode","version":"v1","path":"/v1/decode","url":"https://chain.openverbs.com/v1/decode","title":"Decode calldata / function selector","description":"Turn a 4-byte function selector or full calldata into its human-readable function signature, and (when calldata is present) the decoded argument values. Supply an `abi` for a fully deterministic offline decode, or omit it to look the selector up in public signature registries. Reads with automatic fallback.","priceUsd":0.004},{"id":"abi","version":"v1","path":"/v1/abi","url":"https://chain.openverbs.com/v1/abi","title":"Contract ABI & verification (get ABI)","description":"Get the verified contract ABI and verification metadata for a deployed contract by address, sourced from Sourcify. Returns the contract ABI (to decode or call it), contract name, compiler/language, match type, and proxy resolution (is-proxy plus implementation addresses). Supports Ethereum, Base, Arbitrum, Optimism, Polygon. Unverified contracts return `verified:false`. Live reads with cache fallback.","priceUsd":0.006},{"id":"source","version":"v1","path":"/v1/source","url":"https://chain.openverbs.com/v1/source","title":"Verified contract source code (get source)","description":"Get the verified Solidity/Vyper source code for a deployed contract by address, sourced from Sourcify. Returns every source file (path + content), the contract name, language, compiler version and compiler settings (optimizer, evmVersion) — the full human-readable source an agent needs to read, audit or feed to an LLM. Supports Ethereum, Base, Arbitrum, Optimism, Polygon. Unverified contracts return `verified:false`. Live reads with cache fallback.","priceUsd":0.006},{"id":"read-contract","version":"v1","path":"/v1/read-contract","url":"https://chain.openverbs.com/v1/read-contract","title":"Read contract (call a view function)","description":"Call a read-only (view/pure) function on any deployed contract via eth_call and get the decoded result. Give the contract address and a human-readable signature (e.g. 'balanceOf(address) view returns (uint256)') plus args; include return types to decode outputs, else raw hex is returned. Reads allowances, oracle prices and vault/DAO state. Read-only, no signing. Ethereum, Base, Arbitrum, Optimism, Polygon.","priceUsd":0.006},{"id":"sanctions","version":"v1","path":"/v1/sanctions","url":"https://chain.openverbs.com/v1/sanctions","title":"OFAC sanctions screening for a crypto address","description":"Screen a crypto wallet address against the OFAC SDN sanctions list (US Treasury Specially Designated Nationals) before transacting. Multi-chain across ~20 assets (BTC, ETH, USDT, TRX, XMR and more); EVM 0x addresses match case-insensitively. Returns whether the address is sanctioned plus the listed entity, asset and list publish date. Clean address returns `sanctioned:false`. Public-domain OFAC data.","priceUsd":0.006},{"id":"bytecode","version":"v1","path":"/v1/bytecode","url":"https://chain.openverbs.com/v1/bytecode","title":"Contract bytecode and code hash","description":"Fetch deployed EVM contract runtime bytecode and its Keccak-256 code hash to fingerprint or compare contracts, or feed a disassembler. Supports Ethereum, Base, Arbitrum, Optimism and Polygon, with optional historical block reads. Returns full hex code, byte size and isContract; an empty-code address returns 0x and a null hash. Key-free RPC with endpoint fallback; code capped at 256 KiB.","priceUsd":0.006},{"id":"btc-fees","version":"v1","path":"/v1/btc-fees","url":"https://chain.openverbs.com/v1/btc-fees","title":"Bitcoin recommended fees","description":"Live recommended Bitcoin transaction fee rates (in sat/vB) for next-block, ~30-minute, ~1-hour, economy and minimum confirmation targets, straight from the mempool. Also estimates the total fee (in sats and BTC) for a transaction of the given virtual size, so an agent can pick a fee tier and know the cost before broadcasting.","priceUsd":0.006},{"id":"btc-mempool","version":"v1","path":"/v1/btc-mempool","url":"https://chain.openverbs.com/v1/btc-mempool","title":"Bitcoin mempool congestion","description":"Live snapshot of the Bitcoin mempool: number of unconfirmed transactions, total pending virtual size (bytes and MB), the current backlog in blocks, total fees pending (sats and BTC), the fee-rate histogram, and the current chain tip height. Lets an agent gauge network congestion and time a transaction.","priceUsd":0.006},{"id":"btc-address","version":"v1","path":"/v1/btc-address","url":"https://chain.openverbs.com/v1/btc-address","title":"Bitcoin address balance & history","description":"Balance and activity for a Bitcoin address (base58 1…/3… or bech32 bc1…): confirmed balance (sats and BTC), total received and sent, confirmed transaction count, and unconfirmed/pending value and tx count from the mempool. On-chain ground truth an agent cannot compute locally.","priceUsd":0.006},{"id":"btc-tx","version":"v1","path":"/v1/btc-tx","url":"https://chain.openverbs.com/v1/btc-tx","title":"Bitcoin transaction status","description":"Look up a Bitcoin transaction by txid: confirmation status, block height and time, fee (sats), effective fee rate (sat/vB), size, weight and virtual size, input and output counts, and total output value (sats and BTC). On-chain ground truth for verifying a payment.","priceUsd":0.006}]},{"id":"preflight","url":"https://preflight.openverbs.com","title":"x402 Endpoint Preflight","description":"Inspect any x402 endpoint's payment challenge before paying: price, asset, network, payTo, input schema, and MPP/Bazaar support. SSRF-hardened outbound fetch.","category":"trust-safety","tags":["x402","preflight","payment","agent","discovery","inspect","402","mpp","bazaar","commerce"],"operations":[{"id":"inspect","version":"v1","path":"/v1/inspect","url":"https://preflight.openverbs.com/v1/inspect","title":"Inspect x402 endpoint","description":"Fetch any URL and, without paying, decode its x402 402 Payment Required challenge: price (atomic and formatted for known stablecoins), asset, network, payTo, resource, description, timeout and any input schema. Flags MPP and Bazaar discovery extensions. Returns free:true when no payment is needed. SSRF-hardened: public hosts only; private, loopback, link-local and cloud-metadata addresses are rejected.","priceUsd":0.006}]},{"id":"mcpscan","url":"https://mcpscan.openverbs.com","title":"MCP Manifest Scanner","description":"Static security scan of a Model Context Protocol server manifest: dangerous capabilities, prompt injection, hidden unicode and unconstrained parameters. Deterministic and fully offline.","category":"trust-safety","tags":["mcp","security","scan","prompt-injection","trust","tools","audit","agent","safety","manifest"],"operations":[{"id":"scan","version":"v1","path":"/v1/scan","url":"https://mcpscan.openverbs.com/v1/scan","title":"Scan MCP manifest for risks","description":"Statically analyse a Model Context Protocol (MCP) server manifest for security risks. Tool descriptions enter the model context, a prime prompt-injection vector. Deterministic and offline (inline manifest). Flags dangerous capabilities (command/code execution, filesystem, credential and network access), injection patterns, hidden unicode and unconstrained parameters. Returns severity-ranked findings and a 0-100 score.","priceUsd":0.004}]},{"id":"gleif","url":"https://gleif.openverbs.com","title":"Legal Entity Identifier (LEI) Lookup","description":"Authoritative legal-entity identity via the Legal Entity Identifier (LEI): resolve an LEI to its name, status, jurisdiction and address, search by legal name, or retrieve direct and ultimate accounting-consolidating parents with reporting exceptions. Global CC0 registry data for counterparty diligence.","category":"business","tags":["lei","gleif","kyc","company","entity","legal","business","registry","compliance","counterparty"],"operations":[{"id":"lookup","version":"v1","path":"/v1/lookup","url":"https://gleif.openverbs.com/v1/lookup","title":"Look up a legal entity by LEI","description":"Resolve a 20-character Legal Entity Identifier (LEI, ISO 17442) to its authoritative entity record: verified legal name, registration status (ISSUED/LAPSED/RETIRED), entity status, jurisdiction, legal form, registration number, legal and headquarters addresses, key dates (registration, last update, next renewal), managing LOU, corroboration level and any BIC codes. ISO 7064 check digits are verified before payment.","priceUsd":0.006},{"id":"search","version":"v1","path":"/v1/search","url":"https://gleif.openverbs.com/v1/search","title":"Search entities by legal name","description":"Find Legal Entity Identifiers by legal name, optionally filtered to an ISO 3166-1 alpha-2 country. Returns matching entities with their LEI, verified legal name, registration status, jurisdiction and city/country - the reverse of lookup, for when you have a company name but need its authoritative LEI and legal identity.","priceUsd":0.006},{"id":"parents","version":"v1","path":"/v1/parents","url":"https://gleif.openverbs.com/v1/parents","title":"Corporate parents by LEI","description":"Resolve a legal entity's direct and ultimate accounting-consolidating parents from GLEIF's global CC0 LEI registry. Returns parent names and LEIs, relationship status, corroboration and explicit reporting exceptions. Useful for counterparty and corporate-group diligence. Not beneficial-owner identities or ownership percentages. LEI checksum validated before payment; stale results flagged.","priceUsd":0.006}]},{"id":"edgar","url":"https://edgar.openverbs.com","title":"SEC EDGAR Company Filings & Financials","description":"U.S. public-company filings and financials: resolve a ticker or company name to a CIK, list filing history (10-K, 10-Q, 8-K and more), and read exact XBRL financial facts (revenue, net income, assets) from as-filed statements. Authoritative, as-reported numbers.","category":"finance","tags":["sec","edgar","filings","10-k","10-q","8-k","xbrl","financials","revenue","earnings","cik","ticker","stocks","equities","fundamentals","finance"],"operations":[{"id":"lookup","version":"v1","path":"/v1/lookup","url":"https://edgar.openverbs.com/v1/lookup","title":"Resolve a ticker or company name to a CIK","description":"Resolve a stock ticker symbol or company name to its Central Index Key (CIK) - the identifier every other EDGAR endpoint keys on. Exact ticker matches rank first, then company-name prefix/substring matches. Returns each match's zero-padded CIK, numeric CIK, ticker and official company title.","priceUsd":0.006},{"id":"filings","version":"v1","path":"/v1/filings","url":"https://edgar.openverbs.com/v1/filings","title":"List a company's recent SEC filings","description":"SEC filings API: list a company's recent SEC EDGAR filings (10-K, 10-Q, 8-K, Form 4, S-1) by ticker or CIK, optionally filtered by form type. Each filing has its accession number, form, filing/report dates, primary document, XBRL flag and a direct as-filed document URL, plus company name, tickers, exchanges and SIC code.","priceUsd":0.006},{"id":"facts","version":"v1","path":"/v1/facts","url":"https://edgar.openverbs.com/v1/facts","title":"Read an XBRL financial fact for a company","description":"Read a single XBRL financial concept for a company (by CIK or ticker) from its as-filed statements. Give the concept's XBRL tag (e.g. Revenues, NetIncomeLoss, Assets, EarningsPerShareDiluted) and optionally the taxonomy (default us-gaap, also dei). Returns the label and, per unit (USD, shares), recent datapoints with period end, value, fiscal year/period, form, filing date and accession. Bounded, as-reported output.","priceUsd":0.006},{"id":"financials","version":"v1","path":"/v1/financials","url":"https://edgar.openverbs.com/v1/financials","title":"Company financial statements snapshot","description":"Company financials API: one-call snapshot for a US public company (by ticker or CIK) from as-filed SEC XBRL statements — revenue, cost of revenue, gross profit, operating income, net income, EPS (basic/diluted), total assets, total liabilities, stockholders equity, cash, operating cash flow and shares outstanding, each with the latest fiscal-year value. Unknown company returns found=false.","priceUsd":0.008}]},{"id":"id","url":"https://id.openverbs.com","title":"Unique Identifiers (UUID + ULID)","description":"Generate and inspect unique identifiers in one place. `uuid` mints RFC 4122/9562 UUIDs (v4 random, v7 time-ordered); `inspect` parses a UUID's version, variant and embedded timestamp. `ulid` mints lexicographically sortable ULIDs; `decode` parses a ULID's timestamp and entropy. Deterministic.","category":"compute","tags":["id","identifier","uuid","guid","ulid","v4","v7","sortable","generate","inspect","decode","unique"],"operations":[{"id":"uuid","version":"v1","path":"/v1/uuid","url":"https://id.openverbs.com/v1/uuid","title":"Generate a UUID (v4/v7)","description":"Generate one or more UUIDs. Supports v4 (random), v1/v7 (time), and v3/v5 (namespaced).","priceUsd":0.002},{"id":"inspect","version":"v1","path":"/v1/inspect","url":"https://id.openverbs.com/v1/inspect","title":"Inspect a UUID","description":"Validate a UUID and report its version and variant.","priceUsd":0.002},{"id":"ulid","version":"v1","path":"/v1/ulid","url":"https://id.openverbs.com/v1/ulid","title":"Generate a ULID","description":"Generate one or more lexicographically sortable ULIDs (monotonic within a call).","priceUsd":0.002},{"id":"decode","version":"v1","path":"/v1/decode","url":"https://id.openverbs.com/v1/decode","title":"Decode a ULID","description":"Validate a ULID and extract its embedded timestamp and time/random components.","priceUsd":0.002}]},{"id":"similarity","url":"https://similarity.openverbs.com","title":"String Similarity & Fuzzy Name Matching","description":"String similarity and fuzzy matching. Edit-distance and set metrics — Levenshtein, Damerau-Levenshtein, Hamming, Jaro-Winkler, Sørensen-Dice, Jaccard — plus phonetic encoders (Soundex, Metaphone, Double Metaphone) and phonetic comparison. Everything an agent needs for dedup, record linkage and name matching. Deterministic.","category":"text","tags":["similarity","text-distance","fuzzy","name-matching","levenshtein","jaro-winkler","hamming","dice","jaccard","soundex","metaphone","phonetic","dedup","record-linkage"],"operations":[{"id":"levenshtein","version":"v1","path":"/v1/levenshtein","url":"https://similarity.openverbs.com/v1/levenshtein","title":"Levenshtein distance","description":"Levenshtein edit distance (insertions, deletions, substitutions) between two strings, plus a normalized similarity in [0,1]. Operates on Unicode code points.","priceUsd":0.004},{"id":"damerau","version":"v1","path":"/v1/damerau","url":"https://similarity.openverbs.com/v1/damerau","title":"Damerau-Levenshtein distance","description":"Damerau-Levenshtein distance — like Levenshtein but also counts adjacent transpositions as a single edit — plus a normalized similarity in [0,1].","priceUsd":0.004},{"id":"hamming","version":"v1","path":"/v1/hamming","url":"https://similarity.openverbs.com/v1/hamming","title":"Hamming distance","description":"Hamming distance — the number of positions at which two EQUAL-LENGTH strings differ — plus a normalized similarity. Strings of unequal length are a clean 400.","priceUsd":0.004},{"id":"jaro","version":"v1","path":"/v1/jaro","url":"https://similarity.openverbs.com/v1/jaro","title":"Jaro & Jaro-Winkler similarity","description":"Jaro similarity and the Jaro-Winkler variant (which boosts scores for a shared prefix), both in [0,1]. The prefix boost factor is configurable (default 0.1, max 0.25). Well suited to short strings like names.","priceUsd":0.004},{"id":"dice","version":"v1","path":"/v1/dice","url":"https://similarity.openverbs.com/v1/dice","title":"Sørensen-Dice coefficient","description":"Sørensen-Dice similarity coefficient in [0,1] over character bigrams — robust to word order and minor edits.","priceUsd":0.004},{"id":"jaccard","version":"v1","path":"/v1/jaccard","url":"https://similarity.openverbs.com/v1/jaccard","title":"Jaccard index","description":"Jaccard similarity index in [0,1] — the size of the intersection over the union of the two strings' character-bigram sets.","priceUsd":0.004},{"id":"soundex","version":"v1","path":"/v1/soundex","url":"https://similarity.openverbs.com/v1/soundex","title":"Soundex","description":"Encode a word with the classic Soundex algorithm (letter + 3 digits) for phonetic matching of names.","priceUsd":0.002},{"id":"metaphone","version":"v1","path":"/v1/metaphone","url":"https://similarity.openverbs.com/v1/metaphone","title":"Metaphone","description":"Encode a word with the Metaphone algorithm — more accurate than Soundex for English pronunciation.","priceUsd":0.002},{"id":"double-metaphone","version":"v1","path":"/v1/double-metaphone","url":"https://similarity.openverbs.com/v1/double-metaphone","title":"Double Metaphone","description":"Encode a word with Double Metaphone, returning a primary and a secondary code to capture alternate pronunciations (useful for non-English names).","priceUsd":0.002},{"id":"compare","version":"v1","path":"/v1/compare","url":"https://similarity.openverbs.com/v1/compare","title":"Phonetic compare","description":"Report whether two tokens sound alike under a chosen algorithm (soundex, metaphone or double-metaphone; default double-metaphone). Returns each token's codes and a boolean match.","priceUsd":0.002}]},{"id":"geospatial","url":"https://geospatial.openverbs.com","title":"Geospatial Coordinates, Projections & Geodesy","description":"Geospatial math in one place. Coordinate-format conversion (decimal ↔ DMS, UTM, MGRS); Web Mercator (EPSG:3857) forward/inverse projection with slippy-map tile and quadkey helpers; and geodesy — haversine distance, geohash encode/decode, point-in-polygon and timezone-from-coordinates. Deterministic.","category":"compute","tags":["geospatial","gis","coordinate","latitude","longitude","dms","utm","mgrs","mercator","epsg-3857","tiles","geohash","haversine","distance","timezone"],"operations":[{"id":"to-dms","version":"v1","path":"/v1/to-dms","url":"https://geospatial.openverbs.com/v1/to-dms","title":"Decimal degrees → DMS","description":"Convert a decimal-degree latitude/longitude to degrees-minutes-seconds, with hemisphere letters and a formatted string for each axis.","priceUsd":0.002},{"id":"parse","version":"v1","path":"/v1/parse","url":"https://geospatial.openverbs.com/v1/parse","title":"Parse a coordinate string","description":"Parse a coordinate string into decimal lat/lon. Accepts a plain decimal pair ('40.4462, -79.9822') or DMS with hemisphere letters ('40°26'46\"N 79°58'56\"W'). Anything unrecognized is a clean 400.","priceUsd":0.002},{"id":"utm","version":"v1","path":"/v1/utm","url":"https://geospatial.openverbs.com/v1/utm","title":"Decimal degrees → UTM","description":"Convert decimal lat/lon to a UTM coordinate (zone, latitude band, hemisphere, easting, northing) on WGS84, including the Norway/Svalbard zone exceptions. Defined for latitudes -80..84.","priceUsd":0.002},{"id":"from-utm","version":"v1","path":"/v1/from-utm","url":"https://geospatial.openverbs.com/v1/from-utm","title":"UTM → decimal degrees","description":"Convert a UTM coordinate (zone, hemisphere, easting, northing) back to decimal lat/lon on WGS84.","priceUsd":0.002},{"id":"mgrs","version":"v1","path":"/v1/mgrs","url":"https://geospatial.openverbs.com/v1/mgrs","title":"Decimal degrees → MGRS","description":"Convert decimal lat/lon to a Military Grid Reference System (MGRS) string on WGS84. Precision is the number of digits per axis (1–5; 5 = 1-metre resolution, default 5).","priceUsd":0.002},{"id":"from-mgrs","version":"v1","path":"/v1/from-mgrs","url":"https://geospatial.openverbs.com/v1/from-mgrs","title":"MGRS → decimal degrees","description":"Convert an MGRS grid reference back to decimal lat/lon on WGS84 (the coordinate of the grid cell's south-west corner at the given precision). Whitespace is ignored; a malformed reference is a clean 400.","priceUsd":0.002},{"id":"forward","version":"v1","path":"/v1/forward","url":"https://geospatial.openverbs.com/v1/forward","title":"WGS84 → Web Mercator","description":"Project WGS84 longitude/latitude (degrees) to Web Mercator (EPSG:3857) easting/northing in metres. Latitude is clamped to ±85.0511° (the projection's valid extent).","priceUsd":0.002},{"id":"inverse","version":"v1","path":"/v1/inverse","url":"https://geospatial.openverbs.com/v1/inverse","title":"Web Mercator → WGS84","description":"Un-project Web Mercator (EPSG:3857) easting/northing in metres back to WGS84 longitude/latitude in degrees.","priceUsd":0.002},{"id":"tile","version":"v1","path":"/v1/tile","url":"https://geospatial.openverbs.com/v1/tile","title":"Coordinate → slippy-map tile","description":"Map a WGS84 coordinate at a given zoom (0..30) to its slippy-map (XYZ / Google / OSM) tile x,y and its Bing quadkey.","priceUsd":0.002},{"id":"tile-bounds","version":"v1","path":"/v1/tile-bounds","url":"https://geospatial.openverbs.com/v1/tile-bounds","title":"Tile → geographic bounds","description":"Compute the geographic bounding box (west/south/east/north in degrees) of a slippy-map tile z/x/y, plus its Bing quadkey.","priceUsd":0.002},{"id":"resolution","version":"v1","path":"/v1/resolution","url":"https://geospatial.openverbs.com/v1/resolution","title":"Ground resolution & scale","description":"Report the ground resolution (metres per pixel, for 256-px tiles) and the OGC map scale denominator at a zoom level, optionally adjusted for latitude (default equator).","priceUsd":0.002},{"id":"distance","version":"v1","path":"/v1/distance","url":"https://geospatial.openverbs.com/v1/distance","title":"Great-circle distance","description":"Distance and initial bearing between two coordinates.","priceUsd":0.002},{"id":"geohash","version":"v1","path":"/v1/geohash","url":"https://geospatial.openverbs.com/v1/geohash","title":"Encode geohash","description":"Encode a coordinate to a geohash and return its bounding box and 8 neighbors.","priceUsd":0.002},{"id":"timezone","version":"v1","path":"/v1/timezone","url":"https://geospatial.openverbs.com/v1/timezone","title":"Timezone from coordinate","description":"Resolve the timezone for a latitude/longitude.","priceUsd":0.002},{"id":"point-in-polygon","version":"v1","path":"/v1/point-in-polygon","url":"https://geospatial.openverbs.com/v1/point-in-polygon","title":"Point in polygon","description":"Test whether a coordinate falls inside a polygon.","priceUsd":0.002}]},{"id":"scan","url":"https://scan.openverbs.com","title":"Security & Privacy Checks","description":"Security and privacy checks: offline leaked-secret scanning and PII detection/redaction for prompts, logs and tool output, plus live CISA known-exploited vulnerability (KEV) catalog checks by CVE for patch prioritization.","category":"trust-safety","tags":["scan","secrets","credentials","api-key","token","pii","redaction","privacy","gdpr","compliance","security","detect","leak"],"operations":[{"id":"secrets","version":"v1","path":"/v1/secrets","url":"https://scan.openverbs.com/v1/secrets","title":"Scan text for leaked secrets","description":"Scan source code or configuration text for hardcoded secrets: AWS access keys, GitHub/Slack/Google tokens, Stripe and OpenAI keys, PEM private-key blocks, JWTs and high-entropy secret assignments. Placeholder values are filtered out. Each finding gives the rule, a severity (critical/high/medium/low), line and column, entropy and a masked excerpt. Offline and deterministic.","priceUsd":0.004},{"id":"detect","version":"v1","path":"/v1/detect","url":"https://scan.openverbs.com/v1/detect","title":"Detect PII","description":"Find personally identifiable information in a text blob: emails, phone numbers, credit cards (Luhn-validated), IBANs (mod-97 validated), IPv4/IPv6 addresses, US SSNs and JWTs. Returns every match with its type and character offsets, plus per-type counts. Validated — not just pattern-matched — to keep false positives low. Fully offline.","priceUsd":0.004},{"id":"redact","version":"v1","path":"/v1/redact","url":"https://scan.openverbs.com/v1/redact","title":"Redact PII","description":"Return the input text with every detected PII span replaced. `mode` controls the replacement: \"label\" (default) → `[EMAIL]`; \"mask\" → the value covered with a mask character; \"hash\" → `[EMAIL:1a2b3c4d]`, a stable per-value fingerprint so equal values stay linkable without exposing them. Same validated detectors as `/detect`. Fully offline.","priceUsd":0.004},{"id":"kev","version":"v1","path":"/v1/kev","url":"https://scan.openverbs.com/v1/kev","title":"CISA known exploited vulnerabilities check","description":"Check up to 50 CVE IDs against CISA's Known Exploited Vulnerabilities (KEV) catalog. Returns membership, vendor/product, exploitation evidence, ransomware-use status and remediation guidance from CC0 data. Not listed does not mean safe or unexploited. Federal due dates are not global deadlines. Refreshed hourly; stale snapshots are explicitly flagged.","priceUsd":0.006}]}]}