Response headers
Six checks on what the server sends, before a byte of HTML is parsed. Presence alone does not pass — an HSTS header with max-age=0 fails, and X-Content-Type-Options only counts if it actually says nosniff.
Rubric reads the response headers, then opens the page in a real browser at the edge. Thirteen checks, two categories, a score for each. No account, no config.
Nothing is stored and no account is involved. Each run fetches the response headers, then opens the page in a browser sandbox at the edge — about six seconds.
The first pass is a plain request — any serverless function could do it. The second needs a browser, which is why this runs as an agent rather than a function.
Six checks on what the server sends, before a byte of HTML is parsed. Presence alone does not pass — an HSTS header with max-age=0 fails, and X-Content-Type-Options only counts if it actually says nosniff.
Seven checks a fetch cannot make, because they only exist once the browser has built the document. A real browser opens the page in the sandbox and reports what it found there.
Each check carries its own weight, and each category scores on its own. A site with immaculate headers and a broken page cannot hide behind a single average.
The same endpoint the form above calls. The one header that is not obvious is required by the agent runtime itself — leave it out and you get a 400 before the handler ever runs.
curl -sS \
'https://edgeone-site-auditor.edgeone.dev/audit?url=https://example.com' \
-H 'makers-conversation-id: your-session-id'