Waymark developer docs
Waymark provides public, keyless retrieval of completed agent readiness reports through JSON, Markdown, and MCP read tools.
Read completed reports through JSON, Markdown, or MCP. Public retrieval is free and needs no API key.
Overview
Report retrieval does not start a scan. The MCP server also includes scan_domain, which starts or reuses a scan. Start a scan from the homepage or POST /api/scan, then read the stored snapshot. The official number is Discovery 20 / Access 30 / Usability 40 / Payments 10. Journey never changes that number.
Public report API
GET /api/v1/report returns the latest completed report for a URL. It does not start a scan. Alias: GET /api/report. GET retrieve has idempotency: repeating a read does not start work; the snapshot changes only when a new completed scan is stored. A 200 body includes target, display_target, report_url, score, score_label, scanned_at, eligible_checks, score_breakdown, and issues[] (failed and partial only).
curl -s https://waymark.genedai.me/api/v1/report?url=https%3A%2F%2Fvercel.com
Open the same snapshot as HTML at /score/vercel.com, or as JSON at the report URL.
Cite a report
Include the domain, score, scanned_at, and report_url. The report URL serves the latest completed snapshot, so it can change after a rescan. Save the JSON or Markdown alongside a citation when you need the original evidence. A missing report is not a zero score.
Structured errors
Failures use RFC 9457 application/problem+json.
- invalid_url · 400 The url query is missing or not a public HTTP(S) address.
- report_not_found · 404 No completed report is stored for that target yet.
- method_not_allowed · 405 Use GET on retrieve paths. Writes live on POST /api/scan, not on /api/v1/report.
- rate_limited · 429 Quota. Response includes Retry-After. Headers: RateLimit-Policy, RateLimit.
- storage_unavailable · 503 The worker could not read storage for this retrieve.
Rate limits
Scan-start routes (/api/scan, stream, checks, notify) allow 20 requests per minute per IP. Report GET allows 120 requests per minute per IP. Journey is 4 walks per 10 minutes per IP. A 429 includes Retry-After.
Versioning
The retrieve path is /api/v1/report. /api/report is the same handler. Breaking changes land on a new prefix, not a silent rewrite of v1. /openapi.json describes the current surface.
Other GET helpers that also do not start a scan: /api/score/:domain, /api/checks, /api/leaderboard, /api/badge/:domain, /openapi.json, /llms.txt. POST /api/scan and GET /api/scan/stream start or reuse a scan. POST /api/journey is a supporting walk and does not change the official number.
Authentication, webhooks, and writes
There is no API key on public reads. There are no webhooks. GET /api/leaderboard lists clean published scans, excluding degraded results. We do not publish a write retrieve API. Start a scan on the homepage or with POST /api/scan.
Do not submit private URLs. Retrieve tools must not be used to launch a scan.
CLI
A repo helper, not published to npm. Retrieve-only by default. Default origin is https://waymark.genedai.me. It prints a completed report or the browser score URL. It does not start a scan.
node scripts/waymark.mjs vercel.com node scripts/waymark.mjs vercel.com --json
MCP
Streamable HTTP / JSON-RPC at the origin below. No key. Read-only retrieve tools that do not start a scan are waymark_get_report, waymark_get_methodology, and waymark_get_developer_docs.
https://waymark.genedai.me/api/mcp
- Server card: /mcp/server-card
- Discovery: /.well-known/mcp.json and /.well-known/ai-catalog.json
- Setup notes: /mcp
Also available: scan_domain, get_score, get_leaderboard, discover_products, get_journey, list_checks, get_essentials.
Agent skill
The skills index is published at the well-known path. It is a catalog pointer, not a paid installer.
https://waymark.genedai.me/.well-known/agent-skills/index.json
Markdown content negotiation
Home, docs, methodology, pricing, research, and /score/{domain} answer Accept: text/markdown.
curl -H 'Accept: text/markdown' https://waymark.genedai.me/score/vercel.com
Embed and share a score badge
GET /api/badge/{domain}.svg returns the stored domain, score and grade as SVG. The suffixless route also works. Missing reports return 404; unavailable storage returns 503. Reads never start scans. Badges refresh after rescans, with up to 60 seconds of caching.
[](https://waymark.genedai.me/score/vercel.com)
The score page can copy badge Markdown, HTML, image URL and a dated share blurb. Keep the report link and scan timestamp when citing evidence. A badge is not a certification.
Report discovery and IndexNow
After a public, non-degraded report is durably saved, Waymark makes a best-effort IndexNow submission of its canonical score URL. Network failures never fail the scan. The dynamic sitemap uses stored scan times. Submission helps discovery by participating engines; it does not guarantee crawling, Google indexing or ranking.
Monitoring waitlist
Monitoring is not active. The score-page form saves email, domain, creation time and waitlist consent for up to 180 days; it sends no email and schedules no scans. Contact us to request removal. One-time “Email this report” remains separate.
POST /api/monitor accepts JSON {"domain":"vercel.com","email":"you@company.com","consent":true} for a completed report. A successful response has status: "waitlist". Invalid input returns 400, absent report 404, oversized request 413, rate limit 429 and storage failure 503. The best-effort limit is five requests/minute/IP per Worker instance.
Pricing
One plan: free. Public scans, stored scores, badge, board, directory, research cut, MCP, and optional journey. No checkout. No API key. See /pricing and /pricing.md.
Retrieve and cite a completed Waymark report
Choose a completed report
Find a published domain on the Board. A missing report means no completed snapshot is stored, not a score of zero.
Retrieve the snapshot
Send GET /api/v1/report?domain=vercel.com for JSON, or GET /score/vercel.com with Accept: text/markdown. These reads need no key and do not start a scan.
Cite the evidence
Include the domain, score, grade, scanned_at timestamp, and canonical report URL. Save the returned snapshot if the original evidence must be retained after later rescans.