Build or update the BlueBubbles external channel plugin for Moltbot (extension package, REST...
npx skills add BAiSEDagent/openclaw-skills --skill "circle-wallet"
Install specific skill from multi-skill repository
# Description
Circle Programmable Wallets. Create and manage custodial wallets, transfer USDC, sign transactions via Circle API. Use when building wallet infrastructure.
# SKILL.md
name: circle-wallet
description: "Circle Programmable Wallets. Create and manage custodial wallets, transfer USDC, sign transactions via Circle API. Use when building wallet infrastructure."
metadata:
openclaw:
emoji: "π΅"
Circle Programmable Wallets
Create and manage custodial wallets via Circle's API. Agents can hold funds, transfer USDC, and sign transactions without managing raw private keys.
Setup
const CIRCLE_API = 'https://api.circle.com/v1/w3s';
const headers = {
'Authorization': `Bearer ${process.env.CIRCLE_API_KEY}`,
'Content-Type': 'application/json',
};
Core Operations
Create Wallet Set
const res = await fetch(`${CIRCLE_API}/developer/walletSets`, {
method: 'POST',
headers,
body: JSON.stringify({ name: 'AgentHQ Wallets' }),
});
const { data: { walletSet } } = await res.json();
Create Wallet
const res = await fetch(`${CIRCLE_API}/developer/wallets`, {
method: 'POST',
headers,
body: JSON.stringify({
walletSetId: walletSet.id,
blockchains: ['BASE'],
count: 1,
accountType: 'SCA', // Smart Contract Account
}),
});
const { data: { wallets } } = await res.json();
const agentWallet = wallets[0]; // { id, address, blockchain }
Get Balance
const res = await fetch(`${CIRCLE_API}/wallets/${walletId}/balances`, { headers });
const { data: { tokenBalances } } = await res.json();
// [{ token: { symbol: 'USDC', ... }, amount: '10.50' }]
Transfer USDC
const res = await fetch(`${CIRCLE_API}/developer/transactions/transfer`, {
method: 'POST',
headers,
body: JSON.stringify({
walletId: sourceWalletId,
tokenId: USDC_TOKEN_ID, // Circle's USDC token identifier
destinationAddress: recipientAddress,
amounts: ['1.00'],
fee: { type: 'level', config: { feeLevel: 'MEDIUM' } },
}),
});
Sign Transaction
const res = await fetch(`${CIRCLE_API}/developer/transactions/contractExecution`, {
method: 'POST',
headers,
body: JSON.stringify({
walletId,
callData: encodedFunctionData,
contractAddress: targetContract,
fee: { type: 'level', config: { feeLevel: 'MEDIUM' } },
}),
});
Wallet Types
| Type | Description | Use Case |
|---|---|---|
| EOA | Externally owned account | Simple transfers |
| SCA | Smart contract account (ERC-4337) | Gas sponsorship, batching |
Circle vs Self-Custodied
| Factor | Circle Wallet | Self-Custodied (EOA) |
|---|---|---|
| Key management | Circle handles | You manage private key |
| Security | Enterprise-grade | Only as good as your storage |
| Vendor lock-in | Yes | No |
| Gas sponsorship | Via SCA | Manual paymaster setup |
| API limits | Rate limited | Unlimited |
| Cost | Free tier available | Gas only |
AgentHQ recommendation: Use self-custodied EOA for x402 payment signing (needs raw key access). Use Circle for treasury/cold storage where API-managed security is preferred.
References
- references/full-reference.md β Complete Circle API reference, webhook events, user-controlled wallets, compliance features
- Docs: https://developers.circle.com/w3s
Cross-References
- agent-wallet-management: Unified wallet operations
- cctp: Cross-chain USDC via Circle
- mcp-integration: Circle MCP server integration
- x402: Payment signing (requires key access β use EOA, not Circle)
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.