Agent Commerce Rails
If agents will route the majority of commerce, which station breaks first when the rails don't hold?
The Thesis
Agents are about to move the majority of commerce. They need five things in order: a signed identity, a discoverable service manifest, an executable intent, a settled payment, a verified receipt. Without any one station, the chain breaks.
The AP2 gap is real. It is not the first gap. Identity is. Fix identity first, then discovery, then intent, then settlement, then receipts. Reputation and disputes come after there's history to reason over.
Dreamineering's current state — phase=1-discoverable | stripe=wired | ucp=partial | ap2=gap — skipped the first two stations. This PRD locks the order.
The Seven Stations
Identity → Discovery → Intent → Settlement → Receipts → Reputation → Disputes.
Five in scope (COMRC-001 through COMRC-005). Two deferred to Phase 2 (reputation + disputes) — those depend on history that does not yet exist.
| # | Station | Question | Station breaks if... | Feature ID |
|---|---|---|---|---|
| 1 | Identity | Who is the agent? | No signed origin → every downstream hop is anonymous | COMRC-001 |
| 2 | Discovery | What does it offer? | No manifest → caller cannot find the tool | COMRC-002 |
| 3 | Intent | What does it want? | No executable call → discovery is decoration | COMRC-003 |
| 4 | Settlement | How does value move? | No mandate handler → intent cannot close the loop | COMRC-004 |
| 5 | Receipts | What proves it happened? | No anchored receipt → nothing to reason over next time | COMRC-005 |
| 6 | Reputation | Is the counterparty trustworthy? | Phase 2 — needs receipt history to score | COMRC-006 (deferred) |
| 7 | Disputes | What happens when it breaks? | Phase 2 — needs settlements to dispute | COMRC-007 (deferred) |
Problem
Situation: WM-NAV @COMMERCE records phase=1-discoverable | stripe=wired | ucp=partial | ap2=gap | next=first-external-mcp-tool-call. Dreamineering wants to sell tools to external agents and buy tools from external agents. Stripe is wired but no external agent has ever signed an intent, called a tool, and settled through Dreamineering's rails.
Intention: Agents transact across the rails in the correct order — identity first, then discovery, then intent, then settlement, then receipts — with verifiable proof at every hop. Dreamineering pays its own first MCP tool via x402 before selling the rails to anyone else.
Obstacle: Engineering was about to build AP2 (settlement) before identity and manifest exist. Settlement without identity has no party to credit. Manifest without identity has no origin trust. Receipts without mandates have nothing to anchor. The order matters more than the velocity.
Hardest thing: The seven stations are ordered — identity first — but the business pressure is to ship revenue, which reads like "ship settlement." Holding the order under pressure is the hard part. The dogfood rule (Dreamineering pays its own MCP tool) is the corrective loop on the pressure.
Why Now
| Signal | Evidence | Implication |
|---|---|---|
| AP2 spec shipping | Public spec active, merchant mandates defined | Window to lead, not follow |
| x402 live on Base | Payment required responses → settlement in sub-second | Rails exist — integration, not invention |
| MCP adoption accelerating | cc-agency capability scan #2 — 70+ capabilities, tool registry pattern normalised | Tool economy precondition is met |
| IntentTrace schema exists | .invisible/standards/standard-data-unit.md defines intent_ref + action_hash + outcome | Receipt station is cheap — schema upgrade, not greenfield |
| Dreamineering factory is dormant | .invisible/BUSINESS-FACTORY.md — activation > new builds | This is the activation, not a new build |
Relationship to Other PRDs
| PRD | Relationship | Why distinct |
|---|---|---|
| Identity & Access | Peer — different identity plane | That one is human→org via Clerk. This is agent→agent via did:web + VCs. No overlap. |
| Trust Commerce | Downstream consumer | Trust Commerce is a PRODUCT on top of these rails (Sui coach-selling). It will consume COMRC-006 when that ships in Phase 2. |
| Protocol Coverage | Upstream gauge | Every COMRC feature must appear in the Commerce Auth Chain coverage map. Protocol Coverage is the gauge; this PRD is the controller being measured. |
| Agent Platform | Hosts the actors | The agents that sign intents and receive receipts live on Agent Platform. COMRC gives them a rail to transact on. |
| DePIN Infrastructure | Different layer | DePIN is walked-supply-chain provenance. Commerce Rails is the settlement plane. No overlap. |
Priority Score
PRIORITY = Pain × Demand × Edge × Trend × Conversion
| Dimension | Score | Evidence |
|---|---|---|
| Pain | 4 | CAPITAL #1 is cashflow-critical. WM-NAV names agent commerce as the primary revenue bet. Phase 1-discoverable has been partial for weeks. Every new external integration dies at identity. Not 5 because the pain is latent — nobody has churned yet, because nobody is on the rail yet. |
| Demand | 2 | External signal is weak. No merchant has asked Dreamineering for agent rails. Internal signal is strong: WM-NAV, prior strategic analysis, dogfood need, factory activation rule. Honest score. |
| Edge | 5 | Nobody bundles all 7 stations with a dogfood proof. IntentTrace schema, aggregator, skills-as-tools heritage, factory know-how, VVFL framing — all pre-existing assets. Competitors would need 6+ months to assemble the same stack plus the proof. |
| Trend | 5 | AP2 spec shipping. x402 live on Base. MCP adoption accelerating. Agents-moving-money is in Nav's top-5 predictions with HIGH conviction. Market 2-3× in 18 months. |
| Conversion | 2 | Revenue model not named. Dogfood (pay our own MCP tool) is proof of plumbing, not proof of willingness-to-pay. Needs first external merchant conversation before this climbs. |
| Composite | 400 | 4 × 2 × 5 × 5 × 2 = 400 (strong — high conviction on Edge+Trend, held back by Demand and Conversion until first external merchant) |
Scorecard
Priority Score: 400 — Pain 4 × Demand 2 × Edge 5 × Trend 5 × Conversion 2
| # | Priority (should we?) | Preparedness (can we?) |
|---|---|---|
| 1 | Pain: 4 — phase 1 partial, every integration dies at identity | Principles: 4 — 7 stations named, VVFL framing clear |
| 2 | Demand: 2 — internal conviction high, external weak | Performance: 2 — kill signals declared, no thresholds measured |
| 3 | Edge: 5 — nobody bundles 7 stations with dogfood | Platform: 3 — IntentTrace + Stripe exist, identity absent |
| 4 | Trend: 5 — AP2 + x402 + MCP all shipping | Protocols: 3 — spine exists, handoff protocol exists |
| 5 | Conversion: 2 — dogfood ≠ revenue yet | Players: 2 — no merchant, no operator, no integrator yet |
Demand-Side Jobs
Job 1: Merchant with an MCP Tool to Sell
Situation: A developer built an MCP tool that other agents would pay to call. They do not want to build identity, discovery, or payment rails from scratch.
| Element | Detail |
|---|---|
| Struggling moment | "I have a tool. Agents would pay to call it. Building identity + manifest + billing is a 2-month detour from what I actually know how to do." |
| Current workaround | Host it themselves, invoice monthly, manual onboarding per customer. Never scales past five customers. |
| What progress looks like | Register the tool in a manifest. Agents discover it. First billable call settles in sub-second via x402. Receipt anchored automatically. |
| Hidden objection | "If I depend on Dreamineering's rails, I'm locked in." Mitigation: the rails are open standards (did:web, AP2, x402, MCP). Portability is the selling point. |
| Switch trigger | First call from an external agent that Dreamineering's rails brokered. |
Job 2: Agent Operator (Consumer or B2B)
Situation: An agent operator wants their agent to buy data, trigger a service, or pay for a tool call — with a spend cap and a verifiable receipt.
| Element | Detail |
|---|---|
| Struggling moment | "My agent needs to call a tool I don't control. How do I authorise it, cap the spend, and prove what happened?" |
| Current workaround | Hard-coded API keys, manual allowlists, no cap, no receipt — or don't let the agent call anything at all. |
| What progress looks like | Signed intent (mandate) with spend cap, executed against a discovered tool, settled atomically, receipt anchored to agent identity. |
| Hidden objection | "What if the agent misbehaves?" Mitigation: spend caps are in the mandate, not the trust assumption. Stop rules are explicit. |
| Switch trigger | First time an operator's agent runs away with an API key — or the first time it has to stop because there's no rail. |
Job 3: Integrator / Reseller
Situation: A systems integrator serving a vertical (construction, solar, DePIN) wants a reference stack they can install for their own customers.
| Element | Detail |
|---|---|
| Struggling moment | "Every client asks for agent automation. I'd assemble the pieces but the identity+discovery+settlement layer is a nightmare to glue together." |
| Current workaround | Point clients at OpenAI function calling. No settlement, no discovery, no identity portability. Hit a wall at the first cross-org call. |
| What progress looks like | Install the reference stack. Plug in their vertical's tools. Ship the first transacting agent in days, not months. |
| Hidden objection | "What if Dreamineering disappears?" Mitigation: every component is an open standard. Receipt of the rails, not a receipt of Dreamineering. |
| Switch trigger | First integrator installs the stack for a paying client. |
Build Sequence — The Seven Stations
STATION 1: IDENTITY (COMRC-001)
──────────────────────────────────────
did:web:dreamineering.com issued.
VC schema for merchants and agents defined.
Dreamineering signs its own origin VC.
│
│ proves: "this call came from who they say they are"
▼
STATION 2: DISCOVERY (COMRC-002)
──────────────────────────────────────
/.well-known/agent.json hosted on dreamineering.com.
Tool registry entry for Dreamineering's first sellable MCP tool.
Manifest signed with identity from Station 1.
│
│ proves: "this service exists and this is what it offers"
▼
STATION 3: INTENT — first external MCP tool call (COMRC-003)
──────────────────────────────────────
Dreamineering's agent discovers a Dreamineering tool via manifest.
Makes a signed call. Tool responds 402 Payment Required (x402).
Payment settles on Base in sub-second.
(Dogfood: Dreamineering pays itself first.)
│
│ proves: "an agent can execute an intent and pay for it"
▼
STATION 4: SETTLEMENT — AP2 mandate handler (COMRC-004)
──────────────────────────────────────
Agent signs an AP2 mandate (intent + spend cap + merchant).
Handler validates, routes to x402 (or Stripe for fiat),
returns settlement proof to the calling agent.
│
│ proves: "intent → mandate → money movement is one atomic flow"
▼
STATION 5: RECEIPTS — IntentTrace v1.2 (COMRC-005)
──────────────────────────────────────
Schema upgrade: add intent_ref (hash), action_hash, outcome, verified.
Every settled mandate emits a receipt.
Receipts anchor to identity from Station 1.
Pre-chain anchor now, chain anchor when justified.
│
│ proves: "every transaction leaves verifiable history"
▼
[PHASE 2 — DEFERRED]
STATION 6: REPUTATION (COMRC-006, deferred)
──────────────────────────────────────
Read-only oracle over IntentTrace history.
Score counterparties by completion rate, dispute rate, freshness.
Cannot build until Station 5 has produced real history.
│
▼
STATION 7: DISPUTES (COMRC-007, deferred)
──────────────────────────────────────
Held settlement + release state machine.
Mediator role defined.
Cannot build until settlements exist to dispute.
What Exists vs What's Missing
| Component | State | Gap |
|---|---|---|
| IntentTrace schema | Working (v1.1) | v1.2 upgrade: add intent_ref hash field |
| Stripe integration | Wired | Fiat-only. No agent identity binding. |
| MCP tool pattern | Working (skills-as-tools heritage) | Never exposed to external caller. |
| did:web issuer | Missing | Station 1 blocker. Greenfield. |
| /.well-known/agent.json | Missing | Station 2 blocker. Static file + registry row. |
| First external MCP tool call | Missing | Station 3 blocker. Dogfood target. |
| AP2 mandate handler | Missing | Station 4 blocker. Follow published spec. |
| x402 on Base | External, live | Integration, not invention. |
| VC schema for merchants/agents | Missing | Station 1 sub-blocker. |
| Reputation oracle | Deferred | Phase 2 — depends on history. |
| Dispute state machine | Deferred | Phase 2 — depends on settlements. |
Features (Frozen Scope: 5)
Station 1: Identity — COMRC-001
- Publish
did:web:dreamineering.comdocument with verification methods - Define VC schema for
MerchantCredentialandAgentCredential - Dreamineering signs its own
MerchantCredentialas first issuer - Verification helper: any caller can resolve did:web → signed VC → origin proof
- First agent on Agent Platform receives an
AgentCredentialsigned by Dreamineering
Acceptance: A third party resolves did:web:dreamineering.com, reads a signed MerchantCredential, and can verify the signature without Dreamineering's help.
Station 2: Discovery — COMRC-002
-
/.well-known/agent.jsonhosted on dreamineering.com with manifest schema - First sellable MCP tool registered in the manifest with pricing hint
- Manifest is signed with the identity from COMRC-001
- Public tool registry (read-only) lists the tool with resolvable endpoint
- Manifest refreshes on tool publish (no manual re-deploy)
Acceptance: An external agent fetches /.well-known/agent.json, verifies the signature against the did:web document, and reads a callable tool endpoint.
Station 3: Intent — COMRC-003 (First External MCP Tool Call)
- Dreamineering hosts one billable MCP tool with a 402 Payment Required response
- Dreamineering's own agent discovers the tool via manifest and calls it
- Call triggers x402 on Base, settles in sub-second
- Tool returns successful response after settlement confirms
- End-to-end dogfood proof: Dreamineering pays Dreamineering for a real tool call
Acceptance: WM-NAV @COMMERCE state moves from phase=1-discoverable to phase=2-transacting. One real settled call in the audit log.
Station 4: Settlement — COMRC-004 (AP2 Mandate Handler)
- AP2 mandate schema accepted on a Dreamineering endpoint
- Signed intent validated against agent identity from COMRC-001
- Spend cap enforced at the mandate layer, not the tool layer
- Handler routes mandates to x402 (crypto) or Stripe (fiat) based on currency
- Settlement proof returned to the calling agent in the response
Acceptance: An external agent (not Dreamineering's own) signs an AP2 mandate, calls a Dreamineering tool, and receives a settlement proof. Spend cap is enforced — a second call over cap is rejected with a clear reason.
Station 5: Receipts — COMRC-005 (IntentTrace v1.2)
- IntentTrace schema upgraded to v1.2 with
intent_refhash field - Every settled mandate emits a receipt to
.invisible/context/receipts/ - Receipt references the AP2 mandate hash + settlement proof + identity VC
- Read API returns a transaction's full trace from intent to settlement
- Pre-chain anchor (signed file + hash). Chain anchor deferred until volume justifies it.
Acceptance: Given any completed transaction, a commissioner can replay it end-to-end: identity → manifest → intent → mandate → settlement → receipt, with cryptographic proof at each hop.
Phase 2 (Out of Scope — Justification for the Cut)
| Feature | Why deferred |
|---|---|
| COMRC-006 — Reputation oracle | Reading over IntentTrace history requires history to exist. Station 5 creates the history. Ship Station 5 first, let it run, then score it. |
| COMRC-007 — Dispute / escrow state machine | You cannot dispute transactions that have not happened. Needs live settlements from Station 4 and receipts from Station 5 before the state machine has anything to act on. |
The 5-feature cap is respected. Phase 2 will be a new PRD when Phase 1 produces signal.
Kill Signals — Per Station
| Station | Kill signal | Timeout | If hit, then... |
|---|---|---|---|
| Identity (COMRC-001) | Cannot verify a signed VC without Dreamineering's help | 14 days | Station 1 is wrong. Start over with a different VC library. |
| Discovery (COMRC-002) | Manifest signature does not verify against did:web document | 7 days | Station 1 regressed. Fix Station 1 before touching Station 2. |
| Intent (COMRC-003) | Zero settled MCP tool calls — Dreamineering cannot pay itself | 21 days | The dogfood does not work. Do not sell the rail. Deprioritise the whole PRD. |
| Settlement (COMRC-004) | No external agent completes a mandate end-to-end | 30 days after Station 3 passes | No external demand. Loop back to Job 1 conversations before building more. |
| Receipts (COMRC-005) | Commissioner cannot replay a transaction end-to-end | 14 days after Station 4 passes | Schema is wrong. Revisit IntentTrace v1.2 design. |
PRD-level kill signal: By 2026-07-15, if fewer than 1 external agent has completed a settled mandate through Dreamineering's rails, deprioritise the entire PRD and loop back to merchant demand validation. Dogfood passing is necessary but not sufficient.
The VVFL Loop
This PRD is a virtuous loop. Every completed intent improves the template for the next one.
IDENTITY issued
│
▼
MANIFEST signed → DISCOVERED by agent
│
▼
INTENT signed → MANDATE validated → SETTLEMENT executed
│
▼
RECEIPT anchored → HISTORY grows → REPUTATION scorable
│
▼
TEMPLATE improves (VVFL Legacy Rule)
The feedback: every receipt is a data point for reputation. Every reputation score tightens the next mandate. Every tighter mandate makes the next settlement cheaper. The loop compounds.
The setpoint: verifiable intent at every hop. The gauge: IntentTrace receipts. The controller: the mandate handler.
Commissioning
| Station | Status | Evidence | Commissioner |
|---|---|---|---|
| Station 1 (Identity) | Not started | Needs did:web document + VC schema | Engineering |
| Station 2 (Discovery) | Not started | Needs manifest + registry | Engineering |
| Station 3 (Intent) | Not started | Dogfood — Dreamineering pays itself | Dream team (external witness) |
| Station 4 (Settlement) | Not started | Needs first external mandate | Dream team + external agent |
| Station 5 (Receipts) | Not started | Needs replay test by commissioner | Independent commissioner |
Protocol Coverage Link
Every COMRC feature must appear in the Protocol Coverage Commerce Auth Chain gauge. The gauge currently reports 3 broken links on that chain — this PRD is what fills them.
Players
| Role | Responsibility | Status |
|---|---|---|
| Dreamineering (merchant) | Issue identity, host manifest, run first dogfood | Committed |
| Dreamineering agent (operator) | Sign first intent, pay first tool call | Committed |
| First external merchant | Register a second tool, prove multi-tenant | Not recruited |
| First external agent operator | Sign first mandate across orgs, prove Station 4 | Not recruited |
| Integrator / reseller | Install reference stack for a vertical client | Not recruited |
The three unrecruited players are the Demand score 2. They are also the kill signal at 2026-07-15.
Issues
| # | Severity | What happens | Fix |
|---|---|---|---|
| 1 | HIGH | Pressure to ship settlement before identity — "we have Stripe, ship AP2 now" | This PRD is the answer. Quote the station order in every planning conversation. |
| 2 | MEDIUM | Revenue model unnamed — dogfood ≠ willingness to pay | Run 5 merchant conversations before Station 4 starts |
| 3 | MEDIUM | did:web is a choice — could use did:key or did:pkh | Decide at Station 1 kickoff. Bias: did:web for the merchant story, did:key for the agent story |
| 4 | LOW | IntentTrace v1.2 is a schema change — existing receipts need migration | Migration script + versioned schema file |
Context
- Business Factory — Factory activation is the intent behind this PRD
- IntentTrace Standard — The receipt schema this upgrades
- Blockchain Verifiable Truth — The proof layer the rails inherit
- Protocol Coverage — The gauge this PRD is measured against
- Trust Commerce — The downstream product on top of these rails
- Identity & Access — The peer human identity plane
Questions
What is the single most important thing that must be true for Agent Commerce Rails to succeed — and how would you know if it weren't?
- If identity is Station 1, who is the first external agent that holds a Dreamineering-signed credential — and what makes them trust it?
- The dogfood proof is "Dreamineering pays itself." What is the first external transaction that proves the rails carry weight others trust?
- If Demand scores 2 and Conversion scores 2, which of the three audiences (merchant / operator / integrator) moves first — and what conversation produces that signal?
- At station 4, AP2 is settlement — but the real test is a mandate with a spend cap that rejects the second call. What does "graceful rejection" look like to the caller's agent, and who defines it?
- Phase 2 defers reputation and disputes until history exists. How much history is enough history — 10 transactions, 100, 1000? What measurement graduates Phase 2 from speculation to spec?