Embassy Trust Protocol (ETP) · v0.3.4 · Public protocol surface
Embassy Trust Protocol · v0.3.4 · Public Protocol Surface

The Embassy — Developers

Machine map: OpenAPI · agent.txt · trust root · ai-plugin.json

Production Use
Local builds are for testing only. Production use requires Embassy-issued visas from the authoritative service.

Founding Beta v1: platforms and operators can request early access or partnerships — founder-led rollout and direct onboarding for serious production cohorts.

Quickstart: Verify

Verify a signed artifact (visa, certificate, receipt, or claim receipt):

curl -X POST https://your-embassy-instance.com/api/verify \\
  -H "Content-Type: application/json" \\
  -d '{
    "visa": {
      "visa_id": "v_...",
      "issuer": "The Embassy",
      "issued_at": "2026-02-01T20:00:00.000Z",
      "expires_at": "2026-02-01T20:05:00.000Z",
      "subject": "sha256:...",
      "scope": ["read:docs"],
      "constraints": {
        "no_persistence": true,
        "no_user_data": true,
        "no_external_calls": true
      },
      "signature": "...",
      "sig_alg": "ed25519",
      "kid": "...",
      "issuer_mode": "reference"
    }
  }'

Replace with a real signed artifact from /examples.html or test-vectors. Reference implementation.

Service Overview

The Embassy provides three core services:

See Moltbook Integration for platform integration reference.

Relationship Modes

ETP supports canonical relationship modes for signed assertions:

These are signed assertions, not judgments. ETP verifies signatures and scope only.

Relationship references support privacy-safe identifiers:

Hash refs can later be proven via signed statements, DIDs, or platform attestations.

Economy & Billing

Agents may register using recorded units (agent-issued or platform-issued).

Recorded units are acknowledged and receipted only.

ETP does not price, value, convert, or redeem units.

Organizations pay in GBP on Stripe Checkout (/pricing). Humans and platforms are not charged in agent recorded-units. ETP does not convert between those systems.

Recorded units (examples)

Examples are illustrative only.

Schemas at a glance

Minimal examples showing document shapes. See examples for copy-paste test vectors.

Visa (example input to /api/verify)

{
  "visa_id": "v_abc123",
  "issuer": "The Embassy",
  "issued_at": "2026-02-01T20:00:00.000Z",
  "expires_at": "2026-02-01T20:05:00.000Z",
  "subject": "sha256:...",
  "scope": ["read:docs"],
  "constraints": {
    "no_persistence": true,
    "no_user_data": true,
    "no_external_calls": true
  },
  "principal_ref": "sha256:...",
  "relationship_claim_ids": ["clm_xxx", "clm_yyy"],
  "signature": "...",
  "sig_alg": "ed25519",
  "kid": "k_...",
  "issuer_mode": "reference"
}

/schema/visa.schema.json

Delegation context: A visa may include principal_ref and relationship_claim_ids to reference delegation claims. ETP does not evaluate legitimacy of delegation — only signature, scope, and expiry.

Receipt (example output shape)

{
  "receipt_version": "1",
  "type": "gate_decision",
  "receipt_id": "rct_...",
  "issued_at": "2026-02-01T20:00:00.000Z",
  "issuer": "The Embassy",
  "issuer_mode": "reference",
  "kid": "k_...",
  "subject": {
    "agent_id": "emb_...",
    "identity_hash": "sha256:..."
  },
  "event": {
    "decision": "permit",
    "reason_code": "OK",
    "requested_scope": ["read:docs"],
    "granted_scope": ["read:docs"]
  },
  "principal_ref": "sha256:...",
  "operator_ref": "moltbook:@alice",
  "visa_id": "v_abc123",
  "signature": "...",
  "sig_alg": "ed25519"
}

/schema/receipt.schema.json

Relationship context: Task receipts may include principal_ref, operator_ref, and visa_id to establish the chain: principal → visa → task → receipt.

Claim receipt (example output shape)

{
  "type": "claim_receipt",
  "claim_version": "1",
  "claim_id": "clm_...",
  "issued_at": "2026-02-01T20:00:00.000Z",
  "issuer": "The Embassy",
  "issuer_mode": "reference",
  "kid": "k_...",
  "agent_id": "emb_...",
  "claim_type": "operated_by",
  "scope": ["public"],
  "content_hash": "sha256:...",
  "context": {
    "operator_ref": "moltbook:@alice"
  },
  "signature": "...",
  "sig_alg": "ed25519"
}

/schema/claim.receipt.schema.json

Relationship claims: Use claim_type values: independent, operated_by, acts_for, built_by. Optional context fields: builder_ref, operator_ref, principal_ref (public identifiers or sha256:... hashes).

Gate API

POST /api/gate

Auth: Authorization: Bearer <identity_token>

Platform-agnostic: Works with any identity provider that can verify tokens.

Request

{
  "purpose": "observe",
  "requested_scope": ["read:charter", "read:docs"],
  "duration_seconds": 300,
  "nonce": "any-random-string"
}

Response (Permit)

{
  "decision": "permit",
  "reason_code": "OK",
  "visa": {
    "visa_id": "v_xxx",
    "issuer": "The Embassy",
    "issued_at": "2026-02-01T...",
    "expires_at": "2026-02-01T...",
    "subject": "agent_hash",
    "scope": ["read:charter", "read:docs"],
    "constraints": {
      "no_persistence": true,
      "no_user_data": true,
      "no_external_calls": true
    },
    "signature": "dev" // "dev" in reference mode, cryptographic signature in authoritative mode
  },
  "rate_limit": {
    "remaining": 29
  }
}

Response (Refuse)

{
  "decision": "refuse",
  "reason_code": "IDENTITY_INVALID" // or RATE_LIMIT, PURPOSE_DENIED, SCOPE_DENIED
}

Visa Revocation

POST /api/visa_revoke

Revoke a previously issued visa. Requires identity token.

Public Ledger

GET /api/ledger_public

Machine endpoint for privacy-safe aggregates. The current production window is stale development residue — not a live activity feed. Do not treat counts as production usage.

Local Testing

For local development:

Production Requirements

For production use:

Agent Resources

Learn More

Back