Spendkit
3-MINUTE DEMO COMPANION · VERIFIED TESTNET EVIDENCE

The Agent can pay. The Agent cannot exceed the boundary.

Spendkit keeps the Payment Wallet key outside model context and Spendkit Server. Router payments pass through the Agent's onchain spending Policy.

Core idea: MCP authorizes. Arbitrum enforces. The user keeps custody.

This page is a presentation companion, not a simulated Runtime. The live Agent tool calls in the final demo must come from the real Runtime Agent.

One payment, six roles

HUMANPolicy

Defines Wallet, limits and recipient rules.

RUNTIMEAI Agent

Receives the task and calls Spendkit.

GATE 1OAuth + MCP

Policy lookup, preview and exact authorization.

SUBMITTER + FUNDSAgent Payment Wallet

Holds USDG, signs and submits the Router transaction, and pays gas.

GATE 2Arbitrum Router

Rechecks the Policy and authorization onchain.

FUNDSMerchant

Receives USDG directly from the user's wallet.

Role separation: Spendkit Server never broadcasts the payment. It evaluates the request and signs an exact authorization. The bound Agent Payment Wallet holds the USDG, submits the Router transaction, and pays gas.

The Agent starts with a normal task

USER → RUNTIME AGENT Natural-language instruction Pay the demo merchant 0.01 USDG.

The Runtime Agent should discover and call spendkit_get_policy, spendkit_preview_payment, then spendkit_authorize_payment. For a no-write rehearsal, decline the per-payment confirmation after authorization. “Demo merchant” is a local Runtime label, not a claim that recipient allowlisting is enabled.

Success matters. Refusal matters more.

WITHIN POLICY 0.01 USDG → ALLOW

The Agent may request one exact short-lived authorization. The bound Payment Wallet can submit only the Router transaction that still passes onchain checks.

ABOVE PER-TX LIMIT 0.11 USDG → DENY

per_transaction_limit_exceeded. Stop before gas. The Agent cannot use MCP to raise its own limit.

Verified real USDG evidence

The transaction below is historical evidence from the earlier Sepolia Router deployment. The new Router is deployed, but this transaction does not verify its Payment Wallet sender schema; a separate post-refactor payment receipt is still needed.

NETWORKArbitrum Sepolia

Chain ID 421614

PAYMENT0.01 USDG

Paxos Test USDG

RESULTCONFIRMED

PaymentExecuted matched · authorizationUsed=true

FUNDSRouter delta 0

Wallet -0.01 · Merchant +0.01

EvidenceValue
Transaction0xa0b16825347b8749a27df7f2048cacd8a25a88f71479d7c17fbfe4fd89cabd43
Block312101737
Router0x7F3c2c570122501B276680148B0C88AAe0550153
USDG0xFFC95faa3d63Cde504a05B567C600B78C0b41892
Automated regressionServer, Local Agent, and contract suites are tracked in dated regression reports; live pages intentionally avoid hard-coded test counts.
MCP SDK interoperability36/36 production probes PASS; full official conformance is not claimed.

Why this needs Arbitrum

An offchain server can say “no.” That is not enough if the Agent can still move the money.

The SpendkitPolicyRouter enforces the same boundary inside the asset-transfer path. Changed amount, changed recipient, a different Payment Wallet sender, expired or replayed authorization, and Policy-limit violations are rejected onchain.

Bounded autonomy, not wallet custody.

Today: policy-controlled Paxos Test USDG payments on Arbitrum Sepolia. Direction: a programmable spending-control layer for procurement, research, ecommerce, and autonomous machine commerce.