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 クライアントのヘッダーに置いてください。

次のステップ

最終更新:

このページの目次