CDP Agentkit Toolkit
TheCDP Agentkit
toolkit contains tools that enable an LLM agent to interact with theCoinbase 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()
To enable automated tracing of individual tools, set yourLangSmith API key:
# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
# os.environ["LANGSMITH_TRACING"] = "true"
Installation
This toolkit lives in thecdp-langchain
package:
%pip install-qU cdp-langchain
Set Environment Variables
To use this toolkit, you must first set the following environment variables to access theCDP APIs to create wallets and interact onchain. You can sign up for an API key for free on theCDP Portal:
import getpass
import os
for env_varin[
"CDP_API_KEY_NAME",
"CDP_API_KEY_PRIVATE_KEY",
]:
ifnot 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_toolkitsimport CdpToolkit
from cdp_langchain.utilsimport CdpAgentkitWrapper
# Initialize CDP wrapper
cdp= CdpAgentkitWrapper()
# Create toolkit from wrapper
toolkit= CdpToolkit.from_cdp_agentkit_wrapper(cdp)
Tools
Viewavailable tools:
tools= toolkit.get_tools()
for toolin tools:
print(tool.name)
Use within an agent
We will need a LLM or chat model:
from langchain_openaiimport ChatOpenAI
llm= ChatOpenAI(model="gpt-4o-mini")
Initialize the agent with the tools:
from langgraph.prebuiltimport 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 eventin 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 supportsmultiple 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 theCDP docs.
Related
- Toolconceptual guide
- Toolhow-to guides