# Dùng RPC blockchain trong Agent Coinbase AgentKit với BlockVectra

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

Coinbase AgentKit gửi các hành động onchain qua một wallet provider, và `ViemWalletProvider` chấp nhận bất kỳ viem `WalletClient` nào. Cấp cho client đó `https://api.blockvectra.com/v1/base_mainnet/public` làm transport và lưu lượng RPC của AgentKit sẽ dùng BlockVectra mà không cần API key. API key bổ sung phần còn lại; Gói miễn phí cung cấp 30,000,000 CU cho mỗi cửa sổ 30 ngày. Kiểm tra ngày 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);
```

Cài đặt bằng `npm install @coinbase/agentkit @coinbase/agentkit-langchain viem`. `tools` là danh sách mà [tích hợp LangChain](https://github.com/coinbase/agentkit/blob/main/typescript/agentkit/README.md) của AgentKit truyền cho `createAgent({ model, tools })`; khóa ví nằm trong môi trường của bạn.

## Dùng API key

Endpoint công khai chỉ phục vụ các phương thức trong `public.methods` của từng chuỗi. Với các phương thức khác, gửi key trong header `x-api-key` và giữ key trong biến môi trường để nó không bao giờ xuất hiện trong URL:

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

Nếu client không thể đặt header, có thể đặt key vào đường dẫn URL (`/v1/{chain}/{api_key}`); URL có thể nằm lại trong log truy cập, nên ưu tiên dùng header.

Tạo key mà không cần trình duyệt bằng bốn bước trong [hướng dẫn đăng ký bằng chương trình](https://docs.blockvectra.com/vi/guides/programmatic-signup/?ref=docs-agentkit): challenge, chữ ký, đăng nhập, rồi `POST /keys`. Nhà phát triển cũng có thể [tạo key trong console](https://console.blockvectra.com/login/?next=%2Fkeys%2F\&ref=docs-agentkit). Một key dùng được trên mọi chuỗi, nên khi chuyển Agent sang mạng khác chỉ cần đổi chain slug và đối tượng chain của viem.

## Kết hợp hành động AgentKit với máy chủ MCP tài liệu

Gói TypeScript của AgentKit cung cấp các hành động của nó dưới dạng công cụ LangChain, nên công cụ MCP từ adapter của LangChain được đưa vào cùng mảng `tools`. Làm theo [hướng dẫn LangChain](https://docs.blockvectra.com/vi/guides/langchain/#add-the-docs-mcp-server) để nạp `https://docs.blockvectra.com/mcp`, rồi gộp lại:

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

Agent nhận các hành động ví của AgentKit cùng `list_chains`, `get_status`, `rpc_call` và `read_doc` của BlockVectra, được liệt kê trên [trang máy chủ MCP](https://docs.blockvectra.com/vi/guides/mcp-server/). Kết nối không cần key.

## Các lỗi bạn có thể gặp

| Phản hồi                              | Ý nghĩa                                                 | Cần làm                                                       |
| ------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------------- |
| HTTP 401, `-32024`, `missing_api_key` | Yêu cầu cần key được gửi mà không có key                | Gửi key trong header `x-api-key` (hoặc đường dẫn URL)         |
| HTTP 401, `-32024`, `invalid_api_key` | Key không tồn tại, đã bị vô hiệu hóa hoặc đã bị thu hồi | Kiểm tra key trong console; key mới cần vài giây để kích hoạt |
| `-32601`, `method_not_public`         | Phương thức không nằm trong `public.methods` của chuỗi  | Chuyển transport đó từ `/public` sang URL dùng key            |

Mỗi lỗi của BlockVectra có `data.reason` và `docs_url`; danh sách đầy đủ nằm trên [trang lỗi](https://docs.blockvectra.com/vi/errors/).

## Tài liệu chính thức

* [coinbase/agentkit trên GitHub](https://github.com/coinbase/agentkit)
* [viem HTTP transport](https://viem.sh/docs/clients/transports/http.html)

## Câu hỏi thường gặp

**BlockVectra có thấy khóa riêng tư của ví không?** Không. Tài khoản viem ký cục bộ; endpoint chỉ nhận các lệnh đọc và giao dịch thô đã ký.

**Agent có thể đọc log qua endpoint công khai không?** Không. `eth_getLogs` và Data API cần API key.

**Key có nằm trong tham số của công cụ MCP không?** Không. Giữ key trong biến môi trường hoặc header của MCP client.

## Bước tiếp theo

* [Tổng quan framework Agent](https://docs.blockvectra.com/vi/guides/agent-frameworks/) cho LangChain, ElizaOS, viem và wagmi.
* [Kết nối AI Agent](https://docs.blockvectra.com/vi/guides/ai-agents/) để khám phá endpoint bằng MCP, llms.txt và OpenAPI.
* [Quy tắc thanh toán](https://docs.blockvectra.com/vi/guides/billing-rules/) về đo lường CU, giới hạn tốc độ và các lỗi không bị tính phí.
