Overview
Allowance Engine gives up to eight AI agents their own USDC budget from your Solana wallet, and cuts all of them off in one transaction. There is no program to trust and no vault to deposit into: every arm is an ordinary USDC token account that your wallet owns, and the Solana token program enforces each agent's ceiling.
The parts
- Arm: a USDC token account owned by your wallet, at a fixed address derived from your wallet and its number (0 to 7).
- Session key: the agent's own keypair, set as the SPL delegate of one arm for the budget you approved.
- Rules: the arm's name, daily cap and allow-list, signed by your wallet as a message and checked by the facilitator.
- Facilitator:
/api/x402on this site. It checks an agent's signed payment, pays its SOL fee and submits it. - Ink: the kill switch. One transaction empties every arm into your wallet and closes it.
- Agent SDK and MCP server: files served from
/sdk/that an agent runs next to its session key.
The flow
agent ── GET /paid ───────────────▶ endpoint
agent ◀── 402 { accepts: [ { scheme: "exact", network: "solana", payTo, maxAmountRequired } ] }
agent ── GET /api/x402/fee?arm=...&amount=... ─▶ facilitator (relay fee, fee payer, blockhash)
agent ── signs a transaction with its session key:
TransferChecked arm ─▶ payTo's USDC account
TransferChecked arm ─▶ relay fee account
Memo "allow:pay:<host>" fee payer = facilitator
agent ── GET /paid X-PAYMENT: base64(payload) ─▶ endpoint
endpoint ── POST /api/x402/settle ─▶ facilitator
facilitator checks: shape, payTo, fee, arm, delegate, budget, rules, daily cap
facilitator ── co-signs as fee payer, submits ─▶ Solana
agent ◀── 200 + X-PAYMENT-RESPONSE { success, transaction }Endpoints see the arm as the payer. Your wallet is never handed to an agent and never signs an agent's payment.