Skip to content
D

drimble.nl

Scan history Scanned 2026-08-29 16:13 UTC
Changes since selected scan Not comparable because methodology information is unavailable

Result summary

Measured stable-core coverage

67/100

Methodology grade

C

Methodology 2026-08-29

40 core checkpoints assessed

Find
3/7 passed
Read
18/25 passed
Act
2/8 passed
Readiness profiles Filter the detailed results by purpose

Select a profile to filter the detailed results.

Action plan

Priority actions Prioritized by exact impact on the overall stable-core score.
Failed High-value schema types +5 overall pts

No high-value schema types found. We check for 17 recognized types including Article, Product, SoftwareApplication, FAQPage, LocalBusiness, VideoObject, and more.

High-value schema types
HIGH

Certain schema types (Article, Product, FAQPage, etc.) trigger rich results in Google and Bing and give agents typed, unambiguous entities to extract instead of inferring from prose. Their effect on AI-search citations is indirect, via the search indexes that feed products like ChatGPT and Perplexity.

Add JSON-LD markup for content-appropriate types like Article, Product, SoftwareApplication, FAQPage, LocalBusiness, Service, Event, or VideoObject so agents and search engines can identify your content type and extract structured facts reliably.

JSON-LD html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "Your App Name",
  "operatingSystem": "Web",
  "applicationCategory": "BusinessApplication",
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "USD"
  }
}
</script>
Failed HSTS header +4 overall pts

Strict-Transport-Security header is not set. Note: sites on the HSTS preload list may not send this header but are still protected via browser preloading.

HSTS header
HIGH

HSTS prevents protocol downgrade attacks by telling browsers to always use HTTPS. AI agents that follow redirects benefit from HSTS as it eliminates insecure initial connections.

Add the Strict-Transport-Security header with max-age=31536000 (1 year) and includeSubDomains. If your site is on the HSTS preload list (hstspreload.org), the header is still recommended for first-visit protection.

Server config plain
# Nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

# Apache (.htaccess)
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Partial AI crawler directives +4 overall pts

Mixed AI crawler policies. Disallowed: CCBot. Not mentioned (10): Google-Extended, ClaudeBot, Amazonbot, Claude-User, Bytespider, PerplexityBot, Applebot-Extended, meta-externalagent, Claude-SearchBot, OAI-SearchBot.

AI crawler directives
MEDIUM

Major AI systems use dedicated crawlers (GPTBot, ClaudeBot, Amazonbot). Explicit directives signal whether you want your content included in AI training and search results.

1 AI crawlers are blocked. Consider allowing them to improve AI discoverability.

robots.txt plain
# Add to your /robots.txt - explicit Allow for AI crawlers
User-agent: GPTBot
Allow: /

User-agent: ClaudeBot
Allow: /

User-agent: Google-Extended
Allow: /

User-agent: Amazonbot
Allow: /

User-agent: ChatGPT-User
Allow: /

User-agent: PerplexityBot
Allow: /
Failed Link response headers +4 overall pts

No Link response header found on the root page. Agents must parse HTML to discover related resources.

Link response headers
HIGH

Link response headers (RFC 8288) tell agents about machine-readable resources at request time. Cloudflare's isitagentready.com and other scanners explicitly look for `api-catalog`, `service-desc`, `service-doc`, and `sitemap` rels to enable agent discovery without parsing HTML.

Add an RFC 8288 Link response header advertising your OpenAPI document, API catalog, and sitemap so agents can discover them at request time.

Server config plain
# Nginx
add_header Link '</.well-known/api-catalog>; rel="api-catalog", </openapi.json>; rel="service-desc", </sitemap.xml>; rel="sitemap"' always;

# Phoenix / Plug
plug :put_link_headers

defp put_link_headers(conn, _opts) do
  put_resp_header(
    conn,
    "link",
    "</.well-known/api-catalog>; rel=\"api-catalog\", " <>
      "</openapi.json>; rel=\"service-desc\", " <>
      "</sitemap.xml>; rel=\"sitemap\""
  )
end

# Test: curl -I https://drimble.nl/ | grep -i '^link:'
Failed Entity linking (@id) +3 overall pts

No JSON-LD entities use @id for entity linking.

Entity linking (@id)
HIGH

Entity linking via @id creates a connected graph of your content. AI systems can follow these references to build deeper understanding of relationships between your pages, organization, and content.

Add @id properties to your JSON-LD entities (e.g. "@id": "drimble.nl/#organization") to enable cross-referencing between entities.

JSON-LD html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://drimble.nl/#organization",
      "name": "Your Company",
      "url": "https://drimble.nl"
    },
    {
      "@type": "WebSite",
      "@id": "https://drimble.nl/#website",
      "name": "Your Site",
      "url": "https://drimble.nl",
      "publisher": { "@id": "https://drimble.nl/#organization" }
    }
  ]
}
</script>
Failed Trust anchor pages +3 overall pts

Verified none; missing or thin: about, contact, privacy.

Trust anchor pages
HIGH

Agents check about, contact and privacy pages to verify a business is legitimate and to answer contact questions before recommending it. Thin or missing trust pages read as an anonymous site.

Publish real /about, /contact and /privacy pages (or localized equivalents linked from the home page) with at least 500 characters of content each, and link them from the footer so agents and crawlers can find them.

Partial XML Sitemap +3 overall pts

Sitemap found at drimble.nl/sitemap.xml, but bounded integrity checks failed: invalid_child_sitemap.

XML Sitemap
MEDIUM

Sitemaps help AI crawlers discover all your pages efficiently. Without one, crawlers may miss important content or waste time discovering your site structure.

Keep sitemap URLs same-origin, use valid lastmod values, and ensure sampled pages return successful responses.

sitemap.xml html
<!-- /sitemap.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://drimble.nl/</loc>
    <lastmod>2025-01-15</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://drimble.nl/about</loc>
    <lastmod>2025-01-10</lastmod>
  </url>
</urlset>

# Add to /robots.txt:
Sitemap: https://drimble.nl/sitemap.xml
Failed OAuth Discovery +2 overall pts

No OAuth/OIDC discovery document found at /.well-known/oauth-authorization-server or /.well-known/openid-configuration.

OAuth Discovery
HIGH

OAuth/OIDC discovery (RFC 8414, OpenID Connect Discovery 1.0) lets agents authenticate with your APIs without out-of-band setup. Cloudflare's isitagentready.com requires this for Level 4-5 readiness.

Publish an OAuth 2.0 Authorization Server Metadata document at /.well-known/oauth-authorization-server so agents can discover your auth endpoints.

# Serve OAuth 2.0 Authorization Server Metadata at:
# https://example.com/.well-known/oauth-authorization-server
{
  "issuer": "https://example.com",
  "authorization_endpoint": "https://example.com/oauth/authorize",
  "token_endpoint": "https://example.com/oauth/token",
  "response_types_supported": ["code"],
  "grant_types_supported": ["authorization_code", "refresh_token"]
}
Failed Agent Auth Readiness +2 overall pts

Agent auth readiness issues: missing PKCE S256 support, missing scoped permissions metadata, missing protected-resource metadata or WWW-Authenticate hint, missing valid auth.md, missing agent-safe OAuth grant declaration.

Agent Auth Readiness
HIGH

Agents need more than a login page. They need discoverable auth metadata, scoped permissions, PKCE support, and a concise walkthrough that explains how to obtain and use credentials safely.

Publish OAuth metadata with PKCE S256 and scopes, OAuth Protected Resource metadata, WWW-Authenticate hints on protected endpoints, and an /auth.md walkthrough for agents.

auth.md plain
# /auth.md
# Authentication for agents

Use OAuth 2.0 authorization code with PKCE S256. Request the narrowest scope for the task. Protected API endpoints return WWW-Authenticate with resource metadata.
Partial Content freshness signals +2 overall pts

Only HTTP Last-Modified header found. This is a server-level signal - add content-level dates (dateModified in JSON-LD or article:modified_time meta tag) for stronger freshness signals.

Content freshness signals
MEDIUM

AI systems prefer recent content, and several engines surface newer pages more often. Clear date signals (dateModified, article:modified_time) help AI determine your content's recency.

Add a dateModified property to your JSON-LD structured data or an article:modified_time meta tag, so AI systems can read when the content was last updated.

JSON-LD html
<!-- Option 1: JSON-LD (preferred) -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Your Article Title",
  "datePublished": "2026-01-15T09:00:00Z",
  "dateModified": "2026-02-28T14:30:00Z"
}
</script>

<!-- Option 2: Open Graph meta tags -->
<meta property="article:published_time" content="2026-01-15T09:00:00Z">
<meta property="article:modified_time" content="2026-02-28T14:30:00Z">

<!-- Option 3: HTML time element -->
<time datetime="2026-02-28T14:30:00Z">Updated February 28, 2026</time>

<!-- Server-level: Ensure Last-Modified header is sent -->
# Nginx: add_header Last-Modified $date_gmt;
# Apache: FileETag MTime (default)
Failed Question-based headings +2 overall pts

None of the 10 H2 headings use question format. AI systems often treat a question H2 as a prompt and cite the answer beneath it.

Question-based headings
HIGH

AI systems often treat an H2 as a prompt and the paragraph beneath it as the answer. A study of 3M ChatGPT responses found that, among citations tied to questions, 78.4% came from headings, and cited content was about twice as likely to contain a question mark (Kevin Indig / Growth Memo).

Rewrite H2 headings as questions your audience asks. For example, instead of "Domain Authority Metrics" use "How does domain authority affect AI citations?". A study of 3M ChatGPT responses found 78.4% of question-related citations came from headings (Kevin Indig / Growth Memo).

<!-- Instead of keyword-focused headings: -->
<h2>Domain Authority Metrics</h2>
<h2>SEO Best Practices</h2>

<!-- Use question-based headings: -->
<h2>How does domain authority affect AI citations?</h2>
<h2>What SEO practices improve AI visibility?</h2>
<h2>Why do AI systems prefer structured content?</h2>
Partial Heading hierarchy +2 overall pts

Single <h1> present but heading levels are skipped (e.g. <h1> followed by <h3>).

Heading hierarchy
MEDIUM

AI agents use headings to build a content outline and determine topic hierarchy. A clear h1→h2→h3 structure helps AI systems extract and summarize your content accurately.

Ensure exactly one <h1> per page. Use sequential heading levels without skipping (h1 -> h2 -> h3, not h1 -> h3). All headings should contain meaningful text. See developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements for heading element documentation.

HTML html
<h1>Page Title - One Per Page</h1>
  <h2>Main Section</h2>
    <h3>Subsection</h3>
    <h3>Subsection</h3>
  <h2>Another Section</h2>
    <h3>Subsection</h3>
Partial Author attribution +1 overall pts

Author meta tag found. For stronger E-E-A-T signals, also add author information to your JSON-LD structured data.

Author attribution
MEDIUM

Author attribution gives agents and search engines a clear, machine-readable signal of who stands behind the content and links it to a known entity. This supports trust and provenance (E-E-A-T) and lets systems attribute the content to its author.

Upgrade to JSON-LD author attribution by adding an "author" property with @type "Person" to your Article or BlogPosting schema. Structured authorship connects your content to a known entity and is parsed more reliably than meta tags.

JSON-LD html
<!-- Option 1: JSON-LD author in Article (preferred) -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Your Article Title",
  "author": {
    "@type": "Person",
    "name": "Jane Smith",
    "url": "https://drimble.nl/team/jane-smith"
  }
}
</script>

<!-- Option 2: Meta tag -->
<meta name="author" content="Jane Smith">

<!-- Option 3: Linked author -->
<a rel="author" href="https://drimble.nl/team/jane-smith">Jane Smith</a>
Partial Form field autocomplete +1 overall pts

2/3 applicable form inputs have autocomplete attributes (1 missing).

Form field autocomplete
MEDIUM

The autocomplete attribute tells AI agents and browsers what type of data a field expects (email, name, address). This semantic hint helps AI agents fill forms accurately without guessing field purposes from visual context.

Add autocomplete attributes to form inputs so AI agents and browsers understand the expected data type. Use standard values like "email", "name", "tel", "street-address". See html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill for the full list.

<input type="email" name="email" autocomplete="email">
<input type="text" name="name" autocomplete="name">
<input type="tel" name="phone" autocomplete="tel">
<input type="text" name="address" autocomplete="street-address">
Partial Dynamic widget state +1 overall pts

Detected 1 dynamic widget(s), 2 ARIA state attribute(s), and 0 live region(s).

Dynamic widget state
MEDIUM

Agents operate interactive widgets through the accessibility tree. Expandable panels, tabs, menus, switches, dialogs, and async status areas need explicit state so agents can tell what is open, selected, checked, current, or updating.

Expose dynamic widget state with aria-expanded, aria-selected, aria-checked, aria-current, aria-pressed, aria-controls, and aria-live or role="status" for async updates.

<button aria-expanded="false" aria-controls="filters">Filters</button>
<section id="filters" hidden>...</section>
<div role="status" aria-live="polite"></div>
Partial Form label coverage +1 overall pts

2/3 form inputs have associated labels (1 missing).

Form label coverage
MEDIUM

AI agents interact with forms via the accessibility tree, which maps labels to inputs. Without proper label associations, AI agents cannot determine what data a form field expects, making form interaction unreliable or impossible.

Associate labels with all form inputs using <label for="id">, wrapping <label> elements, or aria-label/aria-labelledby attributes. AI agents rely on label associations to understand form field purposes. See w3.org/WAI/WCAG22/Understanding/labels-or-instructions.html for WCAG guidelines.

<!-- Explicit label association -->
<label for="email">Email address</label>
<input type="email" id="email" name="email">

<!-- Wrapping label -->
<label>
  Search
  <input type="search" name="q">
</label>

<!-- ARIA label for icon-only inputs -->
<input type="search" aria-label="Search the site">
Fix with AI Skills
$ /plugin marketplace add bartwaardenburg/isagentready-skills

Detailed results

Agent Protocols

Weight 15% · No applicable checkpoints · 5 bonus opportunities

Not assessed
AI Content Discovery

Weight 30% · 1 failed, 3 partial · 6 bonus opportunities

70/100
Security & Trust

Weight 15% · 3 failed checkpoints · 1 bonus opportunity

58/100
Content & Semantics

Weight 20% · 1 failed, 5 partial

83/100
AI Search Signals

Weight 20% · 3 failed, 1 partial

55/100
Supplemental evidence AI visitor test and training exposure. The score does not change.

AI visitor test

We let an AI try common visitor tasks to show what works and where it gets stuck.

Experimental, does not affect the score

Can an AI understand this website?

Unavailable

This check is temporarily unavailable.

Can an AI find a useful action to take?

Unavailable

This check is temporarily unavailable.

AI Training Exposure

Does not affect the readiness score

Supplemental

1 of 3 AI training protection mechanisms active.

Common Crawl presence Unknown

Could not determine the latest Common Crawl index.

Training crawler blocking Partial

1 of 8 training crawlers blocked: CCBot. Still allowed: Amazonbot, Applebot-Extended, Bytespider, ClaudeBot, GPTBot, Google-Extended, meta-externalagent.

TDMRep declaration Not found

No TDMRep file found at /.well-known/tdmrep.json. The TDM Reservation Protocol (W3C) lets you declare whether you reserve text and data mining rights. See w3.org/community/reports/tdmrep/CG-FINAL-tdmrep-20240510 for the specification.

ai.txt policy Not found

No ai.txt file found. ai.txt lets you declare AI usage preferences for your content.

Web Bot Auth Not found

No Web Bot Auth signature key directory found. Bots cannot prove their identity to origins via signed HTTP requests.

Next steps

DEVELOPER TOOLS

Scan and fix from your editor. Install the MCP server to scan, and AI skills to fix.

SCAN
$ claude mcp add isagentready-mcp -- npx -y isagentready-mcp
FIX
$ /plugin marketplace add bartwaardenburg/isagentready-skills
Request a detailed report Optional follow-up with a personalized PDF report
Free PDF Report

Get your detailed report

Receive a personalized report with actionable insights for improving your website's AI agent readiness.

  • Detailed score breakdown per category
  • Prioritized improvement recommendations
  • Step-by-step implementation guide

We'll use this address to send report updates.

Add this badge to your README Show the latest ranked grade and link readers to this report
AI readiness badge for drimble.nl

The badge shows the grade from the latest ranked scan. Caches refresh it within an hour.

Markdown plain
[![AI-ready](https://isagentready.com/badge/drimble.nl.svg)](https://isagentready.com/en/scan/drimble.nl)
HTML html
<a href="https://isagentready.com/en/scan/drimble.nl"><img src="https://isagentready.com/badge/drimble.nl.svg" alt="AI-ready"></a>