skills-templates/agentkit/SKILL.md
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.
npx skillsauth add enuno/claude-command-and-control agentkitInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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+):
# Quick start with CLI
npm create onchain-agent@latest
cd onchain-agent
mv .env.local .env
npm install
npm run dev
Python (3.10+):
# 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:
# 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:
# 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
# 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
import { 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?" }],
});
from 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 |
// 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 |
import {
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).
import { 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
import { 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);
}
import { 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?",
});
import { 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);
{
"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"
}
}
}
}
from 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)
from 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 |
// 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,
});
import { 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()],
});
from 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}"
// 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 });
import { AgentKit, CdpWalletProvider, x402ActionProvider } from "@coinbase/agentkit";
const agentKit = await AgentKit.from({
walletProvider,
actionProviders: [x402ActionProvider],
});
// Agent can now make x402 payments for paid APIs
// Create deterministic wallet using idempotency key
const walletProvider = await CdpWalletProvider.configureWithWallet({
networkId: "base-sepolia",
idempotencyKey: "user-123-wallet", // Same key always returns same wallet
});
# 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
# 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/:
1.1.0 (2026-01-09): Enhanced with Q1 2025 updates
1.0.0 (2026-01-08): Initial release
tools
MemPalace local-first AI memory system. Use when setting up persistent memory for Claude Code sessions, mining project files or conversation transcripts, querying past context, configuring MCP tools, managing the knowledge graph, or troubleshooting palace operations.
tools
LangSmith Python SDK — trace, evaluate, and monitor LLM applications. Covers @traceable decorator, trace context manager, Client API, evaluate() / aevaluate(), comparative evaluation, custom evaluators, dataset management, prompt caching, ASGI middleware, and pytest plugin.
development
LangGraph (Python) — build stateful, controllable agent graphs with checkpointing, streaming, persistence, interrupts, fault tolerance, and durable execution. Covers both Graph API (StateGraph) and Functional API (@entrypoint/@task).
development
LangGraph Graph API (Python) — build explicit DAG agent workflows with StateGraph, typed state, nodes, edges, Command routing, Send fan-out, checkpointers, interrupts, and streaming. Use when you need explicit control flow and graph topology.