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.