SkillAgentSearch skills...

Agentek

An extensible TypeScript toolkit that simplifies complex EVM blockchain interactions into composable, intent-based tools. Provides a unified, type-safe interface for both on-chain actions and off-chain data services, enabling developers to programmatically execute any blockchain operation across multiple EVM networks.

Install / Use

/learn @NaniDAO/Agentek
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

agentek

agentek-logo-1

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 | |--------|-------|-------------| | twitter | 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.

License

AGPL-3.0

View on GitHub
GitHub Stars43
CategoryDevelopment
Updated10d ago
Forks9

Languages

TypeScript

Security Score

90/100

Audited on Mar 19, 2026

No findings