The Plain Fetch viewer
In short
The viewer requests a URL the way a plain-fetch agent does: no JavaScript, one request for HTML, one for markdown, one for llms.txt and one for a path that should not exist. It shows the initial HTML on the left, the readable text on the right, and seven flags underneath.
Pre-loaded with www.wikipedia.org, read 4 November 2026. Type any public URL to run your own.
The page answers a plain fetch: 6 of 7 checks found.
Initial HTML what a plain fetch receives
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
[... 2 more head elements folded ...]
<meta name="viewport" content="width=device-width, initial-scale=1">
[... 23 more head elements folded ...]
<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
<link rel="alternate" href="https://www.forter.com/" hreflang="en" />
<link rel="alternate" href="https://www.forter.com/de/" hreflang="de" />
<link rel="alternate" href="https://www.forter.com/cn/" hreflang="zh" />
<link rel="alternate" href="https://www.forter.com/ja/" hreflang="ja" />
<link rel="alternate" href="https://www.forter.com/fr/" hreflang="fr" />
[... 1 more head element folded ...]
<title>Forter – Fraud Prevention, Payment Optimization and Agentic Commerce</title>
[... 8 more head elements folded ...]
<meta name="description" content="AI powered fraud, abuse, and payment decisions — so your best customers feel less friction, and you leave no revenue behind." />
<link rel="canonical" href="https://www.forter.com/" />
[... 23 more head elements folded ...]
<link rel="alternate" type="text/markdown" href="/index.md" />
[... 36 more head elements folded ...]
<meta name="generator" content="WP Rocket 3.23.5.1" data-wpr-features="wpr_delay_js wpr_defer_js wpr_minify_js wpr_lazyload_iframes wpr_preconnect_external_domains wpr_oci wpr_image_dimensions wpr_minify_css wpr_cdn wpr_desktop" />
</head>
<body class="home wp-singular page-template-default page page-id-15703 wp-embed-responsive wp-theme-blank">
<!-- Google Tag Manager (noscript) -->
<noscript>[... 139 characters folded ...]</noscript>
<!-- End Google Tag Manager (noscript) -->
<div id="page" class="site">
<header class="sticky top-0 z-[9999]">
<div class="hidden xl:block bg-[#002547] text-white text-xs sm:text-sm">
<div class="container !p-4 flex items-center gap-4 justify-evenly">
<div class="font-bold font-secondary md:text-base">
AI Assistants are already ordering from your site. Here’s what our data shows </div>
<a href="https://www.forter.com/blog/forter-com-blog-ai-assistants-agentic-checkout/" class="shrink-0 uppercase text-forter-blue-3 hover:text-white">
Read More <i class="arrow-new border-current duration-[0ms]"></i>
</a>
</div>
</div>
<div
class="nav lg-max:bg-white duration-300"
:class="{ 'nav-scrolled': $store.navIsScrolled }"
x-data="nav"
@scroll.window.throttle.100ms="checkScroll"
@scroll.wi [... 93 characters folded ...]>
<div class="px-4 flex items-center justify-between h-16 xl:h-20">
<a href="https://www.forter.com/" class="nav-logo duration-[0ms] xl:w-[18rem]">
<svg viewBox="0 0 500 94.66027" width="120" fill="currentColor">[... 6,612 characters folded ...]</svg>
<span class="sr-only">Forter</span>
</a>
<div class="lg-max:hidden lg-max:absolute lg-max:top-full lg-max:left-0 lg-max:w-full lg-max:bg-white lg-max:shadow-md" :class="{ 'lg-max:!block': open }">
<ul class="xl:flex list-none m-0">
<li class="nav-trigger xl:-mb-8 xl:pb-8 relative lg-max:p-2 xl:px-3 lg-max:border-solid lg-max:border-0 lg-max:border-b lg-max:border-forter-gray-2">
<a href="#" class="nav-link relative" @click.prevent='toggleDropdown("solutions")'>
Solutions
<div class="xl:hidden absolute top-4 right-4 border-solid border-transparent border-t-current border-4"></div>
</a>
<div class="nav-mega text-xs duration-150 origin-top-left xl:absolute xl:top-full xl:-left-40 xl:bg-white xl:shadow-md" :class="{ 'lg-max:hidden': dropdown !== 'solutions' }">
<div class="lg-max:hidden absolute -top-4 left-[13.25rem] border-solid border-transparent border-b-white border-8"></div>
<div class="xl:flex xl:divide-x xl:divide-forter-gray-2 xl:divide-solid">
<div class="xl:p-4 border-y-0 xl:w-[23rem]">
<div>
<div class="px-2 xl:px-4 pt-2 pb-2 xl:pt-4 uppercase text-[.8rem] tracking-[.08em] font-semibold text-[#596C95]">AI</div>
<ul class="m-0 list-none xl:grid-cols-1">
<li>
<a href="/agents/" class="nav-dropdown-item flex items-start p-2 gap-2 xl:p-4 xl:gap-4 text-forter-navy" @click="window.location = '/agents/'">
<div class="nav-icon w-6 h-6 xl:w-9 xl:h-9 shrink-0">
<svg width="87" height="87" viewBox="0 0 87 87" fill="none" xmlns="http://www.w3.org/2000/svg">[... 13,594 characters folded ...]</svg>
</div>
<div>
<div class="text-sm font-semibold lg-max:leading-6 xl:leading-tight">Forter Agents</div>
<div class="lg-max:hidden mt-1">Spend more time on what actually matters and let our team of agents handle the tedious workflows that get in the way.</div>
</div>
</a>
</li>
<li>
<a href="/agentic-commerce/" class="nav-dropdown-item flex items-start p-2 gap-2 xl:p-4 xl:gap-4 text-forter-navy" @click="window.location = '/agentic-commerce/'">
<div class="nav-icon w-6 h-6 xl:w-9 xl:h-9 shrink-0">
<svg width="87" height="87" viewBox="0 0 87 87" fill="none" xmlns="http://www.w3.org/2000/svg">[... 13,594 characters folded ...]</svg>
</div>
<div>
<div class="text-sm font-semibold lg-max:leading-6 xl:leading-tight">Agentic Commerce</div>
<div class="lg-max:hidden mt-1">Know the human behind the agent so you can approve confidently and stay ahead of the shift to agentic commerce.</div>
</div>
</a>
</li>
</ul>
</div>
</div>
<div class="xl:p-4 border-y-0 xl:w-[42rem]">
<div>
<div class="px-2 xl:px-4 pt-2 pb-2 xl:pt-4 uppercase text-[.8rem] tracking-[.08em] font-semibold text-[#596C95]">Products</div>
<ul class="m-0 list-none xl:grid xl:grid-cols-2 limit-li">
<li>
<a href="/platform/fraud-management/" class="nav-dropdown-item flex items-start p-2 gap-2 xl:p-4 xl:gap-4 text-forter-navy" @click="window.location = '/platform/fraud-management/'">
<div class="nav-icon w-6 h-6 xl:w-9 xl:h-9 shrink-0">
<svg height="36" viewBox="0 0 36 36" width="36" xmlns="http://www.w3.org/2000/svg">[... 418 characters folded ...]</svg> </div>
<div>
<div class="text-sm font-semibold lg-max:leading-6 xl:leading-tight">Fraud Management</div>
<div class="lg-max:hidden mt-1">Fight fraud, increase approvals, reduce chargebacks</div>
</div>
</a>
</li>
<li>
<a href="/platform/payment-optimization/" class="nav-dropdown-item flex items-start p-2 gap-2 xl:p-4 xl:gap-4 text-forter-navy" @click="window.location = '/platform/payment-optimization/'">
<div class="nav-icon w-6 h-6 xl:w-9 xl:h-9 shrink-0">
<svg height="36" viewBox="0 0 36 36" width="36" xmlns="http://www.w3.org/2000/svg">[... 558 characters folded ...]</svg> </div>
<div>
<div class="text-sm font-semibold lg-max:leading-6 xl:leading-tight">Payment Optimization</div>
<div class="lg-max:hidden mt-1">Minimize friction, maximize conversions, maintain PSD2 compliance</div>
</div>
</a>
</li>
<li>
<a href="/platform/dispute-management/" class="nav-dropdown-item flex items-start p-2 gap-2 xl:p-4 xl:gap-4 text-forter-navy" @click="window.location = '/platform/dispute-management/'">
<div class="nav-icon w-6 h-6 xl:w-9 xl:h-9 shrink-0">
<svg height="36" viewBox="0 0 36 36" width="36" xmlns="http://www.w3.org/2000/svg">[... 755 characters folded ...]</svg> </div>
<div>
<div class="text-sm font-semibold lg-max:leading-6 xl:leading-tight">Dispute Management</div>
<div class="lg-max:hidden mt-1">Automate disputes, streamline operations, improve win rates</div>
</div>
</a>
</li>
<li>
<a href="/platform/account-protection/" class="nav-dropdown-item flex items-start p-2 gap-2 xl:p-4 xl:gap-4 text-forter-navy" @click="window.location = '/platform/account-protection/'">
Shown with 116 long blocks (scripts, styles, long tags) folded into a marker that says how many characters they hide; the pane stops after the first 200 words; the page is 288 KB.
Reading view the text a plain-fetch client can extract
title: Forter – Fraud Prevention, Payment Optimization and Agentic Commerce
Turn trust into growth
AI Assistants are already ordering from your site. Here’s what our data shows Read More Forter Solutions AI Forter Agents Spend more time on what actually matters and let our team of agents handle the tedious workflows that get in the way. Agentic Commerce Know the human behind the agent so you can approve confidently and stay ahead of the shift to agentic commerce. Products Fraud Management Fight fraud, increase approvals, reduce chargebacks Payment Optimization Minimize friction, maximize conversions, maintain PSD2 compliance Dispute Management Automate disputes, streamline operations, improve win rates Account Protection Stop ATO, block fake accounts, protect account integrity Abuse Prevention Identify and stop policy abuse to protect revenue and customer experience Forter Element for PSP's Built for payment service providers to offer their customers differentiated value Resources Featured Insights Digital Insights Curated resources focused on customer experience and digital trends Fraud Insights Curated resources focused on fraud prevention tactics and analysis Payment Insights Curated resources focused on the payments ecosystem and best practices Resources Blog Get the latest on fraud prevention and digital commerce Events Join Forter at upcoming events Resource Center Explore insights and best practices from Forter experts and customers IMPACT Conference A community where
1079 more words follow in the initial HTML.
| Check | Result | Detail |
|---|---|---|
| H1 in the initial HTML | Found one H1 | First H1: Turn trust into growth |
| First 200 words in the initial HTML | Found 200 of 200 words | The initial HTML carries 1279 words of visible text; the first 200 are marked in the left pane. |
| llms.txt present and linked | Found present and linked | 20831 bytes, 82 links. Structure grade A (6 of 6). The home page links it, which is how agents reached it in Ora's lab. |
| Markdown on request | Missing 200 text/html | Accept: text/markdown returned 200 with text/html; charset=UTF-8. The server ignores the header. |
| Status of a made-up path | Found 404 | /agent-ready-html-missing-path-check returned 404: a real status code for a missing page. |
| JSON-LD types | Found AggregateRating, Answer, BreadcrumbList, BusinessAudience and 25 more | 29 schema.org types in JSON-LD blocks on the home page: AggregateRating, Answer, BreadcrumbList, BusinessAudience, ContactPoint, EducationalOccupationalCredential, EntryPoint, FAQPage, ImageObject, ItemList, ListItem, Offer, OfferCatalog, Organization, Person, Place, PostalAddress, Product, QuantitativeValue, Question, Rating, ReadAction, RegisterAction, Review, Service, SoftwareApplication, SpeakableSpecification, WebPage, WebSite. |
| OpenAPI link | Found linked | The home page links an OpenAPI file. 97 percent of openapi.json fetches in Ora's lab arrived through a link. |
Run the full check
The viewer read one page with four requests. The full check we recommend next is Ora's scan. Its Access layer runs 42 checks worth 30 of its 100 points, among them content without JavaScript, bot detection, llms.txt, markdown on request, JSON-LD and the sitemap (Ora's check catalogue, contract 1.38.0, read 5 November 2026). Open Ora's report for forter.com.
Limits: Ora reads public URLs only, says two runs of one scan land within a couple of points without publishing repeat-scan data, and keeps the product that fixes what it finds behind a waitlist. Cloudflare's scanner at isitagentready.com is a quick free alternative, and Mintlify's score covers documentation.
What the viewer does
It sends four plain GET requests with the user agent Mozilla/5.0 (compatible; agent-readiness-crawl/1.0): the URL itself, the same URL with Accept: text/markdown, /llms.txt on the same host, and a made-up path at the root. It runs no JavaScript. The left pane is the first bytes of the HTML as text, with long scripts and styles folded into a marker that says how many characters they hide. The H1 and the first 200 words of visible text are marked in both panes. The flags under the panes say what the four responses added up to.
Limits
- Ten seconds for all four requests together, 1.5 MB read from the home page, at most five redirects, each one checked again.
- http and https only, default ports only. Private, local and internal addresses and names are refused.
- Ten runs per address per minute. The counter lives in memory on the edge function, so it is per instance rather than global. Past ten you get a 429 with a Retry-After header.
- Results are cached for 24 hours by the response headers. Nothing is written to a database: the viewer keeps the first 200 words and the extracted fields for the length of the request and keeps no page body beyond that.
What it does not tell you
A plain fetch from this server is not a real agent. Bot protection weighs the source address more than the user agent, so a page that answers 200 here can still refuse an agent, and the reverse. Ora's lab found (2026-10-19) that returning 403 to agent user agents and hiding the answer in JavaScript were the only two of 19 configurations that stopped retrieval; the viewer can see the second, and can only hint at the first. The initial HTML reference covers both. The server logs and the published crawler address ranges settle the first.
The seven flags
- H1 in the initial HTML
- Whether the HTML the server sends already contains an H1. It is the cheapest sign that the page does not depend on scripts to say what it is.
- First 200 words in the initial HTML
- Whether at least 200 words of visible text arrive in the initial HTML. Under 40 words with an app root element is flagged as a JavaScript shell.
- llms.txt present and linked
- Whether /llms.txt answers with a plain-text file, whether the home page links it (an anchor, a link element or a Link header), and the structure grade the index uses.
- Markdown on request
- Whether a request with Accept: text/markdown comes back as text/markdown. Cloudflare Radar found 3.9 percent of scanned top sites passing this at its April 2026 launch.
- Status of a made-up path
- Whether a path that should not exist returns 404 or 410. A 200 is a soft 404 and reads as a live page.
- JSON-LD types
- The schema.org types found in JSON-LD blocks on the page. Ora's lab found JSON-LD made no difference when the answer was already in the HTML.
- OpenAPI link
- Whether the page links an OpenAPI file, by an anchor or a service-desc link relation. It matters only for a site that ships an API.
Sources
- Ora: AgentReady launch post (Ora's lab findings) https://ora.ai/blog/agentready-launch, read 4 November 2026
- Ora check catalogue, contract 1.38.0 (132 checks, 42 in the Access layer) https://ora.ai/api/checks, read 5 November 2026
- Ora home page (the fixing product is behind a waitlist) https://ora.ai/, read 5 November 2026
- Ora: Introducing Deep Scan (repeat scans) https://ora.ai/blog/introducing-deep-scan, read 5 November 2026
- Ora llms.txt (public URLs only) https://ora.ai/llms.txt, read 5 November 2026
- Vercel: Make your site readable by AI agents https://vercel.com/kb/guide/make-your-site-readable-by-ai-agents, read 4 November 2026
- llms.txt proposal (llmstxt.org) https://llmstxt.org/, read 4 November 2026
Last reviewed 5 November 2026