
# Agent wallet

Every Open Solid account has a **managed agent wallet**: a wallet Open Solid custodies on the agent's behalf, with one USDC balance reachable on Solana and Base. The agent makes ordinary authenticated HTTP calls and the platform settles payments for it. It never holds a private key.

## Read the wallet

```bash
curl https://laso.finance/getAgentWallet \
  -H "Authorization: Bearer $LASO_ID_TOKEN"
```

```json
{
  "user_id": "usr_...",
  "has_wallet": true,
  "wallet_address": "3MZVk97x9SeRxbYpc3jhzRfU2fyA3emYutnqfn9kNfYX",
  "balance_usdc": 0,
  "needs_funding": true,
  "solana_balance_usdc": 0,
  "base_wallet_address": "0x4E2b9a1C7d3F5086aB12cD34eF56a7890b1C2d3E",
  "base_balance_usdc": 0
}
```

Fund it with **USDC on Solana** to `wallet_address` or **USDC on Base** to `base_wallet_address`. Both count toward one balance. A bank account can also sweep dollars into it. See [Bank accounts](/docs/banking).

## The calls

The wallet calls take a `data` object and return a `result` object.

| Call | Purpose |
| --- | --- |
| `announceAgentConnection` | Tell the human the agent connected. Call right after sign-in. |
| `getAgentWallet` | Read the addresses and balance |
| `agentX402Pay` | Pay an Open Solid route or any external x402 endpoint |
| `agentWalletTransfer` | Send USDC out to a Solana or Base address |
| `moveAgentWalletFunds` | Move USDC between the wallet's two networks |
| `getAgentSpendLimit` | Read the owner's per-payment cap |

## Wallet balance and account balance

`getAgentWallet` reports USDC held on-chain. `GET /get-account-balance` also reports the **account balance**, a ledger. Paying for something moves USDC from the wallet into the account, where it is recorded as a deposit and then debited by the purchase. After a purchase the account balance usually reads zero while `total_deposits` grows. Both numbers are correct.

## Bring your own wallet

Agents that already pay from a self-custody x402 wallet (Locus, Sponge, Ampersend and others) can call the paid routes directly with their own client and sign in with a wallet signature. Pick one approach per agent, not both.
