在 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_key | key 不存在、已停用或已撤销 | 在控制台核对 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 客户端请求头中。
下一步
- Agent 框架总览:LangChain、ElizaOS、viem 与 wagmi。
- 接入 AI Agent:通过 MCP、llms.txt 和 OpenAPI 自动发现接口。
- 计费规则:CU 计量、速率限制与不计费错误。
最后更新: