This Scanner API doc explains how free scans finish 26 checks in under 10 seconds (ruleset v20).
Scanner API
The scanner runs deterministic AI-search hygiene checks plus an evidence-graded rulebook. A grade or a pass is not a citation. Shipped today: 26 automated checks on L0–L3 and 182 rules in the rulebook.
The scanner evaluates HTML or text against the deterministic AI-search hygiene checks plus an evidence-graded rulebook. Same deterministic engine powers MCP, CLI, GitHub Action, and the web UI. A grade or a pass is not a citation.
Keyed results: judge field
Detailed (keyed) scans attach a judge on each check and on work-list items. The
label is assigned by the deterministic judgeForCheck mapping — not an LLM on our
side.
- judge: engine — trust the pass/fail from the deterministic check (access, rendering, and mechanical structure).
- judge: agent — your agent re-reads the rule text and decides; the label comes from the deterministic judgeForCheck mapping, not an LLM on our side.
How the grade is computed
Each group and the page get a letter from the share of evaluated checks that failed. A failed warn check counts 50% as much as a failed error. Any failed error rules out an A. Warnings alone keep an A until their weight reaches 5% of the checks run. After that the grade is B under 25%, C under 50%, D under 75%, and F above. Skipped checks do not count, but a page the scanner could not read never grades A.
Free tier (grades + fundamental fixes)
- MCP:
scan_urlwith no API key — grades plusfindings: each failed L0–L3 check with its fix. No rule IDs, evidence or severity. - Web: /scan — paste a public URL
-
HTTP:
POST https://aeogeo.site/api/scanwith{"url":"https://example.com"}— CORS open; grades plus L0–L3 findings
Keyed tier (detailed)
- MCP:
lint_html,lint_text— per-check results with executablefixobjects - API:
POST /api/scanwithAuthorization: Bearer <key>
Machine-readable contract
The customer REST surface (POST /api/scan, keyed GET /api/checks, keyed GET /api/rules) is published as a parseable OpenAPI 3 document for agents and tooling:
- https://aeogeo.site/openapi.json — static apex (same file is also served by the Worker at
/api/openapi.json)
Invariants
- Deterministic: same input → same output
- Transient: scanned content is never persisted
- No prompt-tracking or LLM calls in aeogeo runtime
-
Visibility checks (BLUF, FAQ, SSR) inspect the initial HTML only: the
hiddenattribute,aria-hidden="true", inlinedisplay:noneorvisibility:hidden, and<template>. Stylesheet cascades are not evaluated.