{"target":"https://ora.ai/","display_target":"ora.ai","report_url":"https://waymark.genedai.me/score/ora.ai","score":90.9,"score_label":"Mostly ready","scanned_at":"2026-08-26T16:27:48.590Z","eligible_checks":97,"score_breakdown":{"discovery":{"earned":20,"available":20,"passing":21,"total":21},"access":{"earned":24.2,"available":30,"passing":32,"total":43},"usability":{"earned":37.6,"available":40,"passing":30,"total":33},"payments":{"earned":0,"available":0,"passing":0,"total":0}},"issues":[{"id":"openapi-or-swagger-link","name":"OpenAPI / Swagger link","result":"failed","layer":"access","details":"No OpenAPI/Swagger link in HTML.","recommendation":"Link to an OpenAPI or Swagger document from the homepage."},{"id":"feed-or-rss","name":"RSS or Atom feed","result":"failed","layer":"access","details":"No RSS/Atom link.","recommendation":"Expose an RSS or Atom feed for machine subscribers."},{"id":"security-headers","name":"CSP or X-Frame-Options","result":"failed","layer":"access","details":"Neither CSP nor X-Frame-Options on homepage.","recommendation":"Send Content-Security-Policy or X-Frame-Options."},{"id":"cors-on-api-hint","name":"CORS / API hint","result":"partial","layer":"access","details":"No CORS header or obvious API path.","recommendation":"If you expose an API, send Access-Control-Allow-Origin for intended clients."},{"id":"not-blocking-common-ai-bots","name":"AI crawlers not blanket-blocked","result":"failed","layer":"access","details":"robots.txt Disallow: / for * or common AI bots.","recommendation":"Avoid Disallow: / for GPTBot, ClaudeBot, PerplexityBot unless intentional."},{"id":"wm-pkce","name":"PKCE S256","result":"failed","layer":"access","details":"Metadata lacks S256 PKCE.","recommendation":"Advertise S256 in code_challenge_methods_supported."},{"id":"wm-oauth-resource","name":"OAuth protected resource","result":"failed","layer":"access","details":"AS present but no resource metadata.","recommendation":"Publish RFC 9728 oauth-protected-resource if APIs are OAuth-gated."},{"id":"wm-security-txt","name":"security.txt","result":"failed","layer":"access","details":"No /.well-known/security.txt Contact.","recommendation":"Publish /.well-known/security.txt with a Contact field."},{"id":"wm-change-password","name":"change-password well-known","result":"failed","layer":"access","details":"Login surface without /.well-known/change-password.","recommendation":"If users have passwords, serve /.well-known/change-password."},{"id":"wm-idempotency-hint","name":"Idempotency signal","result":"partial","layer":"usability","details":"API surface without idempotency notes.","recommendation":"Document idempotency keys for mutating calls."},{"id":"wm-agent-instruction","name":"Agent instruction / when-to-use","result":"failed","layer":"access","details":"Agent file exists without when-to-use guidance.","recommendation":"Tell agents when to reach for you: add a 'when to use this' section to your llms.txt (or a dedicated agent-instructions file) that names your best-fit use cases."},{"id":"wm-llms-txt-links-resolve","name":"llms.txt links resolve","result":"partial","layer":"access","details":"3 real, 0 homepage-shell, 5 dead of 8 sampled links.","recommendation":"Make every link your llms.txt declares resolve to real content, not a homepage shell 200."},{"id":"wm-ax-document-structure","name":"Accessible document structure","result":"partial","layer":"usability","details":"Landmarks partial (main=true nav=true h1=true skip=true).","recommendation":"Give the homepage a main region, nav, H1, and a heading order that does not skip levels."},{"id":"wm-rest-sdk-packages","name":"Multi-language SDK packages","result":"partial","layer":"usability","details":"npm matches; second ecosystem homepage does not.","recommendation":"Publish official SDK packages on npm and PyPI whose homepage is this domain."}]}