{"type":"proof-of-work","summary":"Agents without a wallet can access the pure-CPU tools by solving a sha256 puzzle (a fraction of a second of the caller's CPU) instead of paying USDC. No money, no AI tokens, no model involved. Request a challenge, solve it, and resend with the X-Pow-Solution header.","challengeUrl":"https://agent402.tools/api/pow/challenge","difficultyBits":16,"ttlSeconds":300,"submitHeader":"X-Pow-Solution","submitFormat":"<token>:<nonce>","eligibleTools":["a2a-card-validate","add-time","address-label","age","amortization","annuity","b20-feature-id","barcode-decode","base-convert","base-detect","base32","base58","base64","binary-text","black-scholes","bond-price","bond-ytm","braille-convert","break-even","brotli-compress","brotli-decompress","business-days","cagr","calc","calendar-diff","captcha-generate","card-validate","case","case-convert","char-frequency","checksum","cidr","color","color-blindness","color-contrast","color-convert","color-name","color-palette","combinatorics","compound-interest","compress-compare","constant-compare","correlation","count","country-info","crc32","cron-explain","cron-next","csv-lint","csv-to-json","csv-to-md","date-diff","date-format","day-of-year","dedupe-lines","duration","easter-date","effective-annual-rate","epoch-convert","extract-entities","finance","forecast-eval","forecast-holt","forecast-holt-winters","forecast-naive","forecast-ses","gcd-lcm","geo-distance","group-by","gunzip","gzip","hash","hex","hkdf-expand","hmac","html-entities","html-links","html-meta","html-select","html-strip","html-table","html-to-markdown","iban-validate","ics-parse","image-convert","image-resize","image-thumbnail","ipv6-expand","irr","isbn-validate","iso-week","jaccard-similarity","json-diff","json-flatten","json-format","json-merge","json-pointer","json-query","json-schema-infer","json-to-csv","json-to-xml","json-to-yaml","json-validate","jsonl","jwt-decode","jwt-sign","jwt-verify","keywords","leap-year","levenshtein","linear-regression","loan-payment","lorem","lorem-ipsum","markdown-to-html","matrix-multiply","mime","mod-arithmetic","morse","moving-average","nato-phonetic","npv","number-format","openapi-diff","openapi-extract","openapi-lint","openapi-mock-response","openapi-redact","openapi-required-params","openapi-resolve-refs","openapi-search","openapi-security-summary","openapi-to-curl","openapi-validate-payload","outliers","password","password-strength","pbkdf2","percentage","phone-format","prime-factorize","punycode-convert","qr","querystring","random","readability","readability-score","redact","regex","relative-time","roman","rot13","scrypt-derive","semver","sharpe-ratio","skill-a11y-audit","skill-content-clean","skill-content-quality","skill-csv-profile","skill-data-convert","skill-data-interchange","skill-decode-blob","skill-finance-calc","skill-identity-mint","skill-investment-decision","skill-json-pipeline","skill-jwt-forensics","skill-jwt-toolkit","skill-loan-comparison","skill-markdown-convert","skill-meeting-scheduler","skill-number-crunch","skill-openapi-audit","skill-rag-prep","skill-regex-test","skill-retirement-planning","skill-savings-goal","skill-schema-guard","skill-text-analyze","skill-text-hygiene","skill-timezone-planner","skill-validator-suite","skill-webhook-debug","skill-webhook-intake","skill-xml-json","slug-generate","slugify","solidity-scan","sort-lines","soundex","srt-convert","stats","stats-summary","string-similarity","text-chunk","text-diff","text-similarity","text-stats","time","time-convert","timezone-convert","token-count","totp","truncate","ulid","unit-convert","url-code","url-parse","user-agent","uuid","uuid-v5","uuid-validate","webhook-verify","word-frequency","word-wrap","workday-count","x402-market-pulse","xml-to-json","xml-validate","yaml-to-json"],"note":"Network/browser/storage tools (render, screenshot, pdf, memory, http-check, etc.) remain wallet-only via x402.","solverExample":"const c = await (await fetch(BASE+\"/api/pow/challenge?slug=hash\")).json();\nconst { createHash } = await import(\"node:crypto\");\nlet n = 0, lz = (b)=>{let t=0;for(const x of b){if(!x){t+=8;continue;}t+=Math.clz32(x)-24;break;}return t;};\nwhile (lz(createHash(\"sha256\").update(c.challenge+\":\"+n).digest()) < c.difficulty) n++;\nconst res = await fetch(BASE+\"/api/hash\",{method:\"POST\",headers:{\"Content-Type\":\"application/json\",\"X-Pow-Solution\":c.token+\":\"+n},body:JSON.stringify({text:\"hello\"})});"}