在 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 客户端请求头中。

下一步

最后更新:

本页目录