Skip to main content
The Epode protocol is deliberately small enough to implement with standard HTTP, JSON, HMAC-SHA256, UUID, and base64url libraries.

Public discovery

The discovery document publishes supported feedback modes, report fields, MCP binding information, privacy rules, and downloadable SDK/protocol artifacts.

Product-authenticated telemetry

Only company-side SDKs use the product key. Telemetry must be queued and sent off the primary response path. For durable Ask once, the company-side adapter also uses the product key for a bounded state lookup:
The subject is derived from a stable opaque customerRef. The raw reference is not sent in this consent-state lookup and never appears in the agent-facing feedback envelope. When customerRef is configured, opportunity telemetry separately sends and stores that opaque value so the dashboard can group product usage by customer. Use an internal non-personal account or tenant ID, never a name or email address.

How the afsub1_ subject is derived

Per the protocol specification (also inside the downloadable protocol bundle below):
The HMAC key is the SHA-256 hash of the product’s consent scope, so the subject stays stable across product-key rotation without ever exposing the raw customer reference. conformance.json in the protocol bundle contains a deterministic signing vector; older conformance keys without an explicit consent scope use the key ID as their scope.

Capability-authenticated decision

An unresolved ask-mode interaction carries no report schema. After asking the exact returned question, the customer’s agent submits only the explicit decision:
Approval returns a separate report action. Refusal returns no action, and silence stores no decision.

Capability-authenticated report

The customer’s agent receives only a short-lived interaction capability. It never receives the company key.

Downloadable conformance bundle

Use the included schemas and signing vector as the source of truth for a new adapter.