Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Coinbase AgentKit - Toolkit for enabling AI agents with crypto wallets and onchain capabilities. Use for building autonomous agents that can execute transfers, swaps, DeFi operations, NFT minting, smart contract deployment, and gasless transactions via Smart Wallets.
.claude/skills/majiayu000-agentkit/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 144% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 161% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 237% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 161% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 233% | 0% |
AgentKit is Coinbase Developer Platform's toolkit that enables AI agents to interact with blockchain networks through secure wallet management and comprehensive onchain capabilities. Built on the Coinbase Developer Platform (CDP) SDK, it provides everything needed to create autonomous agents that can perform sophisticated blockchain operations.
Core Mission: "Every AI agent deserves a wallet."
Repository Stats: 1,000+ GitHub stars | 590 forks | 90+ contributors | 578 dependent projects
This skill should be triggered when:
TypeScript (Node.js 22+):
bash# Quick start with CLI npm create onchain-agent@latest cd onchain-agent mv .env.local .env npm install npm run dev
Python (3.10+):
bash# Quick start with CLI pipx run create-onchain-agent cd onchain-agent mv .env.local .env poetry install poetry run python chatbot.py
Framework-Specific Packages:
bash# Core package npm install @coinbase/agentkit # LangChain integration npm install @coinbase/agentkit @coinbase/agentkit-langchain # Vercel AI SDK integration npm install @coinbase/agentkit-vercel-ai-sdk @coinbase/agentkit ai @ai-sdk/openai # MCP integration npm install @coinbase/agentkit @coinbase/agentkit-model-context-protocol # Nightly builds (bleeding edge) npm install @coinbase/agentkit@nightly
Python Packages:
bash# Core package (v0.7.4+) pip install coinbase-agentkit # LangChain integration pip install coinbase-agentkit-langchain # OpenAI Agents SDK integration pip install coinbase-agentkit-openai-agents-sdk # Pydantic AI integration pip install coinbase-agentkit-pydantic-ai # Strands Agents integration pip install coinbase-agentkit-strands # Nightly builds pip install --pre coinbase-agentkit
bash# Required CDP_API_KEY_NAME=your_api_key_name CDP_API_KEY_PRIVATE_KEY=your_private_key OPENAI_API_KEY=your_openai_key # Optional NETWORK_ID=base-sepolia # or base-mainnet, ethereum-mainnet, solana-devnet
typescriptimport { AgentKit, CdpWalletProvider } from "@coinbase/agentkit"; import { getLangChainTools } from "@coinbase/agentkit-langchain"; import { ChatOpenAI } from "@langchain/openai"; import { createReactAgent } from "@langchain/langgraph/prebuilt"; // Initialize wallet provider const walletProvider = await CdpWalletProvider.configureWithWallet({ networkId: "base-sepolia", }); // Create AgentKit instance const agentKit = await AgentKit.from({ walletProvider, actionProviders: [ cdpApiActionProvider, erc20ActionProvider, walletActionProvider, ], }); // Get tools for LangChain const tools = await getLangChainTools(agentKit); // Create agent const llm = new ChatOpenAI({ model: "gpt-4o" }); const agent = createReactAgent({ llm, tools }); // Execute const result = await agent.invoke({ messages: [{ role: "user", content: "What's my wallet address?" }], });
pythonfrom coinbase_agentkit import AgentKit, CdpWalletProvider from coinbase_agentkit_langchain import get_langchain_tools from langchain_openai import ChatOpenAI from langgraph.prebuilt import create_react_agent # Initialize wallet provider wallet_provider = CdpWalletProvider.configure_with_wallet( network_id="base-sepolia" ) # Create AgentKit instance agent_kit = AgentKit.from_config(wallet_provider=wallet_provider) # Get tools for LangChain tools = get_langchain_tools(agent_kit) # Create agent llm = ChatOpenAI(model="gpt-4o") agent = create_react_agent(llm, tools) # Execute result = agent.invoke({ "messages": [{"role": "user", "content": "What's my wallet balance?"}] })
| Package | Purpose | |---------|---------| | @coinbase/agentkit | Core SDK with wallet providers and action providers (50+ actions) | | @coinbase/agentkit-langchain | LangChain framework integration | | @coinbase/agentkit-vercel-ai-sdk | Vercel AI SDK integration | | @coinbase/agentkit-model-context-protocol | MCP server integration | | coinbase-agentkit | Python core SDK (v0.7.4, 30+ actions) | | coinbase-agentkit-langchain | Python LangChain integration | | coinbase-agentkit-openai-agents-sdk | OpenAI Agents SDK integration | | coinbase-agentkit-pydantic-ai | Pydantic AI integration | | coinbase-agentkit-strands | Strands Agents integration |
| Provider | Description | |----------|-------------| | CdpEvmWalletProvider | CDP V2 API Server Wallet (standard) | | CdpSmartWalletProvider | CDP Smart Wallets (ERC-4337, gasless transactions) | | SmartWalletProvider | CDP Smart Wallets (alternative interface) | | ViemWalletProvider | Viem library-based wallet | | PrivyWalletProvider | Privy embedded/server wallets | | ZeroDevWalletProvider | ZeroDev smart accounts (chain abstraction) | | EthAccountWalletProvider | Local private key for any EVM chain |
| Provider | Description | |----------|-------------| | CdpV2SolanaWalletProvider | CDP V2 API for Solana | | CdpSolanaWalletProvider | CDP Solana wallet (mainnet, devnet, testnet) | | SolanaKeypairWalletProvider | Direct keypair wallet | | PrivyWalletProvider | Privy Solana mode |
typescript// CDP EVM Wallet Provider const walletProvider = await CdpEvmWalletProvider.configureWithWallet({ networkId: "base-sepolia", // Optional: persist wallet cdpWalletData: existingWalletData, }); // Smart Wallet Provider (gasless transactions) const smartWalletProvider = await CdpSmartWalletProvider.configureWithWallet({ networkId: "base-sepolia", signer: cdpWalletProvider, // Enable gasless via paymaster paymasterUrl: "https://paymaster.base.org", }); // Solana Wallet Provider const solanaProvider = await CdpSolanaWalletProvider.configureWithWallet({ networkId: "solana-devnet", }); // ZeroDev Wallet Provider (chain abstraction) const zeroDevProvider = await ZeroDevWalletProvider.configureWithWallet({ projectId: "your-zerodev-project-id", networkId: "base-sepolia", });
AgentKit includes 50+ TypeScript and 30+ Python action providers:
| Action Provider | Actions | |-----------------|---------| | walletActionProvider | get_wallet_details, get_balance, native_transfer | | cdpApiActionProvider | request_faucet_funds, trade, register_basename | | erc20ActionProvider | transfer, get_balance, approve, check_allowance | | erc721ActionProvider | mint_nft, transfer_nft, get_nft_balance |
| Action Provider | Actions | |-----------------|---------| | compoundActionProvider | supply, withdraw, borrow, repay | | aaveActionProvider | supply, withdraw, borrow, repay | | morphoActionProvider | morpho_deposit, morpho_withdraw | | moonwellActionProvider | supply, withdraw, borrow, repay | | superfluidActionProvider | Token streaming operations | | yelayActionProvider | Vault operations |
| Action Provider | Actions | |-----------------|---------| | jupiterActionProvider | Solana token swaps | | zeroXActionProvider | 0x swap integration | | sushiActionProvider | Sushi swap integration | | acrossActionProvider | Cross-chain bridging |
| Action Provider | Actions | |-----------------|---------| | zoraActionProvider | Zora NFT platform, coin creation | | openseaActionProvider | OpenSea marketplace integration | | wethActionProvider | wrap_eth, unwrap_eth | | clankerActionProvider | Clanker token creation | | flaunchActionProvider | Token launch functionality | | wowActionProvider | WOW memecoin trading |
| Action Provider | Actions | |-----------------|---------| | farcasterActionProvider | Post casts, read feed | | twitterActionProvider | Tweet, read timeline | | basenameActionProvider | Register .base.eth names | | sshActionProvider | SSH operations | | hyperbolicActionProvider | AI compute generation |
| Action Provider | Actions | |-----------------|---------| | pythActionProvider | Price oracle data feeds | | defillamaActionProvider | DeFi data aggregation | | messariActionProvider | Crypto research data | | zerionActionProvider | Portfolio tracking |
| Action Provider | Actions | |-----------------|---------| | x402ActionProvider | x402 payment integration for paid APIs | | onrampActionProvider | Fiat-to-crypto conversion | | nillionActionProvider | Encrypted data (SecretVault) | | ensoActionProvider | DeFi aggregation |
typescriptimport { AgentKit, CdpWalletProvider, cdpApiActionProvider, erc20ActionProvider, compoundActionProvider, walletActionProvider, x402ActionProvider, superfluidActionProvider, } from "@coinbase/agentkit"; const agentKit = await AgentKit.from({ walletProvider, actionProviders: [ cdpApiActionProvider, erc20ActionProvider, compoundActionProvider({ networkId: "base-sepolia" }), walletActionProvider, x402ActionProvider, superfluidActionProvider, ], });
Smart Wallets are ERC-4337 compliant smart contract wallets providing:
Note: Smart Wallets are currently only supported on Base networks (base-sepolia, base-mainnet).
typescriptimport { CdpSmartWalletProvider } from "@coinbase/agentkit"; // Configure Smart Wallet with gasless transactions const smartWalletProvider = await CdpSmartWalletProvider.configureWithWallet({ networkId: "base-mainnet", // Enable gasless via paymaster paymasterUrl: "https://your-paymaster.example.com", }); // Create AgentKit with smart wallet const agentKit = await AgentKit.from({ walletProvider: smartWalletProvider, actionProviders: [walletActionProvider, erc20ActionProvider], }); // Agent can now transact without holding ETH for gas
typescriptimport { AgentKit, CdpWalletProvider } from "@coinbase/agentkit"; import { getLangChainTools } from "@coinbase/agentkit-langchain"; import { ChatOpenAI } from "@langchain/openai"; import { createReactAgent } from "@langchain/langgraph/prebuilt"; import { MemorySaver } from "@langchain/langgraph"; // Setup AgentKit const walletProvider = await CdpWalletProvider.configureWithWallet({ networkId: "base-sepolia", }); const agentKit = await AgentKit.from({ walletProvider }); // Create LangChain tools const tools = await getLangChainTools(agentKit); // Create agent with memory const llm = new ChatOpenAI({ model: "gpt-4o" }); const memory = new MemorySaver(); const agent = createReactAgent({ llm, tools, checkpointSaver: memory, }); // Stream responses const stream = await agent.stream( { messages: [{ role: "user", content: "Transfer 0.01 ETH to 0x..." }] }, { configurable: { thread_id: "session-1" } } ); for await (const chunk of stream) { console.log(chunk); }
typescriptimport { AgentKit, CdpWalletProvider } from "@coinbase/agentkit"; import { getVercelAITools } from "@coinbase/agentkit-vercel-ai-sdk"; import { openai } from "@ai-sdk/openai"; import { generateText } from "ai"; // Setup AgentKit const walletProvider = await CdpWalletProvider.configureWithWallet({ networkId: "base-sepolia", }); const agentKit = await AgentKit.from({ walletProvider }); // Get Vercel AI tools const tools = getVercelAITools(agentKit); // Generate response const { text } = await generateText({ model: openai("gpt-4o"), tools, maxSteps: 10, prompt: "What is my wallet balance?", });
typescriptimport { AgentKit, CdpWalletProvider } from "@coinbase/agentkit"; import { getMcpTools } from "@coinbase/agentkit-model-context-protocol"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; // Setup AgentKit const walletProvider = await CdpWalletProvider.configureWithWallet({ networkId: "base-sepolia", }); const agentKit = await AgentKit.from({ walletProvider }); // Create MCP server const server = new McpServer({ name: "agentkit-mcp", version: "1.0.0" }); // Register AgentKit tools const tools = getMcpTools(agentKit); tools.forEach((tool) => server.tool(tool.name, tool.description, tool.schema, tool.handler)); // Start server const transport = new StdioServerTransport(); await server.connect(transport);
json{ "mcpServers": { "agentkit": { "command": "node", "args": ["/path/to/agentkit-mcp-server.js"], "env": { "CDP_API_KEY_NAME": "your_key_name", "CDP_API_KEY_PRIVATE_KEY": "your_private_key", "NETWORK_ID": "base-sepolia" } } } }
pythonfrom agents import Agent, Runner from coinbase_agentkit import AgentKit, CdpWalletProvider from coinbase_agentkit_openai_agents_sdk import get_openai_tools # Setup AgentKit wallet_provider = CdpWalletProvider.configure_with_wallet( network_id="base-sepolia" ) agent_kit = AgentKit.from_config(wallet_provider=wallet_provider) # Get OpenAI tools tools = get_openai_tools(agent_kit) # Create agent agent = Agent( name="Crypto Agent", instructions="You are an AI agent with a crypto wallet. Help users with onchain operations.", tools=tools, ) # Run agent result = await Runner.run(agent, "What's my wallet address?") print(result.final_output)
pythonfrom coinbase_agentkit import AgentKit, CdpWalletProvider from coinbase_agentkit_pydantic_ai import get_pydantic_tools # Setup AgentKit wallet_provider = CdpWalletProvider.configure_with_wallet( network_id="base-sepolia" ) agent_kit = AgentKit.from_config(wallet_provider=wallet_provider) # Get Pydantic AI tools tools = get_pydantic_tools(agent_kit)
| Network | ID | Status | |---------|----|--------| | Base Mainnet | base-mainnet | Production | | Base Sepolia | base-sepolia | Testnet | | Ethereum Mainnet | ethereum-mainnet | Production | | Ethereum Sepolia | ethereum-sepolia | Testnet | | Arbitrum | arbitrum-mainnet | Production | | Optimism | optimism-mainnet | Production | | Polygon | polygon-mainnet | Production |
| Network | ID | Status | |---------|----|--------| | Solana Mainnet | solana-mainnet | Production | | Solana Devnet | solana-devnet | Testnet | | Solana Testnet | solana-testnet | Testnet |
typescript// Export wallet data for persistence const walletData = await walletProvider.exportWallet(); // Store walletData securely (encrypted in database, etc.) // Restore wallet from data const restoredProvider = await CdpWalletProvider.configureWithWallet({ networkId: "base-sepolia", cdpWalletData: walletData, });
typescriptimport { ActionProvider, CreateAction, ActionMetadata } from "@coinbase/agentkit"; import { z } from "zod"; class MyActionProvider extends ActionProvider { @CreateAction({ name: "my_custom_action", description: "Does something custom", schema: z.object({ param: z.string().describe("A parameter"), }), }) async myCustomAction(params: { param: string }): Promise<string> { // Implementation return `Processed: ${params.param}`; } } // Register custom provider const agentKit = await AgentKit.from({ walletProvider, actionProviders: [new MyActionProvider()], });
pythonfrom coinbase_agentkit import ActionProvider, create_action from pydantic import BaseModel class MyParams(BaseModel): param: str class MyActionProvider(ActionProvider): @create_action( name="my_custom_action", description="Does something custom", schema=MyParams, ) async def my_custom_action(self, params: MyParams) -> str: return f"Processed: {params.param}"
typescript// EVM wallet for Base const evmProvider = await CdpWalletProvider.configureWithWallet({ networkId: "base-sepolia", }); // Solana wallet const solanaProvider = await CdpV2SolanaWalletProvider.configureWithWallet({ networkId: "solana-devnet", }); // Create agents for each chain const evmAgentKit = await AgentKit.from({ walletProvider: evmProvider }); const solanaAgentKit = await AgentKit.from({ walletProvider: solanaProvider });
typescriptimport { AgentKit, CdpWalletProvider, x402ActionProvider } from "@coinbase/agentkit"; const agentKit = await AgentKit.from({ walletProvider, actionProviders: [x402ActionProvider], }); // Agent can now make x402 payments for paid APIs
typescript// Create deterministic wallet using idempotency key const walletProvider = await CdpWalletProvider.configureWithWallet({ networkId: "base-sepolia", idempotencyKey: "user-123-wallet", // Same key always returns same wallet });
bash# Install globally npm install -g @coinbase/agentkit # Generate components agentkit generate wallet-provider # Custom wallet provider agentkit generate action-provider # Custom action provider agentkit generate prepare # Framework-agnostic setup agentkit generate create-agent # Framework-specific agent
bash# Create new project pipx run create-onchain-agent # With beginner defaults pipx run create-onchain-agent --beginner
Important Disclaimer: "Acts proposed or performed by an agent through AgentKit software are NOT acts of Coinbase." Use at your own risk. The software is novel and experimental, provided on an AS-IS basis.
Key features shipped in Q1 2025:
USDC held in agent wallets is eligible for 4.1% rewards when using CDP wallets.
This skill includes comprehensive documentation in references/:
Other measured skills in the registry, with their headline benchmark lift.