guide

how mpp vault works and how to get started.

getting started

01

Connect wallet

Connect your Solana wallet (e.g. Phantom). This is your vault owner identity — only you can manage the vault.

02

Deploy vault

Click "deploy vault" on the overview page. This creates a program-derived address (PDA) on Solana that holds all funds and rules. One transaction, done in seconds.

03

Create sub-accounts

Each AI agent gets its own sub-account with a name, agent ID, and USDC budget. Go to sub-accounts → + new. The agent can only spend within its budget.

04

Set spending rules

Configure limits for each sub-account: max per transaction, max per day, time windows (e.g. only 9am–5pm). All enforced on-chain — no server needed.

05

Whitelist recipients

Add approved addresses that the agent can pay. If an agent tries to pay an address not on the whitelist, the blockchain rejects it.

06

Deposit USDC

Transfer USDC from your wallet into the vault. The balance is distributed across sub-accounts based on their budgets.

07

Let agents transact

Give each agent its sub-account address and your vault program ID. The agent calls execute_payment to pay for services — rules are checked automatically on-chain.

key concepts

What is a vault?

A vault is a smart contract account on Solana that holds USDC and enforces spending rules. It's controlled by your wallet (the authority). Think of it as a company bank account that only you can configure.

What are sub-accounts?

Each AI agent gets its own sub-account inside your vault. A sub-account has its own budget, spending limits, and whitelist. Agents can only access their own sub-account — they can't touch other agents' funds.

How do spending rules work?

Rules are stored as on-chain account data. When an agent calls execute_payment, the Solana program checks: Is the amount under the per-tx limit? Under the daily limit? Is the recipient whitelisted? Is it within the time window? If any check fails, the transaction is rejected by the blockchain itself.

What is a whitelist?

A list of approved Solana addresses that an agent is allowed to pay. For example, you might whitelist the OpenAI API payment address and a data provider. The agent cannot send USDC to any address not on this list.

Why on-chain?

Because rules enforced by a server require you to trust that server. If it goes down, gets hacked, or the operator is malicious, your rules stop working. On-chain rules are enforced by the Solana blockchain — they work 24/7 regardless of any server.

How do agents connect?

An agent is any script/bot that has a Solana keypair. You give the agent: (1) your vault program ID, (2) its sub-account address, and (3) a keypair to sign transactions. The agent builds and sends execute_payment transactions to the Solana network.

What about fees?

MPP Vault charges 0% fees. The only cost is Solana transaction fees (fractions of a cent per transaction). The protocol takes nothing from your payments.

agent integration example

Here's how an AI agent calls your vault to make a payment. This runs on the agent's server — not in the dashboard.

import { Connection, PublicKey, Transaction } from "@solana/web3.js";

const VAULT_PROGRAM = new PublicKey("your-program-id");
const SUB_ACCOUNT  = new PublicKey("agent-sub-account");
const RECIPIENT    = new PublicKey("whitelisted-service");

// Build the execute_payment instruction
const ix = buildExecutePayment({
  vault: VAULT_PDA,
  subAccount: SUB_ACCOUNT,
  recipient: RECIPIENT,
  amount: 5_000_000, // 5 USDC (6 decimals)
});

// Sign with agent's keypair and send
const tx = new Transaction().add(ix);
tx.sign(agentKeypair);
await connection.sendTransaction(tx);

// If rules pass → payment goes through
// If rules fail → transaction rejected on-chain