agentek-eth
A MCP server offering tools for cryptocurrency research and Ethereum-based automation.
README Documentation
agentek
An extensible TypeScript toolkit for EVM blockchain interactions. 165 composable tools covering on-chain actions, DeFi protocols, market data, and off-chain services — designed for AI agents, MCP clients, and developers.
Quick Start
CLI (fastest way to try it):
npx @agentek/cli list # browse all 165 tools
npx @agentek/cli info getBalance # inspect a specific tool
npx @agentek/cli exec getBalance '{"chainId":1,"address":"vitalik.eth"}'
MCP Server (for Claude Desktop, Cursor, etc.):
pnpx @agentek/mcp-server
TypeScript SDK:
pnpm add @agentek/tools
Packages
| Package | Description | Version |
|---|---|---|
@agentek/tools | Core toolkit — all 165 tools | 0.1.26 |
@agentek/ai-sdk | Vercel AI SDK integration | 0.1.26 |
@agentek/mcp-server | Model Context Protocol server | 0.1.26 |
@agentek/cli | Command-line interface | 0.0.2 |
Requirements
- Node.js >= 18.17.0
- pnpm (for development)
Installation
# Core tools
pnpm add @agentek/tools viem zod
# Vercel AI SDK integration
pnpm add @agentek/ai-sdk @agentek/tools viem zod
Usage
Using with Vercel AI SDK
import { allTools } from '@agentek/tools';
import { AgentekToolkit } from '@agentek/ai-sdk';
import { http } from 'viem';
import { mainnet } from 'viem/chains';
const tools = await allTools({
perplexityApiKey: process.env.PERPLEXITY_API_KEY,
zeroxApiKey: process.env.ZEROX_API_KEY,
});
const toolkit = new AgentekToolkit({
accountOrAddress: '0x...',
chains: [mainnet],
transports: [http()],
tools,
});
// Pass to Vercel AI SDK
const aiTools = toolkit.getTools();
Using the toolkit directly
import { createAgentekClient, allTools } from '@agentek/tools';
import { http } from 'viem';
import { mainnet } from 'viem/chains';
const tools = await allTools({});
const client = createAgentekClient({
accountOrAddress: '0x...',
chains: [mainnet],
transports: [http()],
tools,
});
const result = await client.execute('getBalance', {
address: '0x...',
chainId: 1,
});
Using the MCP Server
Add to your claude_desktop_config.json:
{
"mcpServers": {
"agentek": {
"command": "pnpx",
"args": ["@agentek/mcp-server"],
"env": {
"ACCOUNT": "YOUR_ETHEREUM_ADDRESS",
"PERPLEXITY_API_KEY": "...",
"TALLY_API_KEY": "..."
}
}
}
}
Use ACCOUNT for read-only access. Add PRIVATE_KEY only if you need to execute transactions.
See the MCP Server README for full configuration details.
Using the CLI
# List all available tools
npx @agentek/cli list
# Search for tools by keyword
npx @agentek/cli search "swap"
# Get detailed info about a tool
npx @agentek/cli info intentApprove
# Execute a tool
npx @agentek/cli exec getCryptoPrice '{"coinId":"ethereum"}'
See the CLI Guide for complete documentation.
Composing a custom tool set
You don't have to use all 165 tools. Import only what you need:
import { rpcTools, erc20Tools, defillamaTools } from '@agentek/tools';
const tools = [
...rpcTools(),
...erc20Tools(),
...defillamaTools(),
];
Tools (165 total)
Blockchain Core
| Module | Tools | Description |
|---|---|---|
| rpc | 11 | getBalance, getBlock, getBlockNumber, getGasPrice, getTransaction, getTransactionReceipt, getCode, getTransactionCount, estimateGas, getFeeHistory, intentSendTransaction |
| erc20 | 8 | getBalanceOf, getAllowance, getTotalSupply, getDecimals, getName, getSymbol, getTokenMetadata, intentApprove |
| transfer | 2 | intentTransfer, intentTransferFrom |
| erc721 | 1 | getNFTMetadata |
| erc6909 | 3 | Token balance, metadata, and transfer intents |
| ens | 2 | resolveENS, lookupENS |
| wns | 19 | resolveWNS, isAvailableWNS, intentRegisterWNS, and 16 more naming tools |
DeFi
| Module | Tools | Description |
|---|---|---|
| aave | 6 | Lending/borrowing: getAaveUserData, getAaveReserveData, deposit, withdraw, borrow, repay intents |
| uniV3 | 9 | Liquidity: getUniV3Pool, getUserPositions, getPoolFeeData, mint/increase/decrease/collect/transfer intents |
| swap | 1 | intent0xSwap — token swaps via 0x aggregator |
| weth | 2 | depositWETH, withdrawWETH |
| zamm | 5 | getPool, getSwaps, getAccountPortfolio, and swap/liquidity tools |
| zrouter | 2 | getQuote, swap — cross-DEX routing |
| x402 | 3 | x402Fetch, getX402PaymentInfo, x402DiscoverResources — HTTP 402 payments |
| defillama | 5 | getYieldTool, compareYieldTool, getYieldHistoryTool, compareYieldHistoryTool, getTokenChart |
Cross-Chain
| Module | Tools | Description |
|---|---|---|
| across | 2 | getAcrossFeeQuote, intentDepositAcross |
| slowTransfer | 12 | Slow-release transfers with guardian controls |
Market Data
| Module | Tools | Description |
|---|---|---|
| dexscreener | 1 | getLatestTokens — trending token discovery |
| cryptoprices | 1 | getCryptoPrice — current prices via CoinGecko |
| coindesk | 1 | getLatestCoindeskNewsTool — crypto news |
| coinmarketcal | 1 | getMarketEvents — upcoming market events |
| feargreed | 1 | getFearAndGreedIndex |
| gasestimator | 1 | estimateGasCost — gas cost in USD |
Block Explorer (Blockscout)
33 tools covering addresses, transactions, blocks, tokens, smart contracts, and search across supported networks.
Governance
| Module | Tools | Description |
|---|---|---|
| tally | 5 | tallyProposals, tallyChains, tallyUserDaos, intentGovernorVote, intentGovernorVoteWithReason |
| nani | 5 | getNaniProposals, intentStakeNani, intentUnstakeNani, intentProposeNani, intentVoteNaniProposal |
| coinchan | 8 | Coin creation, vesting, airdrops |
Social & Web
| Module | Tools | Description |
|---|---|---|
| 5 | searchRecentTweets, getTweetById, getXUserByUsername, getXUserTweets, getHomeTimeline | |
| web | 1 | scrapeWebContent |
| search | 1 | askPerplexitySearch |
| imagegen | 1 | generateAndPinImage — AI image generation + IPFS pinning |
Security & Utility
| Module | Tools | Description |
|---|---|---|
| security | 2 | checkMaliciousAddress, checkMaliciousWebsite |
| btc-rpc | 4 | getBtcAddressInfo, getBtcTxDetails, getBtcBlockTxids, getLatestBtcBlock |
| think | 1 | Reasoning step for multi-step agent workflows |
Supported Networks
- Ethereum Mainnet
- Optimism
- Arbitrum
- Polygon
- Base
Environment Variables
Most tools work without any API keys. Optional keys unlock additional features:
| Variable | Required for |
|---|---|
PRIVATE_KEY | Executing transactions (intent tools) |
ACCOUNT | Read-only address context (alternative to PRIVATE_KEY) |
PERPLEXITY_API_KEY | AI-powered search |
ZEROX_API_KEY | Token swaps via 0x |
TALLY_API_KEY | Governance data |
COINDESK_API_KEY | Crypto news |
COINMARKETCAL_API_KEY | Market events calendar |
FIREWORKS_API_KEY | AI image generation |
PINATA_JWT | IPFS pinning (paired with FIREWORKS_API_KEY) |
X_BEARER_TOKEN | Twitter/X read-only access |
X_API_KEY + X_API_KEY_SECRET | Twitter/X OAuth (full access) |
Copy the example to get started:
cp .env.example .env
Development
git clone https://github.com/NaniDAO/agentek.git
cd agentek
pnpm i
pnpm run build
pnpm run test
Interested in contributing? Check out our CONTRIBUTING.md guide.