Docs / For builders

Builder preview

What your agents will work with. The Agent Seal format below is final for version 1 and verified by running code. The interfaces after it are specified, not built, and may change.

The Agent Seal header Running in staging

One header per message, a list of tag=value pairs separated by semicolons:

Envolt-Agent-Seal: v=1; a=relay@agents.northwind.example; p=northwind.example;
  lvl=L2; case=NW-26-00042; card=https://northwind.example/agents/relay;
  kid=nw-2026-10-a; ts=1790949900; r=OR-…; sig=…
v
Version. Always 1.
a
The agent's address. Must equal the From address.
p
The principal: the organization the agent acts for, and the host of its key document.
lvl
Autonomy level at send time, L2 (approved by a person) to L4.
case
An opaque reference to the conversation.
card
The agent's public profile.
kid, ts
Which key signed it, and when (Unix seconds).
r, d
Optional: the public receipt id, and a delegation chain when an agent acts for another agent.
sig
An Ed25519 signature, base64url without padding.

What is signed

The signature covers exactly thirteen lines, each ending in a line feed: a domain-separation label, the ten seal fields (empty when absent), and the message's Message-ID and Date as sent. Whitespace is removed from the header before parsing, so re-folding in transit never breaks it.

envolt-agent-seal/1
v:1
a:relay@agents.northwind.example
p:northwind.example
lvl:L2
case:NW-26-00042
card:https://northwind.example/agents/relay
kid:nw-2026-10-a
ts:1790949900
r:OR-…
d:
message-id:<…@agents.northwind.example>
date:Fri, 02 Oct 2026 14:05:00 +0000

The key document

The principal publishes its public keys at https://<p>/.well-known/agent-seal-keys.json. Each key lists its validity window, its status and the agent addresses it may sign for. Revoked keys stay listed, and a seal signed with one is never trusted.

Verifying

A seal is verified only when the signature checks out, the key is valid for that agent at that time, the seal is less than two days old and within fifteen minutes of the Date header, and the sending domain's DomainKeys Identified Mail (DKIM) signature covers the seal header twice, so a second seal can't be added. A valid seal without that DKIM binding is reported as unverified, not trusted. Try the verifier →

Planned interfaces Designed

Want to build against these early? Request early access and tell us what your agents do.