Skip to content
LookupOwl

AI readiness checker

Find out whether AI search engines and assistants can reach and read your page, as a checklist with the evidence for every line and no invented score.

A domain or a page address. We read the page, robots.txt, the sitemap and a few well-known files.

Results for fieldmarketing.www.cloudflare.com

Checked live lookup666 ms

JSON

Checklist, not a score

Not ready

4 of 19 checks pass. 7 are information only. The level is the lowest group result, not an average. "Can AI read it?" has a failure.

3 failures5 warnings
Counted, not weighted
4 pass, 5 warning, 3 fail, 7 information.

4 pass, 5 warning, 3 fail, 7 information.

Can AI read it?2 pass, 1 failure, 1 info

Whether the page answers, robots.txt and which AI crawlers it lets in.

What does it see before JavaScript?2 warnings, 1 failure

The text, heading and links in the first response, before any script runs.

Does it describe itself?3 warnings, 1 failure, 1 info

Title, description, canonical link and structured data.

Can it be found?2 pass, 1 info

Sitemap, llms.txt and how fast the first byte arrives.

Can an agent use it?Nothing passes yet

Markdown, an API catalog, an MCP server card and Link headers.

Checklist19

Failures first, then warnings, passes and information. Every line says what we saw and where.

ProblemThe page answers page-status

https://fieldmarketing.www.cloudflare.com/ answered 404.

Where we looked: https://fieldmarketing.www.cloudflare.com/

Check the address. A crawler that gets this answer drops the page.

ProblemText before JavaScript prejs-text

Most AI crawlers do not run JavaScript. What they read on this page is about 0 words.

Where we looked: https://fieldmarketing.www.cloudflare.com/

Render the main content on the server, or prerender it for crawlers.

ProblemPage title title

No <title> in the first response.

Where we looked: https://fieldmarketing.www.cloudflare.com/

Add a short title that says what the page is.

Add<title>What this page is about</title>
WarningMain heading prejs-headings

No h1 in the first response. It may be added by scripts, which most crawlers do not run.

Where we looked: https://fieldmarketing.www.cloudflare.com/

Put one h1 in the server-rendered HTML that says what the page is.

WarningLinks a crawler can follow prejs-links

No links in the first response, so a crawler has nowhere to go from here.

Where we looked: https://fieldmarketing.www.cloudflare.com/

Use real <a href> links in the HTML, not click handlers.

WarningMeta description meta-description

No meta description.

Where we looked: https://fieldmarketing.www.cloudflare.com/

Add one sentence that says what the page offers. Assistants and search results often show it.

Add<meta name="description" content="One sentence about this page.">
WarningCanonical link canonical

No canonical link.

Where we looked: https://fieldmarketing.www.cloudflare.com/

Say which address is the main one, so copies of the page are not read as different pages.

Add<link rel="canonical" href="https://fieldmarketing.www.cloudflare.com/">
WarningStructured data json-ld

No JSON-LD in the first response.

Where we looked: https://fieldmarketing.www.cloudflare.com/

Describe the page in JSON-LD (Organization, WebSite, Article or Product) so machines need not guess.

Add<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"Your site","url":"https://example.com/"}</script>
Goodrobots.txt robots-present

robots.txt found (200, text/plain), 1 group of rules.

Where we looked: https://fieldmarketing.www.cloudflare.com/robots.txt

GoodAI crawlers are allowed ai-crawlers

GPTBot, ClaudeBot, Google-Extended, CCBot, Applebot-Extended and 9 more are allowed.

Where we looked: robots.txt

GoodSitemap sitemap

Named in robots.txt (200, application/xml).

Where we looked: https://fieldmarketing.www.cloudflare.com/sitemap.xml

GoodResponse speed ttfb

First byte in 0.19 s from one cold request.

Where we looked: https://fieldmarketing.www.cloudflare.com/

NoteContent signals content-signals

No Content-Signal line. Optional: it lets you say yes or no to AI training, search and AI input in one line.

Where we looked: https://fieldmarketing.www.cloudflare.com/robots.txt

Add a Content-Signal line to the group for all crawlers.

AddUser-agent: * Content-Signal: ai-train=no, search=yes, ai-input=yes Allow: /
NoteOpen Graph title og-title

No og:title. Optional: many link previews and assistants use it.

Where we looked: https://fieldmarketing.www.cloudflare.com/

Add<meta property="og:title" content="Page title">
Notellms.txt llms-txt

Not found (404). Optional: Google says it does not use it.

Where we looked: https://fieldmarketing.www.cloudflare.com/llms.txt

Add# Your site name > One sentence about what the site is. ## Docs - [Getting started](https://example.com/docs/start): how to begin
NoteMarkdown for agents markdown

Accept: text/markdown returns a 404 answer. Optional: agents read Markdown with far fewer tokens than HTML.

Where we looked: https://fieldmarketing.www.cloudflare.com/

Answer requests that ask for text/markdown with a Markdown version of the page, or point to one in a Link header.

AddLink: </index.md>; rel="alternate"; type="text/markdown"
NoteAPI catalog api-catalog

No API catalog (404). Optional: it lists your APIs in one place for agents (RFC 9727).

Where we looked: https://fieldmarketing.www.cloudflare.com/.well-known/api-catalog

Add{"linkset":[{"anchor":"https://example.com/api","service-desc":[{"href":"https://example.com/api/openapi.json"}]}]}
NoteMCP server card mcp-card

No MCP server card at /.well-known/mcp/server-card.json or /.well-known/mcp.json. Optional: it tells agents how to connect to your tools.

Where we looked: https://fieldmarketing.www.cloudflare.com/.well-known/mcp/server-card.json

NoteLink headers link-headers

No Link header that points to an API catalog, API description, documentation or a Markdown version. Optional.

Where we looked: https://fieldmarketing.www.cloudflare.com/

Send a Link header on the home page so agents find your documents without guessing.

AddLink: </.well-known/api-catalog>; rel="api-catalog", </api/openapi.json>; rel="service-desc"
Crawler access14
  • GPTBotAllowedTraining

    OpenAI. Nothing in robots.txt keeps it out of this page.

  • ClaudeBotAllowedTraining

    Anthropic. Nothing in robots.txt keeps it out of this page.

  • Google-ExtendedAllowedTraining

    Google. Nothing in robots.txt keeps it out of this page.

  • CCBotAllowedTraining

    Common Crawl. Nothing in robots.txt keeps it out of this page.

  • Applebot-ExtendedAllowedTraining

    Apple. Nothing in robots.txt keeps it out of this page.

  • Meta-ExternalAgentAllowedTraining

    Meta. Nothing in robots.txt keeps it out of this page.

  • BytespiderAllowedTraining

    ByteDance. Nothing in robots.txt keeps it out of this page.

  • OAI-SearchBotAllowedSearch

    OpenAI. Nothing in robots.txt keeps it out of this page.

  • Claude-SearchBotAllowedSearch

    Anthropic. Nothing in robots.txt keeps it out of this page.

  • PerplexityBotAllowedSearch

    Perplexity. Nothing in robots.txt keeps it out of this page.

  • ChatGPT-UserAllowedAssistant

    OpenAI. Nothing in robots.txt keeps it out of this page.

  • Claude-UserAllowedAssistant

    Anthropic. Nothing in robots.txt keeps it out of this page.

  • Perplexity-UserAllowedAssistant

    Perplexity. Nothing in robots.txt keeps it out of this page.

  • MistralAI-UserAllowedAssistant

    Mistral. Nothing in robots.txt keeps it out of this page.

Training collects pages to train models. Search builds an AI search index. Assistant fetches a page because a person asked. We read robots.txt only; we never pretend to be these crawlers.

What AI sees

The first 600 characters a crawler reads before JavaScript runs (0 words in all).

Nothing: the first response has no readable text.

Structured data found in the first response:

None.

llms.txt

This site does not publish an llms.txt file.

llms.txt is optional. Google says it does not use it for Search, and no search engine requires it. Some assistants and coding agents read it. A missing file is information, not a failure. We read the file; we do not follow its links.

Where we looked: https://fieldmarketing.www.cloudflare.com/llms.txt

Structured result (JSON) · 12 KB
{
  "target": "fieldmarketing.www.cloudflare.com",
  "finalUrl": "https://fieldmarketing.www.cloudflare.com/",
  "redirectedTo": null,
  "blockedUs": false,
  "blockedStatus": null,
  "summary": {
    "pass": 4,
    "warn": 5,
    "fail": 3,
    "info": 7,
    "unchecked": 0,
    "total": 19,
    "level": "not_ready"
  },
  "groups": [
    {
      "id": "access",
      "title": "Can AI read it?",
      "result": "fail",
      "checks": [
        {
          "id": "page-status",
          "title": "The page answers",
          "status": "fail",
          "couldntCheck": false,
          "evidence": "https://fieldmarketing.www.cloudflare.com/ answered 404.",
          "source": "https://fieldmarketing.www.cloudflare.com/",
          "fix": "Check the address. A crawler that gets this answer drops the page.",
          "snippet": null
        },
        {
          "id": "robots-present",
          "title": "robots.txt",
          "status": "pass",
          "couldntCheck": false,
          "evidence": "robots.txt found (200, text/plain), 1 group of rules.",
          "source": "https://fieldmarketing.www.cloudflare.com/robots.txt",
          "fix": null,
          "snippet": null
        },
        {
          "id": "ai-crawlers",
          "title": "AI crawlers are allowed",
          "status": "pass",
          "couldntCheck": false,
          "evidence": "GPTBot, ClaudeBot, Google-Extended, CCBot, Applebot-Extended and 9 more are allowed.",
          "source": "robots.txt",
          "fix": null,
          "snippet": null
        },
        {
          "id": "content-signals",
          "title": "Content signals",
          "status": "info",
          "couldntCheck": false,
          "evidence": "No Content-Signal line. Optional: it lets you say yes or no to AI training, search and AI input in one line.",
          "source": "https://fieldmarketing.www.cloudflare.com/robots.txt",
          "fix": "Add a Content-Signal line to the group for all crawlers.",
          "snippet": "User-agent: *\nContent-Signal: ai-train=no, search=yes, ai-input=yes\nAllow: /"
        }
      ]
    },
    {
      "id": "prejs",
      "title": "What does it see before JavaScript?",
      "result": "fail",
      "checks": [
        {
          "id": "prejs-text",
          "title": "Text before JavaScript",
          "status": "fail",
          "couldntCheck": false,
          "evidence": "Most AI crawlers do not run JavaScript. What they read on this page is about 0 words.",
          "source": "https://fieldmarketing.www.cloudflare.com/",
          "fix": "Render the main content on the server, or prerender it for crawlers.",
          "snippet": null
        },
        {
          "id": "prejs-headings",
          "title": "Main heading",
          "status": "warn",
          "couldntCheck": false,
          "evidence": "No h1 in the first response. It may be added by scripts, which most crawlers do not run.",
          "source": "https://fieldmarketing.www.cloudflare.com/",
          "fix": "Put one h1 in the server-rendered HTML that says what the page is.",
          "snippet": null
        },
        {
          "id": "prejs-links",
          "title": "Links a crawler can follow",
          "status": "warn",
          "couldntCheck": false,
          "evidence": "No links in the first response, so a crawler has nowhere to go from here.",
          "source": "https://fieldmarketing.www.cloudflare.com/",
          "fix": "Use real <a href> links in the HTML, not click handlers.",
          "snippet": null
        }
      ]
    },
    {
      "id": "self",
      "title": "Does it describe itself?",
      "result": "fail",
      "checks": [
        {
          "id": "title",
          "title": "Page title",
          "status": "fail",
          "couldntCheck": false,
          "evidence": "No <title> in the first response.",
          "source": "https://fieldmarketing.www.cloudflare.com/",
          "fix": "Add a short title that says what the page is.",
          "snippet": "<title>What this page is about</title>"
        },
        {
          "id": "meta-description",
          "title": "Meta description",
          "status": "warn",
          "couldntCheck": false,
          "evidence": "No meta description.",
          "source": "https://fieldmarketing.www.cloudflare.com/",
          "fix": "Add one sentence that says what the page offers. Assistants and search results often show it.",
          "snippet": "<meta name=\"description\" content=\"One sentence about this page.\">"
        },
        {
          "id": "canonical",
          "title": "Canonical link",
          "status": "warn",
          "couldntCheck": false,
          "evidence": "No canonical link.",
          "source": "https://fieldmarketing.www.cloudflare.com/",
          "fix": "Say which address is the main one, so copies of the page are not read as different pages.",
          "snippet": "<link rel=\"canonical\" href=\"https://fieldmarketing.www.cloudflare.com/\">"
        },
        {
          "id": "og-title",
          "title": "Open Graph title",
          "status": "info",
          "couldntCheck": false,
          "evidence": "No og:title. Optional: many link previews and assistants use it.",
          "source": "https://fieldmarketing.www.cloudflare.com/",
          "fix": null,
          "snippet": "<meta property=\"og:title\" content=\"Page title\">"
        },
        {
          "id": "json-ld",
          "title": "Structured data",
          "status": "warn",
          "couldntCheck": false,
          "evidence": "No JSON-LD in the first response.",
          "source": "https://fieldmarketing.www.cloudflare.com/",
          "fix": "Describe the page in JSON-LD (Organization, WebSite, Article or Product) so machines need not guess.",
          "snippet": "<script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Your site\",\"url\":\"https://example.com/\"}</script>"
        }
      ]
    },
    {
      "id": "found",
      "title": "Can it be found?",
      "result": "pass",
      "checks": [
        {
          "id": "sitemap",
          "title": "Sitemap",
          "status": "pass",
          "couldntCheck": false,
          "evidence": "Named in robots.txt (200, application/xml).",
          "source": "https://fieldmarketing.www.cloudflare.com/sitemap.xml",
          "fix": null,
          "snippet": null
        },
        {
          "id": "llms-txt",
          "title": "llms.txt",
          "status": "info",
          "couldntCheck": false,
          "evidence": "Not found (404). Optional: Google says it does not use it.",
          "source": "https://fieldmarketing.www.cloudflare.com/llms.txt",
          "fix": null,
          "snippet": "# Your site name\n\n> One sentence about what the site is.\n\n## Docs\n\n- [Getting started](https://example.com/docs/start): how to begin"
        },
        {
          "id": "ttfb",
          "title": "Response speed",
          "status": "pass",
          "couldntCheck": false,
          "evidence": "First byte in 0.19 s from one cold request.",
          "source": "https://fieldmarketing.www.cloudflare.com/",
          "fix": null,
          "snippet": null
        }
      ]
    },
    {
      "id": "agent",
      "title": "Can an agent use it?",
      "result": "empty",
      "checks": [
        {
          "id": "markdown",
          "title": "Markdown for agents",
          "status": "info",
          "couldntCheck": false,
          "evidence": "Accept: text/markdown returns a 404 answer. Optional: agents read Markdown with far fewer tokens than HTML.",
          "source": "https://fieldmarketing.www.cloudflare.com/",
          "fix": "Answer requests that ask for text/markdown with a Markdown version of the page, or point to one in a Link header.",
          "snippet": "Link: </index.md>; rel=\"alternate\"; type=\"text/markdown\""
        },
        {
          "id": "api-catalog",
          "title": "API catalog",
          "status": "info",
          "couldntCheck": false,
          "evidence": "No API catalog (404). Optional: it lists your APIs in one place for agents (RFC 9727).",
          "source": "https://fieldmarketing.www.cloudflare.com/.well-known/api-catalog",
          "fix": null,
          "snippet": "{\"linkset\":[{\"anchor\":\"https://example.com/api\",\"service-desc\":[{\"href\":\"https://example.com/api/openapi.json\"}]}]}"
        },
        {
          "id": "mcp-card",
          "title": "MCP server card",
          "status": "info",
          "couldntCheck": false,
          "evidence": "No MCP server card at /.well-known/mcp/server-card.json or /.well-known/mcp.json. Optional: it tells agents how to connect to your tools.",
          "source": "https://fieldmarketing.www.cloudflare.com/.well-known/mcp/server-card.json",
          "fix": null,
          "snippet": null
        },
        {
          "id": "link-headers",
          "title": "Link headers",
          "status": "info",
          "couldntCheck": false,
          "evidence": "No Link header that points to an API catalog, API description, documentation or a Markdown version. Optional.",
          "source": "https://fieldmarketing.www.cloudflare.com/",
          "fix": "Send a Link header on the home page so agents find your documents without guessing.",
          "snippet": "Link: </.well-known/api-catalog>; rel=\"api-catalog\", </api/openapi.json>; rel=\"service-desc\""
        }
      ]
    }
  ],
  "crawlerMatrix": [
    {
      "bot": "GPTBot",
      "vendor": "OpenAI",
      "kind": "training",
      "access": "allowed",
      "byChoice": false,
      "matchedRule": null
    },
    {
      "bot": "ClaudeBot",
      "vendor": "Anthropic",
      "kind": "training",
      "access": "allowed",
      "byChoice": false,
      "matchedRule": null
    },
    {
      "bot": "Google-Extended",
      "vendor": "Google",
      "kind": "training",
      "access": "allowed",
      "byChoice": false,
      "matchedRule": null
    },
    {
      "bot": "CCBot",
      "vendor": "Common Crawl",
      "kind": "training",
      "access": "allowed",
      "byChoice": false,
      "matchedRule": null
    },
    {
      "bot": "Applebot-Extended",
      "vendor": "Apple",
      "kind": "training",
      "access": "allowed",
      "byChoice": false,
      "matchedRule": null
    },
    {
      "bot": "Meta-ExternalAgent",
      "vendor": "Meta",
      "kind": "training",
      "access": "allowed",
      "byChoice": false,
      "matchedRule": null
    },
    {
      "bot": "Bytespider",
      "vendor": "ByteDance",
      "kind": "training",
      "access": "allowed",
      "byChoice": false,
      "matchedRule": null
    },
    {
      "bot": "OAI-SearchBot",
      "vendor": "OpenAI",
      "kind": "search",
      "access": "allowed",
      "byChoice": false,
      "matchedRule": null
    },
    {
      "bot": "Claude-SearchBot",
      "vendor": "Anthropic",
      "kind": "search",
      "access": "allowed",
      "byChoice": false,
      "matchedRule": null
    },
    {
      "bot": "PerplexityBot",
      "vendor": "Perplexity",
      "kind": "search",
      "access": "allowed",
      "byChoice": false,
      "matchedRule": null
    },
    {
      "bot": "ChatGPT-User",
      "vendor": "OpenAI",
      "kind": "assistant",
      "access": "allowed",
      "byChoice": false,
      "matchedRule": null
    },
    {
      "bot": "Claude-User",
      "vendor": "Anthropic",
      "kind": "assistant",
      "access": "allowed",
      "byChoice": false,
      "matchedRule": null
    },
    {
      "bot": "Perplexity-User",
      "vendor": "Perplexity",
      "kind": "assistant",
      "access": "allowed",
      "byChoice": false,
      "matchedRule": null
    },
    {
      "bot": "MistralAI-User",
      "vendor": "Mistral",
      "kind": "assistant",
      "access": "allowed",
      "byChoice": false,
      "matchedRule": null
    }
  ],
  "llmsTxt": {
    "present": false,
    "full": false,
    "url": "https://fieldmarketing.www.cloudflare.com/llms.txt",
    "errors": []
  },
  "page": {
    "status": 404,
    "firstByteMs": 187,
    "words": 0,
    "excerpt": "",
    "jsonLd": []
  },
  "notes": [],
  "partial": false
}

Next step

What the checker looks at

AI search and AI assistants read the web differently from people. Most of them fetch the HTML your server sends and do not run your scripts, they obey robots.txt, and they lean on plain structure: a title, a description, headings, links and a sitemap. This checker fetches your page the way such a crawler would, then reads the few files that tell crawlers and agents more, and reports what it found in five groups of questions.

  • Can AI read it? Whether the page answers, whether robots.txt exists, which AI crawlers it lets in, any Content-Signal line, and page-level directives such as noindex.
  • What does it see before JavaScript? The text, the main heading and the links in the first response. A page that builds itself in the browser can look empty to a crawler.
  • Does it describe itself? The title, meta description, canonical link, Open Graph title and structured data (JSON-LD).
  • Can it be found? A sitemap, an llms.txt file and how fast the first byte arrives.
  • Can an agent use it? A Markdown version of the page, an API catalog, an MCP server card and Link headers that point to them.

Each line shows what we saw and where we looked, and for most gaps it gives the sentence to fix it and a snippet to paste. We make eight or nine requests to the site itself, in one short burst, and none to anyone else.

How to use it

  1. Enter a site or a pageType example.com or a full address. We follow redirects and check the page you land on, and we say when that is a different host from the one you typed.
  2. Read the level, then the groupsThe answer at the top is a word with counts. Below it, five tiles show which group set the level. Open the one that is not green.
  3. Work through the checklistFailures come first, then warnings, passes and information. Open a row to see where we looked, how to fix it and a snippet to copy. Run the check again after you deploy.
Shell
# The same check as JSON, for a script or an agent
curl "https://lookupowl.com/api/v1/tools/ai-readiness-check?url=example.com"

How the level is worked out

There is no score here, because a number would need weights, and any weights would be a guess. The level is a word, and it comes from one rule that you can check by hand: it is the lowest result among the five groups. Checks are counted, never weighted. Information lines are not counted for or against anything.

LevelWhen it applies
ReadyEvery group has at least one pass and no warnings or failures.
Mostly readyNo group fails, but at least one has a warning.
Partly readyNo group fails, but at least one has nothing that passes yet. Optional agent features that are missing do this.
Not readyAt least one group has a failure, such as a page with almost no text before JavaScript.
UnclearFewer than three groups could be read, for example because the site was slow or refused us.

Blocking AI crawlers is a choice, not a defect

Many publishers disallow AI training crawlers such as GPTBot or CCBot in robots.txt on purpose. This checker shows that as "Blocked by choice", marks each such crawler in the crawler tab, and never lets it lower the level. What it does tell you is what the choice costs: blocking a search crawler such as OAI-SearchBot keeps the page out of that assistant's search results, and blocking an assistant such as ChatGPT-User stops it fetching the page when a person asks.

A block that comes from the rule for every crawler, not from a line naming the bot, is different. That often means a staging setting that was never removed, so it is shown as a warning with the lines to allow the crawlers you want.

What most sites need to fix first

  • Put the main content in the first response. Server-render or prerender pages that are built in the browser.
  • Give every page a title, a description, a canonical link and one clear h1.
  • Publish a sitemap and name it in robots.txt.
  • Decide on purpose which AI crawlers you welcome, and say so in robots.txt, with a Content-Signal line if you like.
  • Optional extras for agents: a Markdown version of your pages, an API catalog and an MCP server card.

None of this is a ranking factor we can promise, and the page says so. It is the list of things that decide whether a crawler can read you at all. For the security side of the same page, try the security headers checker, and to see every header the page sends, the HTTP headers checker.

Questions people ask

What is AI readiness?

It is whether AI search engines and assistants can find your page, read what is on it and understand what it is. That depends on crawler access in robots.txt, on content being in the first response, on basic metadata and structured data, and on a sitemap. For agents, Markdown versions and API descriptions help too.

Will a better level improve my ranking or get me cited?

We cannot promise that, and nothing on this page claims it. The checklist covers the preconditions: a crawler that cannot reach or read a page cannot use it. Whether an assistant then cites it is up to that assistant.

Why does it say "Blocked by choice" and not a failure?

Because disallowing AI crawlers by name in robots.txt is a legitimate decision about your content. We show it so you can confirm it is what you meant, and we leave the level alone. Only a failure, a warning or a group with nothing passing changes the level.

Do AI crawlers run JavaScript?

Most fetch the HTML and do not run scripts, which is why the text in the first response matters. Some crawlers do render pages, so a script-built page may still be read by them, but you cannot count on it. The "What AI sees" tab shows the first 600 characters a crawler that does not run scripts reads.

Does this tool pretend to be an AI crawler?

No. It reads robots.txt and applies the rules for each crawler name, but it fetches your pages as LookupOwl, with our own user agent. We never send another crawler's name, so what you see in your logs is a single, identifiable visitor.

Why did it say it could not check something?

A file did not answer in time, or the connection failed. That one line is marked "Couldn't check" and counted apart, and the rest of the list is complete. If a site refuses our request entirely, we tell you that instead of guessing.

Use it from AI, the API or the command line

Every LookupOwl tool is also a free API and an MCP tool, with no key and no account. This one is ai_readiness_check. Please be kind to the rate limits.

curl
curl "https://lookupowl.com/api/v1/tools/ai-readiness-check?q=lookupowl.com"
MCP
claude mcp add --transport http lookupowl https://lookupowl.com/mcp