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
| Current version | 0.7 — Specification 0.7 |
| Previous version | 0.6 — Specification 0.6 |
| Reference implementation | mpf-build — git.esfi.eu/esfi/mpf |
| Verified emitters | Implementation registry |
| Version policy | 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
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
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.
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. Configuration and per-page overrides: Implementation.
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.
Declarations, not verdicts
Every MPF field is either generated from the source or declared by the publisher. None of them is independent verification.
provenance: humanstates how the publisher describes the origin. It does not prove it.confidencestates the publisher’s assessment. It is not validation.companion-scopestates intended processing. It is not a technical lock and it does not replace applicable law.source-hashshows 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
MPF works alongside other efforts in the same space. It does not replace them.
| Standard | What it addresses |
|---|---|
| robots.txt | Crawler access preferences |
| llms.txt | A lightweight entry point for language models; MPF extends the site’s llms.txt with an MPF section |
| TDMRep | A W3C Community Group protocol for expressing the EU text and data mining reservation |
| RSL | Publisher licensing terms for AI use |
| AIPREF (IETF) | A vocabulary for AI usage preferences; work in progress at the IETF |
| C2PA | Cryptographic content provenance and credentials; an MPF file can point to a C2PA manifest with c2pa-manifest |
What MPF does not claim
- Not a truth system. Declarations are declarations; verification requires independent evidence.
- Not a legal instrument.
train: falserecords 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
- Why MPF exists, and the letter that started the work: companion.esfi.eu
- ESFI’s position on the underlying problem: AI-readiness
- What Companion means on ESFI’s sites: Glossary