# BlockVectra で Coinbase AgentKit エージェントからブロックチェーン RPC を使う

> Source: https://docs.blockvectra.com/ja/guides/coinbase-agentkit/

Coinbase AgentKit はオンチェーンのアクションをウォレットプロバイダー経由で送信し、`ViemWalletProvider` は任意の viem `WalletClient` を受け取ります。そのクライアントのトランスポートに `https://api.blockvectra.com/v1/base_mainnet/public` を指定すると、AgentKit の RPC トラフィックは API key なしで BlockVectra を使います。キーを使うと残りのメソッドも利用でき、無料プランには 30 日間の期間ごとに 30,000,000 CU が含まれます。確認日 2026-10-11。

```typescript
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 連携](https://github.com/coinbase/agentkit/blob/main/typescript/agentkit/README.md)が `createAgent({ model, tools })` に渡すリストで、ウォレットキーは環境変数に置いたままにします。

## API key を使う

公開エンドポイントが対応するのは、各チェーンの `public.methods` にあるメソッドだけです。それ以外のメソッドには、キーを `x-api-key` ヘッダーで送信し、環境変数に保持します。これにより、キーが URL に現れることはありません：

```typescript
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 はアクセスログに残ることがあるため、ヘッダーを推奨します。

ブラウザーを使わずにキーを作成するには、[プログラムによる登録ガイド](https://docs.blockvectra.com/ja/guides/programmatic-signup/?ref=docs-agentkit)の 4 ステップ（チャレンジ、署名、ログイン、`POST /keys`）に従います。開発者は[コンソールでキーを作成](https://console.blockvectra.com/login/?next=%2Fkeys%2F\&ref=docs-agentkit)することもできます。1 つのキーがすべてのチェーンで使えるため、エージェントを別のネットワークに切り替えるときに変えるのは、チェーンの slug と viem のチェーンオブジェクトだけです。

## AgentKit のアクションとドキュメント MCP サーバーを組み合わせる

AgentKit の TypeScript パッケージはアクションを LangChain ツールとして公開しているため、LangChain のアダプターから得た MCP ツールも同じ `tools` 配列に入れられます。[LangChain ガイド](https://docs.blockvectra.com/ja/guides/langchain/#add-the-docs-mcp-server)に従って `https://docs.blockvectra.com/mcp` を読み込み、次のようにマージします：

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

エージェントは、AgentKit のウォレットアクションに加えて、[MCP サーバーのページ](https://docs.blockvectra.com/ja/guides/mcp-server/)に一覧されている 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` が含まれます。全一覧は[エラーのページ](https://docs.blockvectra.com/ja/errors/)にあります。

## 公式ドキュメント

* [GitHub の coinbase/agentkit](https://github.com/coinbase/agentkit)
* [viem HTTP トランスポート](https://viem.sh/docs/clients/transports/http.html)

## よくある質問

**BlockVectra はウォレットの秘密鍵を見ますか？** いいえ。viem のアカウントはローカルで署名し、エンドポイントが受け取るのは読み取りと署名済みの raw トランザクションだけです。

**エージェントは公開エンドポイントでログを読み取れますか？** いいえ。`eth_getLogs` と Data API には API key が必要です。

**キーを MCP ツールの引数に入れますか？** いいえ。キーは環境変数または MCP クライアントのヘッダーに置いてください。

## 次のステップ

* [エージェントフレームワークの概要](https://docs.blockvectra.com/ja/guides/agent-frameworks/)：LangChain、ElizaOS、viem、wagmi。
* [AI エージェントを接続する](https://docs.blockvectra.com/ja/guides/ai-agents/)：MCP、llms.txt、OpenAPI でエンドポイントを見つけます。
* [課金ルール](https://docs.blockvectra.com/ja/guides/billing-rules/)：CU の計測、レート制限、課金されないエラー。
