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
curl https://laso.finance/getAgentWallet \
-H "Authorization: Bearer $LASO_ID_TOKEN"
{
"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.
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.