Flexible by design. All fields except messageId and threadId are optional. Implementations populate what they can; unpopulated fields SHOULD be explicit null (consumers MUST accept omission too — §10).
Non-destructive. The original raw message is preserved as an atomic field when included. Normalization layers are additions, not replacements.
Multiple content levels. Consumers choose the level of processing that suits their use case — from raw RFC 5322 bytes to a clean, LLM-ready string.
Stable threading.threadId is calculated deterministically from standard email headers. It must be identical for all messages in the same conversation, across implementations.
UTC everywhere. All timestamps are Unix epoch integers (seconds). ISO 8601 strings, where provided, are always UTC.