BlockVectra で Coinbase AgentKit エージェントからブロックチェーン RPC を使う
キー不要の公開エンドポイントを使う viem クライアントを ViemWalletProvider に渡し、Coinbase AgentKit エージェントの読み取りとトランザクションを BlockVectra 経由にします。その後、API key と MCP ツールを追加します。
Coinbase AgentKit はオンチェーンのアクションをウォレットプロバイダー経由で送信し、ViemWalletProvider は任意の viem WalletClient を受け取ります。そのクライアントのトランスポートに https://api.blockvectra.com/v1/base_mainnet/public を指定すると、AgentKit の RPC トラフィックは API key なしで BlockVectra を使います。キーを使うと残りのメソッドも利用でき、無料プランには 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 ヘッダーで送信し、環境変数に保持します。これにより、キーが URL に現れることはありません:
const transport = http("https://api.blockvectra.com/v1/base_mainnet", {
fetchOptions: { headers: { "x-api-key": process.env.BLOCKVECTRA_API_KEY! } },
});クライアントがヘッダーを設定できない場合は、代わりにキーを URL のパス(/v1/{chain}/{api_key})に含めることもできます。ただし URL はアクセスログに残ることがあるため、ヘッダーを推奨します。
ブラウザーを使わずにキーを作成するには、プログラムによる登録ガイドの 4 ステップ(チャレンジ、署名、ログイン、POST /keys)に従います。開発者はコンソールでキーを作成することもできます。1 つのキーがすべてのチェーンで使えるため、エージェントを別のネットワークに切り替えるときに変えるのは、チェーンの slug と viem のチェーンオブジェクトだけです。
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())] });エージェントは、AgentKit のウォレットアクションに加えて、MCP サーバーのページに一覧されている BlockVectra の list_chains、get_status、rpc_call、read_doc を使えるようになります。接続にキーは不要です。
遭遇するエラー
| レスポンス | 意味 | 対応 |
|---|---|---|
HTTP 401、-32024、missing_api_key | キーが必要なリクエストをキーなしで送信した | キーを x-api-key ヘッダー(または URL のパス)で送信する |
HTTP 401、-32024、invalid_api_key | キーが不明、無効化済み、または失効済み | コンソールでキーを確認する。新しいキーが有効になるまで数秒かかる |
-32601、method_not_public | メソッドがそのチェーンの public.methods にない | そのトランスポートを /public からキー付きの URL に切り替える |
BlockVectra の各エラーには data.reason と docs_url が含まれます。全一覧はエラーのページにあります。
公式ドキュメント
よくある質問
BlockVectra はウォレットの秘密鍵を見ますか? いいえ。viem のアカウントはローカルで署名し、エンドポイントが受け取るのは読み取りと署名済みの raw トランザクションだけです。
エージェントは公開エンドポイントでログを読み取れますか? いいえ。eth_getLogs と Data API には API key が必要です。
キーを MCP ツールの引数に入れますか? いいえ。キーは環境変数または MCP クライアントのヘッダーに置いてください。
次のステップ
- エージェントフレームワークの概要:LangChain、ElizaOS、viem、wagmi。
- AI エージェントを接続する:MCP、llms.txt、OpenAPI でエンドポイントを見つけます。
- 課金ルール:CU の計測、レート制限、課金されないエラー。
最終更新: