Блокчейн-RPC в агентах Coinbase AgentKit з BlockVectra

Спрямуйте читання й транзакції агента Coinbase AgentKit через BlockVectra, передавши ViemWalletProvider клієнт viem із публічним ендпоінтом без ключа, а потім додайте API key та інструменти MCP.

Coinbase AgentKit надсилає свої ончейн-дії через провайдер гаманця, а ViemWalletProvider приймає будь-який viem WalletClient. Вкажіть цьому клієнту https://api.blockvectra.com/v1/base_mainnet/public як транспорт, і RPC-трафік AgentKit піде через BlockVectra без API key. Ключ відкриває решту; безкоштовний план надає 30,000,000 CU на 30-денне вікно. Перевірено .

import { AgentKit, ViemWalletProvider } from "@coinbase/agentkit";
import { getLangChainTools } from "@coinbase/agentkit-langchain";
import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";

const client = createWalletClient({
  account: privateKeyToAccount(process.env.WALLET_PRIVATE_KEY as `0x${string}`),
  chain: base,
  transport: http("https://api.blockvectra.com/v1/base_mainnet/public"),
});

const agentKit = await AgentKit.from({ walletProvider: new ViemWalletProvider(client) });
const tools = await getLangChainTools(agentKit);

Встановіть через npm install @coinbase/agentkit @coinbase/agentkit-langchain viem. tools — це список, який інтеграція LangChain AgentKit передає в createAgent({ model, tools }); ключ гаманця залишається у вашому середовищі.

Використання API key

Публічний ендпоінт обслуговує лише методи з public.methods кожної мережі. Для решти надсилайте ключ у заголовку x-api-key і тримайте його в середовищі, щоб він ніколи не потрапляв в URL:

const transport = http("https://api.blockvectra.com/v1/base_mainnet", {
  fetchOptions: { headers: { "x-api-key": process.env.BLOCKVECTRA_API_KEY! } },
});

Якщо клієнт не може задавати заголовки, ключ можна вказати в шляху URL (/v1/{chain}/{api_key}); URL можуть потрапляти в журнали доступу, тому надавайте перевагу заголовку.

Створіть ключ без браузера за чотирма кроками з посібника з програмної реєстрації: challenge, підпис, вхід, потім POST /keys. Розробники також можуть створити ключ у консолі. Один ключ працює в кожній мережі, тож перемикання агента на іншу мережу змінює лише ідентифікатор мережі та об'єкт мережі viem.

Поєднайте дії AgentKit із docs MCP-сервером

TypeScript-пакет AgentKit надає свої дії як інструменти LangChain, тож інструменти MCP з адаптера LangChain потрапляють у той самий масив tools. Дотримуйтесь посібника LangChain, щоб завантажити https://docs.blockvectra.com/mcp, а потім об'єднайте їх:

const agent = createAgent({ model: "claude-sonnet-5", tools: [...tools, ...(await adapter.listTools())] });

Агент отримує дії гаманця AgentKit разом з list_chains, get_status, rpc_call і read_doc від BlockVectra, перелічені на сторінці MCP-сервера. Для підключення ключ не потрібен.

Помилки, які ви можете побачити

ВідповідьЗначенняЩо робити
HTTP 401, -32024, missing_api_keyЗапит, що потребує ключа, надіслано без ключаНадішліть ключ у заголовку x-api-key (або в шляху URL)
HTTP 401, -32024, invalid_api_keyКлюч невідомий, вимкнений або відкликанийПеревірте ключ у консолі; новий ключ активується за кілька секунд
-32601, method_not_publicМетоду немає в public.methods мережіПеремкніть цей транспорт із /public на URL із ключем

Кожна помилка BlockVectra містить data.reason і docs_url; повний список — на сторінці помилок.

Офіційна документація

Поширені запитання

Чи бачить BlockVectra приватний ключ гаманця? Ні. Акаунт viem підписує локально; ендпоінт отримує читання та підписані сирі транзакції.

Чи може агент читати логи через публічний ендпоінт? Ні. eth_getLogs і Data API потребують API key.

Чи передається ключ в аргументах інструментів MCP? Ні. Тримайте його в середовищі або в заголовках MCP-клієнта.

Наступні кроки

Востаннє оновлено:

На цій сторінці