Skip to main content
Glama

agentek-eth

by NaniDAO
slow.ts2.66 kB
import { Hex, http } from "viem"; import { arbitrum, base, mainnet, optimism } from "viem/chains"; import AgentekToolkit from "../packages/ai-sdk/toolkit"; import { generatePrivateKey, privateKeyToAccount } from "viem/accounts"; import { createOpenRouter } from "@openrouter/ai-sdk-provider"; import { CoreMessage, CoreTool, generateText } from "ai"; import { blockscoutTools } from "../packages/shared/blockscout"; import { slowTransferTools } from "../packages/shared/slowTransfer"; async function main() { const openrouter = createOpenRouter({ apiKey: process.env.OPENROUTER_API_KEY, }); let privateKey = process.env.PRIVATE_KEY; if (!privateKey) { privateKey = generatePrivateKey(); console.log("PRIVATE_KEY:", privateKey); } const account = privateKeyToAccount(privateKey as Hex); const chains = [mainnet, base, arbitrum, optimism]; console.log("ACCOUNT:", account.address); console.log( "CHAINS:", chains.map((chain) => chain.id), ); const toolkit = new AgentekToolkit({ transports: [http(), http(), http(), http()], chains, accountOrAddress: account, tools: [...blockscoutTools(), ...slowTransferTools()], }); const tools = toolkit.getTools(); console.log("NUMBER OF TOOLS", Object.keys(tools).length); console.log("AVAILABLE TOOLS:", Object.keys(tools)); const messages = [ { role: "user", content: "Slow transfer 1 USDC (1hr) to 0x1c0aa8ccd568d90d61659f060d1bfb1e6f855a20 on Base", }, ] as CoreMessage[]; messages.forEach((message) => { console.log(`\n[${message.role.toUpperCase()}]`); console.log(message.content); }); const response = await generateText({ model: openrouter("anthropic/claude-3.5-sonnet"), system: "", messages, maxSteps: 20, tools: tools as Record<string, CoreTool<any, any>>, experimental_activeTools: Object.keys(tools), }); response.response.messages.forEach((message) => { console.log(`\n[${message.role.toUpperCase()}]`); if (typeof message.content === "string") { console.log(`${message.content}`); } else { message.content.forEach((content) => { if (content.type === "text") { console.log(`${content.text}`); } else if (content.type === "tool-call") { console.log(`[Tool:${content.toolName}]`); console.log(`${JSON.stringify(content.args, null, 2)}`); } else if (content.type === "tool-result") { console.log(`\n---\n${JSON.stringify(content.result, null, 2)}`); } }); } }); } main() .then((_o) => console.log("--fin--")) .catch((e) => console.error(e));

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/NaniDAO/agentek'

If you have feedback or need assistance with the MCP directory API, please join our Discord server