{"ok":true,"service":"util.beauty","version":"1.0.0","environment":"production","openapiUrl":"https://util.beauty/openapi.json","auth":{"modes":["api_key"],"apiKeyHeaders":["Authorization: Bearer <key>","X-API-Key: <key>"]},"payment":{"modes":["prepaid","x402"],"creditUsdMicros":1000,"billingPolicy":"per-attempt: requests that pass validation and payment are charged in full even if execution fails; malformed requests are rejected free before payment","selfServe":{"register":{"utility":"system.register","endpoint":"https://util.beauty/v1/system/register","credits":1,"description":"Pay 1 credit via x402; receive an API key (shown once)."},"bundles":{"catalogUrl":"https://util.beauty/v1/credits/bundles","purchaseUrl":"https://util.beauty/v1/credits/purchase","skus":[{"sku":"starter","credits":1000,"usdMicros":1000000,"cardUsdMicros":1340000,"listUsdMicros":1000000,"discountPercent":0,"description":"1,000 credits at list price (x402). Card price includes payment processing.","effectiveCreditUsdMicros":1000,"cardEffectiveCreditUsdMicros":1340},{"sku":"builder","credits":5000,"usdMicros":4500000,"cardUsdMicros":5460000,"listUsdMicros":5000000,"discountPercent":10,"description":"5,000 credits (10% off via USDC/x402). Card is list + processing.","effectiveCreditUsdMicros":900,"cardEffectiveCreditUsdMicros":1092},{"sku":"scale","credits":25000,"usdMicros":20000000,"cardUsdMicros":26060000,"listUsdMicros":25000000,"discountPercent":20,"description":"25,000 credits (20% off via USDC/x402). Card is list + processing.","effectiveCreditUsdMicros":800,"cardEffectiveCreditUsdMicros":1042},{"sku":"pro","credits":100000,"usdMicros":70000000,"cardUsdMicros":103300000,"listUsdMicros":100000000,"discountPercent":30,"description":"100,000 credits (30% off via USDC/x402). Card is list + processing.","effectiveCreditUsdMicros":700,"cardEffectiveCreditUsdMicros":1033}]},"cardCheckout":{"enabled":true,"pageUrl":"https://util.beauty/credits","description":"Human card purchase of prepaid credit bundles at /credits (Stripe). Agents should use x402 POST /v1/credits/purchase instead."},"contact":{"pageUrl":"https://util.beauty/contact","description":"Human support / sales form on the website (not an agent utility)."}},"x402":{"enabled":true,"provider":"facilitator","network":"base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","settlement":"before execution; the tx hash is echoed in the X-PAYMENT-RESPONSE header","quoteUrl":"https://util.beauty/v1/x402/quote?utility=<utility>","howTo":"Call any paid endpoint without payment to receive HTTP 402 with error.details.accepts describing the required payment."}},"utilities":[{"name":"browser.screenshot","method":"POST","endpoint":"https://util.beauty/v1/browser/screenshot","credits":3,"usdMicros":3000,"description":"Full-page website screenshot as PNG, JPEG, or WebP for AI agents — render a URL or HTML and capture.","latency":"browser"},{"name":"browser.pdf","method":"POST","endpoint":"https://util.beauty/v1/browser/pdf","credits":5,"usdMicros":5000,"description":"HTML/URL to PDF rendering — print a public page or HTML string as A4/Letter PDF.","latency":"browser"},{"name":"browser.extract","method":"POST","endpoint":"https://util.beauty/v1/browser/extract","credits":2,"usdMicros":2000,"description":"Structured page content extraction: title, text, links, metadata, plus schema-guided fields (CSS selectors or JSON-LD/meta match) from a URL or HTML.","latency":"browser"},{"name":"browser.snapshot","method":"POST","endpoint":"https://util.beauty/v1/browser/snapshot","credits":7,"usdMicros":7000,"description":"Agent page snapshot: combined text, links, optional screenshot, and content hash in one call.","latency":"browser"},{"name":"browser.inspect","method":"POST","endpoint":"https://util.beauty/v1/browser/inspect","credits":4,"usdMicros":4000,"description":"Debug view: HTTP status, console logs, network requests, and redirects.","latency":"browser"},{"name":"browser.markdown","method":"POST","endpoint":"https://util.beauty/v1/browser/markdown","credits":3,"usdMicros":3000,"description":"Render a URL or HTML to clean GitHub-flavored Markdown for AI agents — default page-read format without screenshot/PDF weight.","latency":"browser"},{"name":"browser.a11y","method":"POST","endpoint":"https://util.beauty/v1/browser/a11y","credits":3,"usdMicros":3000,"description":"Accessibility tree snapshot (roles, names, structure) for agent interaction planning — lighter than a screenshot, more structured than raw text.","latency":"browser"},{"name":"crypto.hash","method":"POST","endpoint":"https://util.beauty/v1/crypto/hash","credits":1,"usdMicros":1000,"description":"Hash and checksum APIs: SHA-256, SHA-512, SHA-3, BLAKE2b/BLAKE3, MD5, CRC32.","latency":"fast"},{"name":"crypto.hmac","method":"POST","endpoint":"https://util.beauty/v1/crypto/hmac","credits":1,"usdMicros":1000,"description":"HMAC sign and verify message authentication codes (SHA-256, SHA-512, BLAKE2b).","latency":"fast"},{"name":"crypto.random","method":"POST","endpoint":"https://util.beauty/v1/crypto/random","credits":1,"usdMicros":1000,"description":"Secure random bytes, tokens, UUIDs, and passphrases.","latency":"fast"},{"name":"crypto.password","method":"POST","endpoint":"https://util.beauty/v1/crypto/password","credits":5,"usdMicros":5000,"description":"Password hash and verify with Argon2 (argon2id/argon2i, PHC format).","latency":"fast"},{"name":"crypto.signature","method":"POST","endpoint":"https://util.beauty/v1/crypto/signature","credits":2,"usdMicros":2000,"description":"Ed25519 / ECDSA P-256 keypairs, digital signing, and signature verification.","latency":"fast"},{"name":"crypto.symmetric","method":"POST","endpoint":"https://util.beauty/v1/crypto/symmetric","credits":2,"usdMicros":2000,"description":"Authenticated encryption (AEAD): AES-GCM and ChaCha20-Poly1305.","latency":"fast"},{"name":"crypto.jwt","method":"POST","endpoint":"https://util.beauty/v1/crypto/jwt","credits":2,"usdMicros":2000,"description":"Sign, verify, and decode JWT / JSON Web Tokens (HS256, RS256, EdDSA).","latency":"fast"},{"name":"crypto.totp","method":"POST","endpoint":"https://util.beauty/v1/crypto/totp","credits":1,"usdMicros":1000,"description":"Generate and verify TOTP 2FA two-factor codes (RFC 6238).","latency":"fast"},{"name":"crypto.key_derivation","method":"POST","endpoint":"https://util.beauty/v1/crypto/key_derivation","credits":5,"usdMicros":5000,"description":"Key derivation with HKDF, Argon2id, or PBKDF2 from passwords or key material.","latency":"fast"},{"name":"net.dns","method":"POST","endpoint":"https://util.beauty/v1/net/dns","credits":1,"usdMicros":1000,"description":"DNS lookup for A, AAAA, MX, TXT, CNAME, NS, SOA, CAA, PTR records over DoH.","latency":"network"},{"name":"net.rdap","method":"POST","endpoint":"https://util.beauty/v1/net/rdap","credits":1,"usdMicros":1000,"description":"WHOIS/RDAP domain or IP registration data (registrar, dates, nameservers).","latency":"network"},{"name":"net.email","method":"POST","endpoint":"https://util.beauty/v1/net/email","credits":2,"usdMicros":2000,"description":"Email deliverability posture: SPF, DMARC, DKIM, MX, and MTA-STS for a domain.","latency":"network"},{"name":"net.ip","method":"POST","endpoint":"https://util.beauty/v1/net/ip","credits":1,"usdMicros":1000,"description":"IP intelligence: ASN, org, reverse DNS, geolocation country, and registry.","latency":"network"},{"name":"net.cidr","method":"POST","endpoint":"https://util.beauty/v1/net/cidr","credits":1,"usdMicros":1000,"description":"Subnet calculator: CIDR ranges, host counts, membership tests, and IP conversions.","latency":"fast"},{"name":"net.certs","method":"POST","endpoint":"https://util.beauty/v1/net/certs","credits":2,"usdMicros":2000,"description":"Certificate Transparency history via crt.sh (issued certs, issuers, SANs, validity).","latency":"network"},{"name":"net.fetch","method":"POST","endpoint":"https://util.beauty/v1/net/fetch","credits":1,"usdMicros":1000,"description":"HTTP GET/HEAD of a public URL without a browser: status, headers, body (size-capped), redirects — for robots.txt, JSON APIs, and static files.","latency":"network"},{"name":"net.url_expand","method":"POST","endpoint":"https://util.beauty/v1/net/url_expand","credits":1,"usdMicros":1000,"description":"Unshorten and follow redirects for a public URL: final URL, status, and hop chain (SSRF-safe) — for phishing/marketing link inspection.","latency":"network"},{"name":"net.tls","method":"POST","endpoint":"https://util.beauty/v1/net/tls","credits":2,"usdMicros":2000,"description":"Live TLS reachability to a public host (DoH-pinned IP + SNI) plus Certificate Transparency cert summary (issuer, SANs, days-to-expiry).","latency":"network"},{"name":"parse.pdf","method":"POST","endpoint":"https://util.beauty/v1/parse/pdf","credits":2,"usdMicros":2000,"description":"Extract text from a PDF (public URL, base64, or util.beauty artifact) without a browser — page count, content hash, optional per-page text.","latency":"network"},{"name":"system.suggest","method":"POST","endpoint":"https://util.beauty/v1/system/suggest","credits":1,"usdMicros":1000,"description":"Suggest a new utility, improvement, or docs change (agent feedback).","latency":"fast"},{"name":"system.register","method":"POST","endpoint":"https://util.beauty/v1/system/register","credits":1,"usdMicros":1000,"description":"Create a prepaid account and receive one API key (shown once).","latency":"network"},{"name":"system.keys","method":"POST","endpoint":"https://util.beauty/v1/system/keys","credits":1,"usdMicros":1000,"description":"List or rotate API keys for the registering wallet — x402-only auth (prepaid API keys cannot call this).","latency":"network"},{"name":"credits.purchase","method":"POST","endpoint":"https://util.beauty/v1/credits/purchase","credits":1000,"usdMicros":1000000,"description":"Buy a prepaid credit bundle (volume discounts by SKU). Card: /credits. USDC: POST /v1/credits/purchase.","latency":"network","note":"Actual price is the selected bundle SKU; see payment.selfServe.bundles or GET /v1/credits/bundles."}],"guidance":{"discover":"https://util.beauty/v1/meta","openapi":"https://util.beauty/openapi.json","skill":"https://util.beauty/skill.md","latencyTiers":{"fast":"CPU-only (crypto, cidr, …) — usually under a few hundred ms","network":"Outbound DNS/HTTP without Chromium — usually under a few seconds","browser":"Headless render — 1–15s; concurrency soft-capped; prefer network tier when possible"},"prefer":[{"goal":"Read a public web page as text","utility":"browser.markdown","avoid":"Prefer net.fetch for static files/JSON/robots.txt (no Chromium)."},{"goal":"Structured fields from a page (price, title, …)","utility":"browser.extract","note":"Use fields[] or schema with CSS selectors; falls back to JSON-LD/meta."},{"goal":"Plan clicks / form interaction","utility":"browser.a11y","note":"Accessibility tree (roles/names) beats screenshot+OCR for structure."},{"goal":"Unshorten a link / see redirect chain","utility":"net.url_expand"},{"goal":"Check live TLS + cert expiry hints","utility":"net.tls","note":"Peer cert not exposed on Workers; CT summary is issuance history."},{"goal":"Extract text from an existing PDF","utility":"parse.pdf","note":"Not OCR — image-only scans may be empty."},{"goal":"Cheap static HTTP GET/HEAD","utility":"net.fetch"}],"rules":["Never invent utility names or prices — use this catalog or OpenAPI.","Prefer latency=network over latency=browser when Chromium is not required.","Browser utilities need exactly one of url or html; public web only.","VALIDATION_ERROR is free; after payment the charge stands on execution failure.","Always send Idempotency-Key on paid requests."]},"limits":{"maxBodyBytes":1048576,"maxTimeoutMs":30000,"maxViewport":{"width":3840,"height":2160},"maxTextChars":500000,"maxArtifactBytes":26214400}}