Skip to main content

·6 min read·by more.md

The Entity Engagement Protocol is not yet another schema. It exists because three flows that agents now want to run are silently broken on the open web. Here is what each looks like. Here is what closes the gap.

Why EEP exists: three flows your API can't do today

The web was built for browsers driven by humans. Agents now drive a growing slice of every request. They keep hitting the same three walls:

  1. Read-and-cite without scraping. An agent can fetch your homepage. It cannot ask "give me your typed self-description, the canonical URL for each section plus a stable handle I can quote." It scrapes. It hallucinates. It gets it wrong.
  2. Pay-per-read without checkout pages. An agent can render a Stripe checkout in a headless browser. That is not a payment flow. It is a browser theatre that breaks the moment your CSS changes.
  3. Subscribe-and-be-pushed without email. Webhooks exist. Every service rolls its own auth and signature scheme. Agents need a single verifier that works across endpoints they have never seen before.

EEP is the protocol that makes those three flows boring. The reference implementation is the more.md hosted stack. The spec, the schemas plus the SDKs are open and live in the eep-dev/eep monorepo.

Flow 1: Discover and cite

curl https://more.md/u/ada?format=json

You get a typed entity envelope: handle, prefix, owner DID, content tree, service catalog plus a manifest URL. Agents can quote any sub-path (more.md/u/ada/about#L42) and the URL stays stable across edits because the entity carries a version field.

Flow 2: Pay per read (HTTP 402 done right)

When an agent fetches a gated path, the server returns 402 with a machine-readable challenge:

{
  "current_tier": "public",
  "required_tier": "paid",
  "available_tiers": {
    "paid": {
      "requirements": [
        { "type": "payment", "amount": 5, "currency": "usd", "per": "once" }
      ]
    }
  }
}

The agent settles on-chain (USDC via x402) or via a stub in dev, posts the receipt, then replays the request. No browser. No checkout page. No CAPTCHA.

Flow 3: Subscribe and verify in one library call

EEP webhooks are Standard Webhooks–compliant. Verifying a payload is one library call:

import { verifyWebhookSignature } from '@more-md/webhooks';

const ok = verifyWebhookSignature({
  secret: process.env.MORE_MD_WEBHOOK_SECRET!,
  headers: req.headers,
  body: req.rawBody,
});

Same verifier across every more.md webhook. Same verifier across every EEP-compliant service.

What we are deliberately not building

EEP is not an identity layer. It is not a wallet. It is not a new auth protocol. It rides on DIDs you already have. Payment rails you already have. HTTP you already have. The novelty is the contract that puts those pieces together.

If those three flows resonate, the next step is the /agents Agent Starter. Eight primitives. Eight runnable snippets. Fifteen minutes to a working integration.

Tagseepprotocolagents