--- mpf: '0.7' title: Machine Page Format (MPF) — ESFI Docs url: https://docs.esfi.eu/standards/mpf/ mpf-url: https://docs.esfi.eu/standards/mpf/index.mpf organization: European Strategy & Future Infrastructure domain: docs.esfi.eu lang: en updated: '2026-11-03' author: ESFI provenance: human source-hash: fa88eb84c1463c029841cf0a05086991df4f50d8d5c5bc43981cd4c39a166d79 toc: - level: 1 text: Machine Page Format (MPF) id: machine-page-format-mpf - level: 2 text: Status id: status - level: 2 text: How to read this section id: how-to-read-this-section - level: 2 text: Anatomy of an MPF file id: anatomy-of-an-mpf-file - level: 2 text: What the declarations cover id: what-the-declarations-cover - level: 2 text: Discovery in one paragraph id: discovery-in-one-paragraph - level: 2 text: Declarations, not verdicts id: declarations-not-verdicts - level: 2 text: Relationship to other standards id: relationship-to-other-standards - level: 2 text: What MPF does not claim id: what-mpf-does-not-claim - level: 2 text: Further id: further - 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 content-parity: html: true human-visible-source: true hidden-sections: false summary: One page for people. One for machines. Both declared. 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/index.mpf fr: https://docs.esfi.eu/fr/standards/mpf/index.mpf nl: https://docs.esfi.eu/nl/standards/mpf/index.mpf de: https://docs.esfi.eu/de/standards/mpf/index.mpf hr: https://docs.esfi.eu/hr/standards/mpf/index.mpf mpf-id: 22bee637d21297235ced2783838ad1ed3c18c8459970ab660559987892dce4d3 --- Language ✕ /standards/mpf/index.mpf[open file ↗](/standards/mpf/index.mpf)[spec ↗](/standards/mpf/0.7)✕ loading… # Machine Page Format (MPF) {#machine-page-format-mpf} **One page for people. One for machines. Both declared.** Machine Page Format (MPF) is an open format for publishing a machine-readable companion beside an HTML page. The companion carries YAML frontmatter with the publisher’s declarations about the resource, followed by a clean Markdown body. It is generated at build time from the same HTML that people read. MPF answers a narrow question: what must a publisher expose so that a machine can identify, discover and interpret a public page without guessing facts the publisher could have stated directly? - **Scope:** a machine publishing contract — identity, representation, publisher declarations and discovery, with processing scope as one part of it. - **Contribution:** the declared relationship between a human page and its machine representation. The human page remains the canonical address. The MPF file is its declared parallel. ## Status {#status} | | | | --- | --- | | Current version | **0.7** — [Specification 0.7](/standards/mpf/0.7) | | Previous version | 0.6 — [Specification 0.6](/standards/mpf/0.6) | | Reference implementation | `mpf-build` — [git.esfi.eu/esfi/mpf](https://git.esfi.eu/esfi/mpf) | | Verified emitters | [Implementation registry](/standards/mpf/implementation-registry) | | Version policy | [Versioning](/standards/mpf/versioning) | The specification describes what the reference implementation actually produces. A field name does not give MPF a capability the implementation does not have. ## How to read this section {#how-to-read-this-section} Pages in this section mark every rule with its status: | Marker | Meaning | | --- | --- | | **Specification 0.7** | Defined in the published specification. Conforming producers and consumers can rely on it. | | **Reference implementation** | Behaviour of `mpf-build` that the specification text does not yet describe. Stable in practice, not yet normative. | | **ESFI practice** | A deployment convention used on ESFI sites, outside the builder and outside the specification. Documented so others can reproduce it, not required for conformance. | A mechanism moves from practice to the specification only through a new specification version. ## Anatomy of an MPF file {#anatomy-of-an-mpf-file} ``` index.html → index.mpf about/index.html → about/index.mpf ``` ``` --- mpf: '0.7' title: Example page url: https://example.org/about/ mpf-url: https://example.org/about/index.mpf organization: Example Publisher domain: example.org lang: en updated: 2026-09-21 author: Example Publisher provenance: human source-hash: 3f1c… toc: - level: 1 text: About id: about spec-origin: example.org content-origin: example.org content-id: example:page:about content-parity: html: true human-visible-source: true hidden-sections: false index: true companion-scope: cite: true summarize: true train: false index: true relay: false mpf-id: 9a0b… --- # About {#about} Clean Markdown body of the page… Example Publisher — https://example.org ``` The frontmatter is serialised in stable order. `mpf-id` is a SHA-256 digest of the complete document before `mpf-id` itself is inserted; `source-hash` is a SHA-256 digest of the raw source HTML. Details: [Specification 0.7](/standards/mpf/0.7). ## What the declarations cover {#what-the-declarations-cover} | Group | Fields | What a reader learns | | --- | --- | --- | | **Identity** | `url`, `mpf-url`, `content-id`, `lang`, `language-variants` | Which logical resource this is, where both representations live, and which files are equivalent language versions | | **Publisher** | `organization`, `domain`, `author`, `spec-origin`, `content-origin` | Who stands behind the declarations | | **Provenance** | `provenance`, `confidence`, `c2pa-manifest` | How the publisher describes the origin and status of the content | | **Integrity** | `source-hash`, `mpf-id`, `signature` | Whether the pair has drifted, whether this file changed, and whether the declared publisher signed it | | **Parity** | `content-parity` | How the machine body relates to what a person sees | | **Processing scope** | `companion-scope` | What the publisher intends a machine to do with the content | | **Lifecycle** | `updated`, `valid-until`, `review-after`, `supersedes`, `superseded-by` | Whether the resource is current and what it replaces | | **Structure** | `toc`, `section`, `parent`, `related`, `summary`, `content-type` | How the page is organised and how it relates to other pages | | **Publisher to reader** | `companion-instruction`, `companion-footer`, `companion-contact`, `preferred-representation` | The publisher’s message to the machine reader, its signature line and contact | | **Indexing** | `index` | Whether the page appears in the site’s machine indexes | Required fields, optional fields and generation rules: [Specification 0.7](/standards/mpf/0.7). Configuration and per-page overrides: [Implementation](/standards/mpf/implementation). ## Discovery in one paragraph {#discovery-in-one-paragraph} A machine should find the MPF representation before it starts interpreting HTML. The builder writes `llms.txt` with an MPF section (version, specification pointer, index path) and `llms.mpf`, an MPF index of all indexed pages; every page carries its companion at the same path with `.mpf` in place of `.html` (**Specification 0.7**). ESFI sites additionally publish a DNS TXT record and a `/.well-known/mpf` declaration (**ESFI practice**). Full reference: [Publishing and discovery](/standards/mpf/publishing-and-discovery). ## Declarations, not verdicts {#declarations-not-verdicts} Every MPF field is either generated from the source or declared by the publisher. None of them is independent verification. - `provenance: human` states how the publisher describes the origin. It does not prove it. - `confidence` states the publisher’s assessment. It is not validation. - `companion-scope` states intended processing. It is not a technical lock and it does not replace applicable law. - `source-hash` shows whether the pair has drifted. It does not establish that the content is true. - A signature shows that a particular key signed a particular file. It does not show that the claims inside are correct. A consuming system should keep these distinctions in its own data model and judge each signal for what it actually establishes. ## Relationship to other standards {#relationship-to-other-standards} MPF works alongside other efforts in the same space. It does not replace them. | Standard | What it addresses | | --- | --- | | [robots.txt](https://www.rfc-editor.org/rfc/rfc9309.html) | Crawler access preferences | | [llms.txt](https://llmstxt.org/) | A lightweight entry point for language models; MPF extends the site’s `llms.txt` with an MPF section | | [TDMRep](https://www.w3.org/community/tdmrep/) | A W3C Community Group protocol for expressing the EU text and data mining reservation | | [RSL](https://rslstandard.org/) | Publisher licensing terms for AI use | | [AIPREF (IETF)](https://datatracker.ietf.org/wg/aipref/about/) | A vocabulary for AI usage preferences; work in progress at the IETF | | [C2PA](https://c2pa.org/) | Cryptographic content provenance and credentials; an MPF file can point to a C2PA manifest with `c2pa-manifest` | ## What MPF does not claim {#what-mpf-does-not-claim} - **Not a truth system.** Declarations are declarations; verification requires independent evidence. - **Not a legal instrument.** `train: false` records a stated position, not a contract and not a lock. Its legal effect depends on applicable law. - **Not an enforcement mechanism.** No field is enforced by the format. - **Not a replacement for HTML.** The human page remains canonical. - **Not a gatekeeper.** Publishing and reading MPF require no ESFI service, registration or permission. ## Further {#further} - Why MPF exists, and the letter that started the work: [companion.esfi.eu](https://companion.esfi.eu) - ESFI’s position on the underlying problem: [AI-readiness](/topics/ai-readiness) - What _Companion_ means on ESFI’s sites: [Glossary](/glossary) ## On this page {#on-this-page} ESFI — civilization infrastructure · https://esfi.eu