AGENT VIEW ACTIVE — decoration stripped, heading levels exposed, link targets shown inline. This is approximately what a crawler or AI agent extracts from this page.

Self-audit · Published in full

We audited our own website against 37 AEO checks. We scored 23.

Sixty-two percent. Two of the failures were genuinely embarrassing for a company that sells this audit. Here is every one of them, what we fixed, and the three we have decided not to fix at all.

By Code4X Engineering, Engineering & Research · Published 21 Sep 2026 · Audit run 8 Sep 2026 · 8 min read

01 · The result

What did code4x.dev score?

code4x.dev scored 23 out of 37 on our own agent readiness framework when we ran it on 8 September 2026 — 62%. Two weeks later, after fixing five checks, it scores 28 out of 37.

The audit covers four layers: whether AI agents can discover the site, whether they can read it efficiently, whether they can act on it, and whether the engines describe the business accurately. We failed fourteen checks. Five are now fixed, three we are not going to fix, and six sit on a roadmap behind standards that are not settled yet.

23/37

initial audit · 8 sep 2026

Layer 1 — Agent discovery
9 / 13  69%
Layer 2 — Agent readability
10 / 15  67%
Layer 3 — Agent interaction
1 / 6  17%
Layer 4 — AI representation
3 / 3  100%
Total
23 / 37  62%

Layer 4 scores full marks because we built the tracking system. That is not an achievement, it is our product. Discount it if you like — the site-only score is 20 out of 34.

02 · Reasoning

Why publish a mediocre score?

Because a good score from the company selling the audit proves nothing, and a bad one published in full proves the method is real.

We could have fixed everything quietly first and published a 35. Any agency can do that. What it demonstrates is that we are capable of editing our own website, which was never in question.

What is in question, for anyone considering this kind of engagement, is whether the audit finds real things or generates a plausible-looking report. The only way to answer that is to run it on ourselves and publish the failures without editing them — including the two that were uncomfortable.

There is a second reason. We have no client case studies yet. This is the honest substitute.

What we committed to before running it

  • Publish the score whatever it came out as
  • Name every failed check with its dimension ID
  • Publish the re-audit even if it barely moved
  • Say which failures we are choosing not to fix, and why

Written down on 5 September, three days before the audit ran. Otherwise the temptation to quietly redefine success afterwards is very strong.

03 · Findings

What exactly did we fail?

Fourteen checks. Listed with dimension IDs, as they appear in a client report.

All fourteen failed checks from the 8 September 2026 audit of code4x.dev
ID Check What we found Status
L1-06MCP Server CardWe run an MCP server for clients and never advertised it at /.well-known/mcp.jsonFixed
L1-07API Catalog (RFC 9727)Not presentRoadmap
L1-10DNS-AIDNo _agent TXT recordWon't fix
L1-11Web Bot AuthNo bot authentication keys publishedRoadmap
L2-01Content negotiationNo markdown returned for Accept: text/markdownFixed
L2-02Markdown mirrorsNo .md variants of any pageFixed
L2-05Schema accuracy (drift)Pricing JSON-LD contradicted the visible pricing pageFixed
L2-10Content freshnessThree pages carried update dates with no corresponding content changeIn progress
L2-11Internal link graphFour orphan pages, reachable only from the sitemapFixed
L3-01WebMCP form annotationsNot implementedRoadmap
L3-02WebMCP registered toolsNot implementedRoadmap
L3-04UCP readinessNo product schema, no agent-access.jsonWon't fix
L3-05x402 payment supportNot implementedWon't fix
L3-06NLWeb endpointNo /ask endpointRoadmap

04 · The uncomfortable ones

Which failures were actually embarrassing?

Two of the fourteen. Both were things we had told clients to fix.

Schema drift on our own pricing page

L2-05

We describe schema drift as the check most competitors skip. Our own pricing page had a JSON-LD Offer block carrying a figure that had been superseded on the visible page months earlier. The markup was updated once at launch and never again.

This is the exact failure mode we describe to clients: visible content gets edited, structured data does not, and the two quietly diverge until an engine has to choose which to believe.

Cause: the schema was hand-written into a template rather than generated from the same source as the visible content. It could not stay in sync, because nothing connected the two.

No content negotiation

L2-01

We tell clients that serving markdown to agents cuts their token cost by 80 to 99%, and that under 4% of sites support it. We were in the 96%.

Our server returned HTML to every request, including requests sending Accept: text/markdown — a header that Claude Code, Cursor and OpenCode send natively.

Cause: nobody had implemented it because nobody had asked for it. Which is precisely the reason most sites fail this check, and precisely why we now lead with it.

Neither of these was found by a human reading the site. Both were found by the scanner, which is the argument for running one.

05 · The fix

What did the schema drift fix look like?

The remediation engine generates the corrected block from the rendered page, with a diff showing what changed.

remediation · L2-05 code4x.dev/pricing
"@type": "Offer", - "price": "1500", + "price": "1850", "priceCurrency": "USD", - "priceValidUntil": "2026-03-31" + "priceValidUntil": "2026-12-31" "availability": "https://schema.org/InStock"

values extracted from rendered page content · generated 8 sep 2026

The deeper fix was structural, not textual. The pricing figure now renders from a single source that both the visible page and the JSON-LD read from, so the two cannot diverge again. Correcting the number without correcting the cause would have put us back here in six months.

06 · Deliberate

What are we choosing not to fix?

Three checks. Fixing them would raise our score and change nothing real.

L3-05

x402 payment support

Machine-readable payment terms over HTTP 402, for agent-mediated purchases. We do not sell anything transactionally on this website. Implementing it would be pure theatre.

L3-04

Universal Commerce Protocol

UCP standardises how agents query products and validate inventory. We have no product catalogue. Publishing product schema for services we sell through conversation would be misleading structured data, which is the thing we audit against.

L1-10

DNS-AID

A TXT record advertising agent endpoints. Very early, thin adoption, no demonstrated benefit yet, and it requires a DNS change. We will revisit if it gains traction. Right now it is a point, not an improvement.

The principle, stated plainly

A score is a proxy. The moment you optimise for the proxy rather than the thing it measures, the score stops meaning anything. We would rather publish 28 with three documented refusals than 31 with three implementations nobody will ever use — and we will tell clients the same thing when a check does not apply to them.

07 · Context

Why are AI readiness scores from different tools not comparable?

Because each tool checks a different number of things. The same site can look healthy or poor depending only on which scanner you ran.

On 8 September, code4x.dev scored 62% on our framework. On the same day, with nothing different about the site, it would have read considerably better on a narrower tool.

Google's Lighthouse 13.3 Agentic Browsing category checks four things: accessibility tree quality, layout stability, llms.txt compliance and WebMCP implementation. We passed three of those four. That is 75%.

Same website. Same day. 75% on one scanner, 62% on another — and neither number is wrong. They are measuring different sets of things.

The practical consequence for anyone buying an audit: ask what the score is out of, and ask which checks it covers. A percentage with no denominator and no published check list is not a measurement.

same site · four scanners8 sep 2026
scanner              checks  result
lighthouse 13.3      4     3/4   75%
code4x               37    23/37 62%
agent-ready.dev      68    not run
agentgrade           70+   not run

→ a percentage without a
  denominator is not a
  measurement
We have not run the competitor scanners on our own site and have not reported numbers for them. Check counts are taken from each tool's published documentation.

08 · Re-audit

What did the score move to?

Same rubric version, re-run on 16 September. This is the comparison that matters — not the absolute number.

23

Initial score, out of 37

8 sep 2026 · rubric v1.0

28

After two weeks of remediation

16 sep 2026 · rubric v1.0

5

Checks fixed, all in the discovery and readability layers

L1-06, L2-01, L2-02, L2-05, L2-11

1

Interaction layer checks passed, before and after

unchanged · L3-03 only

Why the re-audit used the same rubric version

If the scoring framework changes between two runs, the comparison is meaningless — the score could move because the site improved or because we moved the goalposts. Every audit records the rubric version it ran against, and every re-audit defaults to the original. When we revise the framework, old runs stay comparable or are marked as knowingly incomparable. There is no third option that preserves honesty.

09 · Common questions

AI readiness scoring — answered

What is a good AI agent readiness score?

There is no established benchmark, because no scoring framework for AI agent readiness has been standardised. Our own framework runs 37 checks across agent discovery, agent readability, agent interaction and AI representation monitoring. Most sites we scan score between 12 and 20. Almost every site scores close to zero on the interaction layer, because those standards are new and adoption is minimal. A score is only meaningful against the same rubric version applied at two points in time.

Why are AI readiness scores from different tools not comparable?

Because each tool checks a different number of things. Lighthouse 13.3 checks four items in its Agentic Browsing category. AgentGrade checks more than 70 signals. Agent-Ready.dev runs 68 checks against the Vercel Agent Readability Spec. Our framework runs 37. The same website can score 75 percent on one tool and 62 percent on another without anything about the site changing. Always ask what a score is out of and which checks it covers.

What is schema drift?

Schema drift is when structured data on a page contradicts the visible content of that page. A common example is a JSON-LD block stating a price or availability that no longer matches what the page shows, usually because the visible content was updated and the markup was not. Drift erodes the trust an engine places in your structured data, and it is one of the checks most audit tools skip entirely because it requires comparing markup against rendered content rather than just validating syntax.

Should every website implement WebMCP and agent commerce protocols?

No. WebMCP, the Universal Commerce Protocol and x402 payments address a real direction of travel, but none of them is a ratified standard and adoption in 2026 is minimal. For a site with no product catalogue and no transactional flow, implementing agent commerce protocols achieves nothing except a higher audit score. We deliberately left three of these unfixed on our own site and documented why, rather than implementing them for appearance.

How often should you re-run an AI readiness audit?

Quarterly for the site audit, and weekly for AI representation tracking. The site audit changes slowly because it reflects structural decisions. What AI engines say about a brand changes constantly, because retrieval is non-deterministic and the underlying indexes update continuously. Re-running the site audit against the same rubric version is what makes a before and after comparison meaningful.

Does a low AI readiness score mean a website is badly built?

Not usually. Most of the checks in an agent readiness audit test for standards that consolidated in 2025 and 2026. A site built well in 2023 to every best practice of its time will still fail most of the discovery and interaction layers, because those files and protocols did not exist. A low score generally indicates age relative to a fast-moving standards landscape rather than poor engineering.

Method

How this audit was run

Domain audited
code4x.com
Pages crawled
34
Rubric version
v1.0
Initial run
8 Sep 2026
Re-audit
16 Sep 2026
Checks scored
37

Only deterministic checks contribute to the score. Machine-checkable tests — a file exists or it does not, a header returns markdown or it does not, a heading sequence is valid or it is not. Qualitative assessment produces advisory flags with evidence, never points, so that the before and after comparison cannot be moved by a judgement call.

Every failed check in the table above is traceable to a specific URL and a specific test. The same evidence standard applies to client reports.

Check counts for Lighthouse 13.3, AgentGrade and Agent-Ready.dev are taken from each tool's published documentation as of September 2026. We did not run those tools against our own site.

Author

Code4X Engineering

Engineering & Research · Code4X

The Code4X Engineering team develops the deterministic audit engine, AEO remediation tooling, and protocol integrations for the AI-era web.

Reviewed
21 Sep 2026
Next re-audit
Dec 2026

What would your site score?

The same 37 checks, the same evidence standard, the same published method. You get every failed check with a URL, whatever the number comes out as.