# Tools: SEO Diagnostics A public auditor that crawls a URL or sitemap with a headless browser and runs a broad battery of technical, on-page, structured-data, Core Web Vitals, accessibility and AI-readiness checks. It runs as a background job; poll the status URL (or watch the websocket) until `status` is `done`, then read the full report. Every endpoint follows the shared [Conventions & Errors](/docs/conventions.html). These are **capability URLs**: the job `uid` is an unguessable identifier, so anyone holding it can read the status and report.
POST /tools/seo/run Minimal role: Public

Queue an SEO audit

Start a background SEO audit of a URL or sitemap. Returns the job uid plus status and websocket URLs.

GET /tools/seo/{uid} Minimal role: Public

SEO audit status

Poll an SEO audit. Once done, score, grade and report_url are populated.

GET /tools/seo/{uid}/report Minimal role: Public

SEO audit report

Full categorised report: overall score, per-category subscores, and every check with its recommendation. Negotiates HTML or JSON.

GET /tools/seo/{uid}/screenshot/{index} Minimal role: Public

SEO audit page screenshot

Stream the rendered screenshot (image/png) captured for the audited page at the given zero-based index.

POST /tools/deepsearch/run Minimal role: Public

Queue a DeepSearch research job

Start a multi-agent deep web research job. Returns the job uid plus status and websocket URLs.

GET /tools/deepsearch/{uid} Minimal role: Public

DeepSearch status

Poll a DeepSearch job. Once done, score, confidence and session_url are populated.

GET /tools/deepsearch/{uid}/session Minimal role: Public

DeepSearch report

Full cited research report: summary, findings, gaps, sources and metrics. Negotiates HTML or JSON.