AVR self-audit: is your site AI-visible? — interactive demo

01code-sample

Step 1 of 5 — Run the AVR self-audit via curl. Paste your domain and get back section scores + a verdict in JSON.

bash
# Run the AVR self-audit against your site
curl -s 'https://chudi.dev/api/webmcp/avr-self-audit?format=full&url=yourdomain.com' \
  | jq .

# Or via the WebMCP protocol (AI-readable endpoint):
curl -s 'https://chudi.dev/api/webmcp' \
  -X POST \
  -H 'Content-Type: application/json' \
  -d '{"method":"avr_self_audit","params":{"url":"yourdomain.com"}}'
02terminal

Step 2 of 5 — The AVR CLI runs 15 checks across SEO Foundation + AI Infrastructure, scores each section, and prints the Verdict.

03rest

Step 3 of 5 — The REST API response: section scores, fact-block density, remediation priorities, and Verdict: AI-READY.

request headers
acceptapplication/json
user-agentcurl/8.7.1
response headers
cache-controlno-store
content-typeapplication/json; charset=utf-8
x-avr-verdictAI-READY
x-avr-version1.2.0
response bodyjson
{
  "url": "example.com",
  "audited_at": "2026-06-05T10:00:00Z",
  "sections": {
    "seo_foundation": {
      "score": 6,
      "total": 7,
      "pct": 86,
      "checks": [
        {
          "id": "1.1",
          "label": "title tag present & unique",
          "result": "pass",
          "detail": "60 chars"
        },
        {
          "id": "1.2",
          "label": "meta description present",
          "result": "pass",
          "detail": "148 chars"
        },
        {
          "id": "1.3",
          "label": "canonical URL declared",
          "result": "pass",
          "detail": null
        },
        {
          "id": "1.4",
          "label": "h1 present on key landing pages",
          "result": "warn",
          "detail": "2 of 5 pages missing"
        },
        {
          "id": "1.5",
          "label": "sitemap.xml accessible",
          "result": "pass",
          "detail": null
        },
        {
          "id": "1.6",
          "label": "robots.txt present & non-blocking",
          "result": "pass",
          "detail": null
        },
        {
          "id": "1.7",
          "label": "https + valid cert",
          "result": "pass",
          "detail": null
        }
      ]
    },
    "ai_infrastructure": {
      "score": 6,
      "total": 8,
      "pct": 75,
      "checks": [
        {
          "id": "2.1",
          "label": "JSON-LD schema.org markup present",
          "result": "pass",
          "detail": "Organization, WebSite"
        },
        {
          "id": "2.2",
          "label": "llms.txt present at /llms.txt",
          "result": "pass",
          "detail": "847 bytes"
        },
        {
          "id": "2.3",
          "label": "llms-full.txt present",
          "result": "warn",
          "detail": "file missing"
        },
        {
          "id": "2.4",
          "label": "OpenGraph tags complete",
          "result": "pass",
          "detail": "og:title, og:description, og:image"
        },
        {
          "id": "2.5",
          "label": "fact-block density >=20 per page",
          "result": "pass",
          "detail": "avg 24 extractable facts/page"
        },
        {
          "id": "2.6",
          "label": "author entity markup (Person)",
          "result": "warn",
          "detail": "missing on 3 blog posts"
        },
        {
          "id": "2.7",
          "label": "citation-safe prose style",
          "result": "pass",
          "detail": null
        },
        {
          "id": "2.8",
          "label": "WebMCP endpoint accessible",
          "result": "pass",
          "detail": "HTTP 200 in 87ms"
        }
      ]
    }
  },
  "fact_block_density": {
    "extractable": true,
    "avg_facts_per_page": 24,
    "threshold": 20
  },
  "summary": {
    "total_checks": 15,
    "passed": 12,
    "warned": 3,
    "failed": 0,
    "overall_pct": 80
  },
  "verdict": "AI-READY",
  "remediation": [
    {
      "priority": 1,
      "check": "1.4",
      "action": "Add h1 tags to remaining 2 landing pages"
    },
    {
      "priority": 2,
      "check": "2.3",
      "action": "Add /llms-full.txt (full-context version for RAG pipelines)"
    },
    {
      "priority": 3,
      "check": "2.6",
      "action": "Add Person schema markup to all blog post authors"
    }
  ]
}
04mcp-trace

Step 4 of 5 — The moat: Claude calls the AVR self-audit as an MCP tool. Watch the JSON-RPC handshake, tools/call dispatch, progress notification, and final result.

chudi-webmcp·MCP 2024-11-055 frames
05ui-screencap

Step 5 of 5 — The audit result in the dashboard: section scores, remediation priorities, and the AI-READY verdict card.