npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

evm-agent-kit

v0.0.1

Published

Connect AI Agents to EVM protocols

Downloads

10

Readme

EVM Agent Kit

EVM Agent Kit

An open-source toolkit for connecting AI agents to EVM protocols. Now, any agent, using any model can autonomously perform various EVM actions:

  • Check ERC20 token balances
  • Transfer ERC20 tokens
  • Launch tokens on Four.meme
  • Get token pricing data
  • Fetch trending tokens
  • Monitor market movements
  • Access DeFi protocols
  • And more...

Anyone - whether an SF-based AI researcher or a crypto-native builder - can bring their AI agents trained with any model and seamlessly integrate with EVM-compatible blockchains.

🔧 Core Blockchain Features

  • Token Operations

    • Check ERC20 token balances
    • Transfer ERC20 tokens
    • Launch new tokens on Four.meme (BSC)
    • Bridge tokens across chains
  • Market Data Integration

    • CoinGecko Pro API integration
    • Real-time token price data
    • Trending tokens and pools
    • Top gainers analysis
    • Token information lookup
  • DeFi Data Access

    • Protocol TVL tracking with DeFiLlama
    • Price feeds and aggregation
    • Token trading data
  • Social Data

    • Elfa AI social media insights
    • Trending tokens by social activity
    • Smart mentions tracking
    • Social account analysis

🤖 AI Integration Features

  • LangChain Integration

    • Ready-to-use LangChain tools for blockchain operations
    • DynamicStructuredTool-based implementation
    • Zod schema validation
    • Comprehensive error handling
  • Vercel AI SDK Integration

    • Vercel AI SDK for AI agent integration
    • Framework agnostic support
    • Quick and easy toolkit setup
  • MCP Integration

    • Support for the Model Context Protocol
    • Action-based architecture
    • Structured schema definitions
  • AI Tools

    • DALL-E integration for image generation
    • Natural language processing for blockchain commands
    • Price feed integration for market analysis

📦 Installation

npm install evm-agent-kit

Quick Start

import { EvmAgentKit, createEvmTools } from "evm-agent-kit";

// Initialize with private key and optional RPC URL
const agent = new EvmAgentKit(
  "your-wallet-private-key",
  "https://rpc-url.example.com",
  { OPENAI_API_KEY: "your-openai-api-key" } // optional config
);

// Create LangChain tools
const tools = createEvmTools(agent);

Usage Examples

Check ERC20 Token Balance

const balance = await agent.getBalance("0x1234567890123456789012345678901234567890");
console.log("Token Balance:", balance);

Transfer ERC20 Tokens

const txHash = await agent.transfer(
  "0x1234567890123456789012345678901234567890", // to address
  1.5, // amount
  "0xabcdef1234567890abcdef1234567890abcdef12" // token address (optional for native token)
);
console.log("Transfer Transaction:", txHash);

Launch a Token on Four.meme (BSC)

const result = await agent.createFourMemeToken(
  FOUR_MEME_ADDRESSES.BSC, // Token Manager Address
  0.1, // Fee in BNB
  "My EVM Token", // name
  "MET", // short name/symbol
  "An awesome EVM token for testing", // description
  "https://example.com/token-image.png", // image URL
  Date.now() + 3600 * 1000, // launch time (1 hour from now)
  "Meme", // category
  "https://mytoken.com", // website (optional)
  "https://twitter.com/mytoken", // Twitter URL (optional)
  "https://t.me/mytoken" // Telegram URL (optional)
);

console.log("Token Creation Result:", result);

Get Token Price Data from CoinGecko

const priceData = await agent.getTokenPriceDataUsingCoingecko(
  "0x1234567890123456789012345678901234567890", // Token address
  "0xabcdef1234567890abcdef1234567890abcdef12" // Another token address
);
console.log("Token prices:", priceData);

Get Trending Tokens

const trendingTokens = await agent.getTrendingTokens();
console.log("Trending tokens:", trendingTokens);

Get Protocol TVL from DeFiLlama

const tvl = await agent.fetchProtocolTvl("uniswap");
console.log("Uniswap TVL:", tvl);

Creating a New Tool

Here's a complete example of creating a new tool in EVM Agent Kit:

1. Create the Tool

src/tools/my_tool/my_function.ts:

import { EvmAgentKit } from "../../agent";
import { Address } from "viem";

/**
 * Description of what your tool does
 * @param agent - EvmAgentKit instance
 * @param param1 - Description of first parameter
 * @param param2 - Description of second parameter
 * @returns Promise resolving to the result
 */
export async function my_function(
  agent: EvmAgentKit,
  param1: string,
  param2?: Address,
): Promise<any> {
  // Implementation of your tool
  // Use agent.connection, agent.wallet, etc. to interact with blockchain
  
  return result;
}

src/tools/my_tool/index.ts:

export * from "./my_function";

2. Create a LangChain Tool

src/langchain/my_tool/my_tool.ts:

import { Tool } from "langchain/tools";
import { EvmAgentKit } from "../../agent";

export class MyTool extends Tool {
  name = "my_tool_name";
  description = `Description of what your tool does.
  
  Inputs (JSON string):
    - param1: string, description (required)
    - param2: string, description (optional)`;

  constructor(private agent: EvmAgentKit) {
    super();
  }

  protected async _call(input: string): Promise<string> {
    try {
      const parsedInput = JSON.parse(input);
      const { param1, param2 } = parsedInput;
      
      if (!param1) {
        throw new Error("param1 is required.");
      }
      
      const result = await this.agent.myFunction(param1, param2);
      
      return JSON.stringify({ status: "success", data: result });
    } catch (error: any) {
      return JSON.stringify({
        status: "error",
        message: error.message,
      });
    }
  }
}

3. Create an Action

src/actions/my_tool/my_action.ts:

import { Action } from "../../types/action";
import { EvmAgentKit } from "../../agent";
import { z } from "zod";

export const myAction: Action = {
  name: "MY_ACTION",
  similes: ["my action", "perform my action", "do my action"],
  description: "Description of what your action does.",
  examples: [
    [
      {
        input: { param1: "value1", param2: "value2" },
        output: { 
          status: "success", 
          data: { result: "example result" },
          message: "Action completed successfully" 
        },
        explanation: "Explanation of what this example demonstrates.",
      },
    ],
  ],
  schema: z.object({
    param1: z.string().describe("Description of param1"),
    param2: z.string().optional().describe("Description of param2"),
  }),
  handler: async (agent: EvmAgentKit, input: Record<string, any>) => {
    const { param1, param2 } = input;
    
    const result = await agent.myFunction(param1, param2);
    
    return {
      status: "success",
      data: result,
      message: "Action completed successfully",
    };
  },
};

4. Add to Agent

src/agent/index.ts:

import { my_function } from "../tools";

export class EvmAgentKit {
  // Existing properties and methods...
  
  async myFunction(param1: string, param2?: Address): Promise<any> {
    return my_function(this, param1, param2);
  }
}

Supported Chains

The toolkit supports all EVM-compatible chains. Specific features like Four.meme token creation are currently only available on specific chains (BSC for Four.meme).

Dependencies

The toolkit relies on several key EVM libraries:

  • viem for blockchain interactions
  • @langchain/core for AI agent tools
  • zod for schema validation
  • CoinGecko API for market data

Contributing

Contributions are welcome! Please feel free to submit a Pull Request. Refer to CONTRIBUTING.md for detailed guidelines on how to contribute to this project.

License

Apache-2 License

Security

This toolkit handles private keys and transactions. Always ensure you're using it in a secure environment and never share your private keys.