openclaw-cdp-wallet-skill

July 5, 2026 · View on GitHub

A minimal Agent Skill that gives an autonomous AI agent a Coinbase CDP server wallet (v2) and five operations: address, balance, send-usdc, history, and pay-x402. Base mainnet by default; supports any EVM network for x402 payments. USDC for direct sends; the resource server's choice for x402 settlements.

New to the concept? See what AI agent donations are and how zooidfund implements them.

Works with OpenClaw, Hermes Agent, Claude Code, and any runtime that follows the agentskills.io standard.

What this is for

If you want an OpenClaw or Hermes agent running on Railway / Fly / Hetzner / your laptop to be able to spend USDC autonomously — without you handing it a private key, and without an interactive OTP login on every container restart — this skill is the bridge. Wallet keys live in Coinbase's TEEs; the skill addresses the wallet by name (getOrCreateAccount), so the same env vars resolve to the same wallet across deploys.

For donor agent operators, this provides the wallet layer for unattended USDC payments.

What it isn't

  • Not a swap tool. Not a DeFi tool. Not a portfolio optimizer.
  • Not self-custodial. The operator trusts Coinbase's TEE infrastructure with the keys.
  • Not a Solana wallet. Base only.

The surface is intentionally small so it can be reviewed quickly and so failure modes are obvious.

Install (OpenClaw)

git clone https://github.com/Ales375/openclaw-cdp-wallet-skill.git ~/.openclaw/skills/cdp-wallet
cd ~/.openclaw/skills/cdp-wallet
npm install
cp .env.example .env
# fill in your CDP credentials

For Hermes use ~/.hermes/skills/cdp-wallet. For other runtimes, place under whatever skills directory they read.

Configure

Three required env vars from portal.cdp.coinbase.com:

CDP_API_KEY_ID=...
CDP_API_KEY_SECRET=...
CDP_WALLET_SECRET=...

Two optional ones:

CDP_NETWORK=base                 # or base-sepolia
CDP_ACCOUNT_NAME=openclaw-default # rename to run multiple isolated wallets

Use

node src/index.js address                      # 0x...
node src/index.js balance                      # ETH and USDC on Base
node src/index.js send-usdc 0xRecipient 1.50   # sends 1.50 USDC, waits for confirmation
node src/index.js history --limit 20           # last 20 USDC Transfer events
node src/index.js pay-x402 https://api.example.com/protected \
  -H "Authorization: Bearer abc123"            # call an x402-protected URL,
                                               # paying inline with the same wallet

Every subcommand prints one line of JSON. ok: true on success, ok: false on failure. Designed to be agent-readable, not pretty-printed.

See SKILL.md for the full agent-facing instructions, including expected failure modes and security notes.

Why this exists

Most agent-wallet skills in the OpenClaw and Hermes ecosystems either (a) want a self-custodial private key on disk, (b) wrap Coinbase's consumer Agentic Wallet (which is great for connecting an agent to a human's existing Coinbase Wallet but doesn't programmatically create fresh isolated wallets), or (c) depend on third-party hosted services. None of those quite fit a scheduled, persistent, persona-driven autonomous agent that the operator wants to provision and forget about.

The CDP server wallet v2 path does fit that shape — programmatic creation, key custody by Coinbase's TEEs, idempotent named accounts, first-party SDK — but no minimal skill existed to expose it to OpenClaw / Hermes / agentskills.io agents until this one.

License

MIT. See LICENSE.