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

讓 ViemWalletProvider 使用免 key 公共端點的 viem 用戶端,把 Coinbase AgentKit 的讀取與交易經 BlockVectra 送出,再設定 API key 與 MCP 工具。

Coinbase AgentKit 透過錢包提供者執行鏈上操作,ViemWalletProvider 接受任意 viem WalletClient。把該用戶端的傳輸層設為 https://api.blockvectra.com/v1/base_mainnet/public,AgentKit 的 RPC 流量不需要 API key 即走 BlockVectra。加上 key 可使用其餘方法,免費方案每個 30 天視窗含 30,000,000 CU。核對於 。

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 整合傳給 createAgent({ model, tools }) 的工具清單;錢包金鑰留在你的環境變數中。

使用 API key

公共端點只提供各鏈 public.methods 中的方法。其餘方法請透過 x-api-key 標頭送出 key,並保存在環境變數中,這樣 key 不會出現在 URL 裡:

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,請依程式化建立帳戶指南的四個步驟操作:challenge、簽章、login,再 POST /keys。開發者也可以在控制台建立 key。同一把 key 適用於所有鏈,因此把 Agent 切到其他網路只需改鏈識別碼與 viem 的 chain 物件。

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

AgentKit 的 TypeScript 套件把動作公開為 LangChain 工具,因此 LangChain 轉接器提供的 MCP 工具可以放進同一個 tools 陣列。依 LangChain 指南載入 https://docs.blockvectra.com/mcp,再合併:

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

Agent 因此同時擁有 AgentKit 的錢包動作與 BlockVectra 的 list_chains、get_status、rpc_call、read_doc,工具清單見 MCP 伺服器頁面。連線不需要 key。

可能遇到的錯誤

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

BlockVectra 的每個錯誤都帶有 data.reason 與 docs_url;完整清單見錯誤碼頁面。

官方文件

常見問題

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

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

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

下一步

最後更新:

本頁目錄