CDP Agentkit Extension - Langchain Toolkit
CDP integration with Langchain to enable agentic workflows using the core primitives defined in cdp-agentkit-core
.
This toolkit contains tools that enable an LLM agent to interact with the Coinbase Developer Platform. The toolkit provides a wrapper around the CDP SDK, allowing agents to perform onchain operations like transfers, trades, and smart contract interactions.
Setup
Prerequisites
Installation
npm install @coinbase/cdp-langchain
Environment Setup
Set the following environment variables:
export CDP_API_KEY_NAME=<your-api-key-name>
export CDP_API_KEY_PRIVATE_KEY=$'<your-private-key>'
export OPENAI_API_KEY=<your-openai-api-key>
export NETWORK_ID=base-sepolia
Usage
Basic Setup
import { CdpToolkit } from "@coinbase/cdp-langchain";
import { CdpAgentkit } from "@coinbase/cdp-agentkit-core";
const agentkit = await CdpAgentkit.configureWithWallet();
const toolkit = new CdpToolkit(agentkit);
const tools = toolkit.getTools();
The toolkit provides the following tools:
- address_reputation - Retrieve the address's reputation on a given network
- deploy_contract - Deploy an arbitrary contract using the Solidity compiler
- deploy_nft - Deploy new NFT contracts
- deploy_token - Deploy ERC-20 token contracts
- get_balance - Get balance for specific assets
- get_balance_nft - Get balance for specific NFTs (ERC-721)
- get_wallet_details - Get details about the MPC Wallet
- mint_nft - Mint NFTs from existing contracts
- morpho_deposit - Deposit into a morpho vault
- morpho_withdraw - Withdraw from a morpho vault
- pyth_fetch_price - Fetch the price of a given price feed from Pyth Network
- pyth_fetch_price_feed_id - Fetch the price feed ID for a given token symbol from Pyth Network
- register_basename - Register a basename for the wallet
- request_faucet_funds - Request test tokens from faucet
- trade - Trade assets (Mainnet only)
- transfer - Transfer assets between addresses
- transfer_nft - Transfer an NFT (ERC-721)
- wow_buy_token - Buy Zora Wow ERC20 memecoin with ETH
- wow_create_token - Deploy a token using Zora's Wow Launcher (Bonding Curve)
- wow_sell_token - Sell Zora Wow ERC20 memecoin for ETH
- wrap_eth - Wrap ETH to WETH
Using with an Agent
Additional Installations
npm install @langchain/langgraph @langchain/openai
import { ChatOpenAI } from "@langchain/openai";
import { HumanMessage } from "@langchain/core/messages";
import { createReactAgent } from "@langchain/langgraph/prebuilt";
const model = new ChatOpenAI({
model: "gpt-4o-mini",
});
const agent = createReactAgent({
llm: model,
tools,
});
const result = await agent.invoke({
messages: [new HumanMessage("Send 0.005 ETH to john2879.base.eth")],
});
console.log(result.messages[result.messages.length - 1].content);
CDP Toolkit Specific Features
Wallet Management
The toolkit maintains an MPC wallet that persists between sessions:
const walletData = await agentkit.exportWallet();
const importedAgentkit = await CdpAgentkit.configureWithWallet({ cdpWalletData: walletData });
Network Support
The toolkit supports multiple networks.
Gasless Transactions
The following operations support gasless transactions on Base Mainnet:
- USDC transfers
- EURC transfers
- cbBTC transfers
Examples
Check out cdp-langchain/examples for inspiration and help getting started!
- Chatbot Typescript: Simple example of a Node.js Chatbot that can perform complex onchain interactions, using OpenAI.
Contributing
See CONTRIBUTING.md for detailed setup instructions and contribution guidelines.