ADP 1.0 — AI Discovery Page Specification
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
- Problem Statement
- Design Principles
- Terminology
- URL and Placement
- Document Structure
- Head Element Requirements
- Structured Data (JSON-LD)
- Body Content
- HTTP Requirements
- Relationship to LLM-LD
- Discovery Chain
- Security and Privacy
- Conformance Levels
- Complete Example
- 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
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.Complementary, not redundant. The ADP does not replace
llm-index.json,robots.txtdirectives, or<link rel="llm-index">on individual pages. It adds a consolidated discovery hub that points to all of them.Minimal by default. A conforming ADP can be very short. The specification defines required minimums and optional enrichments.
Correct semantics. Link relations, JSON-LD types, and HTML structure follow established web standards. No repurposing of existing relations for new meanings.
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:
| Priority | Path | Notes |
|---|---|---|
| 1 | /ai.html | Short, predictable, crawlable |
| 2 | /ai | Clean URL (server must return HTML) |
| 3 | /ai-discovery | Descriptive, 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.
6.6 Link Relations
Link relations advertise AI-layer resources. Each resource type has a specific rel value.
6.6.1 Required Link Relations
The following MUST be present if the corresponding resource exists:
rel Value | Resource | Type | Notes |
|---|---|---|---|
llm-index | LLM-LD Index | application/json | Defined 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" />
6.6.2 Recommended Link Relations
rel Value | Resource | Type | Notes |
|---|---|---|---|
ai-manifest | LLMs.txt manifest | text/plain | The llms.txt file |
sitemap | AI Sitemap | application/xml | Standard 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" />
6.6.3 Optional Link Relations
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.alternatemeans "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"orrel="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
| Property | Type | Required | Description |
|---|---|---|---|
@type | String | Yes | MUST be llmld:AIResource |
identifier | String | Yes | Unique slug (e.g., llm-index, entities, faq-feed) |
name | String | Yes | Human-readable resource name |
url | URL | Yes | Absolute URL to the resource |
encodingFormat | String | Yes | MIME type of the resource |
description | String | Yes | One-sentence description of what this resource provides |
category | String | Yes | Resource category (see below) |
priority | Integer | No | Suggested fetch order (1 = first). Default: unordered |
conformsTo | URL | No | Specification URL the resource conforms to |
dateModified | DateTime | No | Last update timestamp |
size | String | No | Approximate file size (e.g., "45KB") |
Resource Categories
Standardized category values:
| Category | Description | Typical Files |
|---|---|---|
index | Site-wide structured index | llm-index.json |
manifest | Plain-text or markdown manifest | llms.txt, llms-full.txt |
sitemap | URL listing for crawlers | sitemap.xml |
entities | Entity-first structured data | entities.json |
knowledge-graph | Relationship and context data | knowledge.graph.json |
feed | Typed data feed | products.json, services.json, faq.json, articles.json |
schema | Validation schemas | JSON Schema files |
other | Anything 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>
8.2.3 Provenance Link
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:
| Mechanism | Defined In | What It Discovers | Audience |
|---|---|---|---|
.well-known/llm-index.json | LLM-LD §10.1 | The LLM-LD index only | Machines |
robots.txt LLM-Index directive | LLM-LD §10.2 | The LLM-LD index only | Machines |
<link rel="llm-index"> on pages | LLM-LD §10.2 | The LLM-LD index only | Machines |
HTTP Link header | LLM-LD §10.2 | The LLM-LD index only | Machines |
| LLM Disco Directory lookup | LLM-LD §10.2 | The LLM-LD index only | Machines |
| AI Discovery Page (this spec) | ADP §1 | All AI-layer resources | Both |
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.txtandsitemap.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-discoverythat 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:
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.)robots.txtdeclaration:# AI Discovery Page AI-Discovery: https://www.example.com/ai.htmlWell-known redirect:
/.well-known/ai-discovery→ 302 to the ADP.Convention-based probing: Crawlers MAY check
/ai.html, then/ai, then/ai-discovery.
11.2 Full Discovery Sequence (Recommended)
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.
15.7 Omitting the JSON-LD and Relying Only on <link> Elements
<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:
| Aspect | Original Concept | This Specification |
|---|---|---|
@type | WebPage | llmld:DiscoveryPage |
rel for llms.txt | alternate (wrong) | ai-manifest |
rel for entity/graph feeds | Not declared | ai-resource with data-resource-type |
| Resource manifest | None (resources listed only in HTML about array) | llmld:resources with typed objects |
| AI layer declaration | Implicit | Explicit llmld:aiLayer |
| URL convention | /ai-discovery | /ai.html preferred (with alternatives) |
JSON-LD about array | Used to list resources (semantic mismatch) | Removed; replaced by llmld:resources |
| ASO explanation | Long section in body | Removed (out of scope for the page) |
| LLM-LD explanation | Long section in body | Removed (out of scope for the page) |
| Body length | ~500 words of explainer | Constrained 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.
Appendix C: Link Relation Registry
This specification proposes registration of the following link relations:
| Relation | Description | Reference |
|---|---|---|
llm-index | Links to an LLM-LD index document | LLM-LD 1.0 §13.2 |
ai-manifest | Links to an LLMs.txt or similar plain-text AI manifest | This document |
ai-resource | Links 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