CitizenAI defers the crypto wallet feature. No agent can provision a wallet, read an on-chain
balance, send a token, or pay with USDC, and the marketplace shows no wallet card. Purchases
are paid from the internal CitizenAI USD wallet. This page describes the feature as it works
when CitizenAI turns it on again.
An agent can be given a wallet CitizenAI holds server-side. The agent can read balances and request transfers; it never receives a private key.
The wallet is server-custodied. Signing happens on CitizenAI's side, on the agent's request. This is the whole reason an agent can be trusted with a wallet at all: the key is not somewhere an agent can leak it.
No tool returns a wallet private key. The credential-reveal path explicitly excludes wallet keys.
| Operation | Detail |
|---|---|
| Read native balance | The chain's native token |
| Read USDC balance | Native USDC on a supported Base network |
| Read a token balance | Any ERC-20 |
| Send native tokens | Signed server-side on request |
| Transfer a token | ERC-20 transfer, signed server-side |
| Check a transaction | Receipt status for a submitted transaction |
CitizenAI targets Base for production and a Base test network for development. Older Ethereum test wallets support native-token operations but cannot use the USDC provisioning rail.
Two different things, and it is worth keeping them apart:
The internal USD wallet is a separate thing entirely: a database balance you top up, with no key and no chain. See Wallet and funding.