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: 3 of 6 checks found.
Initial HTML what a plain fetch receives
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charSet="utf-8" data-next-head=""/>
[... 1 more head element folded ...]
<meta name="viewport" content="width=device-width, initial-scale=1" data-next-head=""/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" data-next-head=""/>
[... 17 more head elements folded ...]
<title data-next-head="">Meetup | Find Local Groups, Events, and Activities Near You
</title>
<meta name="description" content="Find Meetup events, join groups, or start your own. Make new friends and connect with like-minded people. Meet people near you who share your interests." data-next-head=""/>
[... 25 more head elements folded ...]
<meta name="robots" content="index, follow" data-next-head=""/>
<link rel="alternate" hrefLang="en-AU" href="https://www.meetup.com/en-AU/" data-next-head=""/>
<link rel="alternate" hrefLang="de-DE" href="https://www.meetup.com/de-DE/" data-next-head=""/>
<link rel="alternate" hrefLang="es" href="https://www.meetup.com/es/" data-next-head=""/>
<link rel="alternate" hrefLang="es-ES" href="https://www.meetup.com/es-ES/" data-next-head=""/>
<link rel="alternate" hrefLang="fr-FR" href="https://www.meetup.com/fr-FR/" data-next-head=""/>
<link rel="alternate" hrefLang="it-IT" href="https://www.meetup.com/it-IT/" data-next-head=""/>
<link rel="alternate" hrefLang="ja-JP" href="https://www.meetup.com/ja-JP/" data-next-head=""/>
<link rel="alternate" hrefLang="ko-KR" href="https://www.meetup.com/ko-KR/" data-next-head=""/>
<link rel="alternate" hrefLang="nl-NL" href="https://www.meetup.com/nl-NL/" data-next-head=""/>
<link rel="alternate" hrefLang="pl-PL" href="https://www.meetup.com/pl-PL/" data-next-head=""/>
<link rel="alternate" hrefLang="pt-BR" href="https://www.meetup.com/pt-BR/" data-next-head=""/>
<link rel="alternate" hrefLang="ru-RU" href="https://www.meetup.com/ru-RU/" data-next-head=""/>
<link rel="alternate" hrefLang="th-TH" href="https://www.meetup.com/th-TH/" data-next-head=""/>
<link rel="alternate" hrefLang="tr-TR" href="https://www.meetup.com/tr-TR/" data-next-head=""/>
<link rel="alternate" hrefLang="x-default" href="https://www.meetup.com/" data-next-head=""/>
<link rel="canonical" href="https://www.meetup.com/" data-next-head=""/>
[... 47 more head elements folded ...]
</head>
<body class="font-body antialiased">
<script>0
</script>
<div id="__next">
<noscript>[... 188 characters folded ...]
</noscript>
<noscript id="google-tag-manager">[... 150 characters folded ...]
</noscript> <!-- -->
<div role="status" aria-live="polite" class="sr-only">
</div>
<section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false">
</section>
<div class=""><a class="text-viridian bg-white sr-only focus:not-sr-only active:not-sr-only focus:fixed active:fixed focus:top-1 active:top-1 focus:left-1 active:left-1 focus:z-[100] active:z-[100] focus:p-2 active:p-2 focus:underline [... 133 characters folded ...]>Skip to content</a>
<div id="a11y-announcement">
</div>
<div class="flex min-h-screen flex-col" id="page" data-event-category="homepageLoggedOut">
<header id="app-header" class="top-0 z-50 mb-ds2-40 xs:mb-0" style="background-color:var(--background-color)" data-event-label="Header">
<div class="peer relative z-50 flex items-center justify-between rounded-b-ds2-24 rounded-t-none px-ds2-40 pb-ds2-16 pt-ds2-20 has-[input:focus]:bg-ds2-surface-fill-primary-enabled">
<div class="group flex w-full items-center gap-ds2-32 self-stretch">
<div class="flex flex-1 items-center gap-ds2-48">
<div class="relative shrink-0">
<div class="peer transition-opacity duration-300 hover:opacity-0"><a class="hover:no-underline" href="https://www.meetup.com/">
<div style="color:#FF4A79;width:125px;height:34px">
</div></a>
</div>
<div class="pointer-events-none absolute inset-0 z-0 flex items-center justify-center opacity-0 transition-opacity duration-300 peer-hover:opacity-100"><button class="inline-flex items-center justify-center rounded-ds2-max max-w-full relative select-none data-[disabled=false]:active:scale-98 transition-all duration-150 before:absolute before:rounded-ds2-max before:z-0 b [... 560 characters folded ...]><span class="relative z-10 flex min-w-0 max-w-full items-center justify-center" style="gap:inherit"><span class="relative z-10 flex min-w-0 max-w-full items-center justify-center truncate" style="gap:inherit">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.146625258399798" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-house flex-shrink-0" aria-hidden="true">[... 179 characters folded ...]
</svg><span class="min-w-0 max-w-full truncate px-ds2-2">Homepage</span></span></span></button>
</div>
</div>
<form id="search-form" class="flex-1 outline-none w-full max-w-[500px] transition-all duration-150 has-[input:focus]:max-w-[600px]">
<div class="flex gap-ds2-2 rounded-full bg-ds2-main_search_input-base-fill-primary-enabled p-ds2-4 shadow-ds2-shadow-main-search-input-base-primary-enabled has-[:focus]:bg-ds2-main_search_input-base-fill-primary-active has-[:focus]:shadow-none">
<div class="group/locationInputContainer relative flex flex-1 rounded-full py-ds2-8 pl-ds2-16 hover:bg-ds2-main_search_input-base-fill-secondary-hover has-[:focus]:bg-ds2-main_search_input-base-fill-secondary-active has- [... 107 characters folded ...]><input id="keyword-bar-in-search" data-testid="search-events-input" name="keywords" placeholder="Search events..." aria-label="Search events..." autoComplete="off" class="placeholder:text-ds2-input-text-field-fill-enable [... 293 characters folded ...]><input id="hidden-location-search-submit" data-testid="hidden-location-search-submit" type="submit" class="sr-only absolute -left-[384px] sm:hidden" value="Submit"/><button class="items-center justify-center rounded-full transition-all select-none after:absolute after:-inset-ds2-6 after:rounded-full after:transition-all disabled:after:bg-transparent disabled:active:scale-100 active: [... 225 characters folded ...]>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6099689437998486" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x [... 121 characters folded ...]><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path>
</svg></button>
</div>
<div class="relative flex flex-1 rounded-full py-ds2-8 pl-ds2-16 hover:bg-ds2-main_search_input-base-fill-secondary-hover has-[:focus]:bg-ds2-main_search_input-base-fill-secondary-active has-[:focus]:shadow-ds2-shadow-main-search-input-base-secondary-active">
<div class="group/eventsInputContainer relative flex w-full" data-testid="SearchTypeahead" role="combobox" aria-haspopup="listbox" aria-owns="location-typeahead-header-search-menu" aria-expanded="false"><input tabindex="0" placeholder="Neighborhood, city or zip" aria-label="Search for location by city or zip code" data-element-name="header-search" data-event-label="Location search variant2" aria-expanded="false" aria-au [... 403 characters folded ...]><button class="relative inline-flex items-center justify-center rounded-full transition-all select-none after:absolute after:-inset-ds2-6 after:rounded-full after:transition-all disabled:after:bg-transparent disabled:act [... 209 characters folded ...]>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6099689437998486" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x [... 121 characters folded ...]><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path>
</svg></button>
</div>
</div>
<div class="flex items-center self-stretch pl-[14px]"><button class="inline-flex items-center justify-center rounded-ds2-max max-w-full min-w-0 select-none data-[disabled=false]:active:scale-98 data-[disabled=true]:cursor-not-allowed data-[disabled=true]:pointer-events-none [... 1291 characters folded ...]><span class="relative z-10 flex min-w-0 max-w-full items-center justify-center overflow-hidden" style="gap:inherit"><span class="flex min-w-0 max-w-full items-center justify-center overflow-hidden" style="gap:inherit">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.146625258399798" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search shrink-0" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle>
</svg></span></span></button>
</div>
</div>
</form>
</div>
<div class="flex items-center gap-ds2-40">
<div class="flex items-center gap-ds2-20">
<div data-event-category="Top Nav - Language" class="flex items-center"><button class="inline-flex items-center justify-center rounded-ds2-max max-w-full relative select-none data-[disabled=false]:active:scale-98 transition-all duration-150 before:absolute before:rounded-ds2-max before:z-0 b [... 604 characters folded ...]><span class="relative z-10 flex min-w-0 max-w-full items-center justify-center" style="gap:inherit"><span class="relative z-10 flex min-w-0 max-w-full items-center justify-center truncate" style="gap:inherit">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.007984063681781" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-globe flex-shrink-0" aria-hidden="true">[... 131 characters folded ...]
</svg><span class="min-w-0 max-w-full truncate px-ds2-2">English</span></span></span></button>
</div>
<div class="flex items-center gap-ds2-20"><button class="inline-flex items-center justify-center rounded-ds2-max max-w-full relative select-none data-[disabled=false]:active:scale-98 transition-all duration-150 before:absolute before:rounded-ds2-max before:z-0 b [... 636 characters folded ...]><span class="relative z-10 flex min-w-0 max-w-full items-center justify-center" style="gap:inherit"><span class="relative z-10 flex min-w-0 max-w-full items-center justify-center truncate" style="gap:inherit"><span class="min-w-0 max-w-full truncate px-ds2-2">Log in</span></span></span></button><button class="inline-flex items-center justify-center rounded-ds2-max max-w-full min-w-0 select-none data-[disabled=false]:active:scale-98 data-[disabled=true]:cursor-not-allowed data-[disabled=true]:pointer-events-none [... 1225 characters folded ...]><span class="relative z-10 flex min-w-0 max-w-full items-center justify-center overflow-hidden" style="gap:inherit"><span class="flex min-w-0 max-w-full items-center justify-center overflow-hidden" style="gap:inherit"><span class="flex min-w-0 max-w-full flex-col items-center justify-center overflow-hidden"><span class="block min-w-0 max-w-full truncate">Sign up</span></span></span></span></button>
</div>
</div>
</div>
</div>
</div>
<div class="pointer-events-none fixed inset-0 z-40 bg-ds2-overlay-fill-quaternary-enabled opacity-0 transition-opacity duration-200 peer-has-[input:focus]:pointer-events-auto peer-has-[input:focus]:opacity-100">
</div>
</header>
<div class="flex flex-grow flex-col z-10">
<main id="main" class="relative flex flex-grow flex-col items-center overflow-hidden pb-12 text-gray7 smd:pb-16">
<div class="flex w-full justify-center">
<div class="relative w-full">
<div class="relative hidden w-full pb-ds2-40 lg:block">
<div class="relative flex items-center justify-center gap-ds2-8 pt-ds2-40 lg:gap-ds2-12">
<div class="relative flex-shrink-0 lg:h-[283px] lg:w-[200px] xl:h-[450px] xl:w-[310px]"><img alt="" loading="lazy" decoding="async" data-nimg="fill" class="object-contain object-right" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="400px" srcSet="http [... 1248 characters folded ...]>
</div>
<div class="max-w-[680px] flex-1 text-center">
<h1 class="ds2-b40 mb-ds2-20 text-ds2-text-fill-primary-enabled">
<div class="block">The <img alt="people1 icon" loading="lazy" width="24" height="24" decoding="async" data-nimg="1" class="-mx-ds2-2 inline-block align-middle" style="color:transparent" srcSet="https://secure.meetupstatic.com/next/images/compl [... 227 characters folded ...]> people platform.
</div>
<div class="block">Where <img alt="ball icon" loading="lazy" width="24" height="24" decoding="async" data-nimg="1" class="-mx-ds2-2 inline-block align-middle" style="color:transparent" srcSet="https://secure.meetupstatic.com/next/images/complex- [... 206 characters folded ...]> interests
</div>
<div class="block">become <img alt="heart icon" loading="lazy" width="24" height="24" decoding="async" data-nimg="1" class="-mx-ds2-2 inline-block align-middle" style="color:transparent" srcSet="https://secure.meetupstatic.com/next/images/complex [... 210 characters folded ...]> friendships.
</div>
</h1>
<p class="ds2-r16 mb-ds2-32 px-ds2-64 text-ds2-text-fill-secondary-enabled">Whatever your interest, from hiking and reading to networking and skill sharing, there are thousands of people who share it on Meetup. Events are happening every day—sign up to join the fun.
</p><a class="inline-flex items-center justify-center rounded-ds2-max max-w-full select-none data-[disabled=false]:active:scale-98 data-[disabled=true]:cursor-not-allowed data-[disabled=true]:pointer-events-none hover:no-und [... 1234 characters folded ...]><span class="relative z-10 flex min-w-0 max-w-full items-center justify-center overflow-hidden" style="gap:inherit"><span class="flex min-w-0 max-w-full items-center justify-center overflow-hidden" style="gap:inherit"><span class="flex min-w-0 max-w-full flex-col items-center justify-center overflow-hidden"><span class="block min-w-0 max-w-full truncate">Join Meetup</span></span></span></span></a>
</div>
<div class="relative flex-shrink-0 lg:h-[283px] lg:w-[200px] xl:h-[450px] xl:w-[310px]"><img alt="" loading="lazy" decoding="async" data-nimg="fill" class="object-contain object-left" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="400px" srcSet="https [... 1263 characters folded ...]>
</div>
</div>
</div>
<div class="mx-auto flex flex-col items-center justify-center gap-ds2-32 pt-ds2-12 text-center ds2-container-sm md:px-ds2-56 md:pb-ds2-40 md:pt-ds2-56 lg:hidden">
<div class="flex flex-col items-center px-ds2-20 lg:px-0">
<h1 class="ds2-b28 mb-ds2-12 max-w-full text-ds2-text-fill-primary-enabled md:ds2-b32" data-testid="search-intro-title">
<div class="block sm:hidden">
<div class="block">The <img alt="people1 icon" loading="lazy" width="24" height="24" decoding="async" data-nimg="1" class="-mx-ds2-2 inline-block align-middle" style="color:transparent" srcSet="https://secure.meetupstatic.com/next/images/compl [... 227 characters folded ...]> people platform.
</div>
<div class="block">Where <img alt="ball icon" loading="lazy" width="24" height="24" decoding="async" data-nimg="1" class="-mx-ds2-2 inline-block align-middle" style="color:transparent" srcSet="https://secure.meetupstatic.com/next/images/complex- [... 206 characters folded ...]> interests
</div>
<div class="block">become <img alt="heart icon" loading="lazy" width="24" height="24" decoding="async" data-nimg="1" class="-mx-ds2-2 inline-block align-middle" style="color:transparent" srcSet="https://secure.meetupstatic.com/next/images/complex [... 210 characters folded ...]> friendships.
</div>
</div>
<div class="hidden sm:block">The <img alt="people1 icon" loading="lazy" width="24" height="24" decoding="async" data-nimg="1" class="mx-ds2-4 inline-block align-middle" style="color:transparent" srcSet="https://secure.meetupstatic.com/next/images/comple [... 226 characters folded ...]> people platform. Where <img alt="ball icon" loading="lazy" width="24" height="24" decoding="async" data-nimg="1" class="mx-ds2-4 inline-block align-middle" style="color:transparent" srcSet="https://secure.meetupstatic.com/next/images/complex-i [... 205 characters folded ...]> interests become <img alt="heart icon" loading="lazy" width="24" height="24" decoding="async" data-nimg="1" class="mx-ds2-4 inline-block align-middle" style="color:transparent" srcSet="https://secure.meetupstatic.com/next/images/complex- [... 209 characters folded ...]> friendships.
</div>
</h1>
<p class="ds2-r16 mb-ds2-20 max-w-full text-ds2-text-fill-secondary-enabled">Whatever your interest, from hiking and reading to networking and skill sharing, there are thousands of people who share it on Meetup. Events are happening every day—sign up to join the fun.
</p><a class="inline-flex items-center justify-center rounded-ds2-max max-w-full min-w-0 select-none data-[disabled=false]:active:scale-98 data-[disabled=true]:cursor-not-allowed data-[disabled=true]:pointer-events-none hove [... 1228 characters folded ...]><span class="relative z-10 flex min-w-0 max-w-full items-center justify-center overflow-hidden" style="gap:inherit"><span class="flex min-w-0 max-w-full items-center justify-center overflow-hidden" style="gap:inherit"><span class="flex min-w-0 max-w-full flex-col items-center justify-center overflow-hidden"><span class="block min-w-0 max-w-full truncate">Join Meetup</span></span></span></span></a>
</div>
<div class="relative aspect-[39/14] w-full md:hidden"><img alt="" aria-hidden="true" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" sizes="100vw" srcSet="https://secure.meetup [... 963 characters folded ...]>
</div>
</div>
</div>
Shown with 383 long blocks (scripts, styles, long tags) folded into a marker that says how many characters they hide; line breaks added before block tags because the source is minified; the pane stops after the first 200 words; the page is 629 KB.
Reading view the text a plain-fetch client can extract
title: Meetup | Find Local Groups, Events, and Activities Near You
The people platform. Where interests become friendships.
Skip to content Homepage English Log in Sign up The people platform. Where interests become friendships. Whatever your interest, from hiking and reading to networking and skill sharing, there are thousands of people who share it on Meetup. Events are happening every day—sign up to join the fun. Join Meetup The people platform. Where interests become friendships. The people platform. Where interests become friendships. Whatever your interest, from hiking and reading to networking and skill sharing, there are thousands of people who share it on Meetup. Events are happening every day—sign up to join the fun. Join Meetup Events near Ashburn, VA See all events $15.00 Beyond Small Talk: Singles Mixer for Meaningful Connections Sat, Nov 14 · 9:30 PM UTC by Singles in the DMV 20 attendees Free Profs & Pints Northern Virginia: The Course of the Appalachian Trail Sun, Nov 8 · 10:30 PM UTC by Profs and Pints Meetup-Metro DC 19 attendees Free SUNDAY: Fall Foliage Paddle or Hike (w/live music picnic) Sun, Nov 8 · 4:00 PM UTC by Social Sips & Bites (SSB) 30 attendees Free Balls Bluff Trail | Vanish Brewery 3.7 Miles Moderate/Hills (Leesburg Area) Sat, Nov 14 · 3:00 PM UTC by
1323 more words follow in the initial HTML.
| Check | Result | Detail |
|---|---|---|
| H1 in the initial HTML | Found 2 H1 elements | First H1: The people platform. Where interests become friendships. |
| First 200 words in the initial HTML | Found 200 of 200 words | The initial HTML carries 1523 words of visible text; the first 200 are marked in the left pane. |
| llms.txt present and linked | Note present, not linked | 9414 bytes, 16 links. Structure grade A (6 of 6). Nothing on the home page points to it. Ora's lab found 86 percent of llms.txt fetches arrived through a link. |
| 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 | Missing 200 (soft 404) | /agent-ready-html-missing-path-check returned 200. A missing page that answers 200 looks like a live page to an agent. |
| JSON-LD types | Found Event, Organization, Place, PostalAddress and 1 more | 5 schema.org types in JSON-LD blocks on the home page: Event, Organization, Place, PostalAddress, VirtualLocation. |
| OpenAPI link | Note none on the home page | No OpenAPI link on the home page. It matters only for a site that ships an API. |
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 meetup.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