CDP Agentkit Toolkit
The CDP Agentkit
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.
Overview
Integration details
Class | Package | Serializable | JS support | Package latest |
---|---|---|---|---|
CdpToolkit | cdp-langchain | ❌ | ❌ |
Tool features
The toolkit provides the following tools:
- get_wallet_details - Get details about the MPC Wallet
- get_balance - Get balance for specific assets
- request_faucet_funds - Request test tokens from faucet
- transfer - Transfer assets between addresses
- trade - Trade assets (Mainnet only)
- deploy_token - Deploy ERC-20 token contracts
- mint_nft - Mint NFTs from existing contracts
- deploy_nft - Deploy new NFT contracts
- register_basename - Register a basename for the wallet
We encourage you to add your own tools, both using CDP and web2 APIs, to create an agent that is tailored to your needs.
Setup
At a high-level, we will:
- Install the langchain package
- Set up your CDP API credentials
- Initialize the CDP wrapper and toolkit
- Pass the tools to your agent with
toolkit.get_tools()
If you want to get automated tracing from runs of individual tools, you can also set your LangSmith API key by uncommenting below:
# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
# os.environ["LANGSMITH_TRACING"] = "true"
Installation
This toolkit lives in the cdp-langchain
package:
%pip install -qU cdp-langchain
Set Environment Variables
To use this toolkit, you must first set the following environment variables to access the CDP APIs to create wallets and interact onchain. You can sign up for an API key for free on the CDP Portal:
import getpass
import os
for env_var in [
"CDP_API_KEY_NAME",
"CDP_API_KEY_PRIVATE_KEY",
]:
if not os.getenv(env_var):
os.environ[env_var] = getpass.getpass(f"Enter your {env_var}: ")
# Optional: Set network (defaults to base-sepolia)
os.environ["NETWORK_ID"] = "base-sepolia" # or "base-mainnet"
Instantiation
Now we can instantiate our toolkit:
from cdp_langchain.agent_toolkits import CdpToolkit
from cdp_langchain.utils import CdpAgentkitWrapper
# Initialize CDP wrapper
cdp = CdpAgentkitWrapper()
# Create toolkit from wrapper
toolkit = CdpToolkit.from_cdp_agentkit_wrapper(cdp)
Tools
View available tools:
tools = toolkit.get_tools()
for tool in tools:
print(tool.name)
Use within an agent
We will need a LLM or chat model:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini")
Initialize the agent with the tools:
from langgraph.prebuilt import create_react_agent
tools = toolkit.get_tools()
agent_executor = create_react_agent(llm, tools)
Example usage:
example_query = "Send 0.005 ETH to john2879.base.eth"
events = agent_executor.stream(
{"messages": [("user", example_query)]},
stream_mode="values",
)
for event in events:
event["messages"][-1].pretty_print()
Expected output:
Transferred 0.005 of eth to john2879.base.eth.
Transaction hash for the transfer: 0x78c7c2878659a0de216d0764fc87eff0d38b47f3315fa02ba493a83d8e782d1e
Transaction link for the transfer: https://sepolia.basescan.org/tx/0x78c7c2878659a0de216d0764fc87eff0d38b47f3315fa02ba493a83d8e782d1
CDP Toolkit Specific Features
Wallet Management
The toolkit maintains an MPC wallet. The wallet data can be exported and imported to persist between sessions:
# Export wallet data
wallet_data = cdp.export_wallet()
# Import wallet data
values = {"cdp_wallet_data": wallet_data}
cdp = CdpAgentkitWrapper(**values)
Network Support
The toolkit supports multiple networks
Gasless Transactions
Some operations support gasless transactions on Base Mainnet:
- USDC transfers
- EURC transfers
- cbBTC transfers
API reference
For detailed documentation of all CDP features and configurations head to the CDP docs.
Related
- Tool conceptual guide
- Tool how-to guides