ai.txt
Attribution preferences for AI systems that use the content.
Why an agent cares
It states how the site wants to be credited when an AI system uses its content, which no other file covers. Adoption of the lineage we validate is effectively zero, so a site publishing one has opted in deliberately and is worth getting right.
Adoption
Specification only. A published specification or draft. Deployments are limited to the authors' own demos.
Direction of travel: ► flat, as at .
The Geodocs spec names no adopters. Originality.ai counted 397 ai.txt files across 3M+ tracked sites (May 2026), mostly the older Spawning opt-out variant.
What we check
aiTxtPresent is true, so a site that has not adopted this is not assessed on it and appears in no report. 3 of these 3 can fail it. In a Lumar crawl these land on one row per site, in the crawl-level table where itemType is access.| Check | Severity | Raises | On whose authority |
|---|---|---|---|
aiTxtNotKeyValue | high | usability | Geodocs profile |
aiTxtInvalidSourceUrl | medium | usability | Geodocs profile |
aiTxtUnknownAttributionValue | medium | usability | Geodocs profile |
Examples
Both of these are fixtures the test suite runs through the real collector, not snippets written for a document: the first is a shape we score as valid, the second is one we flag.
# ai.txt — Geodocs AI Agent Content Spec (https://geodocs.dev/ai-agents/content-spec)
# Correct fixture: present and well-formed → aiTxtPresent + aiTxtValid true, no defects.
# aiTxtNotKeyValue (false): every line is a "Key: value" directive.
User-agent: *
Allow: /
# aiTxtUnknownAttributionValue (false): Attribution-required is one of yes/no.
Attribution-required: yes
# aiTxtInvalidSourceUrl (false): Source-url is an absolute http(s) URL.
Source-name: Acme Corporation
Source-url: https://acme.example
Citation-format: [Title] — [Source-name] ([Source-url])# ai.txt — Geodocs AI Agent Content Spec (https://geodocs.dev/ai-agents/content-spec)
# Issues fixture: present but wrong → aiTxtPresent true, aiTxtValid false.
# The file IS "Key: value" (aiTxtNotKeyValue stays false — a prose file is covered by unit tests);
# individual directive values are malformed.
User-agent: *
Allow: /
# aiTxtUnknownAttributionValue: Attribution-required must be yes/no, not "sometimes".
Attribution-required: sometimes
# aiTxtInvalidSourceUrl: Source-url must be an absolute http(s) URL, not a relative path.
Source-name: Acme Corporation
Source-url: /company/about
Citation-format: [Title] — [Source-name]Specifications
| Document | Revision | Kind |
|---|---|---|
| Geodocs AI Agent Content Spec | May 2026 | specification |
Last re-read against the published documents: .