Contribute

Contribute to MailSchema

Propose an interaction, improve a definition or show how your service implements one. Contributions stay with the type, along with their authors, examples and review history.

Prepare a contribution

Check the file. See the record.

Start from an example or load your JSON file. Check its fields and references, then preview how the contribution will appear. Everything runs in your browser; nothing is submitted.Prefer to validate locally?

In your toolchain

Check a file locally.

Use the MailSchema packages to validate contribution structure before review. The browser checker also checks references against the current Registry.

Installation and API reference
JavaScript · Node.js 22+
npx mailschema@0.1.0 check contribution.json
Python · Python 3.10+
python -m pip install mailschema==0.1.0
python -m mailschema check contribution.json

How your contribution appears

  • New type: a Registry record with your attribution, its maintainers, definition, examples and maturity label. It also appears in Types and search.
  • Amendment: an update to an existing record, with the contributor, change summary and original submission retained in its history.
  • Implementation: a support declaration or submitted test report under the type it implements, tied to the exact version, execution profile and record.

Before proposing a type

Check the Registry and related standards. If an existing definition covers the interaction, propose an example, implementation or amendment to that definition.

Write the proposal

Include the target, available actions, required inputs, permissions and results. Show one complete exchange and the failure cases that explain its boundaries. Identify the existing formats or protocols it uses.

Review

Contributions are prepared as repository changes. The checks validate their structure and references, reject conflicting updates and build the site preview. Review considers whether the interaction is useful across services, its operations are clear and it reuses existing work. Passing validation does not establish acceptance or compatibility.

For MAP itself, useful feedback identifies an ambiguous result, a missing permission check or an assumption that breaks when the service changes. Include a reproducible example.

Implementation evidence

Identify the product, type version, execution profile and operations supported. A test report also needs an evidence link, reproduction instructions and results. The Registry distinguishes support declarations from submitted test reports; neither is a certification badge.

Validate and import

In a checkout of the site, validate your JSON file before creating the repository change:

npm run registry:ingest -- contribution.json

To import the validated contribution and build its preview:

npm run registry:ingest -- contribution.json --write
npm run verify
npm run dev -- --port 4325

Open the type’s Registry page to inspect the result. Submit the contribution file in a pull request for review. Amendments must name the digest of the record they change, so an old submission cannot silently replace a newer definition.

The contribution schema uses JSON Schema 2020-12. The Registry data includes the record identifiers and digests needed for amendments and implementation declarations. These describe Registry submissions, not MAP wire messages.

Public submissions

The local checker, importer and preview are available. The public repository and contribution terms have not yet been opened, so this site does not receive submissions. The example files use an illustrative vendor and are not Registry entries.

Download the type proposal template →