use-developer-controlled-wallets

Create and manage Circle developer-controlled wallets for transfers, signing, and contract execution.

Updated Mar 18, 2026
One-click install
npx skills add https://github.com/Surojit012/CMO --skill use-developer-controlled-wallets-surojit012
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: use-developer-controlled-wallets
Source: https://github.com/Surojit012/CMO/tree/main/.agents/skills/use-developer-controlled-wallets
Command: npx skills add https://github.com/Surojit012/CMO --skill use-developer-controlled-wallets-surojit012

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires @circle-fin/developer-controlled-wallets, and includes references (resource) components.

What problem does it solve? Building applications that custody crypto wallets on behalf of end users requires handling key management, transaction lifecycle tracking, gas fees, and multi-chain support. This Skill guides an AI assistant through the Circle Developer-Controlled Wallets SDK so developers can create wallets, move tokens, sign messages, and execute smart contracts without writing boilerplate from scratch. ## Core Features & Use Cases - Wallet Creation & Management: Create wallet sets and EOA or SCA wallets across EVM chains, Solana, Aptos, and NEAR, plus derive wallets to new blockchains and update metadata. - Transfers & Balances: Check token balances, estimate fees, create outbound transfers, and accelerate or cancel pending transactions with full transaction state tracking. - Signing & Contract Execution: Sign EIP-191 messages, EIP-712 typed data, and raw transactions, and execute smart contract functions via ABI signatures or raw calldata. - Use Case: A developer building a fintech app asks the assistant to create two testnet wallets on Polygon Amoy, fund one from a faucet, transfer USDC between them, and poll the transaction until it reaches a terminal state. ## Quick Start Ask the assistant to create a developer-controlled wallet set and two testnet wallets using the Circle SDK, then transfer tokens between them.

Frequently Asked Questions about use-developer-controlled-wallets

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a developer-controlled wallet with the Circle SDK?

Call createWalletSet to create a wallet set, then call createWallets with the wallet set ID, an account type (EOA or SCA), target blockchains, and a count. The SDK returns wallet objects containing IDs and addresses for subsequent operations.

How do I transfer tokens between Circle developer-controlled wallets?

First call getWalletTokenBalance to find the token address, then call createTransaction with the source wallet ID, token address, destination address, amount, and a fee level. Poll getTransaction or use webhooks until the transaction reaches a terminal state like COMPLETE or FAILED.

What is the difference between EOA and SCA wallets in Circle?

EOA wallets are externally owned accounts with no creation fees, higher outbound TPS, and support for all chains including Solana, Aptos, and NEAR, but require native tokens for gas. SCA wallets are ERC-4337 smart contract accounts supporting gas sponsorship and batching, but are EVM-only.

Does the Circle wallets SDK support signing EIP-712 typed data?

Yes, the signTypedData method signs EIP-712 structured data on EVM-compatible chains, useful for permit approvals and off-chain order signing. The SDK also supports EIP-191 message signing, raw transaction signing, and NEAR delegate actions.

Why is my Circle transaction stuck and how do I fix it?

A transaction enters the STUCK state when its fee parameters fall below the network's required fee. Use accelerateTransaction to resubmit with higher gas, or cancelTransaction to attempt cancellation, both of which only work while the transaction is still pending.

Can I register the entity secret automatically on mainnet?

No, developers must generate, register, and securely store the entity secret and recovery file themselves, especially on mainnet. The secret is a 32-byte key registered once via registerEntitySecretCiphertext, and the SDK generates fresh ciphertext per request to prevent replay attacks.