Exa Agent について
Exa Agent Researchは、Exa Agentを使った複数段階のウェブ調査、リスト作成、データ補完、網羅性確認のスキルです。構造化出力の定義、実行の継続、根拠の検証を案内します。
主な機能
- 01複数段階のウェブ調査
- 02リスト作成と発見
- 03データ補完
- 04構造化出力スキーマ
- 05実行の継続と検証
活用シーン
- 01企業や人物の発見
- 02既知のデータ行の補完
- 03過去の調査の継続や絞り込み
MCP 対応
このスキルはMCP経由でExa Agentを利用し、`agent_run`ツールで調査を開始・継続します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ exa-labs/ exa-mcp-server --skill exa-agentインストール後、Claude Code で/exa-agentを入力して読み込まれたか確認します。
詳細
Exa Agent Research
MCP 経由で Exa Agent を操作します。Exa Agent は、複数ステップにわたるウェブ調査、リスト作成、情報の補完、構造化出力、実行の継続、網羅性の検証を実行できるツールです。
必須ツール
agent_run
Exa Connect プロバイダー
実行時に Exa のウェブ検索とあわせてプレミアムパートナーデータが必要な場合は、agent_run に dataSources を渡してください。
現在セルフサービスで利用できるプロバイダーのみを使用してください。
fiber:B2B 企業、人材、求人、連絡先情報の補完financial_datasets:米国の公開企業のティッカーに基づくニュースsimilarweb:ウェブサイトのトラフィック推定、ランキング、競合の発見baselayer:米国企業の確認、役員、登記、KYBaffiliate:商品カタログ検索、価格、ブランド、販売者リンクparticle:話者情報とタイムスタンプ付きのポッドキャスト文字起こし検索jinko:運賃順に並べた旅行先の検索
ユーザーが自身の Exa アカウントでリクエスト制のプロバイダーがすでに有効になっていると明示しない限り、そのプロバイダーを提案しないでください。
判断フロー
作業を開始する前に、作業方法を選択してください。
-
既知の入力行があり、同じ形式の情報補完を大規模に繰り返す場合
- Exa API を直接使用する決定的なスクリプトを作成します。
- 同時実行数に上限を設け、指数バックオフ、チェックポイント、安定した出力ファイルを使用します。
- 出力ファイルを読み込み、内容をまとめます。
- 同一のツール呼び出しを何百回も手作業で繰り返し、コンテキストを浪費しないでください。
-
対象範囲が未確定の調査、リスト作成、人材・企業の発見、複数段階の調査、構造化調査、過去の作業に関するフォローアップの場合
- Exa Agent を使用します。
- 実行を作成する前に、目的と
outputSchemaを定義します。
実行を作成する前に
以下を必ず書き出してください。
- 目的:実行によって何に答えるのか。
- 対象範囲:どのようなエンティティが該当するのか。
- セグメント:地域、業界、ペルソナ、日付、資産クラス、その他の区分。
- 網羅性の目標:希望件数、最大件数、「十分」と判断する基準。
- 出力フィールド:最終回答に必要な列。
- エビデンス要件:URL、ソースタイトル、日付、信頼度。
- 除外対象:過去の結果、または対象外のエンティティ。
ユーザーが「最近」「過去6か月」「IPO 後」など相対的な期間を指定した場合は、まず今日の日付を基準に正確な日付を計算してください。
スキーマのルール
リスト作成、情報補完、金融・企業調査、再現可能なワークフローには outputSchema を使用してください。
ルール:
- 最上位にオブジェクトを使用します。
- リストの行は、名前付きの配列フィールドに格納します。
- 可能な場合は、配列に
maxItemsを追加します。 - 結論だけでなく、ソース/エビデンスのフィールドも含めます。
- 安定した識別子(企業名、ウェブサイト/ドメイン、人材の LinkedIn URL、ティッカー、CIK など)を含めます。
- 判断が不確かな場合は、信頼度または根拠のフィールドを含めます。
- 必須フィールドは、存在が不可欠なものに限定します。
- 必要に応じて
format: "uri"、format: "email"、またはformat: "phone"を使用します。
企業リストのスキーマ例:
{
"type": "object",
"properties": {
"companies": {
"type": "array",
"maxItems": 50,
"items": {
"type": "object",
"properties": {
"company_name": { "type": "string" },
"website": { "type": "string", "format": "uri" },
"segment": { "type": "string" },
"why_it_qualifies": { "type": "string" },
"evidence_url": { "type": "string", "format": "uri" },
"confidence": { "type": "string", "enum": ["low", "medium", "high"] }
},
"required": ["company_name", "website", "why_it_qualifies", "evidence_url"]
}
},
"coverage_notes": { "type": "string" },
"known_gaps": {
"type": "array",
"items": { "type": "string" }
}
},
"required": ["companies", "coverage_notes"]
}
Exa Connect を使用する例:
{
"tool": "agent_run",
"arguments": {
"query": "Find 10 fast-growing B2B SaaS companies and return estimated monthly website visits from Similarweb.",
"dataSources": [
{ "provider": "similarweb" }
],
"outputSchema": {
"type": "object",
"properties": {
"companies": {
"type": "array",
"maxItems": 10,
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"domain": { "type": "string" },
"monthlyVisits": {
"type": "number",
"description": "Estimated monthly visits from Similarweb"
}
},
"required": ["name", "domain", "monthlyVisits"]
}
}
},
"required": ["companies"]
}
}
}
Exa Agent のワークフロー
-
エージェントを実行する
agent_runを呼び出します。- ツールのデフォルトである
lowを使用するには、effortを省略します。ユーザーがより深い調査を求めている場合、またはタスク上明らかに必要な場合に限り、auto以上の effort を選択します。 - 構造化された作業では
outputSchemaを含めます。 - 既知の行には
input.dataを使用します。 - すでに返されたエンティティや対象外のエンティティには
input.exclusionを使用します。 - セルフサービス型 Exa Connect プロバイダーのいずれかが明らかに役立つ場合に限り、
dataSourcesを追加します。 - Agent がウェブ検索にフォールバックせずにプロバイダーを使用するよう、プロバイダー固有のデータをクエリとスキーマの両方で指定します。
- 後続の継続処理で
previousRunIdを使用する可能性がある場合は、返されたidを保存します。 - 応答が
status: "running"の場合は、outputReadyが true になるまでrunIdを指定してagent_runを再度呼び出します。この継続処理は、1 回の MCP 呼び出しを超えて保持される実行で利用できます。 - Zero Data Retention(ZDR)チームでは、新しい実行は常にストリーミングされ、出力を取得できるのはそのライブストリーム上のみです(
runIdによる再開はできません)。MCP 呼び出しの時間枠は約 750 秒です。ZDR の実行が 1 回の呼び出しで完了しない場合は、effort を下げるか、タスクを分割して再試行します。ZDR ではpreviousRunIdを使用できません。
-
結果を読む
outputReadyが true になるまで(またはステータスが failed/cancelled になるまで)待ちます。output.structuredとoutput.groundingの両方を読みます。- 実行が完了したからといって、結果が網羅的だと決めつけないでください。
-
網羅性を検証する
- 行数を目標と照合します。
- セグメントの網羅状況を確認します。
- エンティティの重複を解消します。
- 根拠の品質を調べます。
- 不足箇所を特定します。
-
必要に応じて続行する
- 追加調査や絞り込みには、
previousRunIdを指定してagent_runを使用します。 - 以前の結果が再表示されないよう、
input.exclusionを使用します。 - 対象範囲が広すぎて 1 回の実行では対応できない場合は、大きな対象群を複数の実行に分割します。
- 追加調査や絞り込みには、
-
最終回答
- 実施した内容を述べます。
- 構造化された結果を提示します。
- 網羅状況と制限を示します。
- 網羅性が明示的に範囲指定され、検証済みの場合を除き、「best-effort discovery」と記載します。
継続処理のパターン
次の場合は previousRunId を使用します。
- リストを絞り込む場合
- 欠落しているフィールドを埋める場合
- 別のセグメントを追加で取得する場合
- 以前の結果を検証する場合
- 「これらに似たもの」をさらに求める場合
次の場合は previousRunId を使用しません。
- 以前の実行が失敗した、またはまだ実行中の場合
- 新しいタスクに関連性がない場合
- 別のセグメントについて独立した網羅的な調査が必要な場合
独立したセグメントについては、個別に実行し、結果を自分で集約します。
網羅性と網羅状況の表現
次のすべてを満たさない限り、網羅的だと主張しないでください。
- 対象範囲が限定され、明確に定義されている。
- 検索・発見の戦略が主要なセグメントを網羅している。
- 出力件数と不足箇所を確認している。
- 重複を解消している。
- 根拠を調べている。
- 残っている不明点を開示している。
十分に検証できていない場合に推奨される表現:
- 「best-effort discovery」
- 「信頼度の高い初期対象群」
- 「網羅的ではありません」
- 「X の網羅状況は比較的良好ですが、Y は弱いようです」
次の表現は避けてください。
- 「すべての企業」
- 「完全なリスト」
- 「網羅的」
- 「決定的」
ただし、検証によって裏付けられている場合を除きます。
バッチスクリプトモード
同じ形式の Exa 呼び出しを多数並列で行う必要がある場合、特に既知の企業や人物を一括で補完する場合:
- MCP 呼び出しを手作業で多数発行する代わりに、スクリプトを作成します。
- スクリプトは次の要件を満たす必要があります。
- ファイルから決定的な入力を読み込む
- 同時実行数に上限を設ける
- 429/5xx に対して指数バックオフを使用する
- 部分的な進捗をチェックポイントとして保存する
- 決定的な JSON/CSV/TSV 出力を書き込む
- 行ごとの未加工 API エラーを保持する
- スクリプトを実行します。
- 出力ファイルを読み込みます。
- 出力をもとに結果をまとめます。
タスクの難所が、対象の発見、推論、複数段階にわたる調査、または次に何を検索するかの判断である場合は、バッチスクリプトモードではなく Exa Agent を使用します。
失敗への対処
実行を開始できない場合:
- HTTP エラーを示し、スキーマ/認証/入力を修正します。
- Exa Agent 形式の作業で、汎用的なウェブ検索に黙ってフォールバックしないでください。
実行が失敗した場合:
- 返された最終ステータスを基に、失敗の理由を説明します。
- 修正内容が明確な場合に限り、修正したフォローアップ実行/新しい実行を作成します。
実行の目的/スキーマが間違っている場合は、ストリーミング呼び出しを中止してください。サーバーは上流の実行をキャンセルしようとします。その後、修正した目的/スキーマで新しい実行を作成する必要があります。
出力が少ない場合:
previousRunIdを使用して続行します。- 以前の結果を除外します。
- 対象範囲を分割します。
- スキーマのフィールドを絞り込むか、明確にします。