LLM-LD 1.0 Specification
LLM-LD 1.0 Specification
Linked Data Standard for AI-Accessible Websites
Version: 1.0
Status: Draft Specification
Published: February 2026
Latest Version: https://llmld.org/spec/1.0
Editors: CAPXEL
Repository: https://github.com/llmdisco/llm-ld-spec
Abstract
LLM-LD (Large Language Model Linked Data) is a specification for making websites accessible, understandable, and actionable by artificial intelligence systems. It extends Schema.org vocabulary with AI-specific constructs that enable crawlers, agents, and AI-powered applications to efficiently discover, ingest, and interact with web content.
This specification defines:
- A file format (
llm-index.json) that serves as a complete machine-readable representation of a website - A vocabulary of properties optimized for AI consumption
- Conformance levels that allow incremental adoption
- A verification mechanism through the LLM Disco Directory
Table of Contents
- Introduction
- Terminology
- Conformance Levels
- File Structure
- Core Properties
- Entity Properties
- Agent Intelligence Properties
- Verification Properties
- Meta Properties
- File Placement and Discovery
- Relationship to Schema.org
- Security Considerations
- IANA Considerations
- Examples
- JSON Schema
- Changelog
1. Introduction
1.1 Background
The proliferation of AI systems that consume web content—including search engines, chatbots, autonomous agents, and retrieval-augmented generation (RAG) systems—has created a need for websites to communicate with these systems in structured, predictable ways.
Traditional web standards (HTML, robots.txt, sitemap.xml) were designed for human readers and traditional search crawlers. While Schema.org provides structured data vocabulary, it focuses on describing entities rather than enabling AI interaction.
LLM-LD addresses this gap by providing:
- Consolidation: A single file containing all information an AI needs
- Actionability: Clear definitions of what actions are available
- Context: Guidance for AI decision-making
- Verification: Trust signals through directory membership
1.2 Goals
- Enable AI systems to understand a website's complete offering in a single request
- Provide clear, unambiguous action endpoints for agentic AI
- Establish trust through verifiable directory membership
- Maintain backwards compatibility with Schema.org
- Support incremental adoption through conformance levels
1.3 Audience
This specification is intended for:
- Web developers implementing LLM-LD on websites
- AI system developers consuming LLM-LD data
- Tool developers building LLM-LD generators and validators
- Directory operators integrating with the LLM Disco network
1.4 Document Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
2. Terminology
AI Crawler : An automated system that retrieves and indexes web content for AI applications. Examples include GPTBot, ClaudeBot, and PerplexityBot.
Agent : An AI system capable of taking actions on behalf of a user, including navigation, form submission, and API calls.
Conformance Level : A defined set of requirements that an implementation must satisfy. LLM-LD defines three levels: Crawl-Ready, Ingest-Ready, and Agent-Ready.
Entity : A distinct thing described by the website, such as a product, service, person, or organization.
LLM Disco Directory : A network of LLM-LD compliant websites maintained by the CAPXEL, providing verification and discovery services.
Primary Entity : The main entity that a website represents, typically an Organization or LocalBusiness.
Verification : The process of confirming that a website is legitimately associated with its claimed identity through directory membership.
3. Conformance Levels
LLM-LD defines three conformance levels, each building upon the previous:
3.1 Level 1: Crawl-Ready
Purpose: Enable AI crawlers to discover and index website content.
Requirements: - MUST serve valid robots.txt allowing AI crawlers - MUST provide sitemap.xml listing all pages - SHOULD include Schema.org JSON-LD on individual pages
Files:
website.com/
├── robots.txt
├── sitemap.xml
└── [pages with Schema.org markup]
3.2 Level 2: Ingest-Ready
Purpose: Enable AI systems to understand the complete website from a single file.
Requirements: - MUST satisfy Level 1 requirements - MUST serve llm-index.json at the designated location - MUST include all Core Properties (Section 5) - SHOULD include applicable Entity Properties (Section 6)
Files:
website.com/
├── robots.txt
├── sitemap.xml
├── .well-known/llm-index.json # OR /llm-index.json
└── [pages with Schema.org markup]
3.3 Level 3: Agent-Ready
Purpose: Enable AI agents to take actions and make informed decisions.
Requirements: - MUST satisfy Level 2 requirements - MUST include llmld:actions with at least one actionable endpoint - SHOULD include Agent Intelligence Properties (Section 7) - SHOULD register with the LLM Disco Directory for verification
Files:
website.com/
├── robots.txt
├── sitemap.xml
├── .well-known/llm-index.json
└── [pages with Schema.org markup]
3.4 Conformance Declaration
Implementations SHOULD declare their conformance level in the llmld:conformance property:
{
"llmld:conformance": {
"level": 3,
"level_name": "Agent-Ready",
"validated": true,
"validated_by": "https://llmdisco.com",
"validated_at": "2026-02-02T00:00:00Z"
}
}
4. File Structure
4.1 File Format
LLM-LD documents MUST be valid JSON conforming to RFC 8259.
The file MUST use UTF-8 encoding without BOM.
The recommended filename is llm-index.json.
4.2 Context Declaration
Every LLM-LD document MUST include a JSON-LD context declaration:
{
"@context": [
"https://schema.org",
"https://llmld.org/v1"
],
"@type": "llmld:AIWebsite",
"@id": "https://example.com/llm-index.json"
}
The @context array: - MUST include "https://schema.org" for Schema.org compatibility - MUST include "https://llmld.org/v1" for LLM-LD vocabulary
The @type: - MUST be "llmld:AIWebsite"
The @id: - MUST be the canonical URL of the llm-index.json file
4.3 Property Namespacing
Properties defined by this specification use the llmld: prefix to distinguish them from Schema.org properties:
llmld:summary- LLM-LD propertyname- Schema.org property (no prefix needed in context)
4.4 Size Considerations
There is no maximum file size specified. However, implementations SHOULD consider:
- Files under 100KB are optimal for most AI systems
- Files over 500KB SHOULD provide a
llmld:summarysufficient for basic understanding - Very large sites MAY split content across multiple files referenced from the main index
5. Core Properties
Core properties are REQUIRED for Level 2 and Level 3 conformance.
5.1 llmld:meta
Description: Metadata about the LLM-LD document itself.
Type: Object
Required: Yes (Level 2+)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
version | String | Yes | LLM-LD specification version (e.g., "1.0") |
generated | DateTime | Yes | ISO 8601 timestamp of generation |
generator | String | No | Software that generated this file |
expires | DateTime | No | When this data should be considered stale |
refresh_interval | String | No | Suggested refresh frequency (e.g., "daily", "weekly") |
checksum | String | No | SHA-256 hash of content for cache validation |
language | String | No | Primary language (BCP 47 code, e.g., "en-US") |
Example:
{
"llmld:meta": {
"version": "1.0",
"generated": "2026-02-02T12:00:00Z",
"generator": "aso-generator/2.0",
"expires": "2026-02-09T12:00:00Z",
"refresh_interval": "weekly",
"language": "en-US"
}
}
5.2 llmld:site
Description: Core identity information about the website and organization.
Type: Object
Required: Yes (Level 2+)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
name | String | Yes | Organization or website name |
legal_name | String | No | Registered legal name |
type | String | Yes | Primary type (e.g., "Business", "NonProfit", "Government") |
industry | Array[String] | No | Industry categories |
description | String | Yes | Brief description (1-2 sentences) |
tagline | String | No | Marketing tagline or slogan |
founded | String | No | Year founded |
domains | Object | Yes | Associated domains (see below) |
location | Object | No | Physical location information |
social | Object | No | Social media profiles |
identifiers | Object | No | External identifiers (EIN, DUNS, etc.) |
domains Object:
| Property | Type | Required | Description |
|---|---|---|---|
primary | URL | Yes | Main website URL |
ai | URL | No | AI-specific subdomain if different |
app | URL | No | Application URL |
docs | URL | No | Documentation URL |
api | URL | No | API endpoint URL |
location Object:
| Property | Type | Required | Description |
|---|---|---|---|
headquarters | PostalAddress | No | Primary address |
service_area | String | No | Geographic service area |
primary_markets | Array[String] | No | Primary market countries/regions |
Example:
{
"llmld:site": {
"name": "Example Company",
"legal_name": "Example Company, Inc.",
"type": "Business",
"industry": ["Marketing Technology", "SaaS"],
"description": "AI-powered marketing tools for businesses.",
"tagline": "Marketing intelligence, simplified.",
"founded": "2020",
"domains": {
"primary": "https://www.example.com",
"ai": "https://ai.example.com",
"docs": "https://docs.example.com",
"api": "https://api.example.com"
},
"location": {
"headquarters": {
"address": "123 Innovation Drive",
"city": "Miami",
"state": "FL",
"postal_code": "33101",
"country": "US",
"geo": {
"lat": 25.7617,
"lng": -80.1918
}
},
"service_area": "Global",
"primary_markets": ["United States", "United Kingdom", "Canada"]
},
"social": {
"linkedin": "https://linkedin.com/company/example",
"twitter": "https://twitter.com/example"
}
}
}
5.3 llmld:primaryEntity
Description: Reference to the main entity this website represents.
Type: Object
Required: Yes (Level 2+)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
@id | String | Yes | Local reference ID (e.g., "#organization") |
@type | String | Yes | Schema.org type |
name | String | Yes | Entity name |
description | String | No | Brief description |
url | URL | No | Canonical URL |
logo | URL | No | Logo image URL |
image | URL | No | Primary image URL |
Example:
{
"llmld:primaryEntity": {
"@id": "#organization",
"@type": "Organization",
"name": "Example Company",
"description": "AI-powered marketing tools for businesses",
"url": "https://www.example.com",
"logo": "https://www.example.com/logo.png"
}
}
5.4 llmld:summary
Description: Condensed information for quick AI understanding.
Type: Object
Required: Yes (Level 2+)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
one_liner | String | Yes | Single sentence description |
paragraph | String | Yes | 2-4 sentence overview |
key_facts | Array[String] | Yes | 3-10 bullet-point facts |
differentiators | Array[String] | No | What makes this entity unique |
target_customers | Array[String] | No | Ideal customer descriptions |
Example:
{
"llmld:summary": {
"one_liner": "Example Company builds AI-powered marketing tools for businesses.",
"paragraph": "Example Company is a marketing technology company based in Miami, Florida. Founded in 2020, we build tools that help businesses understand their markets and customers. Our products include competitive intelligence, web analytics, and conversion optimization platforms.",
"key_facts": [
"Founded in 2020",
"2,500+ customers",
"3 SaaS products",
"SOC 2 Type II certified"
],
"differentiators": [
"Daily data updates (competitors update weekly)",
"Privacy-first analytics",
"AI-powered insights"
],
"target_customers": [
"Small to medium businesses",
"Marketing teams",
"Digital agencies"
]
}
}
5.5 llmld:pages
Description: Complete sitemap in structured format.
Type: Array[Object]
Required: Yes (Level 2+)
Page Object Properties:
| Property | Type | Required | Description |
|---|---|---|---|
path | String | Yes | URL path (e.g., "/about") |
title | String | Yes | Page title |
type | String | Yes | Page type (see Page Types below) |
url | URL | Yes | Full URL |
schemas | Array[String] | No | Schema.org types used on this page |
entity | String | No | Reference to entity defined in this document |
children | Array[String] | No | Child page paths |
description | String | No | Brief page description |
lastmod | Date | No | Last modification date |
Page Types: - homepage - Main landing page - about - About/company information - product - Individual product page - service - Individual service page - listing - Collection/category page - article - Blog post or article - person - Individual person profile - contact - Contact information - pricing - Pricing information - faq - Frequently asked questions - legal - Legal/policy pages - other - Other page types
Example:
{
"llmld:pages": [
{
"path": "/",
"title": "Example Company - AI-Powered Marketing Tools",
"type": "homepage",
"url": "https://www.example.com/",
"schemas": ["Organization", "WebSite"]
},
{
"path": "/products",
"title": "Products",
"type": "listing",
"url": "https://www.example.com/products",
"schemas": ["ItemList"],
"children": ["/products/spybox", "/products/statilitix"]
},
{
"path": "/products/spybox",
"title": "SPYBOX - Competitive Intelligence",
"type": "product",
"url": "https://www.example.com/products/spybox",
"schemas": ["SoftwareApplication", "FAQPage"],
"entity": "#product-spybox"
}
]
}
5.6 llmld:actions
Description: Available actions that users or agents can take.
Type: Object
Required: Yes (Level 3), Recommended (Level 2)
Structure:
{
"llmld:actions": {
"primary": [...], // Main CTAs
"purchase": [...], // Buy actions
"contact": [...], // Contact methods
"resources": [...] // Informational links
}
}
Action Object Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | String | Yes | Unique action identifier |
name | String | Yes | Human-readable action name |
description | String | No | What this action does |
url | URL | Yes* | Action URL (*or channels for contact) |
type | String | Yes | Action type (see Action Types below) |
priority | Integer | No | Display priority (1 = highest) |
requires_auth | Boolean | No | Whether authentication is required |
product | String | No | Reference to associated product |
best_for | Array[String] | No | Use cases this action suits |
parameters | Array[Object] | No | URL parameters or form fields |
channels | Array[Object] | No | For contact actions, available channels |
Action Types: - signup - Create account or start trial - purchase - Buy product/service - schedule - Book appointment/demo - form - Submit a form - contact - Contact via various channels - navigate - Navigate to URL - download - Download resource - api - API endpoint
Example:
{
"llmld:actions": {
"primary": [
{
"id": "start-trial",
"name": "Start Free Trial",
"description": "Begin a 14-day free trial",
"url": "https://www.example.com/signup",
"type": "signup",
"priority": 1,
"requires_auth": false,
"parameters": [
{
"name": "product",
"type": "enum",
"options": ["spybox", "statilitix", "funnelsnax"],
"required": false
}
]
},
{
"id": "book-demo",
"name": "Book a Demo",
"description": "Schedule a live product walkthrough",
"url": "https://calendly.com/example/demo",
"type": "schedule",
"priority": 2,
"requires_auth": false
}
],
"purchase": [
{
"id": "buy-spybox",
"name": "Buy SPYBOX",
"url": "https://www.example.com/checkout?product=spybox",
"type": "purchase",
"product": "#product-spybox",
"requires_auth": true
}
],
"contact": [
{
"id": "contact-sales",
"name": "Contact Sales",
"type": "contact",
"channels": [
{
"type": "email",
"value": "sales@example.com",
"label": "Email Sales"
},
{
"type": "phone",
"value": "+1-305-555-1234",
"label": "Call Sales",
"hours": "Mon-Fri 9am-6pm EST"
},
{
"type": "form",
"value": "https://www.example.com/contact",
"label": "Contact Form"
}
],
"best_for": ["Pricing questions", "Enterprise inquiries"]
}
],
"resources": [
{
"id": "documentation",
"name": "Documentation",
"url": "https://docs.example.com",
"type": "navigate"
}
]
}
}
5.7 llmld:contact
Description: Contact information organized by purpose.
Type: Object
Required: Yes (Level 2+)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
general | ContactPoint | No | General inquiries |
sales | ContactPoint | No | Sales team |
support | ContactPoint | No | Customer support |
partnerships | ContactPoint | No | Partnership inquiries |
press | ContactPoint | No | Media inquiries |
address | PostalAddress | No | Physical address |
ContactPoint Properties:
| Property | Type | Required | Description |
|---|---|---|---|
email | No | Email address | |
phone | String | No | Phone number (E.164 format preferred) |
chat | URL | No | Live chat URL |
calendar | URL | No | Scheduling link |
hours | String | No | Availability hours |
response_time | String | No | Expected response time |
person | String | No | Reference to person entity |
Example:
{
"llmld:contact": {
"general": {
"email": "hello@example.com",
"phone": "+1-305-555-1234",
"hours": "Mon-Fri 9am-6pm EST"
},
"sales": {
"email": "sales@example.com",
"phone": "+1-305-555-1234",
"calendar": "https://calendly.com/example/sales",
"person": "#person-mike-rodriguez"
},
"support": {
"email": "support@example.com",
"chat": "https://www.example.com",
"response_time": "24 hours"
},
"address": {
"street": "123 Innovation Drive, Suite 400",
"city": "Miami",
"state": "FL",
"postal_code": "33101",
"country": "US"
}
}
}
6. Entity Properties
Entity properties describe the things a website offers. Include properties applicable to your site.
6.1 llmld:products
Description: Products offered by the organization.
Type: Array[Product]
Required: No (include if applicable)
Product Properties:
| Property | Type | Required | Description |
|---|---|---|---|
@id | String | Yes | Unique identifier (e.g., "#product-spybox") |
@type | String | Yes | Schema.org type (Product, SoftwareApplication, etc.) |
name | String | Yes | Product name |
headline | String | No | Short tagline |
description | String | Yes | Product description |
category | String | No | Product category |
sub_category | String | No | More specific category |
features | Array[String] | No | Feature list |
pricing | PricingObject | No | Pricing information |
trial | TrialObject | No | Trial information |
requirements | Object | No | Technical requirements |
integrations | Array[String] | No | Available integrations |
ratings | Object | No | External ratings (G2, Capterra, etc.) |
use_cases | Array[String] | No | Common use cases |
best_for | Array[String] | No | Ideal customer types |
not_for | Array[String] | No | Poor fit scenarios |
competitors | Array[Object] | No | Competitor comparisons |
actions | Object | No | Product-specific actions |
PricingObject:
| Property | Type | Required | Description |
|---|---|---|---|
model | String | Yes | "subscription", "one-time", "usage", "free" |
currency | String | Yes | ISO 4217 currency code |
billing_cycles | Array[String] | No | ["monthly", "annual"] |
annual_discount | String | No | Discount for annual billing |
plans | Array[PlanObject] | No | Available plans |
PlanObject:
| Property | Type | Required | Description |
|---|---|---|---|
name | String | Yes | Plan name |
price_monthly | Number/String | Yes | Monthly price or "custom" |
price_annual | Number/String | No | Annual price |
features | Array[String] | Yes | Features included |
popular | Boolean | No | Mark as recommended plan |
TrialObject:
| Property | Type | Required | Description |
|---|---|---|---|
available | Boolean | Yes | Whether trial is available |
duration_days | Integer | No | Trial length in days |
credit_card_required | Boolean | No | Whether CC is required |
Example:
{
"llmld:products": [
{
"@id": "#product-spybox",
"@type": "SoftwareApplication",
"name": "SPYBOX",
"headline": "Competitive Intelligence Platform",
"description": "Track competitors' websites, ads, and social presence.",
"category": "BusinessApplication",
"sub_category": "Competitive Intelligence",
"features": [
"Competitor website tracking",
"Ad creative monitoring",
"Daily data updates"
],
"pricing": {
"model": "subscription",
"currency": "USD",
"billing_cycles": ["monthly", "annual"],
"annual_discount": "20%",
"plans": [
{
"name": "Starter",
"price_monthly": 49,
"price_annual": 470,
"features": ["5 competitors", "Weekly updates"]
},
{
"name": "Pro",
"price_monthly": 99,
"price_annual": 950,
"features": ["15 competitors", "Daily updates", "API access"],
"popular": true
},
{
"name": "Enterprise",
"price_monthly": "custom",
"features": ["Unlimited competitors", "SSO", "Dedicated support"]
}
]
},
"trial": {
"available": true,
"duration_days": 14,
"credit_card_required": false
},
"best_for": ["Agencies", "E-commerce", "SaaS companies"],
"actions": {
"try": {
"label": "Start Free Trial",
"url": "https://www.example.com/signup?product=spybox"
},
"buy": {
"label": "Buy Now",
"url": "https://www.example.com/checkout?product=spybox"
}
}
}
]
}
6.2 llmld:services
Description: Services offered by the organization.
Type: Array[Service]
Required: No (include if applicable)
Service Properties:
| Property | Type | Required | Description |
|---|---|---|---|
@id | String | Yes | Unique identifier |
@type | String | Yes | Schema.org type (Service, ProfessionalService, etc.) |
name | String | Yes | Service name |
description | String | Yes | Service description |
category | String | No | Service category |
deliverables | Array[String] | No | What's delivered |
pricing | ServicePricingObject | No | Pricing information |
timeline | String | No | Typical duration |
process | Array[String] | No | Process steps |
requirements | Array[String] | No | Client requirements |
best_for | Array[String] | No | Ideal client types |
actions | Object | No | Service-specific actions |
ServicePricingObject:
| Property | Type | Required | Description |
|---|---|---|---|
model | String | Yes | "project", "hourly", "retainer", "setup_plus_recurring" |
currency | String | Yes | ISO 4217 currency code |
range | Object | No | Min/max pricing |
setup | Number | No | One-time setup fee |
monthly | Number | No | Monthly recurring fee |
hourly | Number | No | Hourly rate |
factors | Array[String] | No | What affects pricing |
Example:
{
"llmld:services": [
{
"@id": "#service-aso",
"@type": "Service",
"name": "ASO Implementation",
"description": "Make your site discoverable by AI search engines.",
"category": "Technical Implementation",
"deliverables": [
"AI-optimized subdomain",
"Schema injection",
"LLM-LD compliance",
"LLM Disco Directory listing"
],
"pricing": {
"model": "setup_plus_recurring",
"currency": "USD",
"setup": 500,
"monthly": 199
},
"timeline": "1-2 weeks",
"process": [
"Discovery call",
"Technical setup",
"Content optimization",
"Launch and verification"
],
"actions": {
"inquire": {
"label": "Get Started",
"url": "https://www.example.com/quote?service=aso"
}
}
}
]
}
6.3 llmld:people
Description: Key people associated with the organization.
Type: Array[Person]
Required: No (include if applicable)
Person Properties:
| Property | Type | Required | Description |
|---|---|---|---|
@id | String | Yes | Unique identifier |
@type | String | Yes | "Person" |
name | String | Yes | Full name |
jobTitle | String | No | Job title |
description | String | No | Brief bio |
image | URL | No | Photo URL |
email | No | Email address | |
phone | String | No | Phone number |
social | Object | No | Social media profiles |
expertise | Array[String] | No | Areas of expertise |
contact_for | Array[String] | No | What to contact them about |
worksFor | String | No | Reference to organization |
Example:
{
"llmld:people": [
{
"@id": "#person-john-smith",
"@type": "Person",
"name": "John Smith",
"jobTitle": "CEO & Founder",
"description": "15+ years in digital marketing and AI.",
"image": "https://www.example.com/team/john-smith.jpg",
"email": "john@example.com",
"social": {
"linkedin": "https://linkedin.com/in/johnsmith",
"twitter": "https://twitter.com/johnsmith"
},
"expertise": ["Marketing strategy", "AI/ML"],
"worksFor": "#organization"
}
]
}
6.4 llmld:faq
Description: Frequently asked questions and answers.
Type: Array[FAQItem]
Required: No (recommended)
FAQItem Properties:
| Property | Type | Required | Description |
|---|---|---|---|
id | String | No | Unique identifier |
question | String | Yes | The question |
answer | String | Yes | The answer |
category | String | No | Question category |
action | Object | No | Related action |
Example:
{
"llmld:faq": [
{
"id": "trial",
"question": "Do you offer a free trial?",
"answer": "Yes! All products include a 14-day free trial. No credit card required.",
"category": "pricing",
"action": {
"label": "Start Free Trial",
"url": "https://www.example.com/signup"
}
},
{
"id": "cancel",
"question": "Can I cancel anytime?",
"answer": "Yes, no contracts or cancellation fees. Cancel from your account settings at any time.",
"category": "pricing"
}
]
}
7. Agent Intelligence Properties
Agent Intelligence properties provide guidance for AI systems making decisions. These are RECOMMENDED for Level 3 conformance.
7.1 llmld:context
Description: Guidance for AI decision-making and responses.
Type: Object
Required: No (recommended for Level 3)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
decision_guidance | Array[GuidanceObject] | No | Scenario-based guidance |
things_to_avoid | Array[String] | No | Actions/statements AI should avoid |
tone | String | No | Suggested communication tone |
escalation_triggers | Array[String] | No | When to suggest human contact |
GuidanceObject:
| Property | Type | Required | Description |
|---|---|---|---|
scenario | String | Yes | Scenario description |
guidance | String | Yes | Recommended approach |
Example:
{
"llmld:context": {
"decision_guidance": [
{
"scenario": "User asks about products",
"guidance": "Understand their primary need first. Match to appropriate product. If unclear, SPYBOX is our most popular."
},
{
"scenario": "User is price-sensitive",
"guidance": "Start with Statilitix ($49/mo) or mention the free trial. Highlight annual discount (20% off)."
},
{
"scenario": "User wants to talk to a human",
"guidance": "Provide contact options immediately. Sales: sales@example.com. Support: support@example.com."
}
],
"things_to_avoid": [
"Making up pricing not listed in this document",
"Promising specific features without verification",
"Committing to timelines for custom work",
"Providing legal or compliance advice"
],
"tone": "Professional but approachable. Expert but not condescending.",
"escalation_triggers": [
"User mentions legal or compliance requirements",
"User asks about enterprise pricing",
"User reports a bug or technical issue",
"User expresses frustration"
]
}
}
7.2 llmld:capabilities
Description: What AI can and cannot help with for this organization.
Type: Object
Required: No (recommended for Level 3)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
what_we_can_help_with | Array[String] | Yes | Topics AI can address |
what_requires_human | Array[String] | No | Topics requiring human involvement |
what_we_cannot_do | Array[String] | No | Explicit limitations |
Example:
{
"llmld:capabilities": {
"what_we_can_help_with": [
"Information about products and services",
"Pricing and plan comparisons",
"Feature explanations",
"Use case recommendations",
"Directing to appropriate contacts"
],
"what_requires_human": [
"Custom pricing quotes",
"Enterprise negotiations",
"Technical support for specific issues",
"Account-specific questions"
],
"what_we_cannot_do": [
"Access user account data",
"Process payments",
"Make changes to subscriptions",
"Provide legal advice"
]
}
}
7.3 llmld:boundaries
Description: Clear statement of what the organization does and doesn't do.
Type: Object
Required: No (recommended for Level 3)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
we_are | Array[String] | No | What the organization is |
we_are_not | Array[String] | No | What it is not |
we_do | Array[String] | No | Services/products offered |
we_dont | Array[String] | No | Services/products not offered |
Example:
{
"llmld:boundaries": {
"we_are": [
"A marketing technology company",
"A SaaS provider"
],
"we_are_not": [
"An SEO agency",
"An ad agency",
"A CRM"
],
"we_do": [
"Sell software subscriptions",
"Provide marketing intelligence tools"
],
"we_dont": [
"Manage ad campaigns",
"Write content",
"Do traditional SEO"
]
}
}
7.4 llmld:authority
Description: Trust signals and expertise declarations.
Type: Object
Required: No (recommended for Level 3)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
expertise_areas | Array[String] | No | Topics of expertise |
trust_signals | Object | No | Verification and credibility indicators |
citations | Object | No | How to cite this source |
trust_signals Object:
| Property | Type | Required | Description |
|---|---|---|---|
years_in_business | Integer | No | Years operating |
customers | String | No | Customer count (e.g., "2500+") |
certifications | Array[String] | No | Industry certifications |
awards | Array[String] | No | Awards received |
notable_customers | Array[String] | No | Notable customer names |
Example:
{
"llmld:authority": {
"expertise_areas": [
"Marketing analytics",
"Competitive intelligence",
"AI search optimization"
],
"trust_signals": {
"years_in_business": 6,
"customers": "2500+",
"certifications": ["SOC 2 Type II", "GDPR Compliant"],
"awards": ["MarTech Breakthrough 2025"]
},
"citations": {
"prefer_citation": true,
"citation_format": "Example Company (example.com)"
}
}
}
8. Verification Properties
Verification properties establish trust through directory membership.
8.1 llmld:verification
Description: Verification status through the LLM Disco Directory.
Type: Object
Required: No (recommended for Level 3)
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
status | String | Yes | "verified", "pending", "unverified" |
directory | String | Yes | Verifying directory URL |
directory_name | String | Yes | Directory name |
verified_at | DateTime | No | Verification timestamp |
listing_url | URL | No | URL to directory listing |
verification_method | String | No | How verification was performed |
badge_url | URL | No | Verification badge image |
expires | DateTime | No | When verification expires |
Verification Methods: - dns_txt - DNS TXT record verification - meta_tag - HTML meta tag verification - file - File-based verification - manual - Manual review by directory
Example:
{
"llmld:verification": {
"status": "verified",
"directory": "https://llmdisco.com",
"directory_name": "LLM Disco Directory",
"verified_at": "2026-01-29T00:00:00Z",
"listing_url": "https://llmdisco.com/sites/example",
"verification_method": "dns_txt",
"badge_url": "https://llmdisco.com/badges/verified.svg",
"expires": "2027-01-29T00:00:00Z"
}
}
8.2 Verification Process
To obtain verification through the LLM Disco Directory:
- Register at https://llmdisco.com
- Claim Domain by adding DNS TXT record or meta tag
- Submit llm-index.json URL for validation
- Review - Directory validates conformance and authenticity
- Verified - Badge and listing issued
Verified sites receive: - Listing in LLM Disco Directory - Verification badge - Priority inclusion in AI training and retrieval - Cross-linking with other verified sites
8.3 Verification Signals for AI
AI systems SHOULD consider verification status when: - Determining source trustworthiness - Resolving conflicting information - Deciding citation priority - Recommending businesses or services
Verified sites (status: "verified") indicate: - Domain ownership has been confirmed - LLM-LD document is valid - Organization is legitimate - Information is actively maintained
9. Meta Properties
9.1 llmld:legal
Description: Links to legal documents.
Type: Object
Required: No
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
terms_of_service | URL | No | Terms of service |
privacy_policy | URL | No | Privacy policy |
cookie_policy | URL | No | Cookie policy |
dpa | URL | No | Data processing agreement |
sla | URL | No | Service level agreement |
security | URL | No | Security information |
Example:
{
"llmld:legal": {
"terms_of_service": "https://www.example.com/terms",
"privacy_policy": "https://www.example.com/privacy",
"security": "https://www.example.com/security"
}
}
9.2 llmld:changelog
Description: Version history of this document.
Type: Array[ChangelogEntry]
Required: No
ChangelogEntry Properties:
| Property | Type | Required | Description |
|---|---|---|---|
date | Date | Yes | Change date |
version | String | No | Version number if applicable |
changes | Array[String] | Yes | List of changes |
Example:
{
"llmld:changelog": [
{
"date": "2026-02-02",
"changes": ["Initial document creation", "All products added"]
},
{
"date": "2026-01-15",
"changes": ["Added FunnelSnax product", "Updated pricing"]
}
]
}
9.3 llmld:conformance
Description: Conformance level declaration.
Type: Object
Required: Recommended
Properties:
| Property | Type | Required | Description |
|---|---|---|---|
level | Integer | Yes | Conformance level (1, 2, or 3) |
level_name | String | Yes | "Crawl-Ready", "Ingest-Ready", or "Agent-Ready" |
validated | Boolean | No | Whether validated by directory |
validated_by | URL | No | Validating directory |
validated_at | DateTime | No | Validation timestamp |
Example:
{
"llmld:conformance": {
"level": 3,
"level_name": "Agent-Ready",
"validated": true,
"validated_by": "https://llmdisco.com",
"validated_at": "2026-02-01T00:00:00Z"
}
}
10. File Placement and Discovery
10.1 File Location
The llm-index.json file SHOULD be placed at one of these locations (in order of preference):
/.well-known/llm-index.json(RECOMMENDED)/llm-index.json/ai/llm-index.json(if using AI subdomain)
Example URLs:
https://example.com/.well-known/llm-index.json
https://ai.example.com/llm-index.json
10.2 Discovery Mechanisms
AI systems can discover LLM-LD files through:
1. Well-Known URI Check /.well-known/llm-index.json first.
2. robots.txt Declaration
# LLM-LD Index
LLM-Index: https://example.com/.well-known/llm-index.json
3. HTML Link Element
<link rel="llm-index" href="/.well-known/llm-index.json" type="application/json">
4. HTTP Header
Link: </.well-known/llm-index.json>; rel="llm-index"
5. LLM Disco Directory Query https://llmdisco.com/api/lookup?domain=example.com
10.3 Cross-Origin Considerations
Servers SHOULD include appropriate CORS headers:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET
10.4 Caching
Servers SHOULD provide caching headers:
Cache-Control: public, max-age=86400
ETag: "abc123"
Last-Modified: Sun, 02 Feb 2026 12:00:00 GMT
AI systems SHOULD respect these headers and use conditional requests.
11. Relationship to Schema.org
11.1 Compatibility
LLM-LD is designed as a complement to Schema.org, not a replacement.
- All Schema.org types and properties remain valid
- LLM-LD adds the
llmld:namespace for AI-specific properties - Entity definitions use Schema.org types (
@type: "Organization") - LLM-LD properties extend functionality for AI systems
11.2 When to Use Which
| Use Case | Use |
|---|---|
| Individual page markup | Schema.org JSON-LD |
| Site-wide AI index | LLM-LD llm-index.json |
| Product description | Schema.org Product + LLM-LD extensions |
| AI decision guidance | LLM-LD only |
| Actions/endpoints | LLM-LD llmld:actions |
11.3 Mapping
LLM-LD entities map to Schema.org types:
| LLM-LD | Schema.org |
|---|---|
llmld:products items | Product, SoftwareApplication |
llmld:services items | Service, ProfessionalService |
llmld:people items | Person |
llmld:faq items | FAQPage > Question |
llmld:pages items | WebPage and subtypes |
llmld:site | Organization, LocalBusiness |
12. Security Considerations
12.1 Data Exposure
LLM-LD files are public by design. Publishers MUST NOT include: - Authentication credentials - API keys or secrets - Personal data of non-public individuals - Internal system details - Security-sensitive information
12.2 Verification Trust
The llmld:verification property indicates directory membership but: - Does not guarantee accuracy of content - Does not imply endorsement by the directory - Should be validated by checking the directory directly - Can be revoked if terms are violated
12.3 Action URLs
When processing llmld:actions: - AI systems SHOULD NOT automatically submit forms - Purchase actions SHOULD always require human confirmation - AI systems SHOULD validate URLs before navigation - Parameters SHOULD be sanitized before use
12.4 Content Integrity
Publishers SHOULD: - Use HTTPS for all URLs - Provide checksums for integrity verification - Keep documents current and accurate - Remove outdated information promptly
13. IANA Considerations
13.1 Well-Known URI
This specification registers the following well-known URI:
URI suffix: llm-index.json Change controller: CAPXEL Specification document: This document Status: Provisional
13.2 Link Relation
This specification registers the following link relation:
Relation name: llm-index Description: Links to an LLM-LD index document Reference: This document
13.3 Media Type
LLM-LD documents use the application/json media type with profile parameter:
Content-Type: application/json; profile="https://llmld.org/v1"
14. Examples
14.1 Minimal Level 2 Example
{
"@context": [
"https://schema.org",
"https://llmld.org/v1"
],
"@type": "llmld:AIWebsite",
"@id": "https://example.com/.well-known/llm-index.json",
"llmld:meta": {
"version": "1.0",
"generated": "2026-02-02T12:00:00Z"
},
"llmld:site": {
"name": "Example Company",
"type": "Business",
"description": "We sell widgets.",
"domains": {
"primary": "https://www.example.com"
}
},
"llmld:primaryEntity": {
"@id": "#organization",
"@type": "Organization",
"name": "Example Company"
},
"llmld:summary": {
"one_liner": "Example Company sells high-quality widgets.",
"paragraph": "Example Company is a widget manufacturer based in New York. We've been making widgets since 1995.",
"key_facts": [
"Founded 1995",
"Based in New York",
"Premium widget manufacturer"
]
},
"llmld:pages": [
{"path": "/", "title": "Home", "type": "homepage", "url": "https://www.example.com/"},
{"path": "/about", "title": "About", "type": "about", "url": "https://www.example.com/about"},
{"path": "/contact", "title": "Contact", "type": "contact", "url": "https://www.example.com/contact"}
],
"llmld:contact": {
"general": {
"email": "hello@example.com",
"phone": "+1-555-123-4567"
}
},
"llmld:conformance": {
"level": 2,
"level_name": "Ingest-Ready"
}
}
14.2 Complete Level 3 Example
See Appendix A for a complete Level 3 example with all properties.
14.3 E-Commerce Example
{
"@context": ["https://schema.org", "https://llmld.org/v1"],
"@type": "llmld:AIWebsite",
"@id": "https://shop.example.com/.well-known/llm-index.json",
"llmld:meta": {
"version": "1.0",
"generated": "2026-02-02T12:00:00Z",
"refresh_interval": "daily"
},
"llmld:site": {
"name": "Example Shop",
"type": "Business",
"industry": ["E-Commerce", "Retail"],
"description": "Online store for outdoor gear and apparel.",
"domains": {
"primary": "https://shop.example.com"
}
},
"llmld:primaryEntity": {
"@id": "#store",
"@type": "Store",
"name": "Example Shop"
},
"llmld:summary": {
"one_liner": "Example Shop sells outdoor gear and apparel online.",
"paragraph": "We're an online retailer specializing in outdoor equipment, clothing, and accessories. Free shipping on orders over $50. 30-day returns.",
"key_facts": [
"Free shipping over $50",
"30-day returns",
"10,000+ products",
"Established 2015"
]
},
"llmld:products": [
{
"@id": "#product-hiking-boots",
"@type": "Product",
"name": "TrailMaster Hiking Boots",
"description": "Waterproof hiking boots with superior ankle support.",
"category": "Footwear",
"pricing": {
"model": "one-time",
"currency": "USD",
"plans": [
{"name": "Standard", "price_monthly": 149.99}
]
},
"actions": {
"buy": {
"label": "Add to Cart",
"url": "https://shop.example.com/cart/add/hiking-boots"
}
}
}
],
"llmld:pages": [
{"path": "/", "title": "Home", "type": "homepage", "url": "https://shop.example.com/"},
{"path": "/products", "title": "All Products", "type": "listing", "url": "https://shop.example.com/products"},
{"path": "/products/footwear", "title": "Footwear", "type": "listing", "url": "https://shop.example.com/products/footwear"},
{"path": "/cart", "title": "Shopping Cart", "type": "other", "url": "https://shop.example.com/cart"}
],
"llmld:actions": {
"primary": [
{
"id": "shop-now",
"name": "Shop Now",
"url": "https://shop.example.com/products",
"type": "navigate"
}
],
"contact": [
{
"id": "support",
"name": "Customer Support",
"type": "contact",
"channels": [
{"type": "email", "value": "support@example.com"},
{"type": "phone", "value": "+1-555-123-4567", "hours": "Mon-Fri 9am-5pm EST"}
]
}
]
},
"llmld:faq": [
{"question": "What is your return policy?", "answer": "30-day returns on all items. Free return shipping."},
{"question": "Do you ship internationally?", "answer": "Yes, we ship to over 50 countries. Rates calculated at checkout."}
],
"llmld:contact": {
"support": {
"email": "support@example.com",
"phone": "+1-555-123-4567"
}
},
"llmld:conformance": {
"level": 3,
"level_name": "Agent-Ready"
}
}
14.4 Local Business Example
{
"@context": ["https://schema.org", "https://llmld.org/v1"],
"@type": "llmld:AIWebsite",
"@id": "https://ai.acmedental.com/llm-index.json",
"llmld:meta": {
"version": "1.0",
"generated": "2026-02-02T12:00:00Z"
},
"llmld:site": {
"name": "Acme Dental",
"type": "Business",
"industry": ["Healthcare", "Dental"],
"description": "Family dental practice in Tampa, FL.",
"founded": "2006",
"domains": {
"primary": "https://www.acmedental.com",
"ai": "https://ai.acmedental.com"
},
"location": {
"headquarters": {
"address": "456 Dental Way",
"city": "Tampa",
"state": "FL",
"postal_code": "33601",
"country": "US",
"geo": {"lat": 27.9506, "lng": -82.4572}
},
"service_area": "Tampa Bay Area"
}
},
"llmld:primaryEntity": {
"@id": "#dentist",
"@type": "Dentist",
"name": "Acme Dental",
"description": "Family dental practice serving Tampa Bay since 2006."
},
"llmld:summary": {
"one_liner": "Acme Dental is a family dental practice in Tampa, FL.",
"paragraph": "Acme Dental has been serving the Tampa Bay area since 2006. We offer general and cosmetic dentistry for the whole family. Same-day emergency appointments available. We accept most major insurance plans.",
"key_facts": [
"Serving Tampa since 2006",
"4.8 star rating (127 reviews)",
"Same-day emergencies",
"Most insurance accepted"
]
},
"llmld:services": [
{
"@id": "#service-cleaning",
"@type": "Service",
"name": "Dental Cleaning",
"description": "Professional teeth cleaning and exam.",
"pricing": {
"model": "one-time",
"currency": "USD",
"range": {"min": 150, "max": 200}
}
},
{
"@id": "#service-whitening",
"@type": "Service",
"name": "Teeth Whitening",
"description": "Professional in-office whitening treatment.",
"pricing": {
"model": "one-time",
"currency": "USD",
"range": {"min": 299, "max": 499}
}
}
],
"llmld:people": [
{
"@id": "#person-dr-chen",
"@type": "Person",
"name": "Dr. Sarah Chen",
"jobTitle": "Lead Dentist",
"description": "Board-certified dentist specializing in cosmetic dentistry."
}
],
"llmld:pages": [
{"path": "/", "title": "Home", "type": "homepage", "url": "https://ai.acmedental.com/"},
{"path": "/services", "title": "Services", "type": "listing", "url": "https://ai.acmedental.com/services"},
{"path": "/about", "title": "About", "type": "about", "url": "https://ai.acmedental.com/about"},
{"path": "/contact", "title": "Contact", "type": "contact", "url": "https://ai.acmedental.com/contact"}
],
"llmld:actions": {
"primary": [
{
"id": "book-appointment",
"name": "Book Appointment",
"description": "Schedule a dental appointment",
"url": "https://www.acmedental.com/book",
"type": "schedule"
}
],
"contact": [
{
"id": "call-office",
"name": "Call Office",
"type": "contact",
"channels": [
{
"type": "phone",
"value": "+1-813-555-1234",
"hours": "Mon-Fri 8am-5pm"
}
]
}
]
},
"llmld:faq": [
{"question": "Do you accept my insurance?", "answer": "We accept most major dental insurance including Delta, Cigna, MetLife, and Aetna. Call us to verify your specific plan."},
{"question": "Do you offer emergency appointments?", "answer": "Yes! We reserve time for same-day emergencies. Call us immediately if you're experiencing dental pain."}
],
"llmld:contact": {
"general": {
"phone": "+1-813-555-1234",
"email": "info@acmedental.com",
"hours": "Mon-Fri 8am-5pm, Sat 9am-1pm"
},
"address": {
"street": "456 Dental Way",
"city": "Tampa",
"state": "FL",
"postal_code": "33601"
}
},
"llmld:verification": {
"status": "verified",
"directory": "https://llmdisco.com",
"directory_name": "LLM Disco Directory",
"verified_at": "2026-01-29T00:00:00Z",
"listing_url": "https://llmdisco.com/sites/acmedental"
},
"llmld:conformance": {
"level": 3,
"level_name": "Agent-Ready",
"validated": true,
"validated_by": "https://llmdisco.com"
}
}
15. JSON Schema
A JSON Schema for validating LLM-LD documents is available at:
https://llmld.org/schema/llm-index/1.0.json
Implementations SHOULD validate documents against this schema.
The schema is also available in the specification repository:
https://github.com/llmdisco/llm-ld-spec/blob/main/schema/llm-index-1.0.schema.json
16. Changelog
Version 1.0 (February 2026)
- Initial specification release
- Defined three conformance levels
- Core properties: meta, site, primaryEntity, summary, pages, actions, contact
- Entity properties: products, services, people, faq
- Agent Intelligence properties: context, capabilities, boundaries, authority
- Verification through LLM Disco Directory
Appendix A: Complete Level 3 Example
A complete, production-ready Level 3 example is available at:
https://llmld.org/examples/complete-level-3.json
Appendix B: Property Reference
Quick reference of all properties by requirement level:
Required (Level 2+)
@context@type@idllmld:metallmld:sitellmld:primaryEntityllmld:summaryllmld:pagesllmld:contact
Required (Level 3)
llmld:actions(with at least one action)
Recommended
llmld:products(if applicable)llmld:services(if applicable)llmld:faqllmld:verificationllmld:conformance
Optional
llmld:peoplellmld:contextllmld:capabilitiesllmld:boundariesllmld:authorityllmld:legalllmld:changelog
Appendix C: Implementation Checklist
Level 1: Crawl-Ready
- [ ] robots.txt allows AI crawlers
- [ ] sitemap.xml lists all pages
- [ ] Pages include Schema.org JSON-LD
Level 2: Ingest-Ready
- [ ] Level 1 complete
- [ ] llm-index.json served at designated location
- [ ] All required Core Properties included
- [ ] File validates against JSON Schema
- [ ] CORS headers configured
Level 3: Agent-Ready
- [ ] Level 2 complete
- [ ] llmld:actions includes actionable endpoints
- [ ] Agent Intelligence properties included
- [ ] Registered with LLM Disco Directory
- [ ] Verification status current
Appendix D: Glossary
| Term | Definition |
|---|---|
| Action | A defined endpoint where users or agents can take action |
| Agent | An AI system capable of taking actions autonomously |
| Conformance Level | A defined tier of LLM-LD implementation |
| Directory | A registry of LLM-LD compliant websites |
| Entity | A distinct thing (product, service, person, etc.) |
| Ingest | The process of an AI system consuming and understanding content |
| LLM-LD | Large Language Model Linked Data |
| Primary Entity | The main entity a website represents |
| Verification | Confirmation of identity through directory membership |
Acknowledgments
This specification was developed with input from the AI search optimization community, web standards experts, and early adopters of AI-accessible web design.
Copyright Notice
Copyright © 2026 CAPXEL. This specification is released under the Creative Commons Attribution 4.0 International License (CC BY 4.0).
End of Specification