ADP 1.0 — AI Discovery Page Specification
{🤖} LLM-LD

ADP 1.0 — AI Discovery Page Specification

Status
Draft
Published
February 2026
Companion to
LLM-LD 1.0 Specification
Maintained by
CAPXEL
Latest version
llmld.org/spec/adp-v1
License
CC BY 4.0

AI Discovery Page (ADP) 1.0 Specification

A Companion Standard to LLM-LD for Human- and Machine-Readable AI Layer Discovery


Version: 1.0 Draft
Status: Proposal
Date: February 2026
Companion to: LLM-LD 1.0 Specification
Editors: CAPXEL


Abstract

The AI Discovery Page (ADP) specification defines a standard HTML page that websites publish to advertise the existence and location of their machine-readable AI layer. It serves as a bridge between the human web and the structured AI layer described by LLM-LD, providing a predictable entry point that both automated systems and human visitors can use to locate all AI-accessible resources.

This document standardizes the URL, required HTML metadata, structured data format, link relations, and human-readable content for an AI Discovery Page.


Table of Contents

  1. Problem Statement
  2. Design Principles
  3. Terminology
  4. URL and Placement
  5. Document Structure
  6. Head Element Requirements
  7. Structured Data (JSON-LD)
  8. Body Content
  9. HTTP Requirements
  10. Relationship to LLM-LD
  11. Discovery Chain
  12. Security and Privacy
  13. Conformance Levels
  14. Complete Example
  15. Anti-Patterns

1. Problem Statement

LLM-LD 1.0 defines several discovery mechanisms for llm-index.json: the well-known URI, robots.txt declarations, <link> elements, HTTP headers, and directory lookups. These mechanisms work well for automated crawlers that know what to look for.

However, they leave several gaps:

For AI systems: There is no single, predictable HTML page that consolidates pointers to all AI-layer resources (the LLM-LD index, the llms.txt manifest, entity feeds, knowledge graphs, the AI sitemap, and typed data feeds). A crawler checking /.well-known/llm-index.json discovers only the LLM-LD index — it has no structured way to find companion resources like entities.json or knowledge.graph.json unless it already knows to look for them.

For humans: Site visitors, developers, and auditors who encounter an "AI-Optimized" badge or footer link have no standardized page to land on. The result is ad-hoc explainer pages that vary in structure, terminology, and usefulness.

For site owners: There is no clear template for how to build this bridge page correctly. The current concept (Document 1) mixes concerns: it uses wrong link relations (rel="alternate" for resources that are not alternate representations), provides no machine-readable resource manifest, and offers no structured way for a crawler to enumerate the AI layer.

The ADP specification addresses these gaps by standardizing a single HTML document that serves as the canonical discovery hub for an organization's AI layer.


2. Design Principles

  1. One page, two audiences. The ADP is a valid HTML page that humans can read and that machines can parse. Structured data in the <head> carries the machine payload; the <body> carries a human explanation.

  2. Complementary, not redundant. The ADP does not replace llm-index.json, robots.txt directives, or <link rel="llm-index"> on individual pages. It adds a consolidated discovery hub that points to all of them.

  3. Minimal by default. A conforming ADP can be very short. The specification defines required minimums and optional enrichments.

  4. Correct semantics. Link relations, JSON-LD types, and HTML structure follow established web standards. No repurposing of existing relations for new meanings.

  5. Progressive disclosure. Crawlers can get everything they need from <head> alone. They never need to parse the <body>.


3. Terminology

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" are interpreted as described in RFC 2119.

AI Discovery Page (ADP) : The HTML document defined by this specification.

AI Layer : The collection of machine-readable resources a website publishes for consumption by AI systems. This typically lives on a dedicated subdomain (e.g., ai.example.com) or path.

Resource Manifest : The structured data block within the ADP's JSON-LD that enumerates all AI-layer resources, their types, and their purposes.

Primary Site : The main human-facing website (e.g., www.example.com).


4. URL and Placement

4.1 Canonical Location

The ADP MUST be published on the primary site (not the AI subdomain). This makes it discoverable through normal web crawling of the human site.

The ADP SHOULD be served at one of the following paths, listed in order of preference:

PriorityPathNotes
1/ai.htmlShort, predictable, crawlable
2/aiClean URL (server must return HTML)
3/ai-discoveryDescriptive, unambiguous

Implementations MAY use a different path but MUST advertise it via one of the mechanisms in Section 11.

4.2 Well-Known Redirect (Optional)

Implementations MAY register a well-known URI that redirects to the ADP:

GET /.well-known/ai-discovery HTTP/1.1

HTTP/1.1 302 Found
Location: /ai.html

This provides a predictable entry point for crawlers without requiring the page itself to live at a well-known URI.

4.3 Why Not .well-known/?

The ADP is intended to be linkable from site navigation (footer badges, "AI-Optimized" links). Well-known URIs are not designed for human-facing content. The ADP lives at a normal path and, optionally, can be reached via a well-known redirect.


5. Document Structure

An ADP is a valid HTML5 document with three required zones:

┌─────────────────────────────────────────┐
│ <head>                                  │
│   ├── Meta tags (charset, viewport)     │
│   ├── Title and description             │
│   ├── Canonical URL                     │
│   ├── Link relations (Section 6)        │  ← Machine audience
│   └── JSON-LD structured data (Sec 7)   │
├─────────────────────────────────────────┤
│ <body>                                  │
│   ├── Site identity                     │
│   ├── Resource directory                │  ← Human audience
│   ├── Explanation (optional)            │
│   └── Footer / attribution              │
└─────────────────────────────────────────┘

The <head> carries the complete machine-readable payload. An AI system that parses only <head> MUST be able to discover every AI-layer resource.

The <body> carries the human-readable explanation. It SHOULD mirror the information in the <head> but is written for people.


6. Head Element Requirements

6.1 Required Meta Elements

<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />

6.2 Title

The <title> MUST include the organization name and the words "AI Discovery":

<title>{Organization Name} — AI Discovery</title>

6.3 Description

The <meta name="description"> MUST summarize the page's purpose in one sentence:

<meta name="description"
  content="Machine-readable AI layer discovery for {Organization Name}. 
           Points to structured data, manifests, and endpoints." />

6.4 Robots Directive

The ADP SHOULD be indexable:

<meta name="robots" content="index, follow" />

6.5 Canonical URL

<link rel="canonical" href="https://www.example.com/ai.html" />

The canonical MUST be on the primary site domain.

Link relations advertise AI-layer resources. Each resource type has a specific rel value.

The following MUST be present if the corresponding resource exists:

rel ValueResourceTypeNotes
llm-indexLLM-LD Indexapplication/jsonDefined in LLM-LD 1.0 §10.2
<link rel="llm-index"
      type="application/json"
      href="https://ai.example.com/.well-known/llm-index.json"
      title="LLM-LD Index" />
rel ValueResourceTypeNotes
ai-manifestLLMs.txt manifesttext/plainThe llms.txt file
sitemapAI Sitemapapplication/xmlStandard sitemap relation
<link rel="ai-manifest"
      type="text/plain"
      href="https://ai.example.com/llms.txt"
      title="LLMs Manifest" />

<link rel="sitemap"
      type="application/xml"
      href="https://ai.example.com/sitemap.xml"
      title="AI Sitemap" />

Additional AI-layer resources use rel="ai-resource" with a data-resource-type attribute to distinguish them:

<link rel="ai-resource"
      type="application/json"
      href="https://ai.example.com/entities.json"
      title="Entity Index"
      data-resource-type="entities" />

<link rel="ai-resource"
      type="application/json"
      href="https://ai.example.com/knowledge.graph.json"
      title="Knowledge Graph"
      data-resource-type="knowledge-graph" />

6.6.4 Prohibited Practices

  • DO NOT use rel="alternate" for AI-layer resources. alternate means "same content, different format," which is semantically wrong — the AI layer is not an alternate representation of the discovery page.
  • DO NOT use rel="preload" or rel="prefetch" for resources intended for AI systems only.

7. Structured Data (JSON-LD)

The ADP MUST include a single <script type="application/ld+json"> block in <head> that provides a complete, machine-parseable discovery manifest.

7.1 Root Object

{
  "@context": [
    "https://schema.org",
    "https://llmld.org/v1"
  ],
  "@type": "llmld:DiscoveryPage",
  "@id": "https://www.example.com/ai.html",
  "name": "{Organization Name} — AI Discovery",
  "description": "AI layer discovery hub for {Organization Name}.",
  "dateModified": "2026-02-02T12:00:00Z"
}

@type: MUST be llmld:DiscoveryPage. This distinguishes the ADP from generic WebPage markup, giving AI systems a clear signal about the page's role.

@id: MUST be the canonical URL of the ADP.

7.2 isPartOf — Parent Site

Links the ADP to the primary website:

{
  "isPartOf": {
    "@type": "WebSite",
    "name": "{Organization Name}",
    "url": "https://www.example.com"
  }
}

REQUIRED.

7.3 llmld:aiLayer — AI Layer Declaration

Declares the existence and root of the AI layer:

{
  "llmld:aiLayer": {
    "url": "https://ai.example.com",
    "name": "{Organization Name} AI Layer",
    "description": "Machine-readable mirror of public, approved content."
  }
}

REQUIRED. The url property MUST point to the root of the AI-layer domain or path.

7.4 llmld:resources — Resource Manifest

This is the core machine-readable payload. It enumerates every AI-layer resource with enough metadata for a crawler to prioritize and fetch them.

{
  "llmld:resources": [
    {
      "@type": "llmld:AIResource",
      "identifier": "llm-index",
      "name": "LLM-LD Index",
      "url": "https://ai.example.com/.well-known/llm-index.json",
      "encodingFormat": "application/json",
      "description": "Site-wide machine-readable index (LLM-LD 1.0).",
      "category": "index",
      "priority": 1
    },
    {
      "@type": "llmld:AIResource",
      "identifier": "llms-manifest",
      "name": "LLMs Manifest",
      "url": "https://ai.example.com/llms.txt",
      "encodingFormat": "text/plain",
      "description": "Plain-text manifest for LLM ingestion.",
      "category": "manifest",
      "priority": 2
    }
  ]
}

REQUIRED. MUST contain at least one resource.

Resource Object Properties

PropertyTypeRequiredDescription
@typeStringYesMUST be llmld:AIResource
identifierStringYesUnique slug (e.g., llm-index, entities, faq-feed)
nameStringYesHuman-readable resource name
urlURLYesAbsolute URL to the resource
encodingFormatStringYesMIME type of the resource
descriptionStringYesOne-sentence description of what this resource provides
categoryStringYesResource category (see below)
priorityIntegerNoSuggested fetch order (1 = first). Default: unordered
conformsToURLNoSpecification URL the resource conforms to
dateModifiedDateTimeNoLast update timestamp
sizeStringNoApproximate file size (e.g., "45KB")

Resource Categories

Standardized category values:

CategoryDescriptionTypical Files
indexSite-wide structured indexllm-index.json
manifestPlain-text or markdown manifestllms.txt, llms-full.txt
sitemapURL listing for crawlerssitemap.xml
entitiesEntity-first structured dataentities.json
knowledge-graphRelationship and context dataknowledge.graph.json
feedTyped data feedproducts.json, services.json, faq.json, articles.json
schemaValidation schemasJSON Schema files
otherAnything else

7.5 llmld:conformance — Conformance Declaration (Optional)

If the site implements LLM-LD, the ADP SHOULD include the conformance level:

{
  "llmld:conformance": {
    "level": 3,
    "level_name": "Agent-Ready",
    "validated": true,
    "validated_by": "https://llmdisco.com"
  }
}

7.6 llmld:verification — Verification Status (Optional)

{
  "llmld:verification": {
    "status": "verified",
    "directory": "https://llmdisco.com",
    "directory_name": "LLM Disco Directory",
    "listing_url": "https://llmdisco.com/sites/example"
  }
}

7.7 sameAs — Network Membership (Optional)

Links to the LLM Disco Network or other AI discovery networks:

{
  "sameAs": [
    "https://llmdisco.com/sites/example"
  ]
}

8. Body Content

The <body> is for humans. It SHOULD be intentionally minimal — this is not a marketing page.

8.1 Required Sections

8.1.1 Heading and Purpose Statement

<h1>{Organization Name} — AI Discovery</h1>
<p>
  This page provides discovery links to {Organization Name}'s 
  machine-readable AI layer. It is intended for AI crawlers, agents, 
  and developers.
</p>

MUST include the organization name. MUST include a one-paragraph explanation.

8.1.2 Resource Directory

An ordered list of AI-layer resources, matching the llmld:resources manifest:

<h2>Resources</h2>
<ol>
  <li><a href="https://ai.example.com/.well-known/llm-index.json">
    LLM-LD Index</a> — Site-wide machine-readable index</li>
  <li><a href="https://ai.example.com/llms.txt">
    LLMs Manifest</a> — Plain-text manifest for LLM ingestion</li>
  <!-- ... -->
</ol>

MUST be an ordered list (<ol>). MUST include every resource declared in llmld:resources. The order SHOULD match the priority values. Each item MUST link to the resource URL and include a brief description.

8.2 Optional Sections

8.2.1 Scope Statement

Clarifies what the AI layer includes and excludes:

<h2>Scope</h2>
<p>
  The AI layer mirrors public, client-approved content in machine-readable 
  formats. It does not include private data, credentials, or restricted 
  endpoints.
</p>

RECOMMENDED. Helps set expectations for both humans and AI systems.

8.2.2 Conformance Badge

If the site is verified through a directory:

<h2>Verification</h2>
<p>
  This site is verified by the 
  <a href="https://llmdisco.com/sites/example">LLM Disco Directory</a>.
  Conformance level: Agent-Ready (Level 3).
</p>

Links back to the primary human site:

<h2>Primary Site</h2>
<p>
  Human site: <a href="https://www.example.com">www.example.com</a>
</p>

RECOMMENDED.

8.3 Body Constraints

  • The body SHOULD NOT include marketing copy, sales pitches, or promotional content.
  • The body SHOULD NOT duplicate structured data that is already machine-readable in <head>.
  • The body SHOULD NOT exceed approximately 500 words. Brevity is a feature.
  • The body SHOULD NOT include navigation chrome, sidebars, or complex layouts. Minimal styling is preferred.

9. HTTP Requirements

9.1 Content-Type

The ADP MUST be served as:

Content-Type: text/html; charset=utf-8

9.2 Caching

Servers SHOULD provide cache headers appropriate to the update frequency:

Cache-Control: public, max-age=86400

9.3 CORS

If the ADP is hosted on a different domain than the AI layer, CORS headers are not required on the ADP itself (it is an HTML page, not an API endpoint). However, all resources linked from the ADP SHOULD include appropriate CORS headers as specified in LLM-LD 1.0 §10.3.

9.4 Compression

Servers SHOULD support gzip or brotli compression for the ADP.


10. Relationship to LLM-LD

10.1 Where ADP Fits

The ADP complements — but does not replace — LLM-LD's existing discovery mechanisms:

MechanismDefined InWhat It DiscoversAudience
.well-known/llm-index.jsonLLM-LD §10.1The LLM-LD index onlyMachines
robots.txt LLM-Index directiveLLM-LD §10.2The LLM-LD index onlyMachines
<link rel="llm-index"> on pagesLLM-LD §10.2The LLM-LD index onlyMachines
HTTP Link headerLLM-LD §10.2The LLM-LD index onlyMachines
LLM Disco Directory lookupLLM-LD §10.2The LLM-LD index onlyMachines
AI Discovery Page (this spec)ADP §1All AI-layer resourcesBoth

The ADP is the only mechanism that (a) enumerates the entire AI layer and (b) is readable by humans.

10.2 Conformance Implications

Publishing an ADP is OPTIONAL at all LLM-LD conformance levels. However:

  • Level 1 (Crawl-Ready): An ADP is RECOMMENDED if the site publishes any machine-readable resources beyond robots.txt and sitemap.xml.
  • Level 2 (Ingest-Ready): An ADP is RECOMMENDED.
  • Level 3 (Agent-Ready): An ADP is STRONGLY RECOMMENDED, as agent systems benefit from consolidated discovery.

10.3 Suggested Addition to LLM-LD 1.0

The LLM-LD specification SHOULD be amended to add a sixth discovery mechanism:

6. AI Discovery Page Check for an HTML page at /ai.html, /ai, or /ai-discovery that contains <script type="application/ld+json"> with @type: "llmld:DiscoveryPage". This page provides a complete resource manifest for the AI layer.


11. Discovery Chain

This section describes how an AI system discovers the ADP itself, and how the ADP fits into the broader discovery sequence.

11.1 How Crawlers Find the ADP

In order of priority:

  1. Footer or navigation link on the primary site. Site owners SHOULD include a visible link to the ADP from the site footer or a dedicated section of the navigation. (Example: a "🤖 AI-Optimized" badge linking to /ai.html.)

  2. robots.txt declaration: # AI Discovery Page AI-Discovery: https://www.example.com/ai.html

  3. Well-known redirect: /.well-known/ai-discovery → 302 to the ADP.

  4. Convention-based probing: Crawlers MAY check /ai.html, then /ai, then /ai-discovery.

For an AI system encountering a new domain:

1. GET /.well-known/llm-index.json
   → If found: parse LLM-LD index. Done (fast path).

2. GET /robots.txt
   → Look for "LLM-Index:" directive → fetch llm-index.json
   → Look for "AI-Discovery:" directive → fetch ADP

3. GET /ai.html (or /ai, or /ai-discovery)
   → If found: parse JSON-LD for full resource manifest
   → Fetch resources by priority order

4. Fall back to standard crawling (sitemap.xml, page-level Schema.org)

12. Security and Privacy

12.1 Public Content Only

The ADP MUST NOT link to resources that require authentication, contain credentials, or expose private data. It is a public index of public resources.

12.2 No Executable Content

The ADP SHOULD NOT include JavaScript beyond the JSON-LD <script> block. It is a static document. (Minimal CSS for readability is acceptable.)

12.3 URL Validation

AI systems processing the ADP SHOULD validate that all resource URLs in llmld:resources resolve to the declared domain(s) and are served over HTTPS.

12.4 Spoofing Resistance

The ADP's JSON-LD declares isPartOf with the primary site URL. AI systems SHOULD cross-check: if the ADP is served from www.example.com, the isPartOf WebSite URL SHOULD match www.example.com. A mismatch is a signal of potential spoofing.


13. Conformance Levels

An ADP conforms to this specification at one of two levels:

13.1 ADP Level 1: Minimal

Requirements: - Valid HTML5 document - <title> includes organization name and "AI Discovery" - At least one <link rel="llm-index"> in <head> - JSON-LD with @type: "llmld:DiscoveryPage", isPartOf, and llmld:resources containing at least one resource - <body> includes heading, purpose statement, and resource directory

13.2 ADP Level 2: Complete

Requirements: - Satisfies ADP Level 1 - llmld:aiLayer declared in JSON-LD - All published AI-layer resources listed in llmld:resources with priority values - Every <link> in <head> for each resource in the manifest - llmld:conformance declared (if site implements LLM-LD) - llmld:verification declared (if site is verified) - Scope statement in <body> - Discoverable via at least one mechanism from Section 11.1


14. Complete Example

14.1 ADP Level 2 — SaaS Company

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />

  <title>Acme Corp — AI Discovery</title>
  <meta name="description"
    content="Machine-readable AI layer discovery for Acme Corp. 
             Points to structured data, manifests, and endpoints." />
  <meta name="robots" content="index, follow" />

  <link rel="canonical" href="https://www.acme.com/ai.html" />

  <!-- ═══════════════════════════════════════════ -->
  <!-- Link Relations: AI-Layer Resources          -->
  <!-- ═══════════════════════════════════════════ -->

  <!-- Required -->
  <link rel="llm-index"
        type="application/json"
        href="https://ai.acme.com/.well-known/llm-index.json"
        title="LLM-LD Index" />

  <!-- Recommended -->
  <link rel="ai-manifest"
        type="text/plain"
        href="https://ai.acme.com/llms.txt"
        title="LLMs Manifest" />
  <link rel="sitemap"
        type="application/xml"
        href="https://ai.acme.com/sitemap.xml"
        title="AI Sitemap" />

  <!-- Optional typed resources -->
  <link rel="ai-resource" type="application/json"
        href="https://ai.acme.com/entities.json"
        title="Entity Index" data-resource-type="entities" />
  <link rel="ai-resource" type="application/json"
        href="https://ai.acme.com/knowledge.graph.json"
        title="Knowledge Graph" data-resource-type="knowledge-graph" />
  <link rel="ai-resource" type="application/json"
        href="https://ai.acme.com/products.json"
        title="Products Feed" data-resource-type="feed" />
  <link rel="ai-resource" type="application/json"
        href="https://ai.acme.com/faq.json"
        title="FAQ Feed" data-resource-type="feed" />

  <!-- ═══════════════════════════════════════════ -->
  <!-- Structured Data: Discovery Manifest         -->
  <!-- ═══════════════════════════════════════════ -->

  <script type="application/ld+json">
  {
    "@context": [
      "https://schema.org",
      "https://llmld.org/v1"
    ],
    "@type": "llmld:DiscoveryPage",
    "@id": "https://www.acme.com/ai.html",
    "name": "Acme Corp — AI Discovery",
    "description": "AI layer discovery hub for Acme Corp.",
    "dateModified": "2026-02-02T12:00:00Z",

    "isPartOf": {
      "@type": "WebSite",
      "name": "Acme Corp",
      "url": "https://www.acme.com"
    },

    "llmld:aiLayer": {
      "url": "https://ai.acme.com",
      "name": "Acme Corp AI Layer",
      "description": "Machine-readable mirror of public, approved content."
    },

    "llmld:resources": [
      {
        "@type": "llmld:AIResource",
        "identifier": "llm-index",
        "name": "LLM-LD Index",
        "url": "https://ai.acme.com/.well-known/llm-index.json",
        "encodingFormat": "application/json",
        "description": "Complete site-wide machine-readable index (LLM-LD 1.0).",
        "category": "index",
        "priority": 1,
        "conformsTo": "https://llmld.org/spec/1.0"
      },
      {
        "@type": "llmld:AIResource",
        "identifier": "llms-manifest",
        "name": "LLMs Manifest",
        "url": "https://ai.acme.com/llms.txt",
        "encodingFormat": "text/plain",
        "description": "Plain-text summary and link manifest for LLM ingestion.",
        "category": "manifest",
        "priority": 2
      },
      {
        "@type": "llmld:AIResource",
        "identifier": "ai-sitemap",
        "name": "AI Sitemap",
        "url": "https://ai.acme.com/sitemap.xml",
        "encodingFormat": "application/xml",
        "description": "Full URL listing for AI-layer pages.",
        "category": "sitemap",
        "priority": 3
      },
      {
        "@type": "llmld:AIResource",
        "identifier": "entities",
        "name": "Entity Index",
        "url": "https://ai.acme.com/entities.json",
        "encodingFormat": "application/json",
        "description": "Structured entity data for entity-first ingestion.",
        "category": "entities",
        "priority": 4
      },
      {
        "@type": "llmld:AIResource",
        "identifier": "knowledge-graph",
        "name": "Knowledge Graph",
        "url": "https://ai.acme.com/knowledge.graph.json",
        "encodingFormat": "application/json",
        "description": "Entity relationships and contextual links.",
        "category": "knowledge-graph",
        "priority": 5
      },
      {
        "@type": "llmld:AIResource",
        "identifier": "products-feed",
        "name": "Products Feed",
        "url": "https://ai.acme.com/products.json",
        "encodingFormat": "application/json",
        "description": "Structured product catalog.",
        "category": "feed",
        "priority": 6
      },
      {
        "@type": "llmld:AIResource",
        "identifier": "faq-feed",
        "name": "FAQ Feed",
        "url": "https://ai.acme.com/faq.json",
        "encodingFormat": "application/json",
        "description": "Frequently asked questions and answers.",
        "category": "feed",
        "priority": 7
      }
    ],

    "llmld:conformance": {
      "level": 3,
      "level_name": "Agent-Ready",
      "validated": true,
      "validated_by": "https://llmdisco.com"
    },

    "llmld:verification": {
      "status": "verified",
      "directory": "https://llmdisco.com",
      "directory_name": "LLM Disco Directory",
      "listing_url": "https://llmdisco.com/sites/acme"
    },

    "sameAs": [
      "https://llmdisco.com/sites/acme"
    ]
  }
  </script>
</head>

<body>
  <main>
    <h1>Acme Corp — AI Discovery</h1>

    <p>
      This page provides discovery links to Acme Corp's machine-readable
      AI layer. It is intended for AI crawlers, agents, and developers.
    </p>

    <p>
      If you arrived here from the site footer, this is the index behind
      the "AI-Optimized" badge. It helps AI systems find and understand our
      public content. No private data, credentials, or restricted endpoints
      are exposed.
    </p>

    <h2>Resources</h2>
    <ol>
      <li>
        <a href="https://ai.acme.com/.well-known/llm-index.json">LLM-LD Index</a>
        — Complete site-wide machine-readable index
      </li>
      <li>
        <a href="https://ai.acme.com/llms.txt">LLMs Manifest</a>
        — Plain-text summary and link manifest
      </li>
      <li>
        <a href="https://ai.acme.com/sitemap.xml">AI Sitemap</a>
        — Full URL listing for AI-layer pages
      </li>
      <li>
        <a href="https://ai.acme.com/entities.json">Entity Index</a>
        — Structured entity data
      </li>
      <li>
        <a href="https://ai.acme.com/knowledge.graph.json">Knowledge Graph</a>
        — Entity relationships and context
      </li>
      <li>
        <a href="https://ai.acme.com/products.json">Products Feed</a>
        — Structured product catalog
      </li>
      <li>
        <a href="https://ai.acme.com/faq.json">FAQ Feed</a>
        — Frequently asked questions
      </li>
    </ol>

    <h2>Verification</h2>
    <p>
      This site is verified by the
      <a href="https://llmdisco.com/sites/acme">LLM Disco Directory</a>.
      Conformance level: Agent-Ready (Level 3).
    </p>

    <h2>Primary Site</h2>
    <p>
      <a href="https://www.acme.com">www.acme.com</a>
    </p>
  </main>
</body>
</html>

14.2 ADP Level 1 — Minimal Local Business

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <title>Acme Dental — AI Discovery</title>
  <meta name="description"
    content="Machine-readable AI layer discovery for Acme Dental." />
  <meta name="robots" content="index, follow" />
  <link rel="canonical" href="https://www.acmedental.com/ai.html" />
  <link rel="llm-index"
        type="application/json"
        href="https://ai.acmedental.com/llm-index.json"
        title="LLM-LD Index" />
  <script type="application/ld+json">
  {
    "@context": ["https://schema.org", "https://llmld.org/v1"],
    "@type": "llmld:DiscoveryPage",
    "@id": "https://www.acmedental.com/ai.html",
    "name": "Acme Dental — AI Discovery",
    "description": "AI layer discovery for Acme Dental.",
    "dateModified": "2026-02-02T12:00:00Z",
    "isPartOf": {
      "@type": "WebSite",
      "name": "Acme Dental",
      "url": "https://www.acmedental.com"
    },
    "llmld:resources": [
      {
        "@type": "llmld:AIResource",
        "identifier": "llm-index",
        "name": "LLM-LD Index",
        "url": "https://ai.acmedental.com/llm-index.json",
        "encodingFormat": "application/json",
        "description": "Site-wide machine-readable index.",
        "category": "index",
        "priority": 1
      }
    ]
  }
  </script>
</head>
<body>
  <main>
    <h1>Acme Dental — AI Discovery</h1>
    <p>
      This page provides discovery links to Acme Dental's machine-readable
      AI layer for AI crawlers, agents, and developers.
    </p>
    <h2>Resources</h2>
    <ol>
      <li>
        <a href="https://ai.acmedental.com/llm-index.json">LLM-LD Index</a>
        — Site-wide machine-readable index
      </li>
    </ol>
    <p>
      Primary site: <a href="https://www.acmedental.com">www.acmedental.com</a>
    </p>
  </main>
</body>
</html>

15. Anti-Patterns

These are common mistakes to avoid when implementing an ADP.

15.1 Using rel="alternate" for AI Resources

<!-- ❌ WRONG: llms.txt is not an alternate representation of this page -->
<link rel="alternate" type="text/markdown" href="https://ai.example.com/llms.txt" />

<!-- ✅ CORRECT -->
<link rel="ai-manifest" type="text/plain" href="https://ai.example.com/llms.txt" />

15.2 Using Generic WebPage Type

// ❌ WRONG: gives no signal about the page's discovery role
{ "@type": "WebPage" }

// ✅ CORRECT
{ "@type": "llmld:DiscoveryPage" }

15.3 Listing Resources Only in HTML

If resources are listed in the <body> but not in the JSON-LD llmld:resources manifest, machines must parse HTML to find them. The JSON-LD MUST be the source of truth.

15.4 Hosting the ADP on the AI Subdomain

The ADP lives on the primary site. It is the bridge from the human web to the AI layer. Putting it on the AI subdomain defeats its purpose as a discovery page — crawlers already on the AI subdomain don't need discovery help.

15.5 Including Marketing Content

The ADP is not a landing page. Keep it factual, short, and structured. Marketing copy reduces signal density for both humans and machines.

15.6 Duplicating llm-index.json Content

The ADP points to the LLM-LD index; it does not reproduce it. Do not embed full entity descriptions, product details, or FAQ content in the ADP's JSON-LD.

<link> elements provide quick pointers but lack the metadata (descriptions, categories, priorities, conformance) that the JSON-LD manifest provides. Both are needed.


Appendix A: Changes from the Original Concept

The following table summarizes what changed between the original concept (Document 1) and this specification:

AspectOriginal ConceptThis Specification
@typeWebPagellmld:DiscoveryPage
rel for llms.txtalternate (wrong)ai-manifest
rel for entity/graph feedsNot declaredai-resource with data-resource-type
Resource manifestNone (resources listed only in HTML about array)llmld:resources with typed objects
AI layer declarationImplicitExplicit llmld:aiLayer
URL convention/ai-discovery/ai.html preferred (with alternatives)
JSON-LD about arrayUsed to list resources (semantic mismatch)Removed; replaced by llmld:resources
ASO explanationLong section in bodyRemoved (out of scope for the page)
LLM-LD explanationLong section in bodyRemoved (out of scope for the page)
Body length~500 words of explainerConstrained to resource directory + brief context

Appendix B: Quick Reference — Minimum Viable ADP

A conforming ADP Level 1 needs exactly:

In <head>: - <meta charset> and <meta name="viewport"> - <title> with org name + "AI Discovery" - <meta name="description"> - <link rel="canonical"> - <link rel="llm-index"> pointing to llm-index.json - <script type="application/ld+json"> with @type: "llmld:DiscoveryPage", isPartOf, and at least one llmld:resources entry

In <body>: - <h1> with org name - One paragraph explaining the page's purpose - <ol> listing every resource from the manifest

That's it. Everything else is optional enrichment.


This specification proposes registration of the following link relations:

RelationDescriptionReference
llm-indexLinks to an LLM-LD index documentLLM-LD 1.0 §13.2
ai-manifestLinks to an LLMs.txt or similar plain-text AI manifestThis document
ai-resourceLinks to an AI-layer resource (type indicated by data-resource-type)This document

The ai-discovery relation (for use on other pages linking to the ADP) is reserved for future registration:

<!-- On any page of the primary site -->
<link rel="ai-discovery" href="/ai.html" />

End of Specification