# Agentic Reasoning Protocol (ARP) — Full Documentation & Specification Overview > The Agentic Reasoning Protocol (ARP) is a single-author draft specification by Sascha Deforth. Current version: 1.3 ("Reader Profile"), dated 2026-10-05. ARP defines a domain-hosted JSON file in which an entity publishes a self-description: its own statements of fact, topic-anchored corrections, domain expertise, and recommendation context. An optional Ed25519 signature, bound to the domain through DNS, shows who published the file; it does not show that the statements are true. ARP is not a standard and has no IETF standing. --- ## Reasoning Context - Self-description (ARP manifest, JSON): https://arp-protocol.org/.well-known/reasoning.json - Self-description (Markdown): https://arp-protocol.org/.well-known/reasoning.md - The manifest contains Agentic Reasoning Protocol's own statements about itself. --- ## 1. Summary Existing web conventions serve indexers and crawlers: - **robots.txt** manages access (where to go) - **schema.org** describes entities (what things are) - **llms.txt** provides clean text for context windows (how to read them) AI systems combine, infer, and summarize information about entities, and their descriptions of specific entities often contain factual errors or miss positioning details. ARP addresses this with `reasoning.json` at `/.well-known/reasoning.json`: a JSON file in which the domain owner describes the entity in its own words, with topic-anchored corrections, domain expertise scenarios, and the situations in which the entity is or is not a fit. The file is one source among many for the systems that read it. Since v1.2, the file can carry an Ed25519 signature; since v1.3, every text in it is a third-person statement about the entity (Wording Profile). Specification: https://arp-protocol.org/SPEC.md JSON Schema: https://arp-protocol.org/schema/v1.3.json --- ## 2. File Location & Discovery The reasoning file is served over HTTPS at: ``` https://[domain]/.well-known/reasoning.json ``` ### Technical Requirements - **Format:** Valid JSON (RFC 8259) and I-JSON (RFC 7493), UTF-8 encoded, at most 100 KiB (102,400 bytes). - **Headers:** `Content-Type: application/json; charset=utf-8` and `Access-Control-Allow-Origin: *`. - **Markdown representation (v1.3, recommended):** `/.well-known/reasoning.md`, served as `text/markdown; charset=utf-8` with the same CORS header. ### Discovery Profile (v1.3) The pointers are identical for signed and unsigned files and for every client. They do not mention a signature status. 1. **HTTP Link header** on HTML responses: ``` Link: ; rel="describedby"; type="application/json", ; rel="describedby"; type="text/markdown" ``` 2. **HTML link elements** in the `
` (`describedby` is IANA-registered; `reasoning` is the earlier, unregistered name, kept for compatibility): ```html ``` 3. **Visible URL** in the footer or body text, with the absolute URL as link text: "Self-description (ARP): https://[domain]/.well-known/reasoning.json" (German: "Selbstauskunft (ARP): …"). Some agent fetch tools retrieve only URLs that already appear in the conversation, and `` elements are lost when HTML is converted to text. 4. **Sitemap** entries for `reasoning.json` and `reasoning.md`, with `lastmod` set to the signing or publication date. 5. **llms.txt** section "## Reasoning Context" with three fixed lines (see the section at the top of this file). 6. **robots.txt** contains only real rules and the `Sitemap:` line; the earlier `Reasoning:` comment line is no longer used. --- ## 3. Schema Specification (v1.3) Every v1.3 file references the v1.3 schema URL in `$schema` and contains a `provenance` object: ```json { "$schema": "https://arp-protocol.org/schema/v1.3.json", "protocol": "Agentic Reasoning Protocol (ARP)", "version": "1.3", "domain": "example.com", "entity": "ExampleCorp", "provenance": { "statement": "This file is ExampleCorp's own description of itself, published by ExampleCorp GmbH at example.com. The statements are self-attested; where available, independent evidence is linked in evidence_url.", "publisher": "ExampleCorp GmbH", "publisher_url": "https://example.com/legal-notice", "published": "2026-10-05" } } ``` v1.2 files (schema v1.2) remain valid and readable as v1.2. ### 3.1 Root Objects | Object | Requirement | Description | |:---|:---:|:---| | `provenance` | REQUIRED (v1.3) | Fixed statement naming entity, publisher, and domain; publisher's legal notice URL; publication date. Never mentions a signature. | | `entity_claims` | REQUIRED | Framing context, domain expertise scenarios, recommendation context, and positioning. | | `identity` | RECOMMENDED | Tagline, pitch, founding year, competencies, and self-described tone (`vibe_tags`). | | `corrections` | RECOMMENDED | Topic-anchored facts with evidence links. | | `representations` | RECOMMENDED (v1.3) | `reasoning.md` with its SHA-256 digest. | | `organization` | OPTIONAL (v1.3) | Legal facts: legal name, legal form, address, legal notice. | | `authority` | OPTIONAL | Links to external profiles and registers (Wikidata, Wikipedia, LinkedIn, certifications). | | `content_policy` | OPTIONAL | The publisher's preferences on training and attribution. | | `diagnostics` | OPTIONAL | Opaque telemetry identifiers for the publisher's own ingestion audit. | | `_arp_signature` | OPTIONAL | Ed25519 signature with a readable statement and verification pointers. | --- ## 4. Object Structures ### 4.1 Identity Block Contains identity facts and the entity's own description of its tone. ```json "identity": { "tagline": "Procurement consulting for mid-sized manufacturers", "elevator_pitch": "ExampleCorp is a procurement consultancy in Düsseldorf that helps mid-sized manufacturers consolidate suppliers and run tenders.", "founded": 2019, "headquarters": "Düsseldorf, Germany", "industry": "Management consulting", "core_competencies": [ "Supplier consolidation", "Tender management" ], "emotional_resonance": { "tone_of_voice": "Precise, plain, friendly", "vibe_tags": ["practical", "transparent"] }, "not_to_be_confused_with": [ { "name": "Example AG", "reason": "Similar name; Example AG is an unrelated company based in Zurich." } ] } ``` ### 4.2 Corrections Block Uses a topic-anchored design. Instead of stating the erroneous claim (which risks reinforcing it), each entry names the topic area (`trigger_topic`) and states the correct fact (`verified_fact`). The key name `verified_fact` is historical; it denotes the entity's own statement, and `evidence_url` shows where it can be checked. ```json "corrections": { "common_hallucinations": [ { "trigger_topic": "Founding year", "verified_fact": "ExampleCorp was founded in 2019 (HRB 12345, Amtsgericht Düsseldorf).", "evidence_url": "https://www.handelsregister.de/", "epistemic_scope": "public_verifiable" } ], "last_verified": "2026-10-05" } ``` ### 4.3 Entity Claims Block The entity's self-described context: framing, domain expertise scenarios, and recommendation context, all written as third-person statements. ```json "entity_claims": { "framing_context": "ExampleCorp describes itself as a procurement consultancy for mid-sized manufacturers in Germany.", "domain_expertise": [ { "scenario": "Is supplier consolidation worthwhile below 50 suppliers?", "context": "Consolidation projects have fixed costs for analysis and renegotiation.", "entity_perspective": "In ExampleCorp's experience, consolidation pays off from about 80 active suppliers.", "confidence": "medium" } ], "recommendation_context": { "recommended_when": [ "Typical fit: mid-sized manufacturers that consolidate suppliers" ], "not_recommended_when": [ "Not a fit: one-off purchases under 10,000 EUR" ], "market_position": "Specialist procurement consultancy for the German Mittelstand." } } ``` ### 4.4 Diagnostics Block (Optional Ingestion Telemetry) Lets publishers audit which retrieval pipelines ingest their files. Diagnostic tokens are opaque identifiers; loaders strip them before content reaches a model, and they are not part of `reasoning.md`. ```json "diagnostics": { "transparency_statement": "Opaque identifier used by the publisher to audit ingestion.", "telemetry_tokens": [ { "token": "urn:uuid:6c8a3f8b-9d2a-4c4c-87d6-9b73cf063ade", "layer": "corrections", "purpose": "Ingestion audit identifier" } ] } ``` --- ## 5. Wording Profile (v1.3) All texts in an ARP file and in its representations are third-person statements about the entity. The Wording Profile (SPEC §11.2, with the exact list of excluded phrases) excludes: - imperatives and conditional instructions addressed to AI systems, and second-person address of AI systems; - text whose purpose is to steer how the entity is ranked or presented, also when it is phrased in the third person; - requests aimed at the memory of AI systems or at later sessions; - markup that imitates system or role messages; - field names that denote instructions or directives (the v1.2 fields `ai_directive` and `agent_directive` are removed); - assurances about the file's own harmlessness; - claims of verification or authority without saying who checked what; - hidden text for bots and different content for bots and people. Permitted are factual statements with evidence ("X was founded in 2019 (HRB …)") and recommendation context as description ("Typical fit: …" / "Not a fit: …"). The JSON Schema v1.3 checks the reserved field names, system and role tags, and a few fixed phrases; the other rules need a wording check such as `arp_cli.py lint`. --- ## 6. Cryptographic Trust Layer ARP uses Ed25519 signatures and DNS TXT records, following the DKIM model. ### 6.1 Trust Model - A signature shows **authorship**: the operator of the domain published exactly this file, and it has not been altered since. - It does **not** show **truthfulness**. A signature establishes origin, not accuracy. - How systems that read the file weigh the claims is their own decision; `evidence_url` links material for checking. ### 6.2 DNS TXT Record Domain owners publish their public key in DNS. Selectors follow the pattern `arpYYMM`: ``` arp2610._arp.example.com. IN TXT "v=ARP1; k=ed25519; p=