{"openapi":"3.1.0","info":{"title":"Developer Utilities","version":"1.0.0","description":"JWT decoding, iCalendar builder, breached-password check, certificate transparency, cron schedules, regex tester, user-agent parser. One call, one computed answer, no accounts or API keys. Machine-payable over x402.","x-guidance":"Developer Utilities: JWT decoding, iCalendar builder, breached-password check, certificate transparency, cron schedules, regex tester, user-agent parser. Endpoints: /jwt-decode, /ics-event, /pwned-password, /cert-transparency, /cron-next-runs, /regex-test, /user-agent-parse. Each paid GET returns a computed verdict with the reasons, the source and what was NOT checked. A verdict of UNVERIFIED means a lookup failed: treat it as unknown. No account or key: pay per call in USDC over x402."},"servers":[{"url":"https://dev-utils.x402tookit.com"}],"paths":{"/cert-transparency":{"get":{"operationId":"cert_transparency","summary":"Certificates in Certificate Transparency logs for a domain: recent certs, issuers, subdomains seen (Cert Spotter).","description":"Certificates in Certificate Transparency logs for a domain: recent certs, issuers, subdomains seen (Cert Spotter).","tags":["certificates","ct-logs","subdomains","security"],"parameters":[{"name":"domain","in":"query","required":true,"description":"Registrable domain such as example.org (no scheme, no path)","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"domain":{"type":["null","string"]},"certificateCount":{"type":["null","number"]},"currentlyValidCount":{"type":["null","number"]},"revokedCount":{"type":["null","number"]},"newest":{"type":["null","object"],"properties":{"id":{"type":["null","string"]},"issuer":{"type":["null","string"]},"notBefore":{"type":["null","string"]},"notAfter":{"type":["null","string"]},"revoked":{"type":["boolean","null"]},"nameCount":{"type":["null","number"]}}},"recent":{"type":["array","null"],"items":{"type":"object","properties":{"id":{"type":["null","string"]},"issuer":{"type":["null","string"]},"notBefore":{"type":["null","string"]},"notAfter":{"type":["null","string"]},"revoked":{"type":["boolean","null"]},"nameCount":{"type":["null","number"]}}}},"issuers":{"type":["array","null"],"items":{"type":"object","properties":{"name":{"type":["null","string"]},"count":{"type":["null","number"]}}}},"namesSeenCount":{"type":["null","number"]},"namesSeen":{"type":["array","null"],"items":{"type":"string"}},"wildcardNames":{"type":["array","null"],"items":{"type":"string"}},"namesTruncated":{"type":["boolean","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"sourceUrl":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"CERTIFICATES_FOUND","summary":"31 logged certificate(s) for iana.org, 30 currently valid, 13 distinct names, newest issued by Google Trust Services / WE1.","reasons":["Wildcard certificate names exist (*.iana.org, *.int.iana.org): subdomains under them are not individually listed.","1 listed certificate(s) are flagged revoked.","…1 more"],"domain":"iana.org","certificateCount":31,"currentlyValidCount":30,"revokedCount":1,"newest":{"id":"17876224635","issuer":"Google Trust Services / WE1","notBefore":"2026-10-19T21:49:56.000Z","notAfter":"2027-01-17T22:49:54.000Z","revoked":false,"nameCount":1},"recent":[{"id":"17876224635","issuer":"Google Trust Services / WE1","notBefore":"2026-10-19T21:49:56.000Z","notAfter":"2027-01-17T22:49:54.000Z","revoked":false,"nameCount":1},{"id":"17876223688","issuer":"Google Trust Services / WR1","notBefore":"2026-10-19T21:49:47.000Z","notAfter":"2027-01-17T22:48:44.000Z","revoked":false,"nameCount":1}],"issuers":[{"name":"Google Trust Services / WE1","count":11},{"name":"Google Trust Services / WR1","count":11}],"namesSeenCount":13,"namesSeen":["data.iana.org","handbook.int.iana.org","…9 more"],"wildcardNames":["*.iana.org","*.int.iana.org"],"namesTruncated":false,"degraded":false,"notChecked":["whether any listed host is live","private CAs (not logged)","…2 more"],"source":"Cert Spotter (SSLMate) Certificate Transparency search, free tier","sourceUrl":"https://sslmate.com/certspotter/api/","asOf":"2026-10-21T15:48:31.917Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/cert-transparency"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/cert-transparency"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/cert-transparency"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/cert-transparency"}}]}}},"/cron-next-runs":{"get":{"operationId":"cron_next_runs","summary":"Next N run times for a 5-field cron expression in a chosen UTC offset, with the day-of-month/day-of-week OR rule.","description":"Next N run times for a 5-field cron expression in a chosen UTC offset, with the day-of-month/day-of-week OR rule.","tags":["cron","scheduling","developer-tools"],"parameters":[{"name":"expr","in":"query","required":true,"description":"Cron: minute hour day-of-month month day-of-week (or @daily etc.)","schema":{"type":"string"}},{"name":"n","in":"query","required":false,"description":"How many runs, 1-30, default 5","schema":{"type":"integer"}},{"name":"utc_offset","in":"query","required":false,"description":"Fixed offset like +05:30 or -0800, default +00:00","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"ISO time to count from (exclusive), default now","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"expression":{"type":["null","string"]},"utcOffset":{"type":["null","string"]},"countedFrom":{"type":["null","string"]},"dayRule":{"type":["null","string"]},"runsLocal":{"type":["array","null"],"items":{"type":"string"}},"runsUtc":{"type":["array","null"],"items":{"type":"string"}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"SCHEDULE_COMPUTED","summary":"Next 5 run(s) of \"30 9 13 * 5\" at UTC+05:30, first 2026-01-02T09:30:00+05:30.","reasons":["Day-of-month and day-of-week are both restricted, so a day matches when EITHER does (classic cron rule)."],"expression":"30 9 13 * 5","utcOffset":"+05:30","countedFrom":"2026-01-01T00:00:00.000Z","dayRule":"day-of-month OR day-of-week","runsLocal":["2026-01-02T09:30:00+05:30","2026-01-09T09:30:00+05:30","…3 more"],"runsUtc":["2026-01-02T04:00:00.000Z","2026-01-09T04:00:00.000Z","…3 more"],"degraded":false,"notChecked":["daylight saving time (the offset is fixed, so a zone that changes offset will drift)","non-standard syntax (L, W, #, ?, @reboot)","…1 more"],"source":"computed locally","asOf":"2026-10-21T15:48:32.172Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/cron-next-runs"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/cron-next-runs"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/cron-next-runs"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/cron-next-runs"}}]}}},"/ics-event":{"get":{"operationId":"ics_event","summary":"Build an RFC 5545 .ics calendar event from title, start, end, location, description; escaped and folded.","description":"Build an RFC 5545 .ics calendar event from title, start, end, location, description; escaped and folded.","tags":["calendar","ics","rfc5545","developer-tools"],"parameters":[{"name":"title","in":"query","required":true,"description":"Event title (SUMMARY)","schema":{"type":"string"}},{"name":"start","in":"query","required":true,"description":"YYYY-MM-DD (all day), 2026-03-01T09:00:00Z or +05:30 offset, or zoneless local time","schema":{"type":"string"}},{"name":"end","in":"query","required":false,"description":"Same format as start; must be after start. Default: all-day +1 day, or +1 hour","schema":{"type":"string"}},{"name":"location","in":"query","required":false,"description":"Where (LOCATION)","schema":{"type":"string"}},{"name":"description","in":"query","required":false,"description":"Longer text (DESCRIPTION)","schema":{"type":"string"}},{"name":"uid","in":"query","required":false,"description":"Stable event id; default is derived from the fields","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"]},"ics":{"type":["null","string"]},"filename":{"type":["null","string"]},"uid":{"type":["null","string"]},"dtstart":{"type":["null","string"]},"dtend":{"type":["null","string"]},"allDay":{"type":["boolean","null"]},"timeKind":{"type":["null","string"]},"foldedLines":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"ICS_BUILT","summary":"Built a timed VEVENT \"Team sync, planning; Q2\" (14 content lines).","reasons":[],"ics":"BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//x402-shelves//dev-utils//EN\r\nCALSCALE:GREGORIAN\r\nBEGIN:VEVENT\r\nUID:c16a9b9bb5d1374a01ca701f@x402-shelves\r\nDTSTAMP:20261021T154832Z\r\nDTSTART:20260301T140000Z\r\nDT…","filename":"event.ics","uid":"c16a9b9bb5d1374a01ca701f@x402-shelves","dtstart":"20260301T140000Z","dtend":"20260301T150000Z","allDay":false,"timeKind":"utc","foldedLines":0,"degraded":false,"notChecked":["recurrence, alarms and attendees (not offered)","time zone names (a zoned time is converted to UTC; a zoneless time stays floating)","…1 more"],"source":"computed locally","asOf":"2026-10-21T15:48:32.438Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/ics-event"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/ics-event"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/ics-event"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/ics-event"}}]}}},"/jwt-decode":{"get":{"operationId":"jwt_decode","summary":"Decode a JWT header and payload (no signature check) and flag alg none, expiry, nbf and missing claims.","description":"Decode a JWT header and payload (no signature check) and flag alg none, expiry, nbf and missing claims.","tags":["jwt","auth","security","developer-tools"],"parameters":[{"name":"token","in":"query","required":true,"description":"The JWT (three dot-separated parts). Use an expired or test token, never a live secret","schema":{"type":"string"}},{"name":"now","in":"query","required":false,"description":"ISO time to judge exp/nbf against, default now","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"header":{"type":["null","object"],"properties":{"typ":{"type":["null","string"]},"alg":{"type":["null","string"]}}},"payload":{"type":["null","object"],"properties":{"iss":{"type":["null","string"]},"exp":{"type":["null","number"]},"http://example.com/is_root":{"type":["boolean","null"]}}},"alg":{"type":["null","string"]},"signatureBytes":{"type":["null","number"]},"flags":{"type":["array","null"],"items":{"type":"object","properties":{"severity":{"type":["null","string"]},"code":{"type":["null","string"]},"message":{"type":["null","string"]}}}},"expired":{"type":["boolean","null"]},"notYetValid":{},"secondsToExpiry":{"type":["null","number"]},"claimTimes":{"type":["null","object"],"properties":{"exp":{"type":["null","string"]}}},"claimsMissing":{"type":["array","null"],"items":{"type":"string"}},"judgedAt":{"type":["null","string"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"DECODED_WITH_PROBLEMS","summary":"Decoded a HS256 token with 2 flag(s); signature NOT verified.","reasons":["HIGH: exp 2011-03-22T18:43:00.000Z is in the past (491778332 seconds ago).","LOW: Missing common claims: sub, aud, iat."],"header":{"typ":"JWT","alg":"HS256"},"payload":{"iss":"joe","exp":1300819380,"http://example.com/is_root":true},"alg":"HS256","signatureBytes":32,"flags":[{"severity":"HIGH","code":"EXPIRED","message":"exp 2011-03-22T18:43:00.000Z is in the past (491778332 seconds ago)."},{"severity":"LOW","code":"CLAIMS_MISSING","message":"Missing common claims: sub, aud, iat."}],"expired":true,"notYetValid":null,"secondsToExpiry":-491778332,"claimTimes":{"exp":"2011-03-22T18:43:00.000Z"},"claimsMissing":["sub","aud","…1 more"],"judgedAt":"2026-10-21T15:48:32.000Z","degraded":false,"notChecked":["the signature (this decodes only: a decoded token is NOT proof it is genuine)","whether the issuer, audience or key are the ones you expect","…1 more"],"source":"computed locally","asOf":"2026-10-21T15:48:32.701Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/jwt-decode"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/jwt-decode"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/jwt-decode"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/jwt-decode"}}]}}},"/pwned-password":{"get":{"operationId":"pwned_password","summary":"Seen in breaches? Send the password's SHA-1 (never the password); only 5 hex chars go upstream. Count and verdict.","description":"Seen in breaches? Send the password's SHA-1 (never the password); only 5 hex chars go upstream. Count and verdict.","tags":["password","breach","security","hibp"],"parameters":[{"name":"sha1","in":"query","required":true,"description":"40-hex SHA-1 of the password, computed by you, so the password itself never reaches this service","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"found":{"type":["boolean","null"]},"count":{"type":["null","number"]},"inputMode":{"type":["null","string"]},"hashPrefixSentUpstream":{"type":["null","string"]},"rowsInRange":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"sourceUrl":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"SEEN_IN_BREACHES","summary":"Found 6,421,042 times in known breaches.","reasons":["This exact password appears 6,421,042 times in the Pwned Passwords corpus: never use it."],"found":true,"count":6421042,"inputMode":"sha1","hashPrefixSentUpstream":"21BD1","rowsInRange":1925,"degraded":false,"notChecked":["password strength or guessability","whether it is reused at your own sites","…1 more"],"source":"Have I Been Pwned Pwned Passwords range API (k-anonymity)","sourceUrl":"https://haveibeenpwned.com/API/v3#PwnedPasswords","asOf":"2026-10-21T15:48:33.117Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/pwned-password"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/pwned-password"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/pwned-password"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/pwned-password"}}]}}},"/regex-test":{"get":{"operationId":"regex_test","summary":"Run a JS regex on text: matches, groups, indexes. Capped input and a time budget stops catastrophic backtracking.","description":"Run a JS regex on text: matches, groups, indexes. Capped input and a time budget stops catastrophic backtracking.","tags":["regex","developer-tools","text"],"parameters":[{"name":"pattern","in":"query","required":true,"description":"JavaScript regex source without slashes, up to 500 chars","schema":{"type":"string"}},{"name":"text","in":"query","required":true,"description":"Text to search, up to 20000 chars","schema":{"type":"string"}},{"name":"flags","in":"query","required":false,"description":"Any of gimsuyd, default g (without g only the first match is returned)","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"]},"matchCount":{"type":["null","number"]},"matches":{"type":["array","null"],"items":{"type":"object","properties":{"match":{"type":["null","string"]},"index":{"type":["null","number"]},"end":{"type":["null","number"]},"groups":{"type":["array","null"],"items":{"type":"string"}},"named":{"type":["null","object"],"properties":{"year":{"type":["null","string"]}}}}}},"truncated":{"type":["boolean","null"]},"timedOut":{"type":["boolean","null"]},"budgetMs":{"type":["null","number"]},"tookMs":{"type":["null","number"]},"flagsUsed":{"type":["null","string"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"MATCHED","summary":"2 match(es); first at index 9.","reasons":[],"matchCount":2,"matches":[{"match":"2026-03","index":9,"end":16,"groups":["2026","03"],"named":{"year":"2026"}},{"match":"2026-05","index":26,"end":33,"groups":["2026","05"],"named":{"year":"2026"}}],"truncated":false,"timedOut":false,"budgetMs":300,"tookMs":19,"flagsUsed":"g","degraded":false,"notChecked":["other regex dialects (PCRE, Python, Go, RE2 differ from JavaScript)","performance on inputs longer than the cap","…1 more"],"source":"computed locally (JavaScript RegExp in an isolated worker)","asOf":"2026-10-21T15:48:33.392Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/regex-test"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/regex-test"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/regex-test"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/regex-test"}}]}}},"/user-agent-parse":{"get":{"operationId":"user_agent_parse","summary":"Parse a User-Agent string: browser, OS, device class (desktop, mobile, tablet, tv, bot) and a bot flag.","description":"Parse a User-Agent string: browser, OS, device class (desktop, mobile, tablet, tv, bot) and a bot flag.","tags":["user-agent","bots","analytics","developer-tools"],"parameters":[{"name":"ua","in":"query","required":true,"description":"The User-Agent header value, up to 600 characters","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"]},"bot":{"type":["boolean","null"]},"botName":{},"botKind":{},"deviceClass":{"type":["null","string"]},"browser":{"type":["null","object"],"properties":{"name":{"type":["null","string"]},"version":{"type":["null","string"]},"engine":{"type":["null","string"]}}},"os":{"type":["null","object"],"properties":{"name":{"type":["null","string"]},"version":{"type":["null","string"]}}},"length":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"PARSED","summary":"Safari 17.1 on iOS 17.1, mobile.","reasons":[],"bot":false,"botName":null,"botKind":null,"deviceClass":"mobile","browser":{"name":"Safari","version":"17.1","engine":"WebKit"},"os":{"name":"iOS","version":"17.1"},"length":135,"degraded":false,"notChecked":["whether the string is genuine (any client can claim any user agent)","bot verification by reverse DNS or IP range","…1 more"],"source":"computed locally","asOf":"2026-10-21T15:48:33.656Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/user-agent-parse"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/user-agent-parse"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/user-agent-parse"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://dev-utils.x402tookit.com/user-agent-parse"}}]}}}}}