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

> Source: https://docs.blockvectra.com/ru/guides/coinbase-agentkit/

Coinbase AgentKit отправляет ончейн-действия через провайдер кошелька, а `ViemWalletProvider` принимает любой `WalletClient` из viem. Укажите этому клиенту `https://api.blockvectra.com/v1/base_mainnet/public` в качестве транспорта, и RPC-трафик AgentKit пойдет через BlockVectra без API key. Ключ открывает остальные методы; Free Plan дает 30,000,000 CU за каждое окно в 30 дн. Проверено 2026-10-11.

```typescript
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` — это список, который [интеграция AgentKit с LangChain](https://github.com/coinbase/agentkit/blob/main/typescript/agentkit/README.md) передает в `createAgent({ model, tools })`; ключ кошелька остается в вашем окружении.

## Использование API key

Публичный эндпоинт обслуживает только методы из `public.methods` каждой сети. Для остальных передавайте ключ в заголовке `x-api-key` и храните его в окружении, чтобы он не попадал в URL:

```typescript
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 могут попадать в журналы доступа, поэтому лучше использовать заголовок.

Создайте ключ без браузера по четырем шагам из [руководства по программной регистрации](https://docs.blockvectra.com/ru/guides/programmatic-signup/?ref=docs-agentkit): challenge, подпись, login, затем `POST /keys`. Разработчики также могут [создать ключ в консоли](https://console.blockvectra.com/login/?next=%2Fkeys%2F\&ref=docs-agentkit). Один ключ работает во всех сетях, поэтому при переключении агента на другую сеть меняются только идентификатор сети и объект сети viem.

## Совмещение действий AgentKit с MCP-сервером документации

Пакет AgentKit для TypeScript предоставляет свои действия как инструменты LangChain, поэтому инструменты MCP из адаптера LangChain попадают в тот же массив `tools`. Следуйте [руководству по LangChain](https://docs.blockvectra.com/ru/guides/langchain/#add-the-docs-mcp-server), чтобы загрузить `https://docs.blockvectra.com/mcp`, затем объедините списки:

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

Агент получает действия кошелька AgentKit и инструменты BlockVectra `list_chains`, `get_status`, `rpc_call` и `read_doc`, перечисленные на [странице MCP-сервера](https://docs.blockvectra.com/ru/guides/mcp-server/). Для подключения ключ не нужен.

## Ошибки, которые вы можете увидеть

| Ответ                                 | Значение                                    | Что делать                                                            |
| ------------------------------------- | ------------------------------------------- | --------------------------------------------------------------------- |
| 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`; полный список приведен на [странице ошибок](https://docs.blockvectra.com/ru/errors/).

## Официальная документация

* [coinbase/agentkit на GitHub](https://github.com/coinbase/agentkit)
* [HTTP-транспорт viem](https://viem.sh/docs/clients/transports/http.html)

## Частые вопросы

**Видит ли BlockVectra приватный ключ кошелька?** Нет. Аккаунт viem подписывает локально; эндпоинт получает чтения и подписанные сырые транзакции.

**Может ли агент читать логи через публичный эндпоинт?** Нет. Для `eth_getLogs` и Data API нужен API key.

**Передается ли ключ в аргументах инструмента MCP?** Нет. Храните его в окружении или в заголовках MCP-клиента.

## Дальнейшие шаги

* [Обзор фреймворков для агентов](https://docs.blockvectra.com/ru/guides/agent-frameworks/): LangChain, ElizaOS, viem и wagmi.
* [Подключение ИИ-агента](https://docs.blockvectra.com/ru/guides/ai-agents/): поиск эндпоинтов через MCP, llms.txt и OpenAPI.
* [Правила тарификации](https://docs.blockvectra.com/ru/guides/billing-rules/): учет CU, лимиты запросов и ошибки, которые не тарифицируются.
