ALLOW
The declared intent passes current policy. The signer must still verify that the payment matches the checked intent.
The agent proposes a payment. The control plane evaluates it. Your existing wallet or processor remains the only component that can move funds. x402 requests also bind a one-time nonce before signing.
agent creates payment intent
↓
POST /check
↓
ALLOW | BLOCK | REQUIRE_APPROVAL
↓
external signer verifies decision
STABLE CONTRACT
The declared intent passes current policy. The signer must still verify that the payment matches the checked intent.
Stop execution. The response includes reason codes and a receipt for the attempted action.
Pause execution and route the intent to the owner or an approved human workflow.
QUICK START
Register an isolated free client credential, keep its administration token outside the model, and send the client token only with API or MCP calls.
1. POST /register
2. Store the returned administration credential outside the agent
3. Give client_token to one agent
4. POST /check before signing
5. Continue only on ALLOW
6. Verify receipt and intent at the signerFAIL CLOSED
A timeout, malformed response or unreachable control plane must stop the payment or send it for approval. It must never silently become an ALLOW.
decision = control_plane.check(intent)
if decision.status != "ALLOW":
stop_or_request_approval(decision)
signer.verify(intent, decision.receipt)
signer.sign(intent)INDEPENDENT EVALUATION
A dependency-free Node.js verifier creates one isolated free evaluation tenant, confirms a request-bound receipt, proves that a prompt-injection-driven payment is blocked, and checks idempotency, audit-chain status and usage. The local conformance proof also signs five decisions and rejects tampered receipts. Credentials stay in memory and are never printed.
node demo-conformance.mjs
result: PASS
receipts: 5
tamper detection: PASS
funds moved: false
node evaluate-live.mjs --live
result: PASS
baseline: ALLOW | REQUIRE_APPROVAL
dangerous payment: BLOCK
credentials printed: noUPSTREAM INTEROPERABILITY WORK
The links below are proposals and pull requests, not endorsements or accepted standards. They expose only the integration boundary; policy logic and credentials remain private.
An opt-in, fail-closed Base/USDC pre-sign integration with five network-free tests.
Review pull request ↗A selected-requirement callback proposal so authorization can bind to the exact payment later signed.
Review interface proposal ↗Host lifecycle and fail-closed invariants contributed to the Foundation's pre-payment-guard discussion.
Review contribution ↗A one-time charge adapter tested against the official mppx 0.11.0 prepare-and-pay runtime.
Open MPP adapter ↗A fail-closed hook for InFlow's corrected pre-sign managed-payment boundary, with network-free tests.
Open InFlow adapter ↗CONTROLLED PILOT
Public qualification contains no secrets. Architecture, credentials and customer data stay out of the public request.