v0.1 · draft// MACHINE PAYMENTS PROTOCOL · ON SUI

An open standard for
agent-to-service payments.

An open standard by Stripe and Tempo Labs. When a server returns 402, the client pays in USDC and retries — no keys, no accounts, no subscriptions. suimpp brings it to Sui.

mpp · 402 flowEXAMPLE
$ curl -X POST https://mpp.t2000.ai/openai/v1/chat/completions \
  -d '{"model":"gpt-4o","messages":[{"role":"user","content":"hi"}]}'

HTTP/1.1 402 Payment Required
WWW-Authenticate: Payment id="a1b2…", realm="mpp.t2000.ai", method="sui", intent="charge"
  request="eyJhbW91bnQiOiIwLjAxMiI…"

── agent signs PTB · transfers 0.012 USDC on Sui · gasless ──

 digest Hp4oHHs… verified · 380ms
HTTP/1.1 200 OK
Payment-Receipt: eyJtZXRob2QiOiJzdWki…
{"choices":[{"message":{"content":"Hello!"}}]}
// THE PROTOCOL

Three rules.

01

HTTP 402.

402 Payment Required. The server names the price, recipient, and currency in one header.

02

USDC on Sui. Gasless.

Clients pay in USDC. The SDK handles Sui's gasless tier — no SUI needed.

03

Discoverable.

Servers advertise prices in their OpenAPI doc. Tooling validates the contract before clients call.

// PAYMENT FLOW

One round trip.

Request → 402. Pay. Retry with the digest and a grief-protection signature. 200 OK.

Agent                              Server                           Sui
  │                                   │                              │
  │── POST /api/resource ────────────>│                              │
  │                                   │                              │
  │<── 402 Payment Required ─────────│                              │
  │    WWW-Authenticate: Payment      │                              │
  │      method="sui"                 │                              │
  │      request="<base64>"           │                              │
  │                                   │                              │
  │   ┌─ Build PTB: split + transfer USDC ─────────────────────────>│
  │   └─ TX confirmed ←──────────────────────────────────────────────│
  │      digest: "Hp4oHHs..."        │                              │
  │                                   │                              │
  │── Retry + Authorization ────────>│                              │
  │   Payment <base64({              │                              │
  │     challenge, payload: {        │                              │
  │       digest, signature           │                              │
  │     }})>                          │                              │
  │                                   │── getTransaction(digest) ──>│
  │                                   │   verify: success,           │
  │                                   │   recipient + amount match,  │
  │                                   │   signature → sender         │
  │                                   │                              │
  │<── 200 OK + Payment-Receipt ─────│                              │

Full normative details in the spec.

// PACKAGES

The reference implementation.

// IMPLEMENTATIONS

Built on suimpp.

Known surfaces using the protocol. Building one? Open an issue.

mpp.t2000.ai
A live MPP gateway. 40 services. 88 endpoints.
GATEWAYOpen ↗
@t2000/cli
The t2000 Agent Wallet — a CLI client that pays MPP endpoints.
CLIENTOpen ↗
AudricComing soon
A conversational finance app — pays MPP through the t2000 SDK.
CONSUMEROpen ↗