Stipendex

Trust registry

The wallet's answer to "who may be paid at all". An open format of signed receiver descriptors + a federation of commercial verification providers. The first provider is 4agents (verified merchants and, by extension, verified paid MCP servers).


Why a separate layer

A mandate that lists receivers directly works for a couple of tools but does not scale: a principal cannot manually vet every new MCP server or shop. The registry moves the vetting ("the receiver is real: owns the domain, paid for verification, has history") to a provider the principal trusts once — with one line in the mandate:

"allow": [ "registry:4agents/verified" ]

Semantics: "anyone whose descriptor is signed by provider 4agents at level verified or above may be paid."

Receiver descriptor

One format for both the registry and self-hosted /.well-known/stipendex.json:

{
  "stipendex": "receiver/0.1",
  "id": "mcp:exa-search",
  "name": "Exa Search",
  "keys": [ "ed25519:GfHq…" ],
  "endpoints": { "mcp": "https://mcp.exa.ai", "http": "https://api.exa.ai" },
  "rails": [ { "scheme": "account", "facilitator": "https://pay.4agents.io" } ],
  "profiles": [ "service" ],
  "trust": {
    "provider": "4agents",
    "level": "verified",
    "verified_at": "2026-06-01T00:00:00Z",
    "expires_at": "2026-09-01T00:00:00Z",
    "evidence": [ "domain", "payment", "feed" ]
  },
  "sig": "<registry provider JWS>"
}

Key rules:

Provider API (minimum)

GET /registry/receivers/{id}     → descriptor (JWS)
GET /registry/revocations        → revoked ids/keys (JWS, incremental)
GET /registry/meta               → provider keys, level definitions

Wallets cache descriptors per TTL; offline validation — by the provider's signature.

Federation

There can be many registries (per industry, jurisdiction, ecosystem). The principal lists trusted providers in the mandate; the wallet accepts a descriptor from any of them. Providers compete on verification quality — like certificate authorities, but with a transparent scale and no single global root.

Provider economics

Verification is paid by the receiver (the 4agents model: a subscription for verified). That is both a spam barrier and the provider's business. For wallets and principals the registry is free — they are the customers of trust, not a revenue source.

Abuse

Threat Control
A fraudster buys verified a level honestly means "checked by X"; transaction and dispute history moves the level down/up; incident-driven revocation
Receiver key compromise key rotation in the descriptor; the revocation list; short descriptor lifetime
A malicious/compromised provider multiple providers in a mandate are logged, not merged: the wallet shows whose signature admitted each payment; the principal removes a provider with one line
Name squatting (mcp:exa-search by an impostor) id is bound to domain/key at verification; the provider does not issue conflicting ids