AXRAY

Agent Experience report · spec v1.0.0 · 43m ago

qibbopress.com

https://qibbopress.com/

Reachability 69
Comprehension 5
Structure 15
Actionability 6
Agent Contract 7

qibbopress.com scores 20/100 (F) for Agent Experience. This page is invisible to AI agents. Whatever an assistant says about you today, it is not reading it here. The score is capped at 20 for one reason: The page did not return a successful response to a plain HTTP request, so nothing else on this report can help until it does. The weakest pillar is Comprehension at 5/100. The three highest-value fixes are ships structured data (+6.2 pts), navigation uses real links (+6.2 pts), publishes an llms.txt (+4.7 pts).

Score capped at 20. The page did not return a successful response to a plain HTTP request, so nothing else on this report can help until it does.

Score capped at 62. The content is assembled in the browser, so a crawling agent receives an empty document no matter how good the metadata is.

19 failing · 10 warnings · 9 passing

Fix list, highest value first

Each item shows the points it is currently costing on the same 0–100 scale as the score at the top. Items marked config only are content or configuration changes that do not need an engineer.

Fail Ships structured data +6.2 pts config only

No JSON-LD and no microdata anywhere on the page.

Structured data is the only part of your page an agent can consume without interpretation. Everything else it has to infer, and inference is where it invents facts about you.

How to fix it

Add a JSON-LD block describing what this page actually is.

Where: Inside <head>, one block per page.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Your company",
  "url": "https://example.com",
  "description": "One sentence an assistant can quote.",
  "sameAs": ["https://x.com/you", "https://github.com/you"]
}
</script>
Fail Navigation uses real links +6.2 pts

The page contains no <a href> elements at all.

An agent moves through a site by following hrefs. With none, this page is a dead end and everything behind it is undiscoverable.

How to fix it

Render navigation as <a href="/real/path"> elements, even in a single-page app.

Fail Publishes an llms.txt +4.7 pts config only

No /llms.txt or /llms-full.txt at https://qibbopress.com.

Without it, an assistant deciding what your site is about crawls whatever it happens to find. llms.txt is the cheapest way to control that first impression, and today most of your competitors do not have one either.

How to fix it

Publish an llms.txt: a title, one paragraph, then curated links grouped by intent.

Where: /llms.txt

# Example Inc

> One paragraph an assistant can quote verbatim about what you do and who it is for.

## Docs
- [Quickstart](https://example.com/docs/quickstart): Get running in five minutes.
- [API reference](https://example.com/docs/api): Every endpoint with examples.

## Product
- [Pricing](https://example.com/pricing): Plans, limits and exact prices.
- [Changelog](https://example.com/changelog): What shipped, newest first.

## Policies
- [Terms](https://example.com/terms)
- [Contact](https://example.com/contact): support@example.com
Fail Publishes a sitemap +4.1 pts config only

No sitemap found at https://qibbopress.com/sitemap_index.xml or in robots.txt.

Without a sitemap, discovery depends entirely on crawlable links. Any page not reachable by a plain <a href> is invisible.

How to fix it

Generate a sitemap.xml and reference it from robots.txt.

Where: Append to /robots.txt

Sitemap: https://example.com/sitemap.xml
Fail Has a descriptive <title> +3.9 pts config only

The page has no <title> element, or it is empty.

The title is the label an assistant uses when it lists you among its sources. Without one you are cited as a bare URL, which almost nobody clicks.

How to fix it

Add a unique title of roughly 40-65 characters that names the thing and the site.

<title>Agent Experience Scanner - AXRAY</title>
Fail Enough substance to be worth citing +3.9 pts

Only 0 words of readable text reached the agent.

There is not enough here for an assistant to build an answer from, so it will use someone else as the source.

How to fix it

Make sure the real content is in the HTML, then make sure there is enough of it.

Fail Content exists without running JavaScript +3.9 pts

The raw HTML contains 0 words of text.

This is the single most expensive AX failure. To a crawling agent the page is blank, so it cannot be summarised, cited or ranked at all.

How to fix it

Render the page content on the server, or pre-render it at build time.

Where: Any SSR/SSG mode, or a prerender middleware that serves static HTML to bot user-agents.

Fail Exactly one <h1> naming the page +3.1 pts config only

The page has no headings at all.

Without an h1 the agent has no anchor for the document topic and falls back to the title tag or the URL slug.

How to fix it

Add a single <h1> at the top of the main content that states the page subject.

Fail Has a meta description +3.1 pts config only

No <meta name="description"> on the page.

It is the one sentence you get to write yourself. Without it the assistant summarises you from whatever text it happened to read first, which is often your cookie banner.

How to fix it

Add a 120-160 character description that states what the page offers, in plain language.

<meta name="description" content="Scan any URL and see exactly what an AI agent can read, understand and act on. Get an AX score and a prioritised fix list.">
Fail Links onward into the site +3.1 pts

Only 0 internal links on the page.

A page with no onward links is a cul-de-sac. Everything you publish that is not linked from a crawlable page effectively does not exist.

How to fix it

Add a server-rendered navigation and contextual links to related pages.

Fail Signal-to-markup ratio +3.1 pts

0.0% of the payload is readable text.

The document is almost entirely machinery. An agent truncating this page will likely truncate before reaching any of your content.

How to fix it

Reduce inline script and serialized state; aim for at least 12% readable text.

Fail Open Graph card is complete +2.8 pts config only

Missing: og:title, og:description, og:type, og:url, og:image.

When a page is JavaScript-heavy or truncated, Open Graph tags are frequently the only clean summary an agent gets.

How to fix it

Add the four core Open Graph tags plus an image.

<meta property="og:title" content="Page title">
<meta property="og:description" content="One sentence.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://example.com/page">
<meta property="og:image" content="https://example.com/og.png">
Fail Page responds to a plain HTTP request +2.8 pts

The request failed: fetch failed

Agents fetch with a short timeout and no retry budget. A request that fails once is a page that does not exist as far as they are concerned.

How to fix it

Make sure the URL resolves over HTTPS within a few seconds from outside your network.

Warn Programmatic surface is discoverable +2.6 pts config only

No well-known agent manifest, no OpenAPI reference and no developer docs link found.

This is the frontier of AX: sites that publish a machine-callable surface get used by agents directly instead of being scraped approximately.

How to fix it

Publish a minimal agent manifest describing what you offer and where to call it.

Where: /.well-known/mcp.json

{
  "name": "Example",
  "description": "What an agent can do with this service.",
  "documentation": "https://example.com/docs",
  "endpoints": [
    { "type": "openapi", "url": "https://example.com/openapi.json" }
  ]
}
Fail Reachable by a human, discoverably +2.6 pts config only

No mailto, tel, contact link or contactPoint data found.

"How do I get in touch with them" is one of the most common agent-mediated questions about a company. Make the answer machine-readable.

How to fix it

Add a contactPoint to your Organization schema and link a real contact page.

{"@type":"Organization","contactPoint":[{"@type":"ContactPoint","contactType":"customer support","email":"support@example.com","url":"https://example.com/contact"}]}
Fail Headings form a sane outline +2.3 pts config only

Only 0 headings on the page.

Agents chunk long pages by heading. A page with no outline is chunked arbitrarily and quoted out of context.

How to fix it

Break the content into sections with <h2> headings that read as answers to real questions.

Fail Main content is marked as such +2.3 pts config only

No <main> element. Landmarks present: none.

Without a main landmark an extractor has to guess your content boundary heuristically, and on marketing pages it usually guesses the header.

How to fix it

Wrap the primary content in <main>, and each self-contained item in <article>.

<main>
  <article>
    <h1>…</h1>
    …
  </article>
</main>
Fail Declares a document language +2.0 pts config only

The <html> element has no lang attribute.

Without it an assistant guesses the language, and guesses wrong on short or mixed-language pages, producing garbled quotes.

How to fix it

Set the language on the root element.

<html lang="en">
Fail Exposes an agent-callable manifest +2.0 pts

No /.well-known/mcp.json and no ai-plugin.json.

This is the highest-leverage unclaimed slot on the web right now. The sites that publish a callable surface get used directly instead of guessed at.

How to fix it

Publish a manifest naming what an agent can do with you and where to call it.

Where: /.well-known/mcp.json

{
  "schema_version": "2025-06-18",
  "name": "example",
  "description": "Search the catalogue and check availability.",
  "documentation": "https://example.com/docs",
  "servers": [
    { "type": "http", "url": "https://mcp.example.com" }
  ],
  "contact": "support@example.com"
}
Warn Says when the content changed +1.7 pts config only

No Last-Modified, ETag, dateModified or <time> element anywhere.

Agents deprioritise content they cannot date, and re-fetch undated pages more often, which costs you bandwidth for nothing.

How to fix it

Send Last-Modified and ETag, and publish dateModified in your structured data.

{"@type":"Article","datePublished":"2026-01-15","dateModified":"2026-08-01"}
Fail Identity is machine-verifiable +1.7 pts config only

No Organization structured data on the page.

Entity resolution is how assistants decide two mentions are the same company. Unresolved entities get merged with, or mistaken for, someone else.

How to fix it

Publish Organization data with sameAs links to your verified profiles.

{"@context":"https://schema.org","@type":"Organization","name":"Example Inc","url":"https://example.com","logo":"https://example.com/logo.png","sameAs":["https://x.com/example","https://github.com/example","https://www.linkedin.com/company/example"]}
Warn States an explicit AI policy +1.5 pts config only

robots.txt has no per-agent AI groups, and there is no TDM reservation or noai directive anywhere.

With no explicit policy, every operator applies its own default to you and you have no documented position if you later object.

How to fix it

Say what you want, per crawler. Allow the ones that send traffic; decide separately about the training ones.

Where: /robots.txt

# Answer engines: allowed, they cite and link us.
User-agent: OAI-SearchBot
User-agent: PerplexityBot
User-agent: Claude-SearchBot
User-agent: DuckAssistBot
Allow: /

# User-triggered fetches: allowed, a person is waiting.
User-agent: ChatGPT-User
User-agent: Claude-User
User-agent: Perplexity-User
Allow: /

# Training crawlers: your call. This example allows them.
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
Allow: /
Warn Declares a canonical URL +1.5 pts config only

No <link rel="canonical"> on the page.

Agents dedupe sources by canonical URL. Without one, the same content behind different query strings competes with itself and dilutes every citation.

How to fix it

Add a self-referencing canonical link to every page.

<link rel="canonical" href="https://qibbopress.com/">
Warn Site search is machine-usable +1.5 pts config only

No crawlable GET search form and no SearchAction.

Without a GET-addressable search, an agent looking for one specific page on your site has to fetch dozens of pages to find it, and usually gives up first.

How to fix it

Expose search at a GET URL like /search?q=… and declare it as a SearchAction.

Warn Declares content licensing +1.3 pts config only

No rel="license" link and no license or copyright fields in structured data.

If you care how your content is reused, say so where machines can read it. A footer copyright line is not machine-readable.

How to fix it

Declare the licence on the page and in your structured data.

<link rel="license" href="https://example.com/terms">
Warn Publishes security.txt +1.1 pts config only

No /.well-known/security.txt.

It is the standard machine-readable place to say who to contact. Agents and researchers both look there first.

How to fix it

Add a security.txt with a contact address and an expiry date.

Where: /.well-known/security.txt

Contact: mailto:security@example.com
Expires: 2027-01-01T00:00:00.000Z
Preferred-Languages: en
Warn Declares a link preview card +0.8 pts config only

No twitter:* card tags.

Several agents fall back to card metadata when they cannot extract the body reliably.

How to fix it

Add a summary_large_image card.

<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Page title">
<meta name="twitter:description" content="One sentence.">
Warn robots.txt is present and parseable +0.6 pts config only

No robots.txt served (HTTP 0).

Without a robots.txt every crawler applies its own defaults and you have no way to express a preference. It is also the file most agents read first.

How to fix it

Publish a robots.txt that allows answer engines and points at your sitemap.

Where: /robots.txt

User-agent: *
Allow: /

Sitemap: https://example.com/sitemap.xml
Warn Declares a correct content type +0.4 pts config only

No Content-Type header was returned.

Agents use the header to decide whether to parse the body as HTML at all.

How to fix it

Send `Content-Type: text/html; charset=utf-8`.

Passing checks

Kept here so the report is auditable rather than a list of complaints.

Pass No bot wall in front of the content

The response body was the real page, not a challenge or block screen.

Bot protection that cannot tell a shopping assistant from a scraper silently removes you from AI answers, with no error anyone on your team will ever see.

Pass Answer engines are allowed to crawl

No robots.txt, so nothing is disallowed by default.

These crawlers are the ones that put your link inside an AI answer. Blocking them removes the referral traffic, not just the training use.

Pass User-triggered fetchers are allowed

No robots.txt, so nothing is disallowed by default.

These fetches happen because a human just pasted your link into an assistant. A block here fails in front of a real person who wanted to read you.

Pass Classic search crawlers are allowed

No robots.txt, so nothing is disallowed by default.

AI Overviews and Copilot answers are grounded on the classic search index. Blocking Googlebot or Bingbot now also removes you from AI surfaces.

Pass No directive suppressing AI use of this page

No robots meta tag or X-Robots-Tag header.

noindex and nosnippet remove you from the surfaces that would otherwise quote and link you.

Pass Short redirect chain

The URL served content directly with no redirect.

Every hop costs latency and some agents cap redirects at two or three.

Pass Responds fast enough for an agent budget

Full response in 12 ms.

Agents fetch many pages per answer and drop the slow ones. Speed is a ranking input you control.

Pass HTML payload stays inside an agent context budget

0 KB of HTML, 0% of it inline script.

Agents truncate long documents. Anything past the cut simply is not read.

Pass URL describes the content

Site root.

Assistants show the URL next to the citation, and readable URLs get clicked more than opaque ids.

Not applicable

These questions were not asked of this page, and are excluded from the score entirely.

n/a Real agent user-agents are served normally

Live user-agent probing was not run for this scan.

Some sites answer 200 to a generic client and 403 to a named AI crawler. Only a live probe finds that.

n/a Images carry alt text

No content images on this page.

Agents cannot see images. Alt text is the only description they get.

n/a Uses semantic elements, not div soup

Too few structural elements to judge.

n/a Provides a no-JavaScript fallback

Not needed: the page already server-renders its content.

n/a Structured data parses cleanly

No JSON-LD to validate.

n/a Structured data describes the right thing

No JSON-LD to evaluate.

n/a Prices are machine-readable

No prices detected in the page text.

n/a Declares its place in the site

Top-level page; breadcrumbs are not expected.

n/a Inline microdata annotations

No microdata; JSON-LD is the preferred format anyway.

n/a Link text describes the destination

Too few links to judge.

n/a Form fields are labelled

No interactive form fields on this page.

n/a Form fields have stable names

No interactive form fields on this page.

n/a Fields declare autocomplete tokens

No text-like fields on this page.

n/a Controls are real buttons

No button-like controls detected.

n/a llms.txt is actually useful

No llms.txt to evaluate.

Crawler access

Who can actually reach this page

Resolved from robots.txt for this exact path, per crawler. Blocking a training crawler is a legitimate business decision. Blocking an answer engine removes you from the results that would have linked you.

Answer engine

Indexes you so an assistant can cite and link you. Blocking it removes you from AI answers.

OAI-SearchBot OpenAI No rule
Claude-SearchBot Anthropic No rule
PerplexityBot Perplexity No rule
Amazonbot Amazon No rule
DuckAssistBot DuckDuckGo No rule

User-triggered

Fetches your page because a human asked an assistant to open it right now. Blocking it breaks a live request.

ChatGPT-User OpenAI No rule
Claude-User Anthropic No rule
Perplexity-User Perplexity No rule

Classic search

Traditional search indexing, increasingly the substrate AI answers are built on.

Googlebot Google No rule
Bingbot Microsoft No rule

Training crawler

Collects content for model training. Blocking it is a legitimate business choice with no traffic cost.

GPTBot OpenAI No rule
ClaudeBot Anthropic No rule
Google-Extended Google No rule
Applebot-Extended Apple No rule
meta-externalagent Meta No rule
CCBot Common Crawl No rule

Evidence

What we actually received

Every number in this report comes from this one plain HTTP response. No browser, no JavaScript, no retries.

Raw observations from the fetch
ObservationValue
Final URLhttps://qibbopress.com/
HTTP status0
Response time12 ms
HTML size0 B
Inline script0 B (0% of payload)
Readable words0
Text-to-markup0.0%
Title(none)
Language(not declared)
Canonical(none)
Detected stack(none detected)
robots.txtnot found
sitemap.xmlnot found
llms.txtnot found

Share this report

Public report link, and a badge you can put in a README or a footer.

[![AX score](https://axray.online/badge/qibbopress.com.svg)](https://axray.online/report/7MvwL9Sv7AkTcQ)