{"info":{"description":"44 pay-per-call tools for AI agents. Payment: x402 protocol, USDC on Base.","title":"NanoTools","version":"3.0","x-payment":{"asset":"USDC","facilitator":"https://facilitator.openx402.ai","networks":["eip155:8453","eip155:84532"],"protocol":"x402"}},"openapi":"3.1.0","paths":{"/api/base64":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Base64 encode or decode. ?op=enc|dec&data=... Tolerant to missing padding.","tags":["base64","encode","decode","encoding"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/color-convert":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Convert colors between hex, rgb, hsl. ?color=#ff0000 or rgb(255,0,0)","tags":["color","hex","rgb","hsl","convert","design"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/cron-parse":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Explain a cron expression: next 3 run times in UTC. ?expr=*/5 * * * *","tags":["cron","schedule","crontab","parser"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/csv2json":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Convert CSV to JSON array. ?data=<csv urlencoded>&delim=,","tags":["csv","json","convert","data"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/diff":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Unified diff of two texts with changed line count. ?a=<text>&b=<text>","tags":["diff","compare","texts","changes"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/dns":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"DNS lookup: A, AAAA, MX, TXT, NS, CNAME records for a domain. ?name=example.com&type=A","tags":["dns","lookup","domain","mx","nameserver","a record"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/fx-rates":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"ECB reference currency exchange rates. ?base=USD&symbols=EUR,GBP or ?date=2026-01-15","tags":["currency","exchange rate","fx","forex","ecb"],"x-payment-protocol":"x402","x-price-usd":0.002}},"/api/hash-multi":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"MD5, SHA-1, SHA-256, SHA-512 in one call. ?text=...","tags":["hash","md5","sha1","sha256","checksum"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/html-entities":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Escape or unescape HTML entities. ?op=enc|dec&data=<text>","tags":["html","entities","escape","unescape"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/ip-info":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"IP geolocation and network info: country, city, ASN/org, timezone. ?ip=1.2.3.4","tags":["ip","geolocation","asn","network","lookup"],"x-payment-protocol":"x402","x-price-usd":0.002}},"/api/json":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Validate + pretty-print JSON. ?data={...} (urlencoded).","tags":["json","validate","format","pretty"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/jwt-decode":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Decode a JWT header and payload WITHOUT signature verification. ?token=<jwt>","tags":["jwt","token","decode","auth","claims","debug"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/lorem":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Lorem ipsum placeholder generator. ?paras=3 or ?words=50","tags":["lorem","ipsum","placeholder","text generator"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/markdown2html":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Convert Markdown to HTML (tables, fenced code). ?text=<markdown urlencoded>","tags":["markdown","html","convert","md"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/og-image":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Generate an Open Graph image 1200x630 from title/subtitle/theme. ?title=&subtitle=&theme=indigo|dark|green|red|blue","tags":["og image","open graph","social preview","banner generator","image"],"x-payment-protocol":"x402","x-price-usd":0.015}},"/api/password":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Secure random password. ?len=16&symbols=1","tags":["password","generator","secure","random"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/pdf":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Render any page to PDF (A4, print background) via headless Chrome. ?url=","tags":["pdf","convert","print","browser","render"],"x-payment-protocol":"x402","x-price-usd":0.02}},"/api/qr":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"QR code generator. ?data=<text>&size=256 -> PNG as base64 in JSON.","tags":["qr","qrcode","generator","image","encode"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/random":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Cryptographically secure random number. ?min=&max= (ints, default 0..100).","tags":["random","rng","number","dice","lottery"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/readability":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Text readability: Flesch score, level, avg sentence length, keyword density, top words. ?text=<text>&keyword=","tags":["readability","flesch","seo","content","keyword density"],"x-payment-protocol":"x402","x-price-usd":0.003}},"/api/regex":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Test a regex against text: matches with groups and positions. ?pattern=<re>&text=<text>&flags=i","tags":["regex","regexp","match","test","pattern"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/render-text":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Render a JS-heavy page in a real browser and return the visible text. ?url=","tags":["render","javascript","spa","scrape","browser","text"],"x-payment-protocol":"x402","x-price-usd":0.015}},"/api/robots-audit":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Audit robots.txt + sitemap.xml of a site: rules, sitemaps listed, sitemap reachable, URL counts. ?url=<site root>","tags":["robots","sitemap","seo","audit","crawl","indexing"],"x-payment-protocol":"x402","x-price-usd":0.005}},"/api/rss":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Parse any RSS or Atom feed into clean JSON items. ?url=<feed>&limit=10","tags":["rss","atom","feed","news","parse"],"x-payment-protocol":"x402","x-price-usd":0.002}},"/api/scrape":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Fetch a web page and return clean readable text. ?url=https://example.com","tags":["scrape","extract","web page","reader","crawl","html to text"],"x-payment-protocol":"x402","x-price-usd":0.003}},"/api/screenshot":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Real browser screenshot of any page as PNG (base64), JS rendered. ?url=&width=1280&height=800&full=0|1","tags":["screenshot","capture","browser","render","image","page"],"x-payment-protocol":"x402","x-price-usd":0.02}},"/api/search":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Google web search. ?q=query&num=5 returns organic results with title, link, snippet.","tags":["search","google","web","serp","find","lookup"],"x-payment-protocol":"x402","x-price-usd":0.002}},"/api/seo-meta":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"SEO snapshot of a page: title, description, OG/Twitter meta, h1s, h2 count, canonical, robots meta, lang, word count. ?u","tags":["seo","meta","opengraph","title","description","canonical"],"x-payment-protocol":"x402","x-price-usd":0.005}},"/api/serp-google":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Google SERP: organic results with position, ads count, related searches. ?q=&num=5&gl=us","tags":["serp","google","search","ranking","keywords","keyword research"],"x-payment-protocol":"x402","x-price-usd":0.01}},"/api/serp-yandex":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Yandex SERP for RU-market keyword research (region by ?lr=). ?q=&lr=213","tags":["yandex","serp","search","russian","ranking","keywords"],"x-payment-protocol":"x402","x-price-usd":0.01}},"/api/sha256":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"SHA-256 and SHA-512 digests for any text (?text=). Deterministic, local, stable JSON.","tags":["hash","sha256","sha512","checksum","digest","crypto"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/slug":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"URL slug from any text. ?text=Hello%20World -> hello-world","tags":["slug","url","seo","text"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/text-stats":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Text statistics: words, chars, sentences, reading time. ?text=...","tags":["text","words","count","statistics","seo"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/timestamp":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Unix timestamp <-> ISO8601 both ways. ?ts=1690000000 or ?iso=2026-01-01T00:00:00Z","tags":["timestamp","unix","epoch","date","time"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/toml2json":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Convert TOML to JSON. ?data=<toml urlencoded>","tags":["toml","json","convert","config"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/trends":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Google Trends interest over time for a keyword (weekly points, peak). ?q=casino&geo=US&time=12-m|5-y","tags":["google trends","interest over time","keyword research","search trends","seo","trend analysis"],"x-payment-protocol":"x402","x-price-usd":0.02}},"/api/trends-region":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Google Trends interest by region/country for a keyword. ?q=casino&geo=&time=12-m","tags":["google trends","interest by region","geo","keyword research","seo"],"x-payment-protocol":"x402","x-price-usd":0.02}},"/api/trends-related":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Google Trends related queries: top and rising search terms for a keyword. ?q=casino&geo=&time=12-m","tags":["google trends","related queries","keyword ideas","search trends","seo"],"x-payment-protocol":"x402","x-price-usd":0.02}},"/api/unit-convert":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Convert units: length, weight, volume, data size, temperature. ?value=100&from=cm&to=inch","tags":["unit","convert","length","weight","temperature","data size"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/urlcode":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"URL encode/decode. ?op=enc|dec&data=...","tags":["url","encode","decode","percent"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/uuid":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Generate UUIDv4 (and optional count ?n= up to 100).","tags":["uuid","guid","identifier","unique id"],"x-payment-protocol":"x402","x-price-usd":0.001}},"/api/weather":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Current weather + 7-day forecast by city name or lat/lon (open-meteo, no key needed). ?city=Moscow","tags":["weather","forecast","temperature","climate"],"x-payment-protocol":"x402","x-price-usd":0.002}},"/api/whois":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Domain registration data via RDAP: registrar, created/updated/expires, status, nameservers. ?domain=example.com","tags":["whois","domain","rdap","registrar","expiry"],"x-payment-protocol":"x402","x-price-usd":0.003}},"/api/yaml2json":{"get":{"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402, see PAYMENT-REQUIRED header)"}},"summary":"Convert YAML to JSON. ?data=<yaml urlencoded>","tags":["yaml","json","convert","config"],"x-payment-protocol":"x402","x-price-usd":0.001}}},"servers":[{"url":"https://nano.stacknodehost.com"}]}
