{"x402Version":2,"payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","resources":[{"id":5889,"slug":"5889","resource":"https://402utils.com/v1/domain-check","description":"Domain availability and expiry intelligence via RDAP, the WHOIS successor. Queries the authoritative registry for any RDAP-enabled TLD: free domains return registered:false, taken ones return registrar, creation and expiry dates, nameservers and EPP status codes. TLDs without RDAP coverage return supported:false. Built for agents that buy, monitor or vet domains.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"2000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"method":"GET","queryParams":{"domain":"example.com"},"type":"http"},"output":{"example":{"createdAt":"1995-08-14T04:00:00Z","domain":"example.com","expiresAt":"2026-08-13T04:00:00Z","nameservers":["a.iana-servers.net","b.iana-servers.net"],"registered":true,"registrar":"RESERVED-Internet Assigned Numbers Authority","status":["client delete prohibited","client transfer prohibited","client update prohibited"],"supported":true},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"method":{"enum":["GET"],"type":"string"},"queryParams":{"description":"Query string only.","properties":{"domain":{"description":"Domain to look up, e.g. example.com. LDH/punycode form; no scheme, path or IP (required).","type":"string"}},"required":["domain"],"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"properties":{"createdAt":{"format":"date-time","type":"string"},"domain":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"nameservers":{"items":{"type":"string"},"type":"array"},"registered":{"description":"Absent when supported=false.","type":"boolean"},"registrar":{"type":"string"},"status":{"description":"EPP status codes as reported by the registry.","items":{"type":"string"},"type":"array"},"supported":{"description":"False when the TLD publishes no RDAP service (many ccTLDs).","type":"boolean"}},"required":["domain","supported"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-09-09T16:24:06.404Z","quality":{"calls30d":104,"uniquePayers30d":5,"lastCalledAt":"2026-09-09T16:24:03.721Z"},"liveness":{},"verified":false,"featured":false},{"id":5890,"slug":"5890","resource":"https://402utils.com/v1/echo","description":"Echoes back the JSON body you send, with a server timestamp. Useful for verifying your x402 client integration end to end.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"1000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"body":{"msg":"hello farm"},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"echo":{"msg":"hello farm"},"ts":"2026-07-03T12:00:00.000Z"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"additionalProperties":true,"description":"Any JSON object; it is returned verbatim in the response.","type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"additionalProperties":false,"properties":{"echo":{"additionalProperties":true,"description":"The JSON object you sent, unchanged.","type":"object"},"ts":{"description":"Server time (ISO 8601).","format":"date-time","type":"string"}},"required":["echo","ts"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-09-12T16:45:32.236Z","quality":{"calls30d":7,"uniquePayers30d":5,"lastCalledAt":"2026-09-12T16:45:32.032Z"},"liveness":{},"verified":false,"featured":false},{"id":5892,"slug":"5892","resource":"https://402utils.com/v1/hash","description":"Compute cryptographic hashes / checksums of a string or of raw bytes (base64). Returns lowercase hex for each requested algorithm: sha256 (default), sha512, sha1, md5. SHA via native Web Crypto; md5 and sha1 are offered for legacy interop only and flagged — not for security. POST so the input never lands in a URL/log. Verification/checksums only, not a hash cracker.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"1000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"body":{"algorithms":["sha256","md5"],"text":"hello world"},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"bytes":11,"hashes":{"md5":"5eb63bbbe01eeed093cb22bb8f5acdc3","sha256":"b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"},"warnings":["md5 is a legacy checksum — not collision-resistant; do not use it for security."]},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"description":"Exactly one of `text` or `bytes`, plus an optional algorithm list.","properties":{"algorithms":{"default":["sha256"],"description":"Which digests to compute (default [\"sha256\"]).","items":{"enum":["sha256","sha512","sha1","md5"],"type":"string"},"type":"array"},"bytes":{"description":"Raw bytes as base64 (standard or url-safe) — alternative to `text`.","type":"string"},"text":{"description":"UTF-8 text to hash.","type":"string"}},"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"properties":{"bytes":{"description":"Byte length of the hashed input.","type":"integer"},"hashes":{"description":"Map of algorithm → lowercase hex digest.","type":"object"},"warnings":{"description":"Present when a broken/legacy algorithm (md5, sha1) was requested.","items":{"type":"string"},"type":"array"}},"required":["bytes","hashes"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-09-07T18:36:51.045Z","quality":{"calls30d":7,"uniquePayers30d":4,"lastCalledAt":"2026-09-07T18:36:49.364Z"},"liveness":{},"verified":false,"featured":false},{"id":5891,"slug":"5891","resource":"https://402utils.com/v1/color","description":"Colour utilities: ?op=convert (default) turns any hex/rgb()/hsl()/CSS-name into hex, rgb, hsl, hsv, alpha, relative luminance and exact CSS name; ?op=contrast with ?fg=&bg= returns the WCAG 2.x contrast ratio and AA/AAA pass/fail for normal & large text plus UI components (accessibility / EAA); ?op=palette derives complementary, analogous, triadic, tints and shades. Send hex without '#'.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"1000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"method":"GET","queryParams":{"bg":"ffffff","fg":"000000","op":"contrast"},"type":"http"},"output":{"example":{"AA":{"largeText":true,"normalText":true,"uiComponents":true},"AAA":{"largeText":true,"normalText":true},"bg":{"hex":"#ffffff","input":"ffffff"},"fg":{"hex":"#000000","input":"000000"},"op":"contrast","ratio":21},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"method":{"enum":["GET"],"type":"string"},"queryParams":{"description":"Query string only.","properties":{"bg":{"description":"Background colour (op=contrast). Falls back to `color` for fg.","type":"string"},"color":{"description":"The colour (convert/palette): hex without '#', rgb(), hsl() or a CSS name.","type":"string"},"fg":{"description":"Foreground colour (op=contrast).","type":"string"},"op":{"default":"convert","enum":["convert","contrast","palette"],"type":"string"}},"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"description":"Shape depends on `op`.","properties":{"AA":{"description":"AA pass/fail for normalText, largeText, uiComponents.","type":"object"},"AAA":{"description":"AAA pass/fail for normalText, largeText.","type":"object"},"analogous":{"items":{"type":"string"},"type":"array"},"complementary":{"description":"(op=palette).","type":"string"},"hex":{"type":"string"},"hsl":{"type":"object"},"hsv":{"type":"object"},"luminance":{"description":"WCAG relative luminance 0-1 (op=convert).","type":"number"},"name":{"description":"Exact CSS colour name, if any.","type":["string","null"]},"op":{"type":"string"},"ratio":{"description":"WCAG contrast ratio 1-21 (op=contrast).","type":"number"},"rgb":{"type":"object"},"shades":{"items":{"type":"string"},"type":"array"},"tints":{"items":{"type":"string"},"type":"array"},"triadic":{"items":{"type":"string"},"type":"array"}},"required":["op"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-09-17T04:00:18.268Z","quality":{"calls30d":6,"uniquePayers30d":5,"lastCalledAt":"2026-09-17T03:59:58.753Z"},"liveness":{},"verified":false,"featured":false},{"id":5893,"slug":"5893","resource":"https://402utils.com/v1/x402-quote","description":"Enriched quote for an x402 endpoint: probes it unpaid (never pays, SSRF-checked), decodes {price, asset, network, payTo}, then compares the USD price against the live Bazaar market for its category → {marketContext:{category, medianForCategory, cheaperThanMarket}}. Not just how much, but whether it's fair. Market context is best-effort; the decoded quote returns even if the Bazaar read fails. Neutral — our own endpoints are never featured.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"2000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"method":"GET","queryParams":{"url":"https://402utils.com/v1/rss-to-json"},"type":"http"},"output":{"example":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Fetch an RSS 2.0 or Atom feed and return clean JSON.","isX402":true,"marketContext":{"category":"rss","cheaperThanMarket":true,"medianForCategory":0.003,"sampleSize":4},"network":"eip155:8453","payTo":"0x209693Bc6afc0C5328bA36FaF03C514EF312287C","price":"2000","priceUsd":0.002,"resource":"https://402utils.com/v1/rss-to-json","status":402},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"method":{"enum":["GET"],"type":"string"},"queryParams":{"description":"Query string only.","properties":{"url":{"description":"Public http(s) URL of the x402 endpoint to quote (required).","format":"uri","type":"string"}},"required":["url"],"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"properties":{"asset":{"type":"string"},"description":{"type":"string"},"discovery":{"description":"Bazaar/discovery extension, passed through verbatim when present.","type":"object"},"isX402":{"type":"boolean"},"marketContext":{"properties":{"category":{"description":"Derived category keyword the market is sampled for.","type":"string"},"cheaperThanMarket":{"description":"True when this endpoint's USD price is below the category median.","type":"boolean"},"medianForCategory":{"description":"Median USD price across the matched category (omitted if <3 matches).","type":"number"},"sampleSize":{"description":"USD-priced Bazaar resources matched for the category.","type":"integer"}},"required":["category","sampleSize"],"type":"object"},"network":{"type":"string"},"payTo":{"type":"string"},"price":{"description":"Chosen accept's amount in atomic units of the asset.","type":"string"},"priceUsd":{"description":"USD price when the asset is a recognised USD stablecoin.","type":"number"},"resource":{"type":"string"},"status":{"type":"integer"}},"required":["isX402","status"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-09-09T16:23:05.655Z","quality":{"calls30d":4,"uniquePayers30d":3,"lastCalledAt":"2026-09-09T16:23:03.667Z"},"liveness":{},"verified":false,"featured":false},{"id":5894,"slug":"5894","resource":"https://402utils.com/v1/rss-to-json","description":"Fetch an RSS 2.0 or Atom feed and return clean JSON: feed title, link and description, plus items with title, link, ISO-8601 publishedAt, summary and author. Handles both formats and normalises the dates. The caller-supplied URL is SSRF-checked; the fetch is capped at 2 MB and 8 s.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"2000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"method":"GET","queryParams":{"limit":10,"url":"https://blog.cloudflare.com/rss/"},"type":"http"},"output":{"example":{"items":[{"link":"https://blog.cloudflare.com/a-post/","publishedAt":"2026-07-01T10:00:00.000Z","title":"A post"}],"link":"https://blog.cloudflare.com/","title":"The Cloudflare Blog"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"method":{"enum":["GET"],"type":"string"},"queryParams":{"description":"Query string only.","properties":{"limit":{"default":50,"description":"Max items.","maximum":200,"minimum":1,"type":"integer"},"url":{"description":"Public http(s) feed URL (required).","format":"uri","type":"string"}},"required":["url"],"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"properties":{"description":{"type":"string"},"items":{"items":{"properties":{"author":{"type":"string"},"link":{"type":"string"},"publishedAt":{"format":"date-time","type":"string"},"summary":{"type":"string"},"title":{"type":"string"}},"required":["title","link"],"type":"object"},"type":"array"},"link":{"type":"string"},"title":{"type":"string"}},"required":["title","link","items"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-09-05T01:14:26.76Z","quality":{"calls30d":4,"uniquePayers30d":2,"lastCalledAt":"2026-09-05T01:14:25.357Z"},"liveness":{},"verified":false,"featured":false},{"id":5895,"slug":"5895","resource":"https://402utils.com/v1/email-check","description":"Validate an email address before you accept a signup or send to it: RFC 5322 syntax, whether the domain resolves and its MX records, whether it is a disposable/throwaway domain (community blocklist), and whether it is a role account (info@, support@…). DNS is checked over DoH. No SMTP probing (intrusive and spammy), so a true 'domainExists' does not guarantee the mailbox exists.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"3000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"method":"GET","queryParams":{"email":"user@example.com"},"type":"http"},"output":{"example":{"checkedAt":"2026-07-04T00:00:00.000Z","disposable":false,"domainExists":true,"email":"user@example.com","mxRecords":["mx1.example.com"],"roleAccount":false,"syntaxValid":true},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"method":{"enum":["GET"],"type":"string"},"queryParams":{"description":"Query string only.","properties":{"email":{"description":"The email address to validate (required).","format":"email","type":"string"}},"required":["email"],"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"properties":{"checkedAt":{"format":"date-time","type":"string"},"disposable":{"description":"Domain is on the disposable-email blocklist.","type":"boolean"},"domainExists":{"description":"Best-effort: domain has MX or A records (DoH).","type":"boolean"},"email":{"type":"string"},"mxRecords":{"items":{"type":"string"},"type":"array"},"roleAccount":{"description":"Local part is a role address (info, support…).","type":"boolean"},"syntaxValid":{"type":"boolean"}},"required":["email","syntaxValid","domainExists","mxRecords","disposable","roleAccount","checkedAt"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-09-02T01:18:47.497Z","quality":{"calls30d":3,"uniquePayers30d":2,"lastCalledAt":"2026-09-02T01:18:45.886Z"},"liveness":{},"verified":false,"featured":false},{"id":5896,"slug":"5896","resource":"https://402utils.com/v1/screenshot","description":"Capture a screenshot of any public web page with a headless Chrome browser. Set the viewport, grab the full scrollable page or just the fold, and choose PNG, JPEG or WebP with an optional quality. Returns the raw image bytes — ideal for link previews, thumbnails, visual monitoring and archiving. No browser to run, pay per capture.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"8000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"body":{"format":"png","fullPage":true,"url":"https://example.com"},"bodyType":"json","method":"POST","type":"http"},"output":{"example":"<binary image/png stream>","type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"description":"Screenshot a public http(s) URL.","properties":{"delayMs":{"description":"Extra wait after load before capturing (animations, lazy content).","maximum":5000,"minimum":0,"type":"integer"},"format":{"default":"png","description":"Image format.","enum":["png","jpeg","webp"],"type":"string"},"fullPage":{"default":false,"description":"Capture the full scrollable page.","type":"boolean"},"quality":{"description":"Compression quality (jpeg/webp only).","maximum":100,"minimum":1,"type":"integer"},"url":{"description":"Public http(s) URL to capture (required).","format":"uri","type":"string"},"viewport":{"description":"Browser viewport in pixels (each side 320–2560). Default 1280×800.","properties":{"height":{"maximum":2560,"minimum":320,"type":"integer"},"width":{"maximum":2560,"minimum":320,"type":"integer"}},"type":"object"},"waitUntil":{"default":"load","description":"When to consider the page ready. Use 'networkidle' for JS-heavy pages.","enum":["load","networkidle"],"type":"string"}},"required":["url"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"contentMediaType":"image/png","description":"The HTTP response body is the raw image (Content-Type image/png, image/jpeg or image/webp).","format":"binary","type":"string"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-08-30T00:55:14.84Z","quality":{"calls30d":3,"uniquePayers30d":2,"lastCalledAt":"2026-08-30T00:55:13.247Z"},"liveness":{},"verified":false,"featured":false},{"id":5897,"slug":"5897","resource":"https://402utils.com/v1/cron-next","description":"Next occurrences of a cron expression in any IANA time zone, DST-aware via the runtime's ICU tzdb (times skipped by DST shift forward by the gap; ambiguous times fire once). Dialect (croner): 5-7 fields with optional seconds and year, ranges, steps, lists, JAN-DEC/SUN-SAT names, L, W, #, ? and @daily-style aliases. Each occurrence is returned as local ISO with offset plus UTC. Bad expression → 400 naming the offending field.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"2000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"method":"GET","queryParams":{"count":5,"expr":"*/15 9-17 * * 1-5","tz":"Europe/Paris"},"type":"http"},"output":{"example":{"count":2,"expr":"*/15 9-17 * * 1-5","from":"2026-07-03T18:50:00+02:00","occurrences":[{"local":"2026-07-06T09:00:00+02:00","utc":"2026-07-06T07:00:00.000Z"},{"local":"2026-07-06T09:15:00+02:00","utc":"2026-07-06T07:15:00.000Z"}],"timezone":"Europe/Paris"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"method":{"enum":["GET"],"type":"string"},"queryParams":{"description":"Query params. `expr` is required; the rest have defaults.","properties":{"count":{"description":"Occurrences to return, 1-50 (default 5).","type":"integer"},"expr":{"description":"Cron expression, e.g. */15 9-17 * * 1-5.","type":"string"},"from":{"description":"ISO 8601 start instant, exclusive (default now). Without an offset it is wall time in `tz`.","type":"string"},"tz":{"description":"IANA zone for evaluation (default UTC).","type":"string"}},"required":["expr"],"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"additionalProperties":false,"properties":{"count":{"description":"Number of occurrences actually returned.","type":"integer"},"expr":{"type":"string"},"from":{"description":"The start instant in `timezone`, ISO with offset.","type":"string"},"note":{"description":"Present when fewer occurrences exist than requested.","type":"string"},"occurrences":{"items":{"properties":{"local":{"description":"ISO in `timezone`, with offset.","type":"string"},"utc":{"type":"string"}},"required":["local","utc"],"type":"object"},"type":"array"},"timezone":{"type":"string"}},"required":["expr","timezone","from","count","occurrences"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-09-18T11:20:40.729Z","quality":{"calls30d":1,"uniquePayers30d":1,"lastCalledAt":"2026-09-18T11:20:40.567Z"},"liveness":{},"verified":false,"featured":false},{"id":5898,"slug":"5898","resource":"https://402utils.com/v1/yaml","description":"Convert between YAML and JSON in one call. to:\"json\" parses a YAML document (config files, docker-compose, Kubernetes manifests, CI pipelines) into a plain JSON value; to:\"yaml\" renders any JSON value as clean block-style YAML. Hardened: safe core schema (tags like !!js/function never execute), alias bombs rejected, one document per call, parse errors return line/column. YAML input up to 2 MB UTF-8.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"1000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"body":{"input":"services:\n  web:\n    image: nginx:1.29\n    ports:\n      - \"80:80\"\n","to":"json"},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"result":{"services":{"web":{"image":"nginx:1.29","ports":["80:80"]}}}},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"description":"Conversion request.","properties":{"input":{"description":"The value to convert. With to:\"json\": a single YAML document as a string, max 2 MB UTF-8. With to:\"yaml\": any JSON value; a string is first parsed as JSON text."},"to":{"description":"Target format: \"json\" parses YAML text, \"yaml\" emits YAML text.","enum":["json","yaml"],"type":"string"}},"required":["input","to"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"description":"Conversion result.","properties":{"result":{"description":"With to:\"json\": the parsed document as a JSON value (object, array, string, number, boolean or null). With to:\"yaml\": the YAML text as a string."}},"required":["result"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-09-18T11:20:39.001Z","quality":{"calls30d":1,"uniquePayers30d":1,"lastCalledAt":"2026-09-18T11:20:38.793Z"},"liveness":{},"verified":false,"featured":false},{"id":5899,"slug":"5899","resource":"https://402utils.com/v1/vat-oss","description":"EU B2C e-commerce VAT: where a distance sale is taxed and how much. Applies the €10,000/year OSS threshold — at/below → seller-country VAT (domestic); above → consumer-country VAT via OSS. IOSS for imports ≤ €150. ?sellerCountry=&buyerCountry=&amount= (+ ytdCrossBorder, category). Returns scheme, taxationPlace, applicableCountry, vatRate, vatAmount. Calculation aid; OSS/IOSS registration and filing are the seller's responsibility.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"2000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"method":"GET","queryParams":{"amount":100,"buyerCountry":"DE","sellerCountry":"FR","ytdCrossBorder":15000},"type":"http"},"output":{"example":{"amount":100,"applicableCountry":"DE","buyerCountry":"DE","category":"standard","crossBorder":true,"disclaimer":"Calculation aid; OSS/IOSS registration and filing are the seller's responsibility. Assumes a B2C distance sale (goods or TBE services) and standard treatment; special regimes, exemptions and the seller's own OSS opt-in are not modelled.","grossAmount":119,"ossThresholdEur":10000,"scheme":"OSS","sellerCountry":"FR","sellerInEu":true,"source":"https://vat-one-stop-shop.ec.europa.eu/index_en","taxationPlace":"destination","thresholdExceeded":true,"vatAmount":19,"vatRate":19,"vatRatesAsOf":"2026-05-19","vatRatesSource":"https://europa.eu/youreurope/business/taxation/vat/vat-rules-rates/index_en.htm","ytdCrossBorderEur":15000},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"method":{"enum":["GET"],"type":"string"},"queryParams":{"description":"Query params. sellerCountry, buyerCountry and amount required.","properties":{"amount":{"description":"Net sale amount in EUR (VAT-exclusive).","type":"number"},"buyerCountry":{"description":"Consumer's country ISO alpha-2 (must be an EU member state).","type":"string"},"category":{"description":"Optional VAT rate category to apply (default standard).","enum":["standard","reduced","super_reduced","parking"],"type":"string"},"sellerCountry":{"description":"Seller's country ISO alpha-2. Non-EU → an import (IOSS if ≤ €150).","type":"string"},"ytdCrossBorder":{"description":"Optional: your cumulative intra-EU cross-border B2C sales this year (EUR), excluding this one. Default 0. Decides the €10,000 threshold.","type":"number"}},"required":["sellerCountry","buyerCountry","amount"],"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"properties":{"amount":{"type":"number"},"applicableCountry":{"description":"The member state whose VAT rate applies.","type":"string"},"buyerCountry":{"type":"string"},"category":{"type":"string"},"crossBorder":{"type":"boolean"},"disclaimer":{"type":"string"},"grossAmount":{"description":"amount + vatAmount.","type":"number"},"ossThresholdEur":{"const":10000,"type":"integer"},"rateNote":{"type":"string"},"scheme":{"enum":["domestic","OSS","IOSS"],"type":"string"},"sellerCountry":{"type":"string"},"sellerInEu":{"type":"boolean"},"source":{"format":"uri","type":"string"},"taxationPlace":{"description":"origin = seller's country; destination = consumer's country.","enum":["origin","destination"],"type":"string"},"thresholdExceeded":{"description":"True when cumulative cross-border B2C sales incl. this one exceed €10,000.","type":"boolean"},"vatAmount":{"description":"VAT due on the sale (EUR, 2dp).","type":"number"},"vatRate":{"description":"Applied VAT rate (%).","type":"number"},"vatRatesAsOf":{"format":"date","type":"string"},"vatRatesSource":{"format":"uri","type":"string"},"ytdCrossBorderEur":{"type":"number"}},"required":["scheme","taxationPlace","applicableCountry","vatRate","vatAmount","ossThresholdEur","thresholdExceeded","disclaimer"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-09-18T11:20:14.814Z","quality":{"calls30d":1,"uniquePayers30d":1,"lastCalledAt":"2026-09-18T11:20:14.65Z"},"liveness":{},"verified":false,"featured":false},{"id":5900,"slug":"5900","resource":"https://402utils.com/v1/timezone-convert","description":"Convert a datetime between any two IANA time zones using the runtime's ICU tzdb — always current, DST-correct, half-hour zones included. A datetime without offset is read as wall time in `from` (ambiguous fall-back times resolve to the earlier instant; times skipped by spring-forward shift ahead, flagged in `note`). Returns both ISO datetimes with offsets and DST status per side. Unknown zone → 400 with a spelling suggestion.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"1000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"method":"GET","queryParams":{"datetime":"2026-07-14T09:30:00","from":"Europe/Paris","to":"Asia/Ho_Chi_Minh"},"type":"http"},"output":{"example":{"dstActive":{"from":true,"to":false},"fromOffset":"+02:00","input":"2026-07-14T09:30:00+02:00","output":"2026-07-14T14:30:00+07:00","toOffset":"+07:00"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"method":{"enum":["GET"],"type":"string"},"queryParams":{"description":"Query params. `datetime` optional (default: now). `from`/`to` are IANA zone ids.","properties":{"datetime":{"description":"ISO 8601. With Z/±HH:MM it is an absolute instant; without, wall time in `from`.","type":"string"},"from":{"description":"Source IANA zone, e.g. Europe/Paris.","type":"string"},"to":{"description":"Target IANA zone, e.g. Asia/Ho_Chi_Minh.","type":"string"}},"required":["from","to"],"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"additionalProperties":false,"properties":{"dstActive":{"description":"Whether daylight-saving time is in effect on each side.","properties":{"from":{"type":"boolean"},"to":{"type":"boolean"}},"required":["from","to"],"type":"object"},"fromOffset":{"description":"UTC offset of `from` at that instant, ±HH:MM.","type":"string"},"input":{"description":"The instant expressed in `from`, ISO with offset.","type":"string"},"note":{"description":"Present when the wall time was ambiguous or nonexistent in `from`.","type":"string"},"output":{"description":"The same instant expressed in `to`.","type":"string"},"toOffset":{"description":"UTC offset of `to` at that instant.","type":"string"}},"required":["input","output","fromOffset","toOffset","dstActive"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-09-18T11:20:13.518Z","quality":{"calls30d":1,"uniquePayers30d":1,"lastCalledAt":"2026-09-18T11:20:13.388Z"},"liveness":{},"verified":false,"featured":false},{"id":5901,"slug":"5901","resource":"https://402utils.com/v1/xml-to-json","description":"Convert XML to clean JSON. POST raw XML (XML or text/plain Content-Type) or a JSON envelope {xml, alwaysArray}. Attributes land under \"@_\" keys, mixed-content text under \"#text\", repeated siblings become arrays, and alwaysArray forces arrays for listed tags even on a single occurrence. Numeric character references decode. DTD entities and DOCTYPE internal subsets rejected (anti-XXE / billion-laughs). Max 5 MB.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"2000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"body":{"alwaysArray":["item"],"xml":"<order id=\"A-17\"><item sku=\"X1\">Café grinder</item><item sku=\"X2\">Filter</item></order>"},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"json":{"order":{"@_id":"A-17","item":[{"#text":"Café grinder","@_sku":"X1"},{"#text":"Filter","@_sku":"X2"}]}},"root":"order"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"description":"JSON envelope. Alternatively POST the raw XML document directly with an XML or text/plain Content-Type (no envelope needed).","properties":{"alwaysArray":{"description":"Tag names that must always parse as arrays, even when only one occurrence exists (max 100).","items":{"type":"string"},"type":"array"},"xml":{"description":"XML document to convert. Max 5 MB UTF-8. DTD entity declarations and DOCTYPE internal subsets are rejected (422).","type":"string"}},"required":["xml"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"description":"The converted document.","properties":{"json":{"description":"Parsed document keyed by the root tag. Attributes are kept under \"@_\"-prefixed keys, text of mixed content under \"#text\", repeated siblings become arrays; numeric- and boolean-looking values are coerced to numbers/booleans.","type":"object"},"root":{"description":"Root tag name.","type":"string"}},"required":["json","root"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-09-18T11:20:12.331Z","quality":{"calls30d":1,"uniquePayers30d":1,"lastCalledAt":"2026-09-18T11:20:12.169Z"},"liveness":{},"verified":false,"featured":false},{"id":5902,"slug":"5902","resource":"https://402utils.com/v1/json-to-csv","description":"Convert a JSON array of objects into a clean RFC 4180 CSV: header row, CRLF records, correct quoting and quote-doubling. Nested objects flatten to dot-notation columns (a.b.c), arrays are JSON-encoded into their cell, and you can select and order columns explicitly. Delimiter: comma, semicolon, tab or pipe. Caps: 100,000 rows, 5 MB body, 20 MB CSV out. Returns text/csv ready for Excel, Google Sheets or a data pipeline.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"2000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"body":{"delimiter":",","rows":[{"city":"Orléans","name":"Jeanne d'Arc","stats":{"active":true,"score":9.5}},{"name":"José","tags":["vip","beta"]}]},"bodyType":"json","method":"POST","type":"http"},"output":{"example":"name,city,stats.score,stats.active,tags\r\nJeanne d'Arc,Orléans,9.5,true,\r\nJosé,,,,\"[\"\"vip\"\",\"\"beta\"\"]\"\r\n","type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"description":"Either this object form, or the bare `rows` array itself as the whole JSON body (defaults then apply).","properties":{"columns":{"description":"Optional column selection and order (flattened dot-notation names). Unknown names produce empty cells. Omit to use the union of all flattened row keys in first-seen order.","items":{"type":"string"},"type":"array"},"delimiter":{"default":",","description":"Field separator.","enum":[",",";","\t","|"],"type":"string"},"rows":{"description":"1–100,000 plain JSON objects, one per CSV record. Nested objects flatten to dot-notation column names; arrays are JSON-encoded into their cell; null becomes an empty cell.","items":{"type":"object"},"maxItems":100000,"minItems":1,"type":"array"}},"required":["rows"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"contentMediaType":"text/csv","description":"The response body is the CSV file (Content-Type: text/csv; charset=utf-8, Content-Disposition: attachment; filename=\"data.csv\"). CRLF record separators, trailing CRLF included.","type":"string"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-09-18T11:20:11.454Z","quality":{"calls30d":1,"uniquePayers30d":1,"lastCalledAt":"2026-09-18T11:20:11.325Z"},"liveness":{},"verified":false,"featured":false},{"id":5903,"slug":"5903","resource":"https://402utils.com/v1/diff","description":"Compute the diff between two texts (a → b) — no git needed. Returns a standard unified patch (line-oriented in both modes, applies with git apply or patch), added/removed counts, and in word mode a token-level change list for inline highlighting (capped at 2000 entries). CRLF line endings and missing trailing newlines are preserved byte-exactly. Caps: 1 MB UTF-8 per input; pathologically divergent inputs return 422 diff_too_complex.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"2000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"body":{"a":"name: farm\nprice: 1 USDC\n","b":"name: farm\nprice: 2 USDC\n"},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"identical":false,"mode":"line","patch":"===================================================================\n--- a\n+++ b\n@@ -1,2 +1,2 @@\n name: farm\n-price: 1 USDC\n+price: 2 USDC\n","stats":{"added":1,"removed":1}},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"description":"Two texts to compare, byte-exactly (no line-ending normalization).","properties":{"a":{"description":"Original text. Max 1 MB UTF-8.","type":"string"},"b":{"description":"New text. Max 1 MB UTF-8.","type":"string"},"context":{"description":"Unchanged context lines around each patch hunk. Default 3.","maximum":10,"minimum":0,"type":"integer"},"mode":{"description":"Granularity of stats/changes. The patch is always a line-oriented unified diff. Default \"line\".","enum":["line","word"],"type":"string"}},"required":["a","b"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"description":"Unified patch plus change statistics.","properties":{"changes":{"description":"Word mode only (omitted when identical): token runs in order, capped at 2000 entries. Unchanged runs have added=removed=false.","items":{"properties":{"added":{"type":"boolean"},"removed":{"type":"boolean"},"value":{"description":"Text of the run.","type":"string"}},"required":["value","added","removed"],"type":"object"},"type":"array"},"identical":{"description":"True when a and b are identical; patch is then empty.","type":"boolean"},"mode":{"description":"Echo of the requested mode.","enum":["line","word"],"type":"string"},"patch":{"description":"Unified diff patch (--- a / +++ b headers). Line-oriented in both modes; empty when identical.","type":"string"},"stats":{"description":"Counts in lines (mode line) or words (mode word).","properties":{"added":{"description":"Lines/words added in b.","type":"integer"},"removed":{"description":"Lines/words removed from a.","type":"integer"}},"required":["added","removed"],"type":"object"},"truncated":{"description":"Word mode only: true when `changes` was capped at 2000 entries.","type":"boolean"}},"required":["identical","patch","stats","mode"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-09-18T11:20:10.178Z","quality":{"calls30d":1,"uniquePayers30d":1,"lastCalledAt":"2026-09-18T11:20:09.971Z"},"liveness":{},"verified":false,"featured":false},{"id":5904,"slug":"5904","resource":"https://402utils.com/v1/rerank","description":"Rerank passages by relevance to a query via Cloudflare Workers AI (@cf/baai/bge-reranker-base). Send {query, documents[] (≤50, each ≤4000 chars), topK?}; returns [{index, score}] best-first — the missing link after embed/chunk, keeping the top chunks before a costly LLM call. Score is the model's relevance score (higher = better), named as it only compares within this model. Unavailable binding → 503, unbilled.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"4000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"body":{"documents":["To reset your password, click 'Forgot password' on the sign-in page.","Our office is open Monday to Friday, 9am to 5pm.","Passwords must be at least 12 characters and are reset from account settings."],"query":"How do I reset my password?","topK":2},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"model":"@cf/baai/bge-reranker-base","results":[{"index":0,"score":0.98},{"index":2,"score":0.71}]},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"properties":{"documents":{"description":"Candidate passages to rank (≤ 50, each ≤ 4000 chars).","items":{"type":"string"},"maxItems":50,"type":"array"},"query":{"description":"The search query (≤ 4000 chars).","type":"string"},"returnDocuments":{"default":false,"description":"Include each ranked document's text in the results.","type":"boolean"},"topK":{"description":"Return only the K best (default: all, ranked).","minimum":1,"type":"integer"}},"required":["query","documents"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"additionalProperties":false,"properties":{"model":{"description":"The reranker model used (scores compare only within one model).","type":"string"},"results":{"description":"Ranked best-first. `index` refers to the input documents array.","items":{"properties":{"document":{"description":"The document text (only when returnDocuments=true).","type":"string"},"index":{"description":"Position of this document in the request `documents` array.","type":"integer"},"score":{"description":"Relevance score from the model (higher = more relevant).","type":"number"}},"required":["index","score"],"type":"object"},"type":"array"}},"required":["results","model"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-09-16T21:26:01.598Z","quality":{"calls30d":1,"uniquePayers30d":1,"lastCalledAt":"2026-09-16T21:26:01.401Z"},"liveness":{},"verified":false,"featured":false},{"id":5905,"slug":"5905","resource":"https://402utils.com/v1/pdf","description":"Render HTML or a public web page into a pixel-perfect PDF using a headless Chrome browser. Send inline `html` (invoices, receipts, reports, tickets) or a `url` to snapshot; control paper size, orientation, margins, background graphics and scale. Returns the raw application/pdf bytes — no signup, no browser to run, pay per document.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"body":{"format":"A4","html":"<html><body><h1>Invoice #1042</h1><table><tr><td>Item</td><td>$20.00</td></tr></table></body></html>","printBackground":true},"bodyType":"json","method":"POST","type":"http"},"output":{"example":"<binary application/pdf stream>","type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"description":"Provide exactly one of `html` or `url`.","properties":{"format":{"default":"A4","description":"Paper size.","enum":["A4","Letter","Legal"],"type":"string"},"html":{"description":"Inline HTML document to render (max 1 MB). Mutually exclusive with url.","type":"string"},"landscape":{"default":false,"description":"Landscape orientation.","type":"boolean"},"margin":{"description":"Page margins in millimetres (0–100 each).","properties":{"bottom":{"type":"number"},"left":{"type":"number"},"right":{"type":"number"},"top":{"type":"number"}},"type":"object"},"printBackground":{"default":true,"description":"Print CSS background colours and images.","type":"boolean"},"scale":{"description":"Render scale factor.","maximum":2,"minimum":0.5,"type":"number"},"url":{"description":"Public http(s) URL to render. Mutually exclusive with html.","format":"uri","type":"string"},"waitUntil":{"default":"load","description":"When to consider the page ready. Use 'networkidle' for JS-heavy pages.","enum":["load","networkidle"],"type":"string"}},"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"contentMediaType":"application/pdf","description":"The HTTP response body is the raw PDF (Content-Type: application/pdf, Content-Disposition: inline; filename=\"document.pdf\").","format":"binary","type":"string"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-09-06T20:53:04.267Z","quality":{"calls30d":1,"uniquePayers30d":1,"lastCalledAt":"2026-09-06T20:53:02.078Z"},"liveness":{},"verified":false,"featured":false},{"id":5906,"slug":"5906","resource":"https://402utils.com/v1/phone-check","description":"Validate and normalize a phone number with full Google libphonenumber metadata: strict validity against each national numbering plan, E.164 / international / national formats, country detection (correct across shared codes like +1 and +44) and line type (mobile, fixed_line, toll_free, voip…) where the plan distinguishes it. Pass ?country=FR to parse national formats. Local. ?attest=1 → Ed25519-signed.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"2000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"method":"GET","queryParams":{"phone":"+442079460958"},"type":"http"},"output":{"example":{"country":"GB","e164":"+442079460958","international":"+44 20 7946 0958","national":"020 7946 0958","possible":true,"type":"fixed_line","valid":true},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"method":{"enum":["GET"],"type":"string"},"queryParams":{"description":"Query params. `phone` required; `country` helps parse national formats.","properties":{"attest":{"description":"Set to 1 for an Ed25519-signed attestation of the result (audit trail).","type":"string"},"country":{"description":"ISO alpha-2 default country for national input.","type":"string"},"phone":{"description":"The number, E.164 (+33612345678) or national.","type":"string"}},"required":["phone"],"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"properties":{"attestation":{"description":"Present only with ?attest=1. Ed25519 signature over the canonical result; verify against /.well-known/402utils-attestation.json.","properties":{"alg":{"const":"Ed25519","type":"string"},"payload":{"properties":{"endpoint":{"type":"string"},"kid":{"description":"Key id — matches a key in the .well-known document.","type":"string"},"resultSha256":{"description":"SHA-256 of the canonical JSON of the result (attestation excluded).","type":"string"},"ts":{"format":"date-time","type":"string"}},"type":"object"},"sig":{"description":"base64url Ed25519 signature over the canonical JSON of payload.","type":"string"}},"type":"object"},"country":{"description":"Detected ISO alpha-2; absent when undeterminable.","type":"string"},"e164":{"type":"string"},"international":{"type":"string"},"national":{"type":"string"},"possible":{"description":"Length-plausibility (looser than valid).","type":"boolean"},"type":{"description":"mobile | fixed_line | fixed_line_or_mobile | toll_free | premium_rate | voip | … — absent when the plan does not distinguish.","type":"string"},"valid":{"description":"Strict validity per the national numbering plan.","type":"boolean"}},"required":["valid"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-08-24T00:46:19.422Z","quality":{"calls30d":1,"uniquePayers30d":1,"lastCalledAt":"2026-08-24T00:46:18.034Z"},"liveness":{},"verified":false,"featured":false},{"id":5907,"slug":"5907","resource":"https://402utils.com/v1/ecb-calendar","description":"TARGET2/T2 settlement calendar — the SEPA banking calendar, to predict when a euro transfer settles. TARGET is closed on weekends + six fixed days (New Year, Good Friday, Easter Monday, 1 May, 25 & 26 Dec). ?year= lists the closing days; ?date= says whether it settles (and the next open day); ?date=&addBusinessDays=N returns the value date N settlement days away. The SEPA counterpart of /v1/business-days.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"1000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"method":"GET","queryParams":{"addBusinessDays":1,"date":"2026-04-03"},"type":"http"},"output":{"example":{"addBusinessDays":1,"asOf":"2026-07-06","date":"2026-04-03","note":"2026-04-03 is Good Friday and 2026-04-06 Easter Monday, both TARGET closing days.","result":"2026-04-07","resultWeekday":"Tuesday","source":"https://www.ecb.europa.eu/paym/target/t2/html/index.en.html","weekday":"Friday"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"method":{"enum":["GET"],"type":"string"},"queryParams":{"description":"Provide ?year= OR ?date= (optionally with ?addBusinessDays=).","properties":{"addBusinessDays":{"description":"With ?date=: shift by N TARGET settlement days (sign = direction, |N| ≤ 3660).","type":"integer"},"date":{"description":"A date YYYY-MM-DD — check whether it is a settlement day.","type":"string"},"year":{"description":"Calendar year (1999-2100) — list its closing days.","type":"integer"}},"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"properties":{"addBusinessDays":{"type":"integer"},"asOf":{"format":"date","type":"string"},"closed":{"type":"boolean"},"date":{"type":"string"},"holiday":{"description":"When closed for a holiday: its name.","type":"string"},"holidays":{"description":"Year mode: the six fixed TARGET closing days.","items":{"properties":{"date":{"type":"string"},"name":{"type":"string"},"weekday":{"type":"string"}},"required":["date","name","weekday"],"type":"object"},"type":"array"},"isSettlementDay":{"description":"Date mode: TARGET is open on this day.","type":"boolean"},"nextSettlementDay":{"description":"Date mode: the next open day when the given date is closed.","type":"string"},"note":{"type":"string"},"reason":{"description":"When closed: 'weekend' or 'holiday'.","type":"string"},"result":{"description":"Shift mode: the settlement date N days from the input.","type":"string"},"resultWeekday":{"type":"string"},"settlementDays":{"description":"Year mode: number of open (settlement) days in the year.","type":"integer"},"source":{"format":"uri","type":"string"},"weekday":{"type":"string"},"year":{"type":"integer"}},"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-08-24T00:46:19.391Z","quality":{"calls30d":1,"uniquePayers30d":1,"lastCalledAt":"2026-08-24T00:46:19.238Z"},"liveness":{},"verified":false,"featured":false},{"id":5908,"slug":"5908","resource":"https://402utils.com/v1/regex-test","description":"Test a regex against one or many inputs, safely. Send {pattern, flags?, input|inputs[], mode?}: 'match' returns the first match + capture groups, 'matchAll' every match, 'replace' the rewritten string (needs {replacement}). A mandatory ReDoS guard statically rejects catastrophic patterns (nested quantifiers, `.*.*$`, backrefs) BEFORE running — on Workers no timeout can stop a runaway regex. For agents that generate and dry-run regexes.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"1000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"body":{"input":"date: 2026-07-06","mode":"match","pattern":"(\\d{4})-(\\d{2})-(\\d{2})"},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"mode":"match","results":[{"groups":["2026","07","06"],"index":6,"match":"2026-07-06","matched":true}]},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"properties":{"flags":{"description":"Any of gimsuyd (g added automatically for matchAll).","type":"string"},"input":{"description":"A single input string (≤ 10000 chars).","type":"string"},"inputs":{"description":"Multiple input strings.","items":{"type":"string"},"maxItems":50,"type":"array"},"mode":{"default":"match","description":"match | matchAll | replace.","enum":["match","matchAll","replace"],"type":"string"},"pattern":{"description":"The regular expression source (no delimiters).","type":"string"},"replacement":{"description":"Replacement string (with $1, $<name>) — required for mode 'replace'.","type":"string"}},"required":["pattern"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"additionalProperties":false,"properties":{"mode":{"enum":["match","matchAll","replace"],"type":"string"},"results":{"description":"One entry per input (in order). Shape depends on mode.","items":{"type":"object"},"type":"array"}},"required":["mode","results"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-08-24T00:46:14.245Z","quality":{"calls30d":1,"uniquePayers30d":1,"lastCalledAt":"2026-08-24T00:46:14.114Z"},"liveness":{},"verified":false,"featured":false},{"id":5909,"slug":"5909","resource":"https://402utils.com/v1/unit-convert","description":"Convert a value between units in the same physical dimension: length, mass, volume, temperature, area, speed, data, energy, pressure, time, angle. Factors are exact SI constants (NIST SP 811) — deterministic, unlike an LLM's guess. Pass ?category=currency to convert ISO 4217 amounts at ECB reference rates instead (informational, not for pricing). Unknown units → 400 with a suggestion.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"1000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"body":{"from":"celsius","to":"fahrenheit","value":100},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"category":"temperature","from":"celsius","result":212,"to":"fahrenheit","value":100},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"description":"The value plus source and target units. Query ?category=currency switches to FX.","properties":{"from":{"description":"Source unit (e.g. mile, kg, celsius) or ISO 4217 code for currency.","type":"string"},"to":{"description":"Target unit (same dimension as `from`).","type":"string"},"value":{"description":"The amount to convert.","type":"number"}},"required":["value","from","to"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"properties":{"category":{"description":"The detected dimension (or \"currency\").","type":"string"},"date":{"description":"Present for currency: the effective ECB business day.","type":"string"},"from":{"type":"string"},"rate":{"description":"Present for currency: units of `to` per unit of `from`.","type":"number"},"result":{"description":"The converted value.","type":"number"},"source":{"description":"Present for currency: \"ECB\".","type":"string"},"to":{"type":"string"},"value":{"type":"number"}},"required":["value","from","to","category","result"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-08-24T00:46:13.053Z","quality":{"calls30d":1,"uniquePayers30d":1,"lastCalledAt":"2026-08-24T00:46:11.494Z"},"liveness":{},"verified":false,"featured":false},{"id":5910,"slug":"5910","resource":"https://402utils.com/v1/slugify","description":"Turn free multilingual text into a URL-safe slug. Transliterates Latin (all diacritics: é→e, ü→u), Cyrillic and Greek to ASCII; deterministic. Options: separator (default '-'), lowercase (default true), maxLength (cuts on a word boundary), transliterate (default true; false keeps letters of any script as a Unicode slug). Complex scripts (CJK, Arabic, Hebrew) are NOT romanised and are dropped.","type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0xc55A2D530b53CBaD1001e4AfD4720B7E71f9C291","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"1000","maxTimeoutSeconds":60}],"outputSchema":{"bazaar":{"info":{"input":{"body":{"text":"Crème Brûlée à la Vanille"},"bodyType":"json","method":"POST","type":"http"},"output":{"example":{"empty":false,"slug":"creme-brulee-a-la-vanille","truncated":false},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"description":"Text to slugify plus options.","properties":{"lowercase":{"default":true,"type":"boolean"},"maxLength":{"description":"Truncate the slug (on a separator boundary where possible).","maximum":1000,"minimum":1,"type":"integer"},"separator":{"default":"-","description":"Word separator (max 10 chars).","type":"string"},"text":{"description":"The source text.","type":"string"},"transliterate":{"default":true,"description":"Romanise to ASCII (true) or keep any-script letters (false).","type":"boolean"}},"required":["text"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"properties":{"empty":{"description":"True when nothing survived (e.g. an unsupported script).","type":"boolean"},"slug":{"type":"string"},"truncated":{"description":"Whether maxLength shortened the slug.","type":"boolean"}},"required":["slug","truncated","empty"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"tags":["bazaar"],"sourceHost":"402utils.com","lastUpdated":"2026-08-24T00:46:10.408Z","quality":{"calls30d":1,"uniquePayers30d":1,"lastCalledAt":"2026-08-24T00:46:08.766Z"},"liveness":{},"verified":false,"featured":false}]}