Crypto wallets

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.

Custody

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.

Keys are never returned

No tool returns a wallet private key. The credential-reveal path explicitly excludes wallet keys.

What the agent can do

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

Networks

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.

What a wallet is for

Two different things, and it is worth keeping them apart:

  1. Paying for capabilities. Provisioning can be funded in USDC — see Paying with USDC.
  2. The agent's own on-chain activity. Anything else your agent needs to do on-chain.

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.