AXRAY

Agent Experience report · spec v1.0.0 · 1h ago

erenakkoc.online

https://erenakkoc.online/

Reachability 97
Comprehension 100
Structure 66
Actionability 61
Agent Contract 24

Applying only the configuration-level fixes below would reach 96/100 — a gain of 21 points with no engineering work.

erenakkoc.online scores 75/100 (B) for Agent Experience. Solid. An agent gets the gist and can navigate onward, but it is guessing about things you could simply tell it. The weakest pillar is Agent Contract at 24/100. The three highest-value fixes are ships structured data (+6.2 pts), publishes an llms.txt (+4.7 pts), links onward into the site (+2.2 pts). 9 of these are configuration changes rather than engineering work; applying just those would take the score to 96/100, a gain of 21 points.

5 failing · 6 warnings · 30 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 Publishes an llms.txt +4.7 pts config only

No /llms.txt or /llms-full.txt at https://erenakkoc.online.

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 Links onward into the site +2.2 pts

Only 1 internal link 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.

Warn Programmatic surface is discoverable +2.1 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 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 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 Site search is machine-usable +1.2 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 Reachable by a human, discoverably +1.0 pts config only

Only one weak contact signal 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"}]}
Warn Answer engines are allowed to crawl +0.7 pts config only

1 of 5 blocked by robots.txt: Amazonbot.

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

  • Amazonbot (Amazon) - Excluded from Alexa and Rufus style shopping answers.

How to fix it

Allow these crawlers explicitly in robots.txt. Indexes you so an assistant can cite and link you. Blocking it removes you from AI answers.

Where: /robots.txt

User-agent: Amazonbot
Allow: /

Passing checks

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

Pass Page responds to a plain HTTP request

HTTP 200 in 496 ms.

The baseline: an agent with no browser, no cookies and no JavaScript received your page.

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 Content exists without running JavaScript

325 words of readable text arrived in the HTML itself.

Most crawling agents never execute JavaScript. Whatever is not in the raw HTML does not exist for them.

Pass robots.txt is present and parseable

robots.txt served with 11 user-agent groups.

A valid robots.txt is how you talk to crawlers before they read a single page.

Pass User-triggered fetchers are allowed

All 3 crawlers in this group may fetch /.

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

All 2 crawlers in this group may fetch /.

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

Robots directives present and permissive: index,follow,max-image-preview:large

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 496 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

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

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

Pass Declares a correct content type

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

A declared charset avoids mojibake when an agent quotes your text back to a user.

Pass Has a descriptive <title>

"Eren Akkoç — Dijital Ürün Geliştirici" (37 characters).

This is the label assistants attach to you when they cite this page.

Pass Has a meta description

72 characters: "Noralith Labs kurucusu Eren Akkoç'un ürünleri, yaklaşımı ve çalışmaları."

This is the summary assistants reuse verbatim more often than any other field.

Pass Exactly one <h1> naming the page

"Fikirleri, kullanılan ürünlere çeviriyorum."

The h1 is the strongest in-page signal of what the document is about.

Pass Headings form a sane outline

8 headings with no skipped levels.

A clean outline is what lets an agent quote the right section instead of the whole page.

Pass Enough substance to be worth citing

325 words of readable text.

Assistants prefer sources with enough material to answer a question outright rather than pages that just point elsewhere.

Pass Signal-to-markup ratio

26.4% of the payload is readable text.

A high ratio means an agent spends its limited context on your content instead of your tooling.

Pass Declares a document language

<html lang="tr">

Language is how an assistant decides whether to answer a user in your words or translate them.

Pass Images carry alt text

5 of 7 images described; 2 intentionally marked decorative.

Alt text is the only way the content of an image reaches an agent.

Pass Main content is marked as such

<main> present with <article>; 4 of 4 landmark regions used.

The <main> element tells an extractor where your content stops and your chrome starts. It is the difference between quoting your argument and quoting your nav bar.

Pass Uses semantic elements, not div soup

26% of structural elements are semantic (17 semantic vs 48 div).

Semantic tags carry meaning an agent can use; a div carries none.

Pass URL describes the content

Site root.

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

Pass Open Graph card is complete

og:title, og:description, og:type, og:url and og:image all present.

Open Graph is the fallback summary almost every crawler reads when it cannot parse the page body.

Pass Declares a canonical URL

Canonical: https://erenakkoc.online/

Agents dedupe sources by canonical URL, and cross-origin canonicals hand your citation to somebody else.

Pass Publishes a sitemap

https://erenakkoc.online/sitemap.xml lists 2 URLs.

A sitemap is how a crawler discovers the pages your navigation hides behind JavaScript menus.

Pass Declares a link preview card

4 twitter:* tags present.

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

Pass Navigation uses real links

All 16 links resolve to a real URL.

Real hrefs are the only navigation primitive an agent has.

Pass Link text describes the destination

100% of links have descriptive text.

Link text is how an agent decides which link to follow when it is looking for something specific.

Pass States an explicit AI policy

robots.txt names specific AI crawlers rather than relying on the wildcard group.

Naming crawlers explicitly is how you separate "do not train on me" from "do not send me traffic". The wildcard group cannot express that distinction.

Pass Publishes security.txt

/.well-known/security.txt is served.

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

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 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 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 Allowed
Claude-SearchBot Anthropic Allowed
PerplexityBot Perplexity Allowed
Amazonbot Amazon Blocked

Blocked by "Disallow: /" in the amazonbot group.

DuckAssistBot DuckDuckGo Allowed

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 Allowed
Claude-User Anthropic Allowed
Perplexity-User Perplexity Allowed

Classic search

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

Googlebot Google Allowed
Bingbot Microsoft Allowed

Training crawler

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

GPTBot OpenAI Blocked

Blocked by "Disallow: /" in the gptbot group.

ClaudeBot Anthropic Blocked

Blocked by "Disallow: /" in the claudebot group.

Google-Extended Google Blocked

Blocked by "Disallow: /" in the google-extended group.

Applebot-Extended Apple Blocked

Blocked by "Disallow: /" in the applebot-extended group.

meta-externalagent Meta Blocked

Blocked by "Disallow: /" in the meta-externalagent group.

CCBot Common Crawl Blocked

Blocked by "Disallow: /" in the ccbot group.

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://erenakkoc.online/
HTTP status200
Response time496 ms
HTML size10 KB
Inline script0 B (0% of payload)
Readable words325
Text-to-markup26.4%
TitleEren Akkoç — Dijital Ürün Geliştirici
Languagetr
Canonicalhttps://erenakkoc.online/
Detected stack(none detected)
robots.txtserved
sitemap.xml2 URLs
llms.txtnot found

Share this report

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

[![AX score](https://qibbopress.com/badge/erenakkoc.online.svg)](https://qibbopress.com/report/RwQpZkxcwgLxaQ)