SAM
SAM Protocol
draft-sam-protocol-01
View on GitHub
Open Standard · Internet-Draft · April 2026

SAM Protocol

The Trust and Mandate Layer for Agentic Commerce

Merchant-ready. Agent-ready. Bounded autonomy.

AI agents can already search, compare, configure, and buy. What they cannot yet do reliably is discover a merchant in a standardized way, verify its identity, understand the limits of autonomous execution, and fall back gracefully to a human when autonomy is not enough.

SAM is a free, open standard defined by a single sam.json file published at the merchant's well-known location. It does not compete with MCP, OpenAI Actions, A2A, or REST. It feeds them.

Why SAM exists

One file. One signature. One grammar. One fallback.

The web was designed for humans assisted by browsers. Agents operate differently. They must select an execution surface, interpret rules, arbitrate between offers, and sometimes commit to acts with real economic consequences. Without a shared standard, every merchant becomes a special case, and every agent must re-learn the same trust assumptions from scratch.

DISCOVERY

A single well-known location

Every SAM-conformant merchant publishes https://<domain>/.well-known/sam.json. One URL. No registry. No gatekeeper.

VERIFICATION

Cryptographic identity

The document is signed with ed25519. Agent requests are signed per RFC 9421. PKI web is the floor; application-level signatures are the roof.

BOUNDED EXECUTION

Mandate grammar v0.1

A closed grammar of eight primitives, AND-only, evaluated locally by the agent with no network call. Simple, auditable, portable.

HUMAN ESCALATION

Graceful fallback

Every manifest declares at least one structured human-escalation channel. When the mandate forbids, when auth fails, when the manifest is stale — the agent escalates.

Locked design decisions

Five constitutional rules

1

No autonomy without proof.

2

No proof without signature.

3

No execution without bounds.

4

No bounds without local enforcement.

5

No signature is valid forever — only within its declared freshness window.

Agent authentication — locked

HTTP Message Signatures (RFC 9421) with ed25519. One profile. One algorithm. One covered-components set. Exceptions are documented profiles, not alternatives.

Closes doors that other standards leave open.

Mandate grammar — closed

Eight primitives: autoExecute, maxAmount, maxPriceDrift, allowedCategories, deniedCategories, allowedRegions, validityWindow, agentClass. AND-only. No OR. No conditional. No free fields.

Versioned as a whole. Unknown version = refuse to act.

Freshness — constitutional

Every signed manifest carries a validUntil. Agents MUST revalidate after TTL expiry. Revocation signals outrank cached validity.

SAM never fails open.

Conformance levels

  • L0 — discovery · merchant-ready
  • L1 — + identity, signature · agent-ready
  • L2 — + mandate, agent auth · bounded autonomy
Read the spec

Three documents. That's it.

Quick start

A minimal sam.json

Publish this file (signed) at https://your-domain/.well-known/sam.json and you are Level 2 SAM-conformant. An agent can now discover you, verify you, and act within your declared mandate.

{
  "sam:version": "1.0",
  "sam:identity": {
    "domain": "shop.example.com",
    "legalName": "Example Retail SAS",
    "jurisdiction": "FR"
  },
  "sam:mandate": {
    "grammarVersion": "0.1",
    "autoExecute": true,
    "maxAmount": {
      "value": 500,
      "currency": "EUR",
      "inclusiveOfTaxes": true,
      "inclusiveOfShipping": true
    },
    "maxPriceDrift": { "percent": 2, "reference": "quote" },
    "allowedRegions": ["FR", "BE", "LU"],
    "validityWindow": {
      "notBefore": "2026-04-07T00:00:00Z",
      "notAfter":  "2026-05-07T00:00:00Z"
    }
  },
  "sam:agentAuth": {
    "profile": "rfc9421",
    "algorithm": "ed25519"
  },
  "sam:human": {
    "channels": [
      { "type": "email", "value": "agents@shop.example.com" }
    ]
  },
  "sam:signature": {
    "algorithm": "ed25519",
    "validUntil": "2026-04-14T00:00:00Z",
    "value": "base64(...)"
  }
}
For merchants
  1. Copy the example above
  2. Sign with an ed25519 key
  3. Publish at your .well-known path
  4. Declare your conformance level
For agent builders
  1. Fetch and verify the manifest
  2. Evaluate the mandate locally (~35 lines)
  3. Sign outgoing requests per RFC 9421
  4. Escalate via sam:human when bounds fail
Status

Draft. Stable. Pilotable.

SAM Protocol v1.0 (draft-sam-protocol-01) is a draft specification. The text is stable but not yet final. Implementors are encouraged to run pilots and provide feedback. The core decisions — RFC 9421 with ed25519, the eight-primitive mandate grammar, the constitutional freshness rule — are locked. The five known open issues (canonicalization, amount normalization, operator trust model, replay protection, user-context semantics) are tracked in section F of the Technical Appendix and will be closed before v1.0 is declared stable.