← ClaudeAtlas

ekx-coinbase-cdplisted

Coinbase Developer Platform and OnchainKit — CDP server wallets for agent-controlled keys, AgentKit with LangChain for onchain AI agents, OnchainKit React components (Wallet, Swap, Checkout, Identity), and Base App / Farcaster miniapp integration. Use when an agent rather than a person must hold a key, or when building with OnchainKit components.
Ekinoxis-evm/claude-skills · ★ 0 · AI & Automation · score 60
Install: claude install-skill Ekinoxis-evm/claude-skills
# Coinbase CDP + OnchainKit Two distinct things from the same vendor: - **CDP Server Wallets** — keys held by our backend, so an *agent* can transact. - **OnchainKit** — React components for Base dApps. Portal: https://portal.cdp.coinbase.com · Docs: https://docs.cdp.coinbase.com --- ## When CDP instead of Privy | Need | Use | |---|---| | A *person* logs in and gets a wallet | **Privy** ([skill](../ekx-privy/SKILL.md)) | | An *agent/backend* signs autonomously | **CDP server wallet** | | Base-native UI components | **OnchainKit** (works alongside either) | An agent app needs CDP when its LangGraph agent books and moves USDC without a human clicking. That is the only justification for a server-held key — if a human is in the loop, use Privy. --- ## Environment ```bash CDP_API_KEY_ID= # SECRET CDP_API_KEY_SECRET= # SECRET NEXT_PUBLIC_CDP_PROJECT_ID= # public AGENT_WALLET_ID= # SECRET — the persisted wallet id ``` --- ## Server wallets ```ts import { CdpClient } from "@coinbase/cdp-sdk"; const cdp = new CdpClient({ apiKeyId: process.env.CDP_API_KEY_ID!, apiKeySecret: process.env.CDP_API_KEY_SECRET!, }); const account = await cdp.evm.getOrCreateAccount({ name: "rental-agent" }); const { transactionHash } = await cdp.evm.sendTransaction({ address: account.address, network: "base-sepolia", transaction: { to: USDC, data: encodedTransfer, value: 0n }, }); ``` **Persist the wallet id.** A server wallet that is r