Skip to content
DnsLister Forum

Where domain hunters compare notes

I ran 193 local business sites through a public AI-readiness checker. The 180 that scored averaged 16 out of 100, and most of what it measures doesn’t matter.

Up front: I run Digital Funnels, we sell this kind of work as a service, and this subreddit is ours. Weigh all of it accordingly. Everything below is the complete list we'd work from, there's no email gate and no link to anything of ours, and I can't prove any of it makes a phone ring.

As of 10 September 2026 we'd run 193 US local business sites through a free public checker at https://isitagentready.com. All 193 came back with an agent-readiness result and 180 of those carried a numeric score. The average of the 180 was 16 out of 100. About 96% never got past the band that tool calls Basic Web Presence, one rung up from the bottom.

It isn't a random sample. These are businesses I pulled out of Google Places while building a prospect list, weighted toward home services in a handful of metros. Read it as a convenience sample of small local sites, not a survey of American small business.

One thing you should know about the checker before you trust my numbers: I don't own it and I'm not affiliated with it, but it's the same scanner our own free report calls. So my average and anything we'd ever show a prospect come out of the same box. Treat both accordingly.

Go run your own URL through it before you read the rest. It isn't my tool and it takes about twenty seconds. Your own number makes everything below concrete.

What actually failed, across the 180 scored sites

Check Sites passing
robots.txt 83%
Sitemap 82%
robots.txt AI rules 73%
Link headers 20%
UCP 11%
Content Signals 8%
Markdown negotiation 7%
OAuth discovery 4%

Fourteen further checks passed on zero of the 180 sites: DNS-AID, Web Bot Auth, API Catalog, OAuth protected resource, Auth.md, MCP server card, A2A agent card, agent skills, WebMCP, ARD, x402, MPP, ACP, AP2.

Read that list before you panic about a low score. WebMCP is a W3C community group draft riding a Chrome-only origin trial. Web Bot Auth's IETF working group had adopted zero documents as of August 2026. x402, AP2, ACP and MPP are agent payment protocols. An appliance repair shop is not implementing an agent payment protocol. The average is 16 partly because the rubric is aimed at software companies, and the first four rows of that table are the only ones that have anything to do with you.

Two of those rows need correcting before somebody corrects me.

A missing robots.txt doesn't block anything. No file means everything is allowed. The 17% without one aren't being penalized, they're just missing the one line that points at their sitemap. The version that genuinely hurts is a robots.txt returning a server error, which can pause crawling altogether.

And 7% on markdown negotiation does not mean 93% can't serve text to an AI. Every HTML page is text and extractors read it fine. Markdown negotiation means your server hands back a Markdown version when something asks for one with an Accept header, and as far as anyone can tell the things asking are coding agents, not the assistant your customer is holding. It's a server setting rather than a file, so it isn't in this post.

One caveat on my own data: a check fails the same way whether the file is missing, or the file timed out, or the site returned a 403 to the scanner. So some of those failures are blocks rather than absences, which matters for the next section.

What these files will and won't do

Google says in writing that you don't need any of this. Their AI features documentation: "You don't need to create new machine readable files, AI text files, or markup to appear in these features," and "There's also no special schema.org structured data that you need to add." Search Central said in June 2026 that maintaining an llms.txt "won't harm (nor help) your visibility or rankings in Google Search, as Google Search ignores them." I'm not going to pretend otherwise, and if somebody posts those links below, they're right.

So here's the narrow version I'll actually defend. Nothing you put in a file makes an assistant cite you. What decides whether an assistant can use you is whether it can fetch your pages at all, whether you exist in the places these systems retrieve from, whether anything off your own site corroborates you, and whether your copy survives a text extractor. The three files below cost an afternoon and nothing else, they force your own facts into one place, and one of them is documented by Google for knowledge panels. That's the whole case. I have no data linking any of it to a citation, a call or a customer, and I'm not going to invent some.

Two free things that matter more than the files

Neither of these is something I can bill for, which is exactly why they go first.

First, your Google Business Profile. When somebody asks an assistant for appliance repair near them, the answer is assembled from the Maps place record and the reviews, not from a text file on your website. Primary category, hours, service area, phone, services list. If that record is stale, nothing below saves you. It's free and it's twenty minutes.

Second, check that a bot can actually reach you. This is the most common real failure and it's invisible from your desk. Bot protection on a lot of small business hosting, plus Cloudflare, Wordfence and Sucuri, routinely hands a 403 or a JavaScript challenge to AI fetchers even when robots.txt allows them, while your browser loads the same page perfectly. Crawlers don't run JavaScript, so a challenge page is a dead end. If you're comfortable in a terminal:

curl -sI -A "OAI-SearchBot" https://yoursite.com/ | head -n 1

You want a 200 back. Not a 403, not a challenge page. Repeat it with Claude-SearchBot, PerplexityBot and Bingbot. If a terminal isn't your thing, that's a support ticket to your host phrased as "are you blocking AI search crawlers," and the checker does a version of this for you anyway: if it reports files as missing that you can plainly see in your browser, that's what's happening.

Where your site lives decides how hard this is

"Upload it to your site root" isn't a button anywhere, so here's the actual route.

WordPress, easiest path first, with no file creation at all: Yoast SEO > Tools > File editor. Rank Math > General Settings > Edit robots.txt. All in One SEO > Tools > Robots.txt Editor. For llms.txt you'll need your host's File Manager (cPanel or hPanel) or SFTP, into the public_html folder. The WordPress Media Library will not work for this. It drops files under /wp-content/uploads/, nothing will ever look there, and you'll be able to open the URL you uploaded to and think you succeeded.

Squarespace: you can't place arbitrary files at the root, so robots.txt and llms.txt aren't available to you. The markup still is, through Code Injection, which needs the Business plan.

Wix: there's a robots.txt editor, but you can't add free-standing root files.

Shopify: you edit robots.txt.liquid rather than uploading a file.

If your address bar shows anything after the .com while you're sitting on your own homepage, your site is in a subfolder and files placed there won't be read. robots.txt is only honored at the domain root. Ask your host which folder is the top level.

I've done this on WordPress and Wix. I haven't done Squarespace or Shopify myself, so if you're on one of those and it goes differently from what I've written, say so in the comments and I'll correct this section.

And if you don't have your hosting login because someone built the site in 2019 and vanished, that's the real blocker, and it's a fifteen minute job for whoever does have it. Send them this post.

Before you touch anything

  1. Open yoursite.com/robots.txt in a browser and copy whatever's there into a note. You're adding lines to that file, not replacing it. Lines starting with Disallow are there on purpose.
  2. Find your real sitemap address. Yoast and Rank Math publish /sitemap_index.xml, WordPress core publishes /wp-sitemap.xml, All in One SEO uses /sitemap.xml. Open all three and use whichever one loads. If none load you don't have a sitemap yet, so leave the line out. Pointing crawlers at a 404 is worse than saying nothing.
  3. On WordPress with no physical file, what you're looking at is a virtual robots.txt generated by a plugin, and once a real file exists at the root some plugin editors go read-only. Decide which route you want before you create anything.
  4. Check what you already publish. View your homepage source and search it for LocalBusiness before you get to file 2.
  5. Copy the blocks below straight from this post into your site. Don't route them through Word, Google Docs or Notes, because they swap straight quotes for curly ones, the JSON dies, and the error message won't tell you that's why.
  6. If you do create files by hand: Windows Notepad saves robots.txt.txt unless you set "Save as type" to All Files. Mac TextEdit saves .rtf unless you hit Format > Make Plain Text first. Both produce a file that looks correct in your folder and does nothing on your site.

File 1: robots.txt

Save at yoursite.com/robots.txt, with nothing between the .com and the filename.

“` User-agent: * Allow: / Content-Signal: search=yes, ai-input=yes, ai-train=no

Sitemap: https://yoursite.com/sitemap.xml “`

Allow: / does nothing. The default is already allow. It's there for readability, not function.

The Content-Signal line states a preference and that's all it does: show me in search yes, use my page to answer someone's question right now yes, train on me no. Cloudflare wrote the format and says outright that it isn't a technical countermeasure against scraping and that some companies might simply ignore it. Google's John Mueller said in July 2026 that it has no effect on any crawler or LLM he's aware of, and that using it just adds bloat and future maintenance to your robots.txt. It's a Cloudflare policy from September 2025, not a web standard; the standards work at the IETF is still a draft. I include it because it's one line, it's the only machine-readable way to have said no before the question gets settled, and in the EU a machine-readable reservation is starting to carry legal weight. If you think that's pointless, that's a defensible position and I won't argue hard. Change ai-train=yes if you don't mind being trained on. And if you're behind Cloudflare, read your existing robots.txt first, because they auto-added these signals to a lot of managed files and you don't want the line twice.

The robots.txt decision that actually has a proven consequence isn't in that file at all. The bots that fetch your page to answer somebody's question right now (OAI-SearchBot, Claude-SearchBot, PerplexityBot, Bingbot) are the ones that can cite you. Block those and you're out of the running. The bots that collect pages for training (GPTBot, CCBot, ClaudeBot, Google-Extended) are a separate decision, and blocking those doesn't cost you citations. Most people who "blocked AI" blocked the wrong half.

One item with a date on it. From 15 September, Cloudflare is changing its defaults so bots it classifies as Agent or Training get blocked on pages that display ads, with search crawlers still allowed. Per their changelog that applies to new domains onboarding to Cloudflare, and per the coverage it extends to new sites from existing customers and to existing free tier customers, with an opt-out in Security settings before that date, though the exact scope is worth checking against Cloudflare's own docs rather than a blog post. If you're on Cloudflare, go look and decide deliberately instead of inheriting it, because your robots.txt saying Allow doesn't override what your CDN does at the edge. You'll also see people claim this blocks Googlebot, Applebot and Bingbot. Cloudflare hasn't documented how multi-purpose crawlers get classified, so treat that as somebody's guess, mine included.

File 2: LocalBusiness markup

First, check you don't already have it. Open your homepage, right click, View Page Source, Ctrl+F for LocalBusiness. Yoast, Rank Math and All in One SEO all ship this, and two of them have a whole local module. If it's already there, don't add a second one. Go into that plugin's local business settings and fill in the fields it's already publishing. Two LocalBusiness entities with different phone numbers is worse than none, and it's exactly the inconsistency this is supposed to prevent.

Paste this inside the head of your homepage, above the closing head tag.

<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "LocalBusiness", "name": "Ridgeline Appliance Repair", "url": "https://ridgelineappliance.example", "telephone": "+1-417-555-0134", "email": "office@ridgelineappliance.example", "priceRange": "$$", "address": { "@type": "PostalAddress", "streetAddress": "812 S Glenstone Ave", "addressLocality": "Springfield", "addressRegion": "MO", "postalCode": "65802", "addressCountry": "US" }, "areaServed": [ "Springfield", "Nixa", "Ozark", "Republic", "Willard" ], "sameAs": [ "https://www.google.com/maps/place/your-listing-here", "https://www.facebook.com/your-page-here", "https://www.yelp.com/biz/your-listing-here" ], "openingHoursSpecification": [ { "@type": "OpeningHoursSpecification", "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "opens": "07:00", "closes": "18:00" }, { "@type": "OpeningHoursSpecification", "dayOfWeek": ["Saturday"], "opens": "08:00", "closes": "14:00" } ] } </script>

Field notes. priceRange is a band, $ through $$$$, not your prices. areaServed is a list of towns. openingHoursSpecification is 24-hour time. sameAs is the part with an actual mechanism behind it, so fill it in properly rather than deleting it: point it at your own Google Maps listing, your Facebook page, your Yelp profile, because that's the cross reference that tells a machine you're one business and not three. Delete any line for something you don't have, including email and priceRange. If you work out of your house and you hide your address on Google, delete the whole address block and keep areaServed.

Getting it into the head on WordPress: install WPCode (free), then Code Snippets > Add Snippet > Add Your Custom Code > set type to HTML Snippet > set location to Site Wide Header > Save and Activate. Appearance > Theme File Editor is disabled by default on WP Engine, Kinsta and Flywheel, and block themes have no header.php to edit, so don't start there.

Now the honest part. This is corroboration, not magic. Your phone number was already text on a page, so nothing is being turned into anything. Its job is to make your website, your Google Business Profile and your other listings agree about the same business. Google documents it as feeding knowledge panels and business carousels, says nothing about the map pack or Maps ranking, and states that it doesn't guarantee features consuming structured data will show up at all. And don't expect third party assistants to parse it: when ChatGPT, Claude, Perplexity and Gemini fetch a live page they mostly strip the JSON-LD and read the visible HTML. One test embedded deliberately invalid schema containing an address that appeared nowhere else on the page, and models returned the address anyway, which is reading the script block as text rather than parsing structure. The one controlled test I know of, Ahrefs tracking 1,885 pages that added JSON-LD against about 4,000 matched controls, found no citation lift, and the AI Overviews arm came back slightly negative.

Which is the real lesson: your hours and phone number need to be in the visible text of your homepage first. The markup is the second copy, not the first.

File 3: llms.txt, and why it's last

This is the most hyped and least evidenced of the three, so take the bad news first.

Ahrefs looked at 137,210 domains in May 2026. 28% served a valid llms.txt, and 97% of those files received zero requests that month. Worse for the "it'll work once adoption rises" defense: on domains that don't have the file, AI bots never even ask for it. SE Ranking ran roughly 300,000 domains and found no relationship between publishing one and being cited, and their model got more accurate when they dropped it as a feature. Google says it ignores the file. Of the small share of files that got fetched at all, SEO audit tools were the largest single requester category, which is to say the main thing reading these files is the software that told you to make one. The genuine audience is coding and documentation agents, which is precisely the audience a local business doesn't have.

The kicker: the checker I sent you to at the top has no llms.txt check. Its whole content category is one check, markdown negotiation. So you can write this file perfectly and your score will not move by one point.

I still publish one, for a reason that has nothing to do with AI. It takes ten minutes and it forces you to put your hours, service area, real services and exclusions in one place in plain language, which most owners have never done, and the result doubles as a one page brief you can hand a new hire. If you only do two of these three, skip this one. If somebody in the comments tells you it's cargo cult, they've got a point.

Save at yoursite.com/llms.txt.

“`

Ridgeline Appliance Repair

Appliance repair in Springfield, Missouri. Family run since 2009. Same day service on most refrigerator and washer calls.

Contact

Service area

Springfield, Nixa, Ozark, Republic, Willard.

Services

  • Refrigerator and freezer repair, usually same day
  • Washer and dryer repair
  • Dishwasher and range repair
  • Warranty work for most major brands

What we do not do

  • Commercial kitchen equipment
  • HVAC “`

There's no address line in there on purpose. If you have a storefront customers walk into, add one. If you work out of your house and you've deliberately hidden your address on Google, don't publish it here either, and keep the service area instead. It's a world readable file, nobody is checking whether it's true, and it isn't recoverable once it's been fetched.

Put a reminder in your calendar twice a year to check this still matches your website and your Google listing. A file that contradicts your listing is worse than no file.

And to be precise about the format: the llms.txt proposal is really a Markdown list of links to Markdown versions of your pages. What's above is a fact sheet, which is more useful for a five page local site but isn't spec-pure.

The part that isn't a file

The most useful thing in that template is the "what we do not do" section, and it doesn't need llms.txt at all.

Most of the bad calls I hear owners complain about aren't from being invisible. They're from being sent the job they don't take: the commercial unit, the thing out of their area, the brand they won't touch. Almost nobody writes that down anywhere.

So write it down where it definitely gets read. Put it in the visible text of your services page, in plain sentences, and put it in the services list and primary category on your Google Business Profile. That's what text extractors read and that's what Google answers local questions from. Whether an assistant ever reads it out of a text file, I have no evidence either way.

How to check you did it right

  1. Open the file URLs in a private browser window so you're not looking at a cached copy. That only proves your browser can read them. It doesn't prove a bot can, and on WordPress it doesn't even prove your file is the one being served, because WordPress serves a virtual robots.txt when no physical file exists.
  2. Run the curl command from earlier again. A 200 is the thing you're checking for, and it matters more than any of the files.
  3. Run your URL through the checker, with the ceiling in mind. It scores robots.txt, sitemap, robots.txt AI rules and Content Signals. It has no llms.txt check and it doesn't read your schema, so two of the three files above will not move your number. If your browser shows a file and the checker says it's missing, your host or your security plugin is blocking bots, and that's your real problem.
  4. For the markup use https://validator.schema.org, which answers "is my JSON valid." Google's Rich Results Test answers a different question, whether you're eligible for a specific Google rich result, and plain LocalBusiness usually isn't, so "no items detected" there does not mean you made a mistake. Use its Code tab so you can test the snippet before it goes live on your homepage.

What score to expect, so you don't think you failed

These three files move about four checks: robots.txt, the sitemap pointer, robots.txt AI rules and Content Signals. Three of those four are checks that 83%, 82% and 73% of sites already pass, so for a lot of you this afternoon buys exactly one row. Realistically it takes a local business site from the bottom band to the top of Basic Web Presence, and no further. You'll still be looking at a column of red with names like MCP server card and Web Bot Auth. Those are for companies with APIs and developer tooling. Leave them alone, and don't pay anybody to add them to a five page website.

Our own site sits at 73 on that same checker. I've put that screenshot in the first comment next to the checker's output for example.com, which scores 0, so you can see what both ends look like on domains nobody can be embarrassed by. Failures included, because we fail plenty: we still score 50 on one of the four categories. Be clear about how 73 is built. Most of the distance between 16 and 73 is experimental agent protocols that no local business needs and several of which aren't standards yet. It isn't a target, and three text files don't get you there.

The ceiling of the free version

Past these three files it's server and CDN configuration: content negotiation, Link headers, making sure your edge returns 200 to a crawler user agent instead of a challenge page. That's the honest boundary of what you can do from an admin panel in an afternoon. What we charge for is doing that work continuously and watching whether it stays done. The three files are a one-afternoon job and you shouldn't pay anybody to add them.

If you run yours, post the number. The average across the 180 I scored was 16, so there's no wrong answer, and I'd genuinely like to know whether that holds up outside home services. If enough people post, I'll add them to the average and say so. Ask in the comments if you get stuck on a step and I'll answer here.

And if you only do one thing today, don't make it any of these. Open your Google Business Profile and fix the categories, the hours and the service area. That's the record most local AI answers are actually coming from.

Source: r/Aieramarketing · by /u/Marathonec86

Leave a Reply

Your email address will not be published. Required fields are marked *