--- mpf: '0.7' title: Publishing and discovery — ESFI Docs url: https://docs.esfi.eu/standards/mpf/publishing-and-discovery/ mpf-url: https://docs.esfi.eu/standards/mpf/publishing-and-discovery/index.mpf organization: European Strategy & Future Infrastructure domain: docs.esfi.eu lang: en updated: '2026-11-03' author: ESFI provenance: human source-hash: 255a237e3e1868c749e60503e763197e918ea74e3da8b816b9032b27221694f8 toc: - level: 1 text: Publishing and discovery id: publishing-and-discovery - level: 2 text: What a publisher puts online id: what-a-publisher-puts-online - level: 2 text: How a machine finds MPF id: how-a-machine-finds-mpf - level: 3 text: 1\. DNS TXT — before the first request id: 1-dns-txt-before-the-first-request - level: 3 text: 2\. /.well-known/mpf — the same declaration over HTTPS id: 2-well-known-mpf-the-same-declaration-over-https - level: 3 text: 3\. llms.txt — the conventional entry point id: 3-llms-txt-the-conventional-entry-point - level: 3 text: 4\. llms.mpf — the site index id: 4-llms-mpf-the-site-index - level: 3 text: 5\. The page itself id: 5-the-page-itself - level: 2 text: When site and page disagree id: when-site-and-page-disagree - level: 2 text: Human canonical and machine companion id: human-canonical-and-machine-companion - level: 2 text: Open format, ESFI reference practice id: open-format-esfi-reference-practice - level: 2 text: Specification, implementation and practice id: specification-implementation-and-practice - level: 2 text: What publication does not imply id: what-publication-does-not-imply - level: 2 text: On this page id: on-this-page spec-origin: esfi.eu content-origin: docs.esfi.eu content-id: esfi:page:standards-mpf-publishing-and-discovery content-parity: html: true human-visible-source: true hidden-sections: false summary: A machine should find the representation before it starts guessing. index: true confidence: confirmed content-type: reference companion-footer: ESFI — civilization infrastructure · https://esfi.eu companion-contact: mailto:hermes@esfi.eu preferred-representation: mpf companion-scope: cite: true summarize: true train: true index: true relay: false language-variants: en: https://docs.esfi.eu/standards/mpf/publishing-and-discovery/index.mpf fr: https://docs.esfi.eu/fr/standards/mpf/publishing-and-discovery/index.mpf nl: https://docs.esfi.eu/nl/standards/mpf/publishing-and-discovery/index.mpf de: https://docs.esfi.eu/de/standards/mpf/publishing-and-discovery/index.mpf hr: https://docs.esfi.eu/hr/standards/mpf/publishing-and-discovery/index.mpf mpf-id: c5a1c198debb895d1b30510f297d7408bda5e8f54cbd7fbd87062cc191336bef --- Language ✕ /standards/mpf/publishing-and-discovery/index.mpf[open file ↗](/standards/mpf/publishing-and-discovery/index.mpf)[spec ↗](/standards/mpf/0.7)✕ loading… # Publishing and discovery {#publishing-and-discovery} **A machine should find the representation before it starts guessing.** An ESFI standard is published as a contract that people can read and implementations can produce. The specification is the authoritative description of that contract; the machine-readable artifacts show it in use. This page describes what an MPF publisher puts online, how a machine finds it, and what each mechanism does and does not establish. Every mechanism is marked **Specification 0.7**, **Reference implementation** or **ESFI practice**. The markers are explained in the [Overview](/standards/mpf). ## What a publisher puts online {#what-a-publisher-puts-online} | Artifact | Audience | Role | Status | | --- | --- | --- | --- | | Specification page | People, implementers | The published contract for a format version | **Specification 0.7** | | Page `.mpf` file | Machines | Machine representation of one human page | **Specification 0.7** | | `llms.mpf` | Machines | MPF index of all indexed pages on the site | **Specification 0.7** | | `llms.txt` | Machines, people | Lightweight entry point with an MPF section | **Specification 0.7** | | `llms-full.txt` | Machines | Bodies of indexed pages in the default language, concatenated | **Specification 0.7** | | `.sig` files | Machines | Signatures of MPF files, when the publisher signs | **Specification 0.7** | | `/.well-known/mpf` | Machines | Site-level MPF declaration over HTTPS | **ESFI practice** | | DNS TXT `_mpf.` | Machines | Site-level MPF declaration before any HTTP request | **ESFI practice** | | `` | Machines | Page-level pointer from HTML to its companion | **ESFI practice** | ## How a machine finds MPF {#how-a-machine-finds-mpf} The mechanisms are layered from the cheapest signal to the most specific. A reader can start at any of them; they are designed to agree. ### 1\. DNS TXT — before the first request {#1-dns-txt-before-the-first-request} **ESFI practice** A reader can learn that a domain publishes MPF, where its index lives and what its site-level scope is, with a single DNS query: ``` _mpf.example.org TXT "v=0.7;index=https://example.org/llms.mpf;scope=cite:1,summarize:1,train:0,index:1,relay:0;contact=mailto:web@example.org" ``` | Parameter | Meaning | | --- | --- | | `v` | MPF version | | `index` | Absolute URL of `llms.mpf` | | `scope` | Site-level default `companion-scope`, as `flag:1` or `flag:0` | | `contact` | Contact for machine readers | The record is short enough to fit in a single DNS response. The builder does not create it; the publisher adds it to the zone. ### 2\. /.well-known/mpf — the same declaration over HTTPS {#2-well-known-mpf-the-same-declaration-over-https} **ESFI practice** The same string, served as plain text: ``` GET /.well-known/mpf v=0.7;index=https://example.org/llms.mpf;scope=cite:1,summarize:1,train:0,index:1,relay:0;contact=mailto:web@example.org ``` Ship it as a static file (for example in `public/.well-known/mpf`) and make sure the server returns it as `text/plain`. The builder does not create it. `mpf` is not yet a registered [well-known URI](https://www.rfc-editor.org/rfc/rfc8615.html); ESFI uses the path as a convention. ### 3\. llms.txt — the conventional entry point {#3-llms-txt-the-conventional-entry-point} **Specification 0.7** The builder creates `llms.txt` if it does not exist, or replaces its MPF section while preserving everything else. The section always contains: ``` MPF: 0.7 MPF-spec: https://docs.esfi.eu/spec/mpf/0.7 MPF-index: /llms.mpf ## Pages - [Page title](https://example.org/page/index.mpf): summary ``` `MPF-spec` appears when `spec-url` is configured, and lets a reader reach the canonical specification for the declared version without guessing. The introductory sentence the builder writes above these lines is **Reference implementation** wording. ### 4\. llms.mpf — the site index {#4-llms-mpf-the-site-index} **Specification 0.7** `llms.mpf` is itself an MPF document. Its body lists every page with `index: true`, sorted by MPF URL, each with its summary where one exists. Its frontmatter declares a fixed identity (`:page:llms`), `content-type: reference`, and hidden, non-HTML parity, because it has no human page behind it. ### 5\. The page itself {#5-the-page-itself} **Specification 0.7** for the path and `mpf-url`; **ESFI practice** for the alternate link. Every page carries its companion at the same path, with `.mpf` in place of `.html`: ``` /about/index.html → /about/index.mpf ``` Each MPF file is self-addressing through `mpf-url`, and points back to its human page through `url`. An HTML page can also point to its companion from its ``: ``` ``` `text/mpf` is not a registered media type; ESFI uses it as a convention so readers can recognise the link. The builder does not add the link; the site template does. ## When site and page disagree {#when-site-and-page-disagree} The DNS record and `/.well-known/mpf` state site-level defaults. A page’s frontmatter states what applies to that page, including any per-page override. **ESFI practice:** on ESFI sites all three state the same site-level values, and a reader should treat the page frontmatter as the declaration for that page. If a site-level declaration and a page disagree without an override explaining why, that is a publishing error, not a signal to choose between them. ## Human canonical and machine companion {#human-canonical-and-machine-companion} The human page and its MPF file are two representations of related content, not interchangeable authorities. - `url` identifies the canonical human page. - `mpf-url` identifies the machine representation. - `content-parity` states how the two relate. - `source-hash` identifies the exact HTML used to generate the MPF file. - `mpf-id` identifies the generated MPF file itself. This separation lets a machine cite or process the machine representation without losing the address of the human source. For translations, `language-variants` lists the expected MPF addresses of the same logical content in other configured languages; the builder generates these addresses and does not check that the files exist. ## Open format, ESFI reference practice {#open-format-esfi-reference-practice} MPF is an open format. Anyone can produce and consume conforming MPF without being listed anywhere, without registering, and without using any ESFI service. ESFI’s own sites are an inspectable reference practice: they emit MPF, publish the site indexes and the practice-level discovery declarations, and expose all of it for checking against the specification. The [Implementation registry](/standards/mpf/implementation-registry) records emitters whose output has been verified. It is evidence of implementation, not permission to implement. ## Specification, implementation and practice {#specification-implementation-and-practice} - The **specification** is the canonical human-readable contract for a published version. A published version remains reachable; corrections that do not change the contract are handled under the [Versioning](/standards/mpf/versioning) policy. - The **reference implementation** turns the specification into observable output. It is not a second specification. Where prose and implementation disagree for a published version, they are brought back into agreement; readers are not asked to infer a third contract from examples. - **Practice** is how ESFI deploys MPF beyond what the builder produces. It is documented so others can reproduce it. It becomes part of the contract only through a new specification version. A draft, proposal or planned mechanism is not part of these conventions until it is published and verifiable. ## What publication does not imply {#what-publication-does-not-imply} Publishing a field or a declaration does not create a service behind it. Provenance, confidence, scope and language variants are descriptive unless the specification defines further behaviour. Discovery mechanisms help a reader find the publisher’s declarations; they do not make those declarations true, binding or enforced. **The specification defines the contract; the reference implementation demonstrates it; practice extends how it is found; published artifacts make all three inspectable.** ## On this page {#on-this-page} ESFI — civilization infrastructure · https://esfi.eu