{"version":"1.0.0","url":"https://erenakkoc.online/","finalUrl":"https://erenakkoc.online/","host":"erenakkoc.online","scannedAt":"2026-08-26T18:33:28.629Z","durationMs":682,"score":75,"grade":"B","potential":96,"gates":[],"pillars":[{"pillar":"reachability","label":"Reachability","blurb":"Can an agent fetch your content at all, without a browser and without being blocked?","score":97,"earned":86.6,"available":89,"weight":25,"checks":[{"id":"http-ok","pillar":"reachability","title":"Page responds to a plain HTTP request","status":"pass","weight":10,"earned":10,"detail":"HTTP 200 in 496 ms.","why":"The baseline: an agent with no browser, no cookies and no JavaScript received your page.","impact":0},{"id":"not-blocked","pillar":"reachability","title":"No bot wall in front of the content","status":"pass","weight":12,"earned":12,"detail":"The response body was the real page, not a challenge or block screen.","why":"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.","impact":0},{"id":"server-rendered","pillar":"reachability","title":"Content exists without running JavaScript","status":"pass","weight":14,"earned":14,"detail":"325 words of readable text arrived in the HTML itself.","why":"Most crawling agents never execute JavaScript. Whatever is not in the raw HTML does not exist for them.","impact":0},{"id":"robots-exists","pillar":"reachability","title":"robots.txt is present and parseable","status":"pass","weight":4,"earned":4,"detail":"robots.txt served with 11 user-agent groups.","why":"A valid robots.txt is how you talk to crawlers before they read a single page.","impact":0},{"id":"robots-answer-engines","pillar":"reachability","title":"Answer engines are allowed to crawl","status":"warn","weight":12,"earned":9.6,"detail":"1 of 5 blocked by robots.txt: Amazonbot.","why":"These crawlers are the ones that put your link inside an AI answer. Blocking them removes the referral traffic, not just the training use.","fix":{"summary":"Allow these crawlers explicitly in robots.txt. Indexes you so an assistant can cite and link you. Blocking it removes you from AI answers.","lang":"text","snippet":"User-agent: Amazonbot\nAllow: /","where":"/robots.txt"},"evidence":["Amazonbot (Amazon) - Excluded from Alexa and Rufus style shopping answers."],"quickWin":true,"impact":0.7},{"id":"robots-user-triggered","pillar":"reachability","title":"User-triggered fetchers are allowed","status":"pass","weight":8,"earned":8,"detail":"All 3 crawlers in this group may fetch /.","why":"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.","impact":0},{"id":"robots-search","pillar":"reachability","title":"Classic search crawlers are allowed","status":"pass","weight":6,"earned":6,"detail":"All 2 crawlers in this group may fetch /.","why":"AI Overviews and Copilot answers are grounded on the classic search index. Blocking Googlebot or Bingbot now also removes you from AI surfaces.","impact":0},{"id":"agent-live-probe","pillar":"reachability","title":"Real agent user-agents are served normally","status":"na","weight":8,"earned":8,"detail":"Live user-agent probing was not run for this scan.","why":"Some sites answer 200 to a generic client and 403 to a named AI crawler. Only a live probe finds that.","impact":0},{"id":"meta-robots","pillar":"reachability","title":"No directive suppressing AI use of this page","status":"pass","weight":6,"earned":6,"detail":"Robots directives present and permissive: index,follow,max-image-preview:large","why":"noindex and nosnippet remove you from the surfaces that would otherwise quote and link you.","impact":0},{"id":"redirect-chain","pillar":"reachability","title":"Short redirect chain","status":"pass","weight":4,"earned":4,"detail":"The URL served content directly with no redirect.","why":"Every hop costs latency and some agents cap redirects at two or three.","impact":0},{"id":"response-speed","pillar":"reachability","title":"Responds fast enough for an agent budget","status":"pass","weight":5,"earned":5,"detail":"Full response in 496 ms.","why":"Agents fetch many pages per answer and drop the slow ones. Speed is a ranking input you control.","impact":0},{"id":"payload-weight","pillar":"reachability","title":"HTML payload stays inside an agent context budget","status":"pass","weight":5,"earned":5,"detail":"10 KB of HTML, 0% of it inline script.","why":"Agents truncate long documents. Anything past the cut simply is not read.","impact":0},{"id":"content-type","pillar":"reachability","title":"Declares a correct content type","status":"pass","weight":3,"earned":3,"detail":"Content-Type: text/html; charset=utf-8","why":"A declared charset avoids mojibake when an agent quotes your text back to a user.","impact":0}]},{"pillar":"comprehension","label":"Comprehension","blurb":"Once fetched, can the agent work out what this page is and what it says?","score":100,"earned":78,"available":78,"weight":25,"checks":[{"id":"title","pillar":"comprehension","title":"Has a descriptive <title>","status":"pass","weight":10,"earned":10,"detail":"\"Eren Akkoç — Dijital Ürün Geliştirici\" (37 characters).","why":"This is the label assistants attach to you when they cite this page.","impact":0},{"id":"meta-description","pillar":"comprehension","title":"Has a meta description","status":"pass","weight":8,"earned":8,"detail":"72 characters: \"Noralith Labs kurucusu Eren Akkoç'un ürünleri, yaklaşımı ve çalışmaları.\"","why":"This is the summary assistants reuse verbatim more often than any other field.","impact":0},{"id":"h1","pillar":"comprehension","title":"Exactly one <h1> naming the page","status":"pass","weight":8,"earned":8,"detail":"\"Fikirleri, kullanılan ürünlere çeviriyorum.\"","why":"The h1 is the strongest in-page signal of what the document is about.","impact":0},{"id":"heading-hierarchy","pillar":"comprehension","title":"Headings form a sane outline","status":"pass","weight":6,"earned":6,"detail":"8 headings with no skipped levels.","why":"A clean outline is what lets an agent quote the right section instead of the whole page.","impact":0},{"id":"content-volume","pillar":"comprehension","title":"Enough substance to be worth citing","status":"pass","weight":10,"earned":10,"detail":"325 words of readable text.","why":"Assistants prefer sources with enough material to answer a question outright rather than pages that just point elsewhere.","impact":0},{"id":"text-ratio","pillar":"comprehension","title":"Signal-to-markup ratio","status":"pass","weight":8,"earned":8,"detail":"26.4% of the payload is readable text.","why":"A high ratio means an agent spends its limited context on your content instead of your tooling.","impact":0},{"id":"lang","pillar":"comprehension","title":"Declares a document language","status":"pass","weight":5,"earned":5,"detail":"<html lang=\"tr\">","why":"Language is how an assistant decides whether to answer a user in your words or translate them.","impact":0},{"id":"image-alt","pillar":"comprehension","title":"Images carry alt text","status":"pass","weight":8,"earned":8,"detail":"5 of 7 images described; 2 intentionally marked decorative.","why":"Alt text is the only way the content of an image reaches an agent.","impact":0},{"id":"landmarks","pillar":"comprehension","title":"Main content is marked as such","status":"pass","weight":6,"earned":6,"detail":"<main> present with <article>; 4 of 4 landmark regions used.","why":"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.","impact":0},{"id":"semantic-density","pillar":"comprehension","title":"Uses semantic elements, not div soup","status":"pass","weight":6,"earned":6,"detail":"26% of structural elements are semantic (17 semantic vs 48 div).","why":"Semantic tags carry meaning an agent can use; a div carries none.","impact":0},{"id":"noscript-fallback","pillar":"comprehension","title":"Provides a no-JavaScript fallback","status":"na","weight":4,"earned":4,"detail":"Not needed: the page already server-renders its content.","why":"","impact":0},{"id":"readable-url","pillar":"comprehension","title":"URL describes the content","status":"pass","weight":3,"earned":3,"detail":"Site root.","why":"Assistants show the URL next to the citation, and readable URLs get clicked more than opaque ids.","impact":0}]},{"pillar":"structure","label":"Structure","blurb":"Is the important data machine-readable instead of implied by visual layout?","score":66,"earned":23,"available":35,"weight":18,"checks":[{"id":"jsonld-present","pillar":"structure","title":"Ships structured data","status":"fail","weight":12,"earned":0,"detail":"No JSON-LD and no microdata anywhere on the page.","why":"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.","fix":{"summary":"Add a JSON-LD block describing what this page actually is.","lang":"html","where":"Inside <head>, one block per page.","snippet":"<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Organization\",\n  \"name\": \"Your company\",\n  \"url\": \"https://example.com\",\n  \"description\": \"One sentence an assistant can quote.\",\n  \"sameAs\": [\"https://x.com/you\", \"https://github.com/you\"]\n}\n</script>"},"quickWin":true,"impact":6.2},{"id":"jsonld-valid","pillar":"structure","title":"Structured data parses cleanly","status":"na","weight":8,"earned":8,"detail":"No JSON-LD to validate.","why":"","impact":0},{"id":"jsonld-types","pillar":"structure","title":"Structured data describes the right thing","status":"na","weight":8,"earned":8,"detail":"No JSON-LD to evaluate.","why":"","impact":0},{"id":"open-graph","pillar":"structure","title":"Open Graph card is complete","status":"pass","weight":6,"earned":6,"detail":"og:title, og:description, og:type, og:url and og:image all present.","why":"Open Graph is the fallback summary almost every crawler reads when it cannot parse the page body.","impact":0},{"id":"canonical","pillar":"structure","title":"Declares a canonical URL","status":"pass","weight":6,"earned":6,"detail":"Canonical: https://erenakkoc.online/","why":"Agents dedupe sources by canonical URL, and cross-origin canonicals hand your citation to somebody else.","impact":0},{"id":"sitemap","pillar":"structure","title":"Publishes a sitemap","status":"pass","weight":8,"earned":8,"detail":"https://erenakkoc.online/sitemap.xml lists 2 URLs.","why":"A sitemap is how a crawler discovers the pages your navigation hides behind JavaScript menus.","impact":0},{"id":"price-structured","pillar":"structure","title":"Prices are machine-readable","status":"na","weight":6,"earned":6,"detail":"No prices detected in the page text.","why":"","impact":0},{"id":"breadcrumbs","pillar":"structure","title":"Declares its place in the site","status":"na","weight":4,"earned":4,"detail":"Top-level page; breadcrumbs are not expected.","why":"","impact":0},{"id":"twitter-card","pillar":"structure","title":"Declares a link preview card","status":"pass","weight":3,"earned":3,"detail":"4 twitter:* tags present.","why":"Several agents fall back to card metadata when they cannot extract the body reliably.","impact":0},{"id":"microdata","pillar":"structure","title":"Inline microdata annotations","status":"na","weight":2,"earned":2,"detail":"No microdata; JSON-LD is the preferred format anyway.","why":"","impact":0}]},{"pillar":"actionability","label":"Actionability","blurb":"Can the agent take the next step - navigate, search, submit, buy - without guessing?","score":61,"earned":25.15,"available":41,"weight":17,"checks":[{"id":"links-crawlable","pillar":"actionability","title":"Navigation uses real links","status":"pass","weight":12,"earned":12,"detail":"All 16 links resolve to a real URL.","why":"Real hrefs are the only navigation primitive an agent has.","impact":0},{"id":"anchor-text","pillar":"actionability","title":"Link text describes the destination","status":"pass","weight":8,"earned":8,"detail":"100% of links have descriptive text.","why":"Link text is how an agent decides which link to follow when it is looking for something specific.","impact":0},{"id":"internal-nav","pillar":"actionability","title":"Links onward into the site","status":"fail","weight":6,"earned":0.75,"detail":"Only 1 internal link on the page.","why":"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.","fix":{"summary":"Add a server-rendered navigation and contextual links to related pages."},"impact":2.2},{"id":"form-labels","pillar":"actionability","title":"Form fields are labelled","status":"na","weight":8,"earned":8,"detail":"No interactive form fields on this page.","why":"","impact":0},{"id":"form-names","pillar":"actionability","title":"Form fields have stable names","status":"na","weight":6,"earned":6,"detail":"No interactive form fields on this page.","why":"","impact":0},{"id":"form-autocomplete","pillar":"actionability","title":"Fields declare autocomplete tokens","status":"na","weight":4,"earned":4,"detail":"No text-like fields on this page.","why":"","impact":0},{"id":"button-semantics","pillar":"actionability","title":"Controls are real buttons","status":"na","weight":6,"earned":6,"detail":"No button-like controls detected.","why":"","impact":0},{"id":"contact-affordance","pillar":"actionability","title":"Reachable by a human, discoverably","status":"warn","weight":5,"earned":2.5,"detail":"Only one weak contact signal found.","why":"\"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.","fix":{"summary":"Add a contactPoint to your Organization schema and link a real contact page.","lang":"json","snippet":"{\"@type\":\"Organization\",\"contactPoint\":[{\"@type\":\"ContactPoint\",\"contactType\":\"customer support\",\"email\":\"support@example.com\",\"url\":\"https://example.com/contact\"}]}"},"quickWin":true,"impact":1},{"id":"search-affordance","pillar":"actionability","title":"Site search is machine-usable","status":"warn","weight":4,"earned":1,"detail":"No crawlable GET search form and no SearchAction.","why":"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.","fix":{"summary":"Expose search at a GET URL like /search?q=… and declare it as a SearchAction."},"quickWin":true,"impact":1.2},{"id":"api-discovery","pillar":"actionability","title":"Programmatic surface is discoverable","status":"warn","weight":6,"earned":0.9,"detail":"No well-known agent manifest, no OpenAPI reference and no developer docs link found.","why":"This is the frontier of AX: sites that publish a machine-callable surface get used by agents directly instead of being scraped approximately.","fix":{"summary":"Publish a minimal agent manifest describing what you offer and where to call it.","where":"/.well-known/mcp.json","lang":"json","snippet":"{\n  \"name\": \"Example\",\n  \"description\": \"What an agent can do with this service.\",\n  \"documentation\": \"https://example.com/docs\",\n  \"endpoints\": [\n    { \"type\": \"openapi\", \"url\": \"https://example.com/openapi.json\" }\n  ]\n}"},"quickWin":true,"impact":2.1}]},{"pillar":"contract","label":"Agent Contract","blurb":"Have you told agents the rules: what they may use, where the docs are, who to contact?","score":24,"earned":11,"available":45,"weight":15,"checks":[{"id":"llms-txt","pillar":"contract","title":"Publishes an llms.txt","status":"fail","weight":14,"earned":0,"detail":"No /llms.txt or /llms-full.txt at https://erenakkoc.online.","why":"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.","fix":{"summary":"Publish an llms.txt: a title, one paragraph, then curated links grouped by intent.","where":"/llms.txt","lang":"markdown","snippet":"# Example Inc\n\n> One paragraph an assistant can quote verbatim about what you do and who it is for.\n\n## Docs\n- [Quickstart](https://example.com/docs/quickstart): Get running in five minutes.\n- [API reference](https://example.com/docs/api): Every endpoint with examples.\n\n## Product\n- [Pricing](https://example.com/pricing): Plans, limits and exact prices.\n- [Changelog](https://example.com/changelog): What shipped, newest first.\n\n## Policies\n- [Terms](https://example.com/terms)\n- [Contact](https://example.com/contact): support@example.com"},"quickWin":true,"impact":4.7},{"id":"llms-txt-quality","pillar":"contract","title":"llms.txt is actually useful","status":"na","weight":6,"earned":6,"detail":"No llms.txt to evaluate.","why":"","impact":0},{"id":"ai-policy","pillar":"contract","title":"States an explicit AI policy","status":"pass","weight":6,"earned":6,"detail":"robots.txt names specific AI crawlers rather than relying on the wildcard group.","why":"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.","impact":0},{"id":"mcp-manifest","pillar":"contract","title":"Exposes an agent-callable manifest","status":"fail","weight":6,"earned":0,"detail":"No /.well-known/mcp.json and no ai-plugin.json.","why":"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.","fix":{"summary":"Publish a manifest naming what an agent can do with you and where to call it.","where":"/.well-known/mcp.json","lang":"json","snippet":"{\n  \"schema_version\": \"2025-06-18\",\n  \"name\": \"example\",\n  \"description\": \"Search the catalogue and check availability.\",\n  \"documentation\": \"https://example.com/docs\",\n  \"servers\": [\n    { \"type\": \"http\", \"url\": \"https://mcp.example.com\" }\n  ],\n  \"contact\": \"support@example.com\"\n}"},"impact":2},{"id":"identity","pillar":"contract","title":"Identity is machine-verifiable","status":"fail","weight":5,"earned":0,"detail":"No Organization structured data on the page.","why":"Entity resolution is how assistants decide two mentions are the same company. Unresolved entities get merged with, or mistaken for, someone else.","fix":{"summary":"Publish Organization data with sameAs links to your verified profiles.","lang":"json","snippet":"{\"@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\"]}"},"quickWin":true,"impact":1.7},{"id":"freshness","pillar":"contract","title":"Says when the content changed","status":"warn","weight":5,"earned":0,"detail":"No Last-Modified, ETag, dateModified or <time> element anywhere.","why":"Agents deprioritise content they cannot date, and re-fetch undated pages more often, which costs you bandwidth for nothing.","fix":{"summary":"Send Last-Modified and ETag, and publish dateModified in your structured data.","lang":"json","snippet":"{\"@type\":\"Article\",\"datePublished\":\"2026-01-15\",\"dateModified\":\"2026-08-01\"}"},"quickWin":true,"impact":1.7},{"id":"licence-signal","pillar":"contract","title":"Declares content licensing","status":"warn","weight":5,"earned":1,"detail":"No rel=\"license\" link and no license or copyright fields in structured data.","why":"If you care how your content is reused, say so where machines can read it. A footer copyright line is not machine-readable.","fix":{"summary":"Declare the licence on the page and in your structured data.","lang":"html","snippet":"<link rel=\"license\" href=\"https://example.com/terms\">"},"quickWin":true,"impact":1.3},{"id":"security-txt","pillar":"contract","title":"Publishes security.txt","status":"pass","weight":4,"earned":4,"detail":"/.well-known/security.txt is served.","why":"It is the standard machine-readable place to say who to contact. Agents and researchers both look there first.","impact":0}]}],"checks":[{"id":"http-ok","pillar":"reachability","title":"Page responds to a plain HTTP request","status":"pass","weight":10,"earned":10,"detail":"HTTP 200 in 496 ms.","why":"The baseline: an agent with no browser, no cookies and no JavaScript received your page.","impact":0},{"id":"not-blocked","pillar":"reachability","title":"No bot wall in front of the content","status":"pass","weight":12,"earned":12,"detail":"The response body was the real page, not a challenge or block screen.","why":"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.","impact":0},{"id":"server-rendered","pillar":"reachability","title":"Content exists without running JavaScript","status":"pass","weight":14,"earned":14,"detail":"325 words of readable text arrived in the HTML itself.","why":"Most crawling agents never execute JavaScript. Whatever is not in the raw HTML does not exist for them.","impact":0},{"id":"robots-exists","pillar":"reachability","title":"robots.txt is present and parseable","status":"pass","weight":4,"earned":4,"detail":"robots.txt served with 11 user-agent groups.","why":"A valid robots.txt is how you talk to crawlers before they read a single page.","impact":0},{"id":"robots-answer-engines","pillar":"reachability","title":"Answer engines are allowed to crawl","status":"warn","weight":12,"earned":9.6,"detail":"1 of 5 blocked by robots.txt: Amazonbot.","why":"These crawlers are the ones that put your link inside an AI answer. Blocking them removes the referral traffic, not just the training use.","fix":{"summary":"Allow these crawlers explicitly in robots.txt. Indexes you so an assistant can cite and link you. Blocking it removes you from AI answers.","lang":"text","snippet":"User-agent: Amazonbot\nAllow: /","where":"/robots.txt"},"evidence":["Amazonbot (Amazon) - Excluded from Alexa and Rufus style shopping answers."],"quickWin":true,"impact":0.7},{"id":"robots-user-triggered","pillar":"reachability","title":"User-triggered fetchers are allowed","status":"pass","weight":8,"earned":8,"detail":"All 3 crawlers in this group may fetch /.","why":"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.","impact":0},{"id":"robots-search","pillar":"reachability","title":"Classic search crawlers are allowed","status":"pass","weight":6,"earned":6,"detail":"All 2 crawlers in this group may fetch /.","why":"AI Overviews and Copilot answers are grounded on the classic search index. Blocking Googlebot or Bingbot now also removes you from AI surfaces.","impact":0},{"id":"agent-live-probe","pillar":"reachability","title":"Real agent user-agents are served normally","status":"na","weight":8,"earned":8,"detail":"Live user-agent probing was not run for this scan.","why":"Some sites answer 200 to a generic client and 403 to a named AI crawler. Only a live probe finds that.","impact":0},{"id":"meta-robots","pillar":"reachability","title":"No directive suppressing AI use of this page","status":"pass","weight":6,"earned":6,"detail":"Robots directives present and permissive: index,follow,max-image-preview:large","why":"noindex and nosnippet remove you from the surfaces that would otherwise quote and link you.","impact":0},{"id":"redirect-chain","pillar":"reachability","title":"Short redirect chain","status":"pass","weight":4,"earned":4,"detail":"The URL served content directly with no redirect.","why":"Every hop costs latency and some agents cap redirects at two or three.","impact":0},{"id":"response-speed","pillar":"reachability","title":"Responds fast enough for an agent budget","status":"pass","weight":5,"earned":5,"detail":"Full response in 496 ms.","why":"Agents fetch many pages per answer and drop the slow ones. Speed is a ranking input you control.","impact":0},{"id":"payload-weight","pillar":"reachability","title":"HTML payload stays inside an agent context budget","status":"pass","weight":5,"earned":5,"detail":"10 KB of HTML, 0% of it inline script.","why":"Agents truncate long documents. Anything past the cut simply is not read.","impact":0},{"id":"content-type","pillar":"reachability","title":"Declares a correct content type","status":"pass","weight":3,"earned":3,"detail":"Content-Type: text/html; charset=utf-8","why":"A declared charset avoids mojibake when an agent quotes your text back to a user.","impact":0},{"id":"title","pillar":"comprehension","title":"Has a descriptive <title>","status":"pass","weight":10,"earned":10,"detail":"\"Eren Akkoç — Dijital Ürün Geliştirici\" (37 characters).","why":"This is the label assistants attach to you when they cite this page.","impact":0},{"id":"meta-description","pillar":"comprehension","title":"Has a meta description","status":"pass","weight":8,"earned":8,"detail":"72 characters: \"Noralith Labs kurucusu Eren Akkoç'un ürünleri, yaklaşımı ve çalışmaları.\"","why":"This is the summary assistants reuse verbatim more often than any other field.","impact":0},{"id":"h1","pillar":"comprehension","title":"Exactly one <h1> naming the page","status":"pass","weight":8,"earned":8,"detail":"\"Fikirleri, kullanılan ürünlere çeviriyorum.\"","why":"The h1 is the strongest in-page signal of what the document is about.","impact":0},{"id":"heading-hierarchy","pillar":"comprehension","title":"Headings form a sane outline","status":"pass","weight":6,"earned":6,"detail":"8 headings with no skipped levels.","why":"A clean outline is what lets an agent quote the right section instead of the whole page.","impact":0},{"id":"content-volume","pillar":"comprehension","title":"Enough substance to be worth citing","status":"pass","weight":10,"earned":10,"detail":"325 words of readable text.","why":"Assistants prefer sources with enough material to answer a question outright rather than pages that just point elsewhere.","impact":0},{"id":"text-ratio","pillar":"comprehension","title":"Signal-to-markup ratio","status":"pass","weight":8,"earned":8,"detail":"26.4% of the payload is readable text.","why":"A high ratio means an agent spends its limited context on your content instead of your tooling.","impact":0},{"id":"lang","pillar":"comprehension","title":"Declares a document language","status":"pass","weight":5,"earned":5,"detail":"<html lang=\"tr\">","why":"Language is how an assistant decides whether to answer a user in your words or translate them.","impact":0},{"id":"image-alt","pillar":"comprehension","title":"Images carry alt text","status":"pass","weight":8,"earned":8,"detail":"5 of 7 images described; 2 intentionally marked decorative.","why":"Alt text is the only way the content of an image reaches an agent.","impact":0},{"id":"landmarks","pillar":"comprehension","title":"Main content is marked as such","status":"pass","weight":6,"earned":6,"detail":"<main> present with <article>; 4 of 4 landmark regions used.","why":"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.","impact":0},{"id":"semantic-density","pillar":"comprehension","title":"Uses semantic elements, not div soup","status":"pass","weight":6,"earned":6,"detail":"26% of structural elements are semantic (17 semantic vs 48 div).","why":"Semantic tags carry meaning an agent can use; a div carries none.","impact":0},{"id":"noscript-fallback","pillar":"comprehension","title":"Provides a no-JavaScript fallback","status":"na","weight":4,"earned":4,"detail":"Not needed: the page already server-renders its content.","why":"","impact":0},{"id":"readable-url","pillar":"comprehension","title":"URL describes the content","status":"pass","weight":3,"earned":3,"detail":"Site root.","why":"Assistants show the URL next to the citation, and readable URLs get clicked more than opaque ids.","impact":0},{"id":"jsonld-present","pillar":"structure","title":"Ships structured data","status":"fail","weight":12,"earned":0,"detail":"No JSON-LD and no microdata anywhere on the page.","why":"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.","fix":{"summary":"Add a JSON-LD block describing what this page actually is.","lang":"html","where":"Inside <head>, one block per page.","snippet":"<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Organization\",\n  \"name\": \"Your company\",\n  \"url\": \"https://example.com\",\n  \"description\": \"One sentence an assistant can quote.\",\n  \"sameAs\": [\"https://x.com/you\", \"https://github.com/you\"]\n}\n</script>"},"quickWin":true,"impact":6.2},{"id":"jsonld-valid","pillar":"structure","title":"Structured data parses cleanly","status":"na","weight":8,"earned":8,"detail":"No JSON-LD to validate.","why":"","impact":0},{"id":"jsonld-types","pillar":"structure","title":"Structured data describes the right thing","status":"na","weight":8,"earned":8,"detail":"No JSON-LD to evaluate.","why":"","impact":0},{"id":"open-graph","pillar":"structure","title":"Open Graph card is complete","status":"pass","weight":6,"earned":6,"detail":"og:title, og:description, og:type, og:url and og:image all present.","why":"Open Graph is the fallback summary almost every crawler reads when it cannot parse the page body.","impact":0},{"id":"canonical","pillar":"structure","title":"Declares a canonical URL","status":"pass","weight":6,"earned":6,"detail":"Canonical: https://erenakkoc.online/","why":"Agents dedupe sources by canonical URL, and cross-origin canonicals hand your citation to somebody else.","impact":0},{"id":"sitemap","pillar":"structure","title":"Publishes a sitemap","status":"pass","weight":8,"earned":8,"detail":"https://erenakkoc.online/sitemap.xml lists 2 URLs.","why":"A sitemap is how a crawler discovers the pages your navigation hides behind JavaScript menus.","impact":0},{"id":"price-structured","pillar":"structure","title":"Prices are machine-readable","status":"na","weight":6,"earned":6,"detail":"No prices detected in the page text.","why":"","impact":0},{"id":"breadcrumbs","pillar":"structure","title":"Declares its place in the site","status":"na","weight":4,"earned":4,"detail":"Top-level page; breadcrumbs are not expected.","why":"","impact":0},{"id":"twitter-card","pillar":"structure","title":"Declares a link preview card","status":"pass","weight":3,"earned":3,"detail":"4 twitter:* tags present.","why":"Several agents fall back to card metadata when they cannot extract the body reliably.","impact":0},{"id":"microdata","pillar":"structure","title":"Inline microdata annotations","status":"na","weight":2,"earned":2,"detail":"No microdata; JSON-LD is the preferred format anyway.","why":"","impact":0},{"id":"links-crawlable","pillar":"actionability","title":"Navigation uses real links","status":"pass","weight":12,"earned":12,"detail":"All 16 links resolve to a real URL.","why":"Real hrefs are the only navigation primitive an agent has.","impact":0},{"id":"anchor-text","pillar":"actionability","title":"Link text describes the destination","status":"pass","weight":8,"earned":8,"detail":"100% of links have descriptive text.","why":"Link text is how an agent decides which link to follow when it is looking for something specific.","impact":0},{"id":"internal-nav","pillar":"actionability","title":"Links onward into the site","status":"fail","weight":6,"earned":0.75,"detail":"Only 1 internal link on the page.","why":"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.","fix":{"summary":"Add a server-rendered navigation and contextual links to related pages."},"impact":2.2},{"id":"form-labels","pillar":"actionability","title":"Form fields are labelled","status":"na","weight":8,"earned":8,"detail":"No interactive form fields on this page.","why":"","impact":0},{"id":"form-names","pillar":"actionability","title":"Form fields have stable names","status":"na","weight":6,"earned":6,"detail":"No interactive form fields on this page.","why":"","impact":0},{"id":"form-autocomplete","pillar":"actionability","title":"Fields declare autocomplete tokens","status":"na","weight":4,"earned":4,"detail":"No text-like fields on this page.","why":"","impact":0},{"id":"button-semantics","pillar":"actionability","title":"Controls are real buttons","status":"na","weight":6,"earned":6,"detail":"No button-like controls detected.","why":"","impact":0},{"id":"contact-affordance","pillar":"actionability","title":"Reachable by a human, discoverably","status":"warn","weight":5,"earned":2.5,"detail":"Only one weak contact signal found.","why":"\"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.","fix":{"summary":"Add a contactPoint to your Organization schema and link a real contact page.","lang":"json","snippet":"{\"@type\":\"Organization\",\"contactPoint\":[{\"@type\":\"ContactPoint\",\"contactType\":\"customer support\",\"email\":\"support@example.com\",\"url\":\"https://example.com/contact\"}]}"},"quickWin":true,"impact":1},{"id":"search-affordance","pillar":"actionability","title":"Site search is machine-usable","status":"warn","weight":4,"earned":1,"detail":"No crawlable GET search form and no SearchAction.","why":"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.","fix":{"summary":"Expose search at a GET URL like /search?q=… and declare it as a SearchAction."},"quickWin":true,"impact":1.2},{"id":"api-discovery","pillar":"actionability","title":"Programmatic surface is discoverable","status":"warn","weight":6,"earned":0.9,"detail":"No well-known agent manifest, no OpenAPI reference and no developer docs link found.","why":"This is the frontier of AX: sites that publish a machine-callable surface get used by agents directly instead of being scraped approximately.","fix":{"summary":"Publish a minimal agent manifest describing what you offer and where to call it.","where":"/.well-known/mcp.json","lang":"json","snippet":"{\n  \"name\": \"Example\",\n  \"description\": \"What an agent can do with this service.\",\n  \"documentation\": \"https://example.com/docs\",\n  \"endpoints\": [\n    { \"type\": \"openapi\", \"url\": \"https://example.com/openapi.json\" }\n  ]\n}"},"quickWin":true,"impact":2.1},{"id":"llms-txt","pillar":"contract","title":"Publishes an llms.txt","status":"fail","weight":14,"earned":0,"detail":"No /llms.txt or /llms-full.txt at https://erenakkoc.online.","why":"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.","fix":{"summary":"Publish an llms.txt: a title, one paragraph, then curated links grouped by intent.","where":"/llms.txt","lang":"markdown","snippet":"# Example Inc\n\n> One paragraph an assistant can quote verbatim about what you do and who it is for.\n\n## Docs\n- [Quickstart](https://example.com/docs/quickstart): Get running in five minutes.\n- [API reference](https://example.com/docs/api): Every endpoint with examples.\n\n## Product\n- [Pricing](https://example.com/pricing): Plans, limits and exact prices.\n- [Changelog](https://example.com/changelog): What shipped, newest first.\n\n## Policies\n- [Terms](https://example.com/terms)\n- [Contact](https://example.com/contact): support@example.com"},"quickWin":true,"impact":4.7},{"id":"llms-txt-quality","pillar":"contract","title":"llms.txt is actually useful","status":"na","weight":6,"earned":6,"detail":"No llms.txt to evaluate.","why":"","impact":0},{"id":"ai-policy","pillar":"contract","title":"States an explicit AI policy","status":"pass","weight":6,"earned":6,"detail":"robots.txt names specific AI crawlers rather than relying on the wildcard group.","why":"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.","impact":0},{"id":"mcp-manifest","pillar":"contract","title":"Exposes an agent-callable manifest","status":"fail","weight":6,"earned":0,"detail":"No /.well-known/mcp.json and no ai-plugin.json.","why":"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.","fix":{"summary":"Publish a manifest naming what an agent can do with you and where to call it.","where":"/.well-known/mcp.json","lang":"json","snippet":"{\n  \"schema_version\": \"2025-06-18\",\n  \"name\": \"example\",\n  \"description\": \"Search the catalogue and check availability.\",\n  \"documentation\": \"https://example.com/docs\",\n  \"servers\": [\n    { \"type\": \"http\", \"url\": \"https://mcp.example.com\" }\n  ],\n  \"contact\": \"support@example.com\"\n}"},"impact":2},{"id":"identity","pillar":"contract","title":"Identity is machine-verifiable","status":"fail","weight":5,"earned":0,"detail":"No Organization structured data on the page.","why":"Entity resolution is how assistants decide two mentions are the same company. Unresolved entities get merged with, or mistaken for, someone else.","fix":{"summary":"Publish Organization data with sameAs links to your verified profiles.","lang":"json","snippet":"{\"@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\"]}"},"quickWin":true,"impact":1.7},{"id":"freshness","pillar":"contract","title":"Says when the content changed","status":"warn","weight":5,"earned":0,"detail":"No Last-Modified, ETag, dateModified or <time> element anywhere.","why":"Agents deprioritise content they cannot date, and re-fetch undated pages more often, which costs you bandwidth for nothing.","fix":{"summary":"Send Last-Modified and ETag, and publish dateModified in your structured data.","lang":"json","snippet":"{\"@type\":\"Article\",\"datePublished\":\"2026-01-15\",\"dateModified\":\"2026-08-01\"}"},"quickWin":true,"impact":1.7},{"id":"licence-signal","pillar":"contract","title":"Declares content licensing","status":"warn","weight":5,"earned":1,"detail":"No rel=\"license\" link and no license or copyright fields in structured data.","why":"If you care how your content is reused, say so where machines can read it. A footer copyright line is not machine-readable.","fix":{"summary":"Declare the licence on the page and in your structured data.","lang":"html","snippet":"<link rel=\"license\" href=\"https://example.com/terms\">"},"quickWin":true,"impact":1.3},{"id":"security-txt","pillar":"contract","title":"Publishes security.txt","status":"pass","weight":4,"earned":4,"detail":"/.well-known/security.txt is served.","why":"It is the standard machine-readable place to say who to contact. Agents and researchers both look there first.","impact":0}],"agents":[{"name":"OAI-SearchBot","userAgent":"Mozilla/5.0 (compatible; OAI-SearchBot/1.0; +https://openai.com/searchbot)","robotsAllowed":true},{"name":"ChatGPT-User","userAgent":"Mozilla/5.0 (compatible; ChatGPT-User/1.0; +https://openai.com/bot)","robotsAllowed":true},{"name":"GPTBot","userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.2; +https://openai.com/gptbot)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the gptbot group."},{"name":"ClaudeBot","userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the claudebot group."},{"name":"Claude-User","userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Claude-User/1.0; +Claude-User@anthropic.com)","robotsAllowed":true},{"name":"Claude-SearchBot","userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Claude-SearchBot/1.0; +Claude-SearchBot@anthropic.com)","robotsAllowed":true},{"name":"PerplexityBot","userAgent":"Mozilla/5.0 (compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)","robotsAllowed":true},{"name":"Perplexity-User","userAgent":"Mozilla/5.0 (compatible; Perplexity-User/1.0; +https://perplexity.ai/perplexity-user)","robotsAllowed":true},{"name":"Google-Extended","userAgent":"Mozilla/5.0 (compatible; Google-Extended/1.0)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the google-extended group."},{"name":"Googlebot","userAgent":"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)","robotsAllowed":true},{"name":"Bingbot","userAgent":"Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)","robotsAllowed":true},{"name":"Applebot-Extended","userAgent":"Mozilla/5.0 (compatible; Applebot-Extended/1.0)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the applebot-extended group."},{"name":"meta-externalagent","userAgent":"meta-externalagent/1.1 (+https://developers.facebook.com/docs/sharing/webmasters/crawler)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the meta-externalagent group."},{"name":"Amazonbot","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 (compatible; Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the amazonbot group."},{"name":"CCBot","userAgent":"CCBot/2.0 (https://commoncrawl.org/faq/)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the ccbot group."},{"name":"DuckAssistBot","userAgent":"Mozilla/5.0 (compatible; DuckAssistBot/1.0; +https://duckduckgo.com/duckassistbot/)","robotsAllowed":true}],"fetch":{"url":"https://erenakkoc.online/","status":200,"ms":496,"bytes":10442,"contentType":"text/html; charset=utf-8","redirects":[],"headers":{"access-control-allow-origin":"*","alt-svc":"h3=\":443\"; ma=86400","cache-control":"no-store","cf-cache-status":"DYNAMIC","cf-ray":"a314ecceff1d39da-FRA","connection":"keep-alive","content-encoding":"br","content-security-policy":"default-src 'self'; base-uri 'none'; object-src 'none'; script-src 'nonce-guEPuite1Wvthl75aIj4eaRK' 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' https: http:; style-src 'self' 'unsafe-inline' https:; img-src 'self' data: https:; font-src 'self' data: https:; connect-src 'self' https:; frame-src https:; form-action 'self'; frame-ancestors 'none'; media-src 'none'; worker-src 'none'; manifest-src 'self'; upgrade-insecure-requests","content-type":"text/html; charset=utf-8","cross-origin-resource-policy":"same-site","date":"Wed, 26 Aug 2026 18:33:28 GMT","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","origin-agent-cluster":"?1","permissions-policy":"accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=()","referrer-policy":"strict-origin-when-cross-origin","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=nj5DkM%2FSKeM9lIYJTqApII1TnuWczW1AfD7AN5Mnsx%2BcpJrrApuwsuWdjV9yStKBPIlQ4rwu9sUcZaxK7dR9N4RAj7r5DMcV5DC0p7wTCK44h%2F6pDRY5EMSvdberppAvRBgL\"}]}","server":"cloudflare","strict-transport-security":"max-age=31536000","transfer-encoding":"chunked","vary":"accept-encoding","x-content-type-options":"nosniff","x-dns-prefetch-control":"off","x-frame-options":"DENY","x-permitted-cross-domain-policies":"none","x-xss-protection":"0"},"ok":true,"blocked":false},"facts":{"title":"Eren Akkoç — Dijital Ürün Geliştirici","metaDescription":"Noralith Labs kurucusu Eren Akkoç'un ürünleri, yaklaşımı ve çalışmaları.","lang":"tr","canonical":"https://erenakkoc.online/","wordCount":325,"textRatio":0.2641256464278874,"looksClientRendered":false,"frameworkHints":[],"scriptBytes":0,"htmlBytes":10442},"site":{"origin":"https://erenakkoc.online","robotsTxt":{"found":true,"status":200,"body":"# As a condition of accessing this website, you agree to abide by the following\n# content signals:\n\n# (a)  If a Content-Signal = yes, you may collect content for the corresponding\n#      use.\n# (b)  If a Content-Signal = no, you may not collect content for the\n#      corresponding use.\n# (c)  If the website operator does not include a Content-Signal for a\n#      corresponding use, the website operator neither grants nor restricts\n#      permission via Content-Signal with respect to the corresponding use.\n\n# The content signals and their meanings are:\n\n# search:   building a search index and providing search results (e.g., returning\n#           hyperlinks and short excerpts from your website's contents). Search does not\n#           include providing AI-generated search summaries.\n# ai-input: inputting content into one or more AI models (e.g., retrieval\n#           augmented generation, grounding, or other real-time taking of content for\n#           generative AI search answers).\n# ai-train: training or fine-tuning AI models.\n# use:      how AI systems may consume the content (immediate, reference, or full).\n\n# ANY RESTRICTIONS EXPRESSED VIA CONTENT SIGNALS ARE EXPRESS RESERVATIONS OF\n# RIGHTS UNDER ARTICLE 4 OF THE EUROPEAN UNION DIRECTIVE 2019/790 ON COPYRIGHT\n# AND RELATED RIGHTS IN THE DIGITAL SINGLE MARKET.\n\n# BEGIN Cloudflare Managed content\n\nUser-agent: *\nContent-Signal: search=yes,ai-train=no,use=reference\nAllow: /\n\nUser-agent: Amazonbot\nDisallow: /\n\nUser-agent: Applebot-Extended\nDisallow: /\n\nUser-agent: Bytespider\nDisallow: /\n\nUser-agent: CCBot\nDisallow: /\n\nUser-agent: ClaudeBot\nDisallow: /\n\nUser-agent: CloudflareBrowserRenderingCrawler\nDisallow: /\n\nUser-agent: Google-Extended\nDisallow: /\n\nUser-agent: GPTBot\nDisallow: /\n\nUser-agent: meta-externalagent\nDisallow: /\n\n# END Cloudflare Managed Content\n\nUser-agent: *\nAllow: /\nSitemap: https://erenakkoc.online/sitemap.xml\n","sitemaps":["https://erenakkoc.online/sitemap.xml"]},"sitemap":{"found":true,"status":200,"urlCount":2,"url":"https://erenakkoc.online/sitemap.xml"},"llmsTxt":{"found":false,"status":404,"body":"","url":"https://erenakkoc.online/llms.txt","sectionCount":0,"linkCount":0},"feeds":[],"wellKnown":{"/.well-known/security.txt":{"found":true,"status":200},"/.well-known/ai-plugin.json":{"found":false,"status":404},"/.well-known/mcp.json":{"found":false,"status":404},"/.well-known/apple-app-site-association":{"found":false,"status":404},"/.well-known/agent.json":{"found":false,"status":404}},"openapi":[],"mcp":{"found":false,"url":"https://erenakkoc.online/.well-known/mcp.json"}},"priorities":[{"id":"jsonld-present","pillar":"structure","title":"Ships structured data","status":"fail","weight":12,"earned":0,"detail":"No JSON-LD and no microdata anywhere on the page.","why":"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.","fix":{"summary":"Add a JSON-LD block describing what this page actually is.","lang":"html","where":"Inside <head>, one block per page.","snippet":"<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Organization\",\n  \"name\": \"Your company\",\n  \"url\": \"https://example.com\",\n  \"description\": \"One sentence an assistant can quote.\",\n  \"sameAs\": [\"https://x.com/you\", \"https://github.com/you\"]\n}\n</script>"},"quickWin":true,"impact":6.2},{"id":"llms-txt","pillar":"contract","title":"Publishes an llms.txt","status":"fail","weight":14,"earned":0,"detail":"No /llms.txt or /llms-full.txt at https://erenakkoc.online.","why":"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.","fix":{"summary":"Publish an llms.txt: a title, one paragraph, then curated links grouped by intent.","where":"/llms.txt","lang":"markdown","snippet":"# Example Inc\n\n> One paragraph an assistant can quote verbatim about what you do and who it is for.\n\n## Docs\n- [Quickstart](https://example.com/docs/quickstart): Get running in five minutes.\n- [API reference](https://example.com/docs/api): Every endpoint with examples.\n\n## Product\n- [Pricing](https://example.com/pricing): Plans, limits and exact prices.\n- [Changelog](https://example.com/changelog): What shipped, newest first.\n\n## Policies\n- [Terms](https://example.com/terms)\n- [Contact](https://example.com/contact): support@example.com"},"quickWin":true,"impact":4.7},{"id":"internal-nav","pillar":"actionability","title":"Links onward into the site","status":"fail","weight":6,"earned":0.75,"detail":"Only 1 internal link on the page.","why":"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.","fix":{"summary":"Add a server-rendered navigation and contextual links to related pages."},"impact":2.2},{"id":"api-discovery","pillar":"actionability","title":"Programmatic surface is discoverable","status":"warn","weight":6,"earned":0.9,"detail":"No well-known agent manifest, no OpenAPI reference and no developer docs link found.","why":"This is the frontier of AX: sites that publish a machine-callable surface get used by agents directly instead of being scraped approximately.","fix":{"summary":"Publish a minimal agent manifest describing what you offer and where to call it.","where":"/.well-known/mcp.json","lang":"json","snippet":"{\n  \"name\": \"Example\",\n  \"description\": \"What an agent can do with this service.\",\n  \"documentation\": \"https://example.com/docs\",\n  \"endpoints\": [\n    { \"type\": \"openapi\", \"url\": \"https://example.com/openapi.json\" }\n  ]\n}"},"quickWin":true,"impact":2.1},{"id":"mcp-manifest","pillar":"contract","title":"Exposes an agent-callable manifest","status":"fail","weight":6,"earned":0,"detail":"No /.well-known/mcp.json and no ai-plugin.json.","why":"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.","fix":{"summary":"Publish a manifest naming what an agent can do with you and where to call it.","where":"/.well-known/mcp.json","lang":"json","snippet":"{\n  \"schema_version\": \"2025-06-18\",\n  \"name\": \"example\",\n  \"description\": \"Search the catalogue and check availability.\",\n  \"documentation\": \"https://example.com/docs\",\n  \"servers\": [\n    { \"type\": \"http\", \"url\": \"https://mcp.example.com\" }\n  ],\n  \"contact\": \"support@example.com\"\n}"},"impact":2},{"id":"freshness","pillar":"contract","title":"Says when the content changed","status":"warn","weight":5,"earned":0,"detail":"No Last-Modified, ETag, dateModified or <time> element anywhere.","why":"Agents deprioritise content they cannot date, and re-fetch undated pages more often, which costs you bandwidth for nothing.","fix":{"summary":"Send Last-Modified and ETag, and publish dateModified in your structured data.","lang":"json","snippet":"{\"@type\":\"Article\",\"datePublished\":\"2026-01-15\",\"dateModified\":\"2026-08-01\"}"},"quickWin":true,"impact":1.7},{"id":"identity","pillar":"contract","title":"Identity is machine-verifiable","status":"fail","weight":5,"earned":0,"detail":"No Organization structured data on the page.","why":"Entity resolution is how assistants decide two mentions are the same company. Unresolved entities get merged with, or mistaken for, someone else.","fix":{"summary":"Publish Organization data with sameAs links to your verified profiles.","lang":"json","snippet":"{\"@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\"]}"},"quickWin":true,"impact":1.7},{"id":"licence-signal","pillar":"contract","title":"Declares content licensing","status":"warn","weight":5,"earned":1,"detail":"No rel=\"license\" link and no license or copyright fields in structured data.","why":"If you care how your content is reused, say so where machines can read it. A footer copyright line is not machine-readable.","fix":{"summary":"Declare the licence on the page and in your structured data.","lang":"html","snippet":"<link rel=\"license\" href=\"https://example.com/terms\">"},"quickWin":true,"impact":1.3},{"id":"search-affordance","pillar":"actionability","title":"Site search is machine-usable","status":"warn","weight":4,"earned":1,"detail":"No crawlable GET search form and no SearchAction.","why":"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.","fix":{"summary":"Expose search at a GET URL like /search?q=… and declare it as a SearchAction."},"quickWin":true,"impact":1.2},{"id":"contact-affordance","pillar":"actionability","title":"Reachable by a human, discoverably","status":"warn","weight":5,"earned":2.5,"detail":"Only one weak contact signal found.","why":"\"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.","fix":{"summary":"Add a contactPoint to your Organization schema and link a real contact page.","lang":"json","snippet":"{\"@type\":\"Organization\",\"contactPoint\":[{\"@type\":\"ContactPoint\",\"contactType\":\"customer support\",\"email\":\"support@example.com\",\"url\":\"https://example.com/contact\"}]}"},"quickWin":true,"impact":1},{"id":"robots-answer-engines","pillar":"reachability","title":"Answer engines are allowed to crawl","status":"warn","weight":12,"earned":9.6,"detail":"1 of 5 blocked by robots.txt: Amazonbot.","why":"These crawlers are the ones that put your link inside an AI answer. Blocking them removes the referral traffic, not just the training use.","fix":{"summary":"Allow these crawlers explicitly in robots.txt. Indexes you so an assistant can cite and link you. Blocking it removes you from AI answers.","lang":"text","snippet":"User-agent: Amazonbot\nAllow: /","where":"/robots.txt"},"evidence":["Amazonbot (Amazon) - Excluded from Alexa and Rufus style shopping answers."],"quickWin":true,"impact":0.7}],"summary":"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."}