<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Switchfrog Block AI Agents on RockB</title><link>https://baeseokjae.github.io/tags/switchfrog-block-ai-agents/</link><description>Recent content in Switchfrog Block AI Agents on RockB</description><image><title>RockB</title><url>https://baeseokjae.github.io/images/og-default.png</url><link>https://baeseokjae.github.io/images/og-default.png</link></image><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 01 Oct 2026 11:20:34 +0000</lastBuildDate><atom:link href="https://baeseokjae.github.io/tags/switchfrog-block-ai-agents/index.xml" rel="self" type="application/rss+xml"/><item><title>AX Check Review: Testing Whether Agents Can Actually Use Your Product (2026)</title><link>https://baeseokjae.github.io/posts/ax-check-agent-usability-testing-2026/</link><pubDate>Thu, 01 Oct 2026 11:20:34 +0000</pubDate><guid>https://baeseokjae.github.io/posts/ax-check-agent-usability-testing-2026/</guid><description>AX Check is a free agent-usability tester by Gauge: 23 items plus three real coding-agent sessions. What the score misses, and how to run it.</description><content:encoded><![CDATA[<p>AX Check is a free tool by Gauge that scores how far a coding agent gets with your product without human help. It runs 23 checklist items across Clarity, Onboarding, Pricing and Activation, then records three live sessions on DeepSeek, Kimi and Qwen. The grade is provisional and technical-only — the sessions never affect it.</p>
<h2 id="what-is-ax-check-and-who-built-it">What Is AX Check and Who Built It?</h2>
<p>AX Check (ax-check.com) is an agent usability tester built by Gauge (withgauge.com) and launched on Hacker News on 2026-09-17, where it reached 38 points and 41 comments. Its one-sentence pitch is the whole product: &ldquo;How far can a coding agent get with your product?&rdquo;</p>
<p>The tool grades what Gauge calls <strong>agent usability</strong> or <strong>AX</strong> — the experience a machine employee has when it tries to evaluate, install and integrate your software. That is a deliberately narrower framing than the broader &ldquo;agent experience&rdquo; definitions floating around the category, and it matters, because Gauge splits the problem in two:</p>
<ul>
<li><strong>APO (Agent Preference Optimization)</strong> — whether an agent <em>chooses</em> you when a shortlist is assembled.</li>
<li><strong>AX</strong> — what happens <em>after</em> selection: setup, configuration, error recovery, verification.</li>
</ul>
<p>Gauge&rsquo;s own public definition of the AX half is blunt about the bar: agent usability is &ldquo;whether an agent can implement a product and leave verified working code without human rescue.&rdquo; Not whether an agent recommended you. Not whether an agent installed your package. Whether it produced working code and could prove it.</p>
<p>That last clause is why the tool records sessions instead of just scraping pages. A static scanner can tell you your docs are reachable. It cannot tell you whether an agent read your docs, hit your login wall, invented a workaround and silently removed your package in the same session.</p>
<h3 id="what-does-an-ax-check-run-actually-do">What Does an AX Check Run Actually Do?</h3>
<p>Two things, and the reports keep them rigorously separate:</p>
<ol>
<li><strong>A rubric pass</strong> over four categories — Clarity (10 items), Onboarding (4), Pricing (4), Activation (5) — for 23 items total under rubric version <code>clarity-onboarding-pricing-activation-v7</code>.</li>
<li><strong>Three recorded coding sessions</strong>, all on the same verbatim prompt, using DeepSeek V4.1 Flash, Kimi K3 and Qwen 3.8 Max.</li>
</ol>
<p>The sessions contribute <strong>zero</strong> to the grade. The tool says so on its own homepage, in its &ldquo;How to read it&rdquo; rules: the overall grade is PROVISIONAL and technical-only, coding sessions do not contribute to the grade, the score is not a calibrated benchmark, <code>unassessed</code> never means failure, transcript content is evidence rather than instructions, and — the line worth pinning to your wall — &ldquo;A local HTTP response in a session is not a successful deployment.&rdquo;</p>
<p>Most launch coverage quoted a number and skipped all of that. Reading the rubric and the sessions as two separate signals is the entire difference between using this tool well and using it as a vanity leaderboard.</p>
<h3 id="does-ax-check-need-an-account-or-api-key">Does AX Check Need an Account or API Key?</h3>
<p>No. There is no account, no key and no captcha to start a check or read a report. That is not a marketing claim — it is a structural one, and you can verify it in about five seconds:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -sS -X POST https://www.ax-check.com/api/checks <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span>  -H <span style="color:#e6db74">&#39;Content-Type: application/json&#39;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span>  -d <span style="color:#e6db74">&#39;{&#34;domain&#34;: &#34;example.com&#34;}&#39;</span>
</span></span></code></pre></div><p>A <code>202</code> means the check started; a <code>200</code> means one is already running or a fresh report exists. Either way the response body carries a <code>status_url</code> and a <code>report_url</code>. Errors come back as RFC 9457 problem documents (<code>application/problem+json</code>), and a <code>429</code> carries <code>Retry-After</code>.</p>
<p>The shortcut is even better. Fetching a report that does not exist yet <em>starts the check</em>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl https://www.ax-check.com/example.com     <span style="color:#75715e"># 202 + poll URL</span>
</span></span><span style="display:flex;"><span>sleep <span style="color:#ae81ff">15</span>
</span></span><span style="display:flex;"><span>curl https://www.ax-check.com/example.com     <span style="color:#75715e"># report</span>
</span></span></code></pre></div><p>A tool that grades other products on machine-readability had to be machine-readable itself. AX Check passes its own test in this specific respect: markdown-first reports, code-block API examples, stable URLs, no login.</p>
<h3 id="what-files-does-an-ax-check-report-expose">What Files Does an AX Check Report Expose?</h3>
<p>Every check produces the same set of machine surfaces, which is why it is easy to automate:</p>
<table>
	<thead>
			<tr>
					<th>Surface</th>
					<th>URL pattern</th>
					<th>What it gives you</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Compact report</td>
					<td><code>/{domain}/report.md</code></td>
					<td>~4KB markdown summary, delivered automatically to curl/wget/HTTPie</td>
			</tr>
			<tr>
					<td>Full report</td>
					<td><code>/{domain}/report.json</code></td>
					<td>Every checklist item, evidence, controlled surfaces, session tokens</td>
			</tr>
			<tr>
					<td>Session transcript</td>
					<td><code>/{domain}/sessions/{slug}.json</code></td>
					<td>One recorded session, event by event</td>
			</tr>
			<tr>
					<td>Session stream</td>
					<td><code>/{domain}/sessions/{slug}/live?after=</code></td>
					<td>Curated events with a <code>seq</code> cursor for live tailing</td>
			</tr>
			<tr>
					<td>Status</td>
					<td><code>/{domain}/status</code></td>
					<td>Current check state</td>
			</tr>
	</tbody>
</table>
<p>Content negotiation is handled for you: curl, wget and HTTPie receive the Markdown report automatically; other clients ask for <code>text/markdown</code> or <code>application/json</code>.</p>
<h3 id="what-does-ax-check-deliberately-not-cover">What Does AX Check Deliberately Not Cover?</h3>
<p>The scope rule is published and unusually honest: real agent traffic concentrates on the <strong>homepage, llms.txt, the pricing page and the docs site</strong>, so those four surfaces are checked — &ldquo;and we ignore the rest.&rdquo;</p>
<p>That is a defensible product decision with a real cost. Your API reference, changelog, status page, error catalog and support forum are not rubric inputs. If your product&rsquo;s agent-usability problem lives in a deeply nested reference page, AX Check will not see it. AXRAY — a competing spec that fetches origin artefacts like <code>/robots.txt</code>, <code>/sitemap.xml</code> and <code>/.well-known/mcp.json</code> — will catch some of that, but its own method is even narrower (a single HTTP GET, no JavaScript). Neither tool is a substitute for watching a human developer struggle.</p>
<h2 id="inside-the-rubric-clarity-onboarding-pricing-activation">Inside the Rubric: Clarity, Onboarding, Pricing, Activation</h2>
<p>The rubric is the part nobody quotes, and it is the part that tells you what to fix. Version 7 of <code>clarity-onboarding-pricing-activation-v7</code> weights four categories:</p>
<table>
	<thead>
			<tr>
					<th>Category</th>
					<th>Items</th>
					<th>What it actually asks</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Clarity</strong></td>
					<td>10</td>
					<td>Can an agent state what you sell, for whom, and what the next step is?</td>
			</tr>
			<tr>
					<td><strong>Onboarding</strong></td>
					<td>4</td>
					<td>Can it start without a human creating an account or handing over credentials?</td>
			</tr>
			<tr>
					<td><strong>Pricing</strong></td>
					<td>4</td>
					<td>Can it find and quote a number without inventing one?</td>
			</tr>
			<tr>
					<td><strong>Activation</strong></td>
					<td>5</td>
					<td>Can it reach a real callable surface — OpenAPI, MCP, CLI, SDK, skills?</td>
			</tr>
	</tbody>
</table>
<p>The Activation category looks for concrete, protocol-level surfaces: a documented OpenAPI spec with reachable paths, an MCP endpoint with per-client configuration examples, a CLI installable from a real package manager, an SDK that resolves on a registry, and published Agent Skills.</p>
<p>The single most misreadable term in the whole report is <strong><code>unassessed</code></strong>. The tool states explicitly that unassessed means &ldquo;not measured&rdquo; or &ldquo;not offered&rdquo;, that it is <strong>never</strong> a failure, and that unassessed items are excluded from every grade rather than counted against you.</p>
<p>fly.io is the proof. It scored <strong>A, 100/100</strong> with 21 passes and 2 unassessed items — no registry lookup for a packaged CLI or SDK, and no agent skills surface. A reader skimming for red flags sees &ldquo;2 unassessed&rdquo; and assumes two problems. The rubric says the opposite: two questions that did not apply.</p>
<p>This is a good design choice and a bad communication choice in one package. Excluding inapplicable checks is the honest way to score (AXRAY does the same thing, renormalizing so non-applicable checks leave the denominator, and llms-txt.io similarly renormalizes unmeasurable checks). But &ldquo;unassessed&rdquo; reads like &ldquo;failed&rdquo; to anyone who has not read the reading rules, and almost nobody reads the reading rules.</p>
<h2 id="what-does-a-real-ax-check-report-look-like">What Does a Real AX Check Report Look Like?</h2>
<p>The leaderboard observed live on 2026-10-01 shows the spread. Grades are technical-only and provisional, but the ranking is informative:</p>
<table>
	<thead>
			<tr>
					<th>Domain</th>
					<th>Grade</th>
					<th>Score</th>
					<th>Note</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>supabase.com</td>
					<td>A</td>
					<td>100/100</td>
					<td>Checked 2026-09-27; all five Activation surfaces pass</td>
			</tr>
			<tr>
					<td>increase.com</td>
					<td>A</td>
					<td>100/100</td>
					<td>Developer-first fintech</td>
			</tr>
			<tr>
					<td>sendbird.com</td>
					<td>A</td>
					<td>100/100</td>
					<td></td>
			</tr>
			<tr>
					<td>algolia.com</td>
					<td>A</td>
					<td>100/100</td>
					<td></td>
			</tr>
			<tr>
					<td>fly.io</td>
					<td>A</td>
					<td>100/100</td>
					<td>21 passes, 2 unassessed (excluded, not failed)</td>
			</tr>
			<tr>
					<td>inngest.com</td>
					<td>B</td>
					<td>84/100</td>
					<td></td>
			</tr>
			<tr>
					<td>pierview.ai</td>
					<td>C</td>
					<td>63/100</td>
					<td>Publishes $99–$999/mo; all three agents refused to quote it</td>
			</tr>
			<tr>
					<td>bonsai.io</td>
					<td>D</td>
					<td>29/100</td>
					<td>One session returned only a <code>run_meta</code> event</td>
			</tr>
			<tr>
					<td>rankor.ai</td>
					<td>F</td>
					<td>0/100</td>
					<td>No docs, no llms.txt, no visible pricing page</td>
			</tr>
	</tbody>
</table>
<p>Third-party launch commentary reported Snyk, Increase and Loops at a perfect 100 and Mercury at 60 — allegedly because its docs index was broken and an agent could not confirm pricing. That reporting was not verified against ax-check directly, so treat the specific Mercury claim as second-hand. The pattern it describes, however, is exactly what the first-party reports show.</p>
<h3 id="the-flyio-pricing-page-599360-bytes-of-friction">The fly.io Pricing Page: 599,360 Bytes of Friction</h3>
<p>The most concrete data point in the whole sample set is the fly.io pricing page. An agent fetched <strong>599,360 bytes</strong> of region-table HTML and then had to write custom Python HTML-stripping scripts across two fetches just to extract usable numbers. The report&rsquo;s own diagnosis is precise: this is &ldquo;friction in consuming the pricing page programmatically, not a credentials issue.&rdquo;</p>
<p>That is what agent hostility actually looks like. It is not a 403 or a paywall. It is a page that renders beautifully for a human, loads 600KB for a machine, and forces the machine to write a parser mid-task. The suggested fix in the report is almost embarrassingly cheap: publish a lightweight, machine-readable pricing summary.</p>
<p>Token telemetry makes the same point at a different scale. Supabase&rsquo;s report has since been re-run (it is now dated 2026-10-05), and its session tokens averaged <strong>131,408</strong> (min 21,359 / max 289,667, three measured) — past the report&rsquo;s 100,000 &ldquo;lowerMax&rdquo; threshold and inside its 300,000 &ldquo;moderateMax&rdquo; band. Session tokens are published per report and are explicitly not a grade input — but they are the closest thing AX Check has to a cost meter, and they let you compare two products&rsquo; real integration cost in a way no checklist can.</p>
<h3 id="supabase-100100-and-still-login-blocked">Supabase: 100/100 and Still Login-Blocked</h3>
<p>The Supabase report is the best single illustration of why the scorecard and the sessions must be read separately.</p>
<p>All three sessions completed and each correctly reported the pricing tiers — Free $0, Pro from $25/month, Team from $599/month — with usage assumptions attached. That is a clean pass on the pricing question. But the same report records onboarding as <strong><code>login_required</code></strong>, because the agent could not create a hosted project or an API key without a human.</p>
<p>Supabase still earns a perfect A because Activation passes on all five surfaces: OpenAPI 3.0 with 115 reachable paths, an MCP endpoint with documented per-client configs, a CLI installable via npm/Homebrew/Scoop, SDK packages resolving on registries, and published Agent Skills (<code>npx skills add supabase/agent-skills</code>).</p>
<p>The honest reading: Supabase is as agent-ready as a product can be <em>up to the credentials boundary</em>, and the boundary is a human. That is a much more useful statement than &ldquo;100/100, perfect product,&rdquo; and it is exactly the kind of nuance the grade alone destroys.</p>
<h2 id="where-the-scorecard-and-the-coding-sessions-disagree">Where the Scorecard and the Coding Sessions Disagree</h2>
<p>The two halves of an AX Check report contradict each other constantly, and the contradictions are the most valuable output. Three cases from the sample set:</p>
<h3 id="pierviewai-agents-refused-to-say-the-price">pierview.ai: Agents Refused to Say the Price</h3>
<p>pierview.ai scored C, 63/100. Its pricing page publicly lists Starter at $99 up to Managed at $999 per month. All three sessions nonetheless refused to state a price. One said outright: &ldquo;There is none to explain&hellip; I won&rsquo;t invent numbers.&rdquo;</p>
<p>The report classifies this as <strong>model conservatism</strong>, not a site defect — and that distinction matters enormously for anyone tempted to &ldquo;fix&rdquo; their pricing page in response. If three frontier models each declined to quote a price that was clearly published, the failure is in the session layer, not the marketing layer. Chasing a 63 that was depressed by caution rather than clarity is wasted work.</p>
<h3 id="rankorai-three-agents-three-different-prices">rankor.ai: Three Agents, Three Different Prices</h3>
<p>rankor.ai scored <strong>F, 0/100</strong> — no docs, no llms.txt, no visible pricing page. The three sessions landed on three <em>conflicting</em> prices for the same product: $49/month from <code>GET /v1/billing/plans</code>, a multi-tier table scraped from embedded page data, and &ldquo;free open-source library, no billing at all.&rdquo;</p>
<p>This is the most alarming finding category in the whole dataset, and it is not a scoring artifact. When your machine surfaces disagree with each other, an agent does not get confused and ask a human. It picks one, acts, and you never learn which. The same report also records the recurring hard blocker: signup, then email verification, then login, with no API-key or headless bypass anywhere in the OpenAPI spec.</p>
<h3 id="bonsaiio-a-session-with-no-trace">bonsai.io: A Session With No Trace</h3>
<p>bonsai.io scored D, 29/100. One of three sessions returned only a <code>run_meta</code> event with no trace content and produced no pricing statement at all. There was no anonymous cluster provisioning, and dashboard signup was interactive-only.</p>
<p>The report labels the empty session a <strong>session-level data gap</strong>, not a product defect. That is the correct call, and it is also a warning about sample size: with three sessions per report, one empty trace is 33% of your session evidence gone. Do not read a single session as a verdict.</p>
<h3 id="why-the-divergence-is-a-feature-not-a-bug">Why the Divergence Is a Feature, Not a Bug</h3>
<p>Put these together and a rule falls out. The scorecard answers <em>&ldquo;is your surface machine-readable?&rdquo;</em> The sessions answer <em>&ldquo;does a real agent finish the job?&rdquo;</em> They dissociate routinely:</p>
<ul>
<li>High score, blocked session → Supabase. Docs are excellent; credentials are human-only.</li>
<li>Low score, loud session → rankor.ai. The absence of docs forced the agent to guess, and it guessed three ways.</li>
<li>Mid score, cautious sessions → pierview.ai. The site was fine; the models were timid.</li>
<li>Any score, empty session → bonsai.io. The evidence itself is incomplete.</li>
</ul>
<p>A reviewer who only reads the grade learns almost nothing. A reviewer who reads both learns which of four different problems they have.</p>
<h2 id="the-login-wall-is-the-real-ceiling-not-your-documentation">The Login Wall Is the Real Ceiling, Not Your Documentation</h2>
<p>Here is the finding that should reorganize your roadmap. Across the whole sample set, every single &ldquo;onboarding needs a login&rdquo; failure happened at <strong>credential issuance</strong>, not at comprehension. The agents understood the products. They could not get a token.</p>
<table>
	<thead>
			<tr>
					<th>Product</th>
					<th>Score</th>
					<th>Where it actually broke</th>
					<th>Docs quality involved?</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>fly.io</td>
					<td>A 100</td>
					<td>No <code>FLY_API_TOKEN</code> anywhere; 401 from Machines API, <code>UNAUTHORIZED</code> from GraphQL</td>
					<td>No</td>
			</tr>
			<tr>
					<td>bonsai.io</td>
					<td>D 29</td>
					<td>No anonymous cluster provisioning; interactive dashboard signup only</td>
					<td>Partly</td>
			</tr>
			<tr>
					<td>rankor.ai</td>
					<td>F 0</td>
					<td>Signup → email verification → login; no headless bypass in the spec</td>
					<td>Yes, plus credentials</td>
			</tr>
			<tr>
					<td>supabase.com</td>
					<td>A 100</td>
					<td>Could not create a hosted project or API key without a human</td>
					<td>No</td>
			</tr>
	</tbody>
</table>
<p>Read that table&rsquo;s last column carefully. fly.io and Supabase both have excellent documentation — one scored 100 with 21 passes — and both still failed to complete autonomous onboarding. Documentation quality gets you <em>to</em> the wall. Nothing about documentation gets you <em>past</em> it.</p>
<p>Gauge&rsquo;s stated answer, from the launch thread, is instructive because it is more modest than the marketing around it: allow <strong>ephemeral accounts</strong> in the Cloudflare style, or <strong>serve simulated/static accounts</strong> before a human claims them, and for a lot of products this &ldquo;can just be an extension of the free tier.&rdquo;</p>
<p>That is a genuinely actionable design pattern, and it is worth being concrete about the three shapes it takes:</p>
<ol>
<li><strong>Ephemeral / instant-provision tokens.</strong> A single unauthenticated POST that returns a scoped, time-boxed credential with no email round-trip.</li>
<li><strong>Simulated accounts.</strong> A sandbox that behaves like the real product but is explicitly disposable, claimable later by a human.</li>
<li><strong>Free-tier extension.</strong> The same limits a human gets on the free plan, issued headlessly — no credit card, no marketing quiz, no phone number.</li>
</ol>
<p>If you only do one thing after reading this review, do this one. The checklist items are the cheap wins; the credential path is the one that changes whether an agent finishes at all.</p>
<h3 id="the-cloudflare-gotcha-in-your-own-test-harness">The Cloudflare Gotcha in Your Own Test Harness</h3>
<p>A detail from the rankor.ai session is worth copying into your own tooling. Cloudflare in front of <code>dev.rankor.ai</code> returned <strong>403 <code>browser_signature_banned</code></strong> to Python&rsquo;s default <code>urllib</code> User-Agent. The agent self-resolved by setting an explicit User-Agent header, after which public calls returned 200.</p>
<p>Two lessons. First, if you are automating AX checks or API integration tests from Python, always set a real User-Agent — the default one is treated as a bot signature by default WAF rules. Second, and more importantly: your own users&rsquo; agents will hit exactly this, and the failure is easy to mistake for &ldquo;the API is down.&rdquo;</p>
<h3 id="hallucinated-urls-as-a-first-class-finding">Hallucinated URLs as a First-Class Finding</h3>
<p>AX Check publishes <strong>hallucinated URLs</strong> as its own finding category rather than burying them as noise. On fly.io, the agent invented <code>.md</code>/API doc paths that all 404&rsquo;d (<code>/docs/machines/api.md</code>, <code>/index.md</code>, <code>?format=md</code>) and guessed raw GitHub paths that returned 404.</p>
<p>This is a useful reframing. A 404 from a guessed URL is not a broken site — it is a <em>missing affordance</em>. The agent guessed a markdown variant of your docs because it wanted one. Shipping <code>/{docs-page}.md</code> or an <code>llms.txt</code> that names the real machine-readable paths converts a whole class of 404s into hits.</p>
<h2 id="what-293-public-sites-actually-score-median-68-nobody-above-90">What 293 Public Sites Actually Score: Median 68, Nobody Above 90</h2>
<p>The strongest evidence that agent usability is not just hype comes from a <em>competitor</em>, not the vendor. AXRAY (axray.online) measured <strong>293 well-known public sites</strong> on 2026-09-06 against AX spec 1.5.1, and published the code-scored results.</p>
<p>The headline is a distribution, not an average:</p>
<ul>
<li><strong>Median AX score: 68</strong> (mean 60).</li>
<li><strong>Zero sites scored 90–100.</strong> The top band is empty — 0% of 293 well-known public sites.</li>
<li><strong>17% sat in the 20–29 band.</strong></li>
</ul>
<p>Median by category breaks down as follows:</p>
<table>
	<thead>
			<tr>
					<th>Category</th>
					<th>Median</th>
					<th>Sites measured</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>SaaS</td>
					<td>78</td>
					<td>70</td>
			</tr>
			<tr>
					<td>News</td>
					<td>70</td>
					<td>—</td>
			</tr>
			<tr>
					<td>Docs</td>
					<td>65</td>
					<td>—</td>
			</tr>
			<tr>
					<td>Government</td>
					<td>65</td>
					<td>—</td>
			</tr>
			<tr>
					<td>Reference</td>
					<td>58</td>
					<td>—</td>
			</tr>
			<tr>
					<td>E-commerce</td>
					<td>54</td>
					<td>45</td>
			</tr>
	</tbody>
</table>
<p>SaaS leads, but a median of 78 is not a victory lap — it means the typical SaaS site loses roughly a fifth of available points on basics.</p>
<p>The individual check failure rates are even more pointed:</p>
<ul>
<li><strong>&ldquo;Exactly one h1 naming the page&rdquo;</strong> — 99 failed (34%), 22 warned (8%), 171 passed (59%).</li>
<li><strong>&ldquo;Navigation uses real links&rdquo;</strong> — 59 failed (20%), 83 warned (28%), 150 passed (51%).</li>
</ul>
<p>A third of well-known sites cannot name their own page in a single h1. A fifth cannot put a real <code>&lt;a href&gt;</code> in their navigation. These are not advanced agent-protocol problems; they are HTML from 1998.</p>
<p>The wider baseline is grimmer still: across 292 public sites, an assistant could not say what <strong>172 of them</strong> sell, or how to contact <strong>149 of them</strong>, and <strong>158 of 292</strong> publish no structured data at all. If you want to know whether this category has room, the answer is yes — the web is failing a test most sites do not know they are taking.</p>
<p>One caveat the site itself volunteers: the published 293-site baseline was measured on spec v1.5.1 while the live rubric is v1.5.7, and the baseline is being re-measured. Compare a fresh score to it with that in mind. That kind of version disclosure is rare, and it is a mark in AXRAY&rsquo;s favor.</p>
<h2 id="how-ax-check-compares-to-the-rest-of-the-ax-tooling-field">How AX Check Compares to the Rest of the AX Tooling Field</h2>
<p>There are at least six competing &ldquo;agent readiness&rdquo; rubrics in circulation, and they are not measuring the same thing. Choosing one without knowing the differences is how teams end up with a green CI badge and a broken onboarding flow.</p>
<table>
	<thead>
			<tr>
					<th>Tool</th>
					<th>Method</th>
					<th>Scope</th>
					<th>Sessions?</th>
					<th>Notable</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>AX Check</strong></td>
					<td>Rubric + 3 recorded coding sessions</td>
					<td>4 categories, 23 items; homepage/llms.txt/pricing/docs</td>
					<td>Yes — DeepSeek, Kimi, Qwen</td>
					<td>Only tool that records real agent attempts</td>
			</tr>
			<tr>
					<td><strong>AXRAY</strong></td>
					<td>One plain HTTP GET, no JS, no retries</td>
					<td>70 checks, 5 weighted pillars</td>
					<td>No</td>
					<td>&ldquo;That constraint is the product&rdquo;; 293-site baseline</td>
			</tr>
			<tr>
					<td><strong>AXD</strong> (axd.ax)</td>
					<td>Open reference framework, 0–100 score</td>
					<td>5 dimensions: Discoverability, Navigability, Operability, Recoverability, Transparency</td>
					<td>No</td>
					<td>Explicitly &ldquo;does not certify agent success&rdquo;</td>
			</tr>
			<tr>
					<td><strong>llms-txt.io</strong></td>
					<td>Scanners over access vs discovery</td>
					<td>19 checks</td>
					<td>No</td>
					<td>Separates access (25 pts) from discovery (20 pts)</td>
			</tr>
			<tr>
					<td><strong>isitagentready.com</strong></td>
					<td>Protocol surface audit (Cloudflare)</td>
					<td>5 categories incl. commerce</td>
					<td>No</td>
					<td>x402, MPP, UCP, ACP, MCP cards, WebMCP, auth.md</td>
			</tr>
			<tr>
					<td><strong>agent-ready.dev</strong></td>
					<td>Vercel Agent Readability Spec</td>
					<td>59–71 checks</td>
					<td>No</td>
					<td>MCP-native</td>
			</tr>
	</tbody>
</table>
<p>AXRAY&rsquo;s weighting model is worth understanding because it exposes what a &ldquo;small fix&rdquo; actually costs. The five pillars carry fixed point totals:</p>
<table>
	<thead>
			<tr>
					<th>Pillar</th>
					<th>Weight</th>
					<th>Checks</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Reachability</td>
					<td>25</td>
					<td>19</td>
			</tr>
			<tr>
					<td>Comprehension</td>
					<td>25</td>
					<td>16</td>
			</tr>
			<tr>
					<td>Structure</td>
					<td>18</td>
					<td>15</td>
			</tr>
			<tr>
					<td>Actionability</td>
					<td>17</td>
					<td>11</td>
			</tr>
			<tr>
					<td>Agent Contract</td>
					<td>15</td>
					<td>9</td>
			</tr>
	</tbody>
</table>
<p>Pass earns full points, warning earns half, fail earns zero, and non-applicable checks leave the denominator. Gates cap the total when a single failure would otherwise be masked by a good average. AXRAY also publishes its entire rubric because, in its own words, &ldquo;a score is only worth something if you can argue with it.&rdquo;</p>
<p>The contrast in philosophy is sharp and worth stating plainly:</p>
<ul>
<li><strong>AXRAY</strong> deliberately cripples its method to match crawler reality — one GET, honest user-agent, 12-second timeout, hard byte cap, manual redirects, <strong>no headless browser, no JavaScript, no retries</strong>. The constraint <em>is</em> the product. It also fetches <code>/robots.txt</code>, <code>/sitemap.xml</code>, <code>/llms.txt</code>, <code>/.well-known/security.txt</code> and <code>/.well-known/mcp.json</code> in parallel, parses with a tolerant hand-written tokenizer, and makes every check a pure function of one frozen fact set — so CLI, CI and on-site scoring agree.</li>
<li><strong>AX Check</strong> accepts that a scanner is not enough and spends real compute on three live sessions, at the cost of noise (see pierview.ai and bonsai.io).</li>
</ul>
<p>You want both. AXRAY tells you whether a crawler can even reach and parse your page. AX Check tells you whether a coding agent can finish a task. Neither answers the other&rsquo;s question, and neither is a calibrated benchmark against revenue.</p>
<h3 id="the-definitional-fog-ax-vs-geo-vs-apo-vs-agent-readiness">The Definitional Fog: AX vs GEO vs APO vs Agent Readiness</h3>
<p>The terminology in this space is genuinely unstable, and it costs teams real time. Use this as a working map:</p>
<ul>
<li><strong>GEO / AEO / AI visibility</strong> — whether AI systems <em>recommend</em> you. This is the layer our existing guide on <a href="https://baeseokjae.github.io/posts/optimizing-for-agents-llmstxt/">optimizing for agents with llms.txt</a> covers, along with the adoption reality that roughly 10% of domains in a 300K-domain study publish an llms.txt (SE Ranking, Nov 2025) while only about 4% of 500M+ AI bot visits actually fetched <code>/llms.txt</code> in a 90-day window (Limy.AI, May 2026).</li>
<li><strong>APO (Agent Preference Optimization)</strong> — Gauge&rsquo;s term for whether an agent <em>chooses</em> you during selection.</li>
<li><strong>AX (Agent Experience)</strong> — what happens after selection, up to &ldquo;verified working code without human rescue.&rdquo;</li>
<li><strong>Agent readiness</strong> — the tooling category name, used loosely by AXRAY, llms-txt.io, isitagentready.com and others to mean protocol and surface hygiene.</li>
</ul>
<p>AXD frames the same territory as <strong>&ldquo;the third wave&rdquo;</strong> — UX for people, DX for builders, AX for agents — and adds a claim worth quoting because it is the most careful scope statement in the field: &ldquo;Some agents can browse, read, call supported tools, or complete authorized tasks, but capability varies by model, site, configuration, and permission. AXD is an open framework for inspecting site-controlled evidence. It does not certify agent success or replace task testing.&rdquo;</p>
<p>That sentence is the whole intellectual honesty problem of this category in two lines, and AXD gets it right. Any tool that tells you it certifies agent success is selling you something.</p>
<h2 id="the-backlash-anti-agent-tooling-roi-doubts-and-adversarial-use">The Backlash: Anti-Agent Tooling, ROI Doubts, and Adversarial Use</h2>
<p>A review that only restates the vendor thesis is not a review. Three counter-currents are real and documented.</p>
<h3 id="1-anti-agent-tooling-exists-and-is-a-product">1. Anti-agent tooling exists and is a product</h3>
<p>There is now tooling whose entire purpose is the inverse: <strong>switchfrog.com</strong> exists to make sites <em>less</em> accessible to agents. In the AX Check launch thread, a commenter said the tool &ldquo;should help in making my stuff as inaccessible as possible to agents&rdquo; and pointed to it. Another joke that is only half a joke: &ldquo;Claude, use AX-check to make my site score a zero.&rdquo;</p>
<p>This is not a fringe sentiment. There is a legitimate strategic position — content licensing, competitive moats, API monetization — under which reducing agent access is the intended outcome. Any AX roadmap should start by deciding which side of that line you are on. If you are a consumer social app or a hardware company, AX is not your story, and bolting it on reads as trend-chasing.</p>
<h3 id="2-nobody-has-proven-agent-traffic-converts">2. Nobody has proven agent traffic converts</h3>
<p>The most quoted skeptical datapoint is from an employee of a company that scores <strong>100% on AX Check</strong>, who reported that making the site agent-accessible &ldquo;has not 10xed the growth numbers like I was told it would.&rdquo; A reply in the same thread estimated AI-driven growth closer to <strong>long-term 2% productivity growth</strong> — real, compounding, and nothing like a hockey stick.</p>
<p>Take that seriously, because Gauge&rsquo;s own framing supports it. The company explicitly says install rate is a bad metric: &ldquo;An agent may install a package and then encounter dashboard-only onboarding that requires a person to create an account or retrieve credentials&hellip; An agent can install a package, encounter a configuration or error, remove it, and choose another product during the same session.&rdquo;</p>
<p>So the vendor itself is telling you that the metric everyone wants to cite is noise. What Gauge does offer as measurement is better grounded: across <strong>500 observed coding-agent runs</strong>, documentation represented <strong>55% of all fetched sources</strong>, and setup pages, READMEs and quickstarts were nearly <strong>60% of those documentation fetches</strong>. That is a claim about where agent attention goes, not a claim about revenue. Treat it as such.</p>
<h3 id="3-adversarial-use-degrades-every-signal">3. Adversarial use degrades every signal</h3>
<p>If a check is cheap and public, it becomes a target. Public leaderboards invite gaming — a well-funded team can optimize for 23 specific checks and still fail a real onboarding attempt. This is exactly why AX Check&rsquo;s decision to record sessions (rather than only scraping pages) is the right architecture, and also why the sessions themselves must never be presented as a calibrated benchmark.</p>
<h3 id="4-the-tool-itself-has-a-scoring-bug-history">4. The tool itself has a scoring bug history</h3>
<p>Worth noting for calibration: in the launch thread, a commenter pointed out that <strong>news.ycombinator.com received an A grade for pricing</strong> — &ldquo;where is the pricing page again?&rdquo; Gauge&rsquo;s reply conceded a real bug: &ldquo;The initial step of the scan looks at homepage content to try to figure out where to navigate next, it&rsquo;s getting confused by all the different products linked. Will fix this!&rdquo;</p>
<p>A maker who concedes a specific bug in public on launch day is a positive signal about the team and a caution about the grade. The homepage-navigation heuristic is the soft spot; a link-heavy homepage can send the scanner down the wrong path. Gauge&rsquo;s stated motivation for the whole product is telling too — earlier AX-type checks were &ldquo;too noisy&rdquo; and &ldquo;suggested obscure technical changes that don&rsquo;t actually make a difference in agent experience.&rdquo; AX Check is a reaction to over-engineered AX tooling. Whether it overcorrected is the open question.</p>
<h2 id="is-ax-check-itself-agent-friendly-grading-the-grader">Is AX Check Itself Agent-Friendly? Grading the Grader</h2>
<p>The most entertaining exercise this tool enables is running its own logic against it. AX Check is, by construction, an AX artifact: markdown-first reports via content negotiation, a public JSON API, RFC 9457 error bodies, no account or captcha, stable URLs, and a homepage written to be consumed by machines.</p>
<p>It also has gaps — and an <strong>independent deterministic benchmark</strong> found them. Legit.Show, which claims a 7-frame scoring path with &ldquo;no LLM in the scoring path,&rdquo; measured ax-check.com at <strong>69/100 overall</strong> on 2026-09-17, placing it in the &ldquo;Top 77% of 14,658 measured.&rdquo;</p>
<table>
	<thead>
			<tr>
					<th>Frame</th>
					<th>Score</th>
					<th>Evidence cited</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Reliability</td>
					<td>100</td>
					<td>Proper 404 for unknown routes; 3 of 3 sampled routes reachable</td>
			</tr>
			<tr>
					<td>Performance</td>
					<td>95</td>
					<td>449 ms time to first byte</td>
			</tr>
			<tr>
					<td>Accessibility</td>
					<td>94</td>
					<td>—</td>
			</tr>
			<tr>
					<td>Standards</td>
					<td>92</td>
					<td>HSTS present</td>
			</tr>
			<tr>
					<td>Discoverability</td>
					<td>57</td>
					<td>—</td>
			</tr>
			<tr>
					<td>Security</td>
					<td>45</td>
					<td>No Content-Security-Policy</td>
			</tr>
			<tr>
					<td><strong>Privacy</strong></td>
					<td><strong>0</strong></td>
					<td><strong>No privacy policy found; sets cookies / loads scripts with no consent prompt</strong></td>
			</tr>
	</tbody>
</table>
<p>Privacy 0/100 is the punchline. A tool that grades other companies&rsquo; machine-readability scores zero on privacy because it publishes no privacy policy and sets cookies without a consent prompt. The reviewer&rsquo;s own thesis, perfectly illustrated: a 100 on the four surfaces you chose to measure tells you nothing about the surfaces you did not.</p>
<p>Note the frame disagreement too. Legit.Show scores &ldquo;Discoverability&rdquo; at 57 for a site that is trivially discoverable by agents, because it is measuring search-engine discoverability, not agent discoverability. Two rubrics, two different definitions of one word — which is the definitional fog problem in miniature.</p>
<p>Credit where due: the honest posture is symmetric. AX Check publishes its own limitations as prominently as its capabilities, and its reports carry the same &ldquo;provisional, not a benchmark&rdquo; caveats. Very few products in this category submit to that treatment.</p>
<h2 id="run-your-own-check-api-reports-sessions-and-ci-gating">Run Your Own Check: API, Reports, Sessions, and CI Gating</h2>
<p>The practical payoff of AX Check is that the whole thing is automatable in a few shell commands. Here is the full loop.</p>
<h3 id="step-1--start-a-check-and-poll-status">Step 1 — Start a check and poll status</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># Start (202 = started, 200 = already running/fresh)</span>
</span></span><span style="display:flex;"><span>curl -sS -X POST https://www.ax-check.com/api/checks <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span>  -H <span style="color:#e6db74">&#39;Content-Type: application/json&#39;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span>  -d <span style="color:#e6db74">&#39;{&#34;domain&#34;: &#34;yourdomain.com&#34;}&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Or just fetch the report URL — a missing report starts the check</span>
</span></span><span style="display:flex;"><span>curl -sS -o /dev/null -w <span style="color:#e6db74">&#39;%{http_code}\n&#39;</span> https://www.ax-check.com/yourdomain.com
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Poll</span>
</span></span><span style="display:flex;"><span>curl -sS https://www.ax-check.com/yourdomain.com/status
</span></span></code></pre></div><h3 id="step-2--read-the-machine-readable-report">Step 2 — Read the machine-readable report</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -sS https://www.ax-check.com/yourdomain.com/report.json | jq <span style="color:#e6db74">&#39;.checklistTotals, .sessions&#39;</span>
</span></span><span style="display:flex;"><span>curl -sS https://www.ax-check.com/yourdomain.com/report.md | head -60
</span></span></code></pre></div><p><code>report.json</code> gives you every checklist item with evidence, the controlled surfaces, and session token telemetry. <code>report.md</code> is the ~4KB human summary, and curl gets it automatically through content negotiation — no header needed.</p>
<h3 id="step-3--read-the-session-transcripts">Step 3 — Read the session transcripts</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -sS https://www.ax-check.com/yourdomain.com/sessions/&lt;slug&gt;.json | jq <span style="color:#e6db74">&#39;.events[] | {seq, type}&#39;</span>
</span></span><span style="display:flex;"><span>curl -sS <span style="color:#e6db74">&#39;https://www.ax-check.com/yourdomain.com/sessions/&lt;slug&gt;/live?after=100&#39;</span>
</span></span></code></pre></div><p>The <code>live</code> endpoint returns curated events with a <code>seq</code> cursor, so you can tail a running session without re-parsing the whole transcript.</p>
<h3 id="step-4--read-the-verbatim-prompt-do-this-before-judging-anything">Step 4 — Read the verbatim prompt (do this before judging anything)</h3>
<p>Every report discloses the exact prompt the three sessions ran on. It is worth quoting because the scope of what is being tested is narrower than people assume:</p>
<blockquote>
<p>&ldquo;Help me build a simple example using <!-- raw HTML omitted -->&hellip; Tell me how pricing works, and briefly tell me whether this product will be easy for you to manage. Let me know if you get blocked&hellip; Stay light: use the hosted product through its SDK or API. Do not start local service stacks&hellip; No credentials supplied; no paid provisioning authorized.&rdquo;</p>
</blockquote>
<p>Two constraints sit in that prompt and shape every result you will read:</p>
<ol>
<li><strong>&ldquo;Do not start local service stacks&rdquo;</strong> — so a product that is trivially runnable via <code>docker compose up</code> is <em>not</em> being credited for it. A perfect local experience can still score badly.</li>
<li><strong>&ldquo;No credentials supplied; no paid provisioning authorized&rdquo;</strong> — so every session meets your login wall head-on, by design.</li>
</ol>
<p>If your product&rsquo;s realistic onboarding path is &ldquo;clone, run locally, use the dev key that ships in the repo,&rdquo; a bad AX Check session is not telling you your product is unusable. It is telling you your product is unusable <em>under a specific, deliberately constrained, agent-realistic prompt</em>. Read the prompt disclosure before you file the ticket.</p>
<h3 id="step-5--gate-in-ci">Step 5 — Gate in CI</h3>
<p>AX Check gives you a checkable URL; AXRAY gives you an exit code. For a deploy gate, the practical pattern is to combine them:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># AXRAY: --min N exits non-zero on regression, gating a deploy</span>
</span></span><span style="display:flex;"><span>npx axray-cli yourdomain.com --min <span style="color:#ae81ff">75</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># AX Check: fetch and assert on the JSON</span>
</span></span><span style="display:flex;"><span>curl -sS https://www.ax-check.com/yourdomain.com/report.json <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span>  | jq -e <span style="color:#e6db74">&#39;.checklistTotals.passed &gt;= 21&#39;</span> &gt; /dev/null <span style="color:#f92672">||</span> exit <span style="color:#ae81ff">1</span>
</span></span></code></pre></div><p>AXRAY&rsquo;s model is the cleaner CI primitive because the rubric is versioned, scored from code, and comparable within a major version, and because <code>--min N</code> gives you a non-zero exit for free. It also needs no account and allows one free scan a day, with an MCP endpoint exposing <code>scan_url</code>, <code>explain_check</code>, <code>list_crawlers</code> and <code>get_index</code>.</p>
<p>One warning before you build a hard gate: AX Check grade movement is partly session noise. If you gate on the <em>grade</em>, you will get flaky pipelines. Gate on rubric items you actually changed, or gate on AXRAY&rsquo;s deterministic score, and use AX Check sessions for diagnosis rather than enforcement.</p>
<h2 id="the-fix-list-what-actually-moves-the-number">The Fix List: What Actually Moves the Number</h2>
<p>The rubric data lets you rank fixes by return. Here are the ones with disproportionate payoff, cheapest first.</p>
<table>
	<thead>
			<tr>
					<th>Fix</th>
					<th>Where it lands</th>
					<th>Effort</th>
					<th>Why it matters</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Exactly one <code>&lt;h1&gt;</code> naming the page</td>
					<td>8 pts in Comprehension, ~1.9/100 overall (AXRAY)</td>
					<td>Trivial</td>
					<td>34% of 292 sites fail it</td>
			</tr>
			<tr>
					<td>Real <code>&lt;a href&gt;</code> links in navigation</td>
					<td>12 pts in Actionability (AXRAY)</td>
					<td>Low</td>
					<td>20% of sites fail it; JS-only nav is invisible to many crawlers</td>
			</tr>
			<tr>
					<td>Machine-readable pricing summary</td>
					<td>6 pts in Structure (AXRAY)</td>
					<td>Low</td>
					<td>fly.io&rsquo;s agent burned 599,360 bytes writing a parser</td>
			</tr>
			<tr>
					<td><code>/{docs-page}.md</code> variants</td>
					<td>Eliminates a class of hallucinated-URL 404s</td>
					<td>Low</td>
					<td>Agents guess markdown paths because they want them</td>
			</tr>
			<tr>
					<td><code>llms.txt</code> naming real machine paths</td>
					<td>14 pts in Agent Contract (AXRAY)</td>
					<td>Low</td>
					<td>Converts guessed 404s into hits</td>
			</tr>
			<tr>
					<td>Non-interactive token issuance</td>
					<td>Turns <code>login_required</code> into a completed session</td>
					<td>High</td>
					<td>The only fix that clears the credentials ceiling</td>
			</tr>
			<tr>
					<td>Markdown content negotiation</td>
					<td>Faster task completion on every fetch</td>
					<td>Medium</td>
					<td>Gauge: &ldquo;legitimately helpful for agents to complete tasks faster&rdquo;</td>
			</tr>
			<tr>
					<td>One h1 / one nav fix per week</td>
					<td>Compounding</td>
					<td>—</td>
					<td>Configuration-only checks are the fastest wins</td>
			</tr>
	</tbody>
</table>
<p>Three principles behind that table:</p>
<p><strong>Prefer configuration-only checks.</strong> The rubric labels each item, and items that need no architecture change are pure margin. A single h1 is worth about 1.9 points out of 100 — small on its own, but it takes minutes and it was failed by a third of well-known sites.</p>
<p><strong>Fix the cheapest machine-readable surface first.</strong> If a pricing page takes 599KB and a custom parser, the fix is a static JSON or markdown summary, not a redesign.</p>
<p><strong>Do not chase session-level noise.</strong> Pierview.ai&rsquo;s C grade was depressed by model conservatism. Supabase&rsquo;s login failure is structural. Fixing your pricing copy because three cautious models declined to quote a published price is the definition of optimizing the wrong layer.</p>
<p>And one thing to <em>not</em> do: do not block answer-time fetchers. In llms-txt.io&rsquo;s rubric, blocking training crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot) is a defensible policy choice costing only partial credit — but blocking answer-time fetchers (ChatGPT-User, OAI-SearchBot, Claude-User, Perplexity-User) fails the check outright &ldquo;because it kills live retrieval even when a user directly asks about your product.&rdquo; The distinction between training access and retrieval access is the single most common self-inflicted wound in robots.txt today.</p>
<p>Also worth auditing: the <strong>soft-404</strong> problem. If you run a SPA whose router returns 200 + app shell for every URL, agents &ldquo;can never trust a 200 from your site.&rdquo; That is a structural credibility failure, and it is invisible to any human QA pass. Test it by requesting a guaranteed-nonexistent <code>.txt</code> path and checking that you get a real 404.</p>
<h2 id="verdict-who-should-use-ax-check-and-where-it-is-still-provisional">Verdict: Who Should Use AX Check, and Where It Is Still Provisional</h2>
<p><strong>Use it if you sell software to developers, platforms or technical teams</strong> and you want to know how far a coding agent gets without a human. Three recorded sessions plus a transparent 23-item rubric for free, with no account, is a genuinely good deal, and the machine-readable report format means you can wire it into CI in an afternoon. The published reading rules put it well ahead of most of this category in intellectual honesty, and the session transcripts are evidence no competitor currently produces.</p>
<p><strong>Skip it if you run a consumer social app, a hardware business or a content site whose buyers are not agents.</strong> AX is not your story, and Gauge&rsquo;s own commentary says so.</p>
<p><strong>Calibrate your expectations in four specific ways:</strong></p>
<ol>
<li><strong>The grade is provisional and technical-only.</strong> The tool says so first. Coding sessions do not contribute to it, and it is not a calibrated benchmark. Quote it as a technical signal, never as a performance metric.</li>
<li><strong>Three sessions is a small sample.</strong> bonsai.io had one session return nothing at all; pierview.ai had all three models decline to state a published price. One session is not a verdict.</li>
<li><strong>Unassessed is not failed.</strong> fly.io is a 100/100 with two unassessed items because unassessed items are excluded, not penalized. Do not &ldquo;fix&rdquo; an unassessed item.</li>
<li><strong>The credentials boundary is the real ceiling.</strong> A perfect rubric score and a <code>login_required</code> onboarding result can coexist — Supabase proves it.</li>
</ol>
<p>And keep the ROI question open. The most honest datapoint in the entire launch thread came from an employee whose company already scores 100, reporting no 10x growth. Agent traffic may well compound into something meaningful, but nobody in this category has published conversion data proving it. Score well because a machine employee that cannot finish the job wastes both your compute and your prospect&rsquo;s; not because a leaderboard badge is a growth strategy.</p>
<p>The category&rsquo;s own tools are the best argument for its limits: AX Check scores 69/100 on an independent benchmark with Privacy 0, AXRAY&rsquo;s 293-site baseline found no site above 90, and Gauge fixed a live scoring bug on launch day. Everyone is early. The sites that win will be the ones that read the rubric <em>and</em> the transcripts — and then fixed the credentials path first.</p>
<h2 id="faq">FAQ</h2>
<h3 id="what-is-ax-check-and-how-does-it-work">What is AX Check and how does it work?</h3>
<p>AX Check is a free agent usability tester by Gauge, launched 2026-09-17. It runs 23 checklist items across four categories — Clarity (10 items), Onboarding (4), Pricing (4) and Activation (5) — and records three live coding sessions on DeepSeek V4.1 Flash, Kimi K3 and Qwen 3.8 Max using a verbatim disclosed prompt. The grade comes from the rubric only; the sessions are diagnostic evidence and do not affect the score.</p>
<h3 id="is-ax-check-free-and-do-i-need-an-account">Is AX Check free, and do I need an account?</h3>
<p>Yes, it is free with no account, API key or captcha required. You can start a check with a single unauthenticated <code>POST https://www.ax-check.com/api/checks</code> carrying <code>{&quot;domain&quot;: &quot;example.com&quot;}</code>, or by simply fetching <code>https://www.ax-check.com/example.com</code> — a report that does not exist yet starts the check and returns a 202 with a poll URL. Reports are readable as Markdown, JSON and per-session JSON without authentication.</p>
<h3 id="what-does-unassessed-mean-on-an-ax-check-report">What does &ldquo;unassessed&rdquo; mean on an AX Check report?</h3>
<p>Unassessed means <em>not measured</em> or <em>not offered</em> — it never means failed, and unassessed items are excluded from the grade entirely rather than counted against you. fly.io demonstrates this: it scored A, 100/100 with 21 passes and 2 unassessed items, specifically no registry lookup for an SDK or packaged CLI and no agent skills surface. Do not treat an unassessed item as a defect to fix.</p>
<h3 id="why-do-the-coding-sessions-sometimes-contradict-the-score">Why do the coding sessions sometimes contradict the score?</h3>
<p>They measure different things. The rubric asks whether your surface is machine-readable; the sessions ask whether a real agent finished the job. Supabase scored 100/100 while its onboarding was recorded as <code>login_required</code> because no agent could create a hosted project or API key. pierview.ai publishes Starter $99 to Managed $999 per month, yet all three sessions refused to state a price — the report calls that model conservatism, not a site defect. Read them as two signals, never one.</p>
<h3 id="what-is-the-biggest-blocker-ax-check-finds-in-real-products">What is the biggest blocker AX Check finds in real products?</h3>
<p>Credential issuance, not documentation. Every autonomous-onboarding failure in the public sample set — fly.io (no <code>FLY_API_TOKEN</code>, 401 from the Machines API), bonsai.io (interactive dashboard signup only), rankor.ai (signup → email verification → login with no headless bypass), and even Supabase — failed at getting a token, not at understanding the product. Gauge&rsquo;s suggested answer is ephemeral accounts, simulated/static accounts claimable by a human later, or simply extending the free tier headlessly. Documentation quality gets an agent to the login wall; only a non-interactive token path gets it past.</p>
<h2 id="sources">Sources</h2>
<ul>
<li>AX Check homepage, reading rules and API — <a href="https://www.ax-check.com/">https://www.ax-check.com/</a></li>
<li>AX Check machine-readable index (llms.txt) — <a href="https://www.ax-check.com/llms.txt">https://www.ax-check.com/llms.txt</a></li>
<li>AX Check report on fly.io (markdown) — <a href="https://www.ax-check.com/fly.io/report.md">https://www.ax-check.com/fly.io/report.md</a></li>
<li>AX Check report on fly.io (JSON, checked 2026-10-08) — <a href="https://www.ax-check.com/fly.io/report.json">https://www.ax-check.com/fly.io/report.json</a></li>
<li>AX Check report on supabase.com (JSON, report re-run 2026-10-05) — <a href="https://www.ax-check.com/supabase.com/report.json">https://www.ax-check.com/supabase.com/report.json</a></li>
<li>AX Check report on pierview.ai (JSON, 2026-09-30) — <a href="https://www.ax-check.com/pierview.ai/report.json">https://www.ax-check.com/pierview.ai/report.json</a></li>
<li>AX Check report on rankor.ai (JSON, 2026-09-30) — <a href="https://www.ax-check.com/rankor.ai/report.json">https://www.ax-check.com/rankor.ai/report.json</a></li>
<li>AX Check report on bonsai.io (JSON, 2026-09-26) — <a href="https://www.ax-check.com/bonsai.io/report.json">https://www.ax-check.com/bonsai.io/report.json</a></li>
<li>Show HN thread, &ldquo;Ax-check.com - Can agents use your product?&rdquo; (38 points, 41 comments, 2026-09-17) — <a href="https://news.ycombinator.com/item?id=49744416">https://news.ycombinator.com/item?id=49744416</a></li>
<li>AXRAY homepage and AX specification 1.5.x — <a href="https://axray.online/">https://axray.online/</a> and <a href="https://axray.online/ax-spec">https://axray.online/ax-spec</a></li>
<li>Legit.Show 7-Frame benchmark entry for ax-check.com — <a href="https://legit.show/ax-check.com">https://legit.show/ax-check.com</a></li>
<li>Gauge (the vendor behind AX Check) — <a href="https://withgauge.com/">https://withgauge.com/</a> and <a href="https://docs.withgauge.com/">https://docs.withgauge.com/</a></li>
</ul>
]]></content:encoded></item></channel></rss>