# 在 Coinbase AgentKit Agent 中用 BlockVectra 呼叫區塊鏈 RPC

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

Coinbase AgentKit 透過錢包提供者執行鏈上操作，`ViemWalletProvider` 接受任意 viem `WalletClient`。把該用戶端的傳輸層設為 `https://api.blockvectra.com/v1/base_mainnet/public`，AgentKit 的 RPC 流量不需要 API key 即走 BlockVectra。加上 key 可使用其餘方法，免費方案每個 30 天視窗含 30,000,000 CU。核對於 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` 標頭送出 key，並保存在環境變數中，這樣 key 不會出現在 URL 裡：

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

如果用戶端無法設定標頭，也可以改把 key 放進 URL 路徑（`/v1/{chain}/{api_key}`）；URL 可能出現在存取日誌中，因此優先使用標頭。

不用瀏覽器建立 key，請依[程式化建立帳戶指南](https://docs.blockvectra.com/zh-hant/guides/programmatic-signup/?ref=docs-agentkit)的四個步驟操作：challenge、簽章、login，再 `POST /keys`。開發者也可以[在控制台建立 key](https://console.blockvectra.com/login/?next=%2Fkeys%2F\&ref=docs-agentkit)。同一把 key 適用於所有鏈，因此把 Agent 切到其他網路只需改鏈識別碼與 viem 的 chain 物件。

## 把 AgentKit 動作與文件 MCP 伺服器合用

AgentKit 的 TypeScript 套件把動作公開為 LangChain 工具，因此 LangChain 轉接器提供的 MCP 工具可以放進同一個 `tools` 陣列。依 [LangChain 指南](https://docs.blockvectra.com/zh-hant/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())] });
```

Agent 因此同時擁有 AgentKit 的錢包動作與 BlockVectra 的 `list_chains`、`get_status`、`rpc_call`、`read_doc`，工具清單見 [MCP 伺服器頁面](https://docs.blockvectra.com/zh-hant/guides/mcp-server/)。連線不需要 key。

## 可能遇到的錯誤

| 回應                                  | 含義                          | 處理方式                             |
| ----------------------------------- | --------------------------- | -------------------------------- |
| HTTP 401，`-32024`，`missing_api_key` | 送出需要 key 的請求時沒帶 key         | 用 `x-api-key` 標頭（或 URL 路徑）送出 key |
| HTTP 401，`-32024`，`invalid_api_key` | key 不存在、已停用或已撤銷             | 在控制台核對 key；新 key 需要幾秒鐘生效         |
| `-32601`，`method_not_public`        | 該方法不在該鏈的 `public.methods` 中 | 把該傳輸層從 `/public` 換成需要 key 的網址    |

BlockVectra 的每個錯誤都帶有 `data.reason` 與 `docs_url`；完整清單見[錯誤碼頁面](https://docs.blockvectra.com/zh-hant/errors/)。

## 官方文件

* [GitHub 上的 coinbase/agentkit](https://github.com/coinbase/agentkit)
* [viem HTTP 傳輸層](https://viem.sh/docs/clients/transports/http.html)

## 常見問題

**BlockVectra 看得到錢包私鑰嗎？** 看不到。viem 帳戶在本機簽章；端點收到的是讀取請求與已簽章的原始交易。

**Agent 能透過公共端點讀取日誌嗎？** 不能。`eth_getLogs` 與 Data API 需要 API key。

**key 要放進 MCP 工具參數嗎？** 不要。把它放在環境變數或 MCP 用戶端標頭中。

## 下一步

* [Agent 框架總覽](https://docs.blockvectra.com/zh-hant/guides/agent-frameworks/)：LangChain、ElizaOS、viem 與 wagmi。
* [連線 AI Agent](https://docs.blockvectra.com/zh-hant/guides/ai-agents/)：透過 MCP、llms.txt 與 OpenAPI 探索端點。
* [計費規則](https://docs.blockvectra.com/zh-hant/guides/billing-rules/)：CU 計量、速率限制與不計費的錯誤。
