AON — Agent Offer Network について
AON MCPは、MCP対応エージェントを実在する商品・サービスの検索可能なオファーにつなぎ、リアルタイム価格とトラッキングリンクを提供します。開発者はクリックやコンバージョンをアプリのプレースメントに紐付けられますが、一部のフィードバック・ウォッチ機能は確認応答のみで未保存です。
主な機能
- 01自然言語の意図によるオファー検索
- 02テキストから分類IDを解決
- 03リアルタイム価格と追跡リンクの返却
- 04検証済みの追加検索候補
- 05任意のカテゴリ判断ガイダンス
- 06初期段階のフィードバック・ウォッチツール
活用シーン
- 01ユーザーの要望に合う商品を探す
- 02分類を解決して検索対象を絞る
- 03追跡リンク付きのオファーを提示
- 04検索前にカテゴリに応じた質問を行う
MCP 対応
AONは`https://api.aon.pro/v1/mcp`でステートレスなStreamable HTTPを通じてツールを提供します。MCPクライアントはオファー検索、分類解決、任意のカテゴリガイダンスを利用できます。フィードバックとウォッチの呼び出しは現在、応答のみで永続化されません。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://api.aon.pro/v1/mcpclaude mcp add --transport http aon-agent-offer-network https://api.aon.pro/v1/mcp{"mcpServers":{"aon-agent-offer-network":{"type":"http","url":"https://api.aon.pro/v1/mcp"}}}Cursor で開く{"servers":{"aon-agent-offer-network":{"type":"http","url":"https://api.aon.pro/v1/mcp"}}}VS Code で開く{"mcpServers":{"aon-agent-offer-network":{"type":"http","url":"https://api.aon.pro/v1/mcp"}}}{"mcpServers":{"aon-agent-offer-network":{"serverUrl":"https://api.aon.pro/v1/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://api.aon.pro/v1/mcp認証が必要ツール
5| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| sort | enum | いいえ | AON のプライベート拡張(AgentOffer プロトコルの一部ではありません)。現在サポートされているのは recommended のみです。それ以外の値は未設定として扱われ、extra.hints に報告されます。recommended |
| intent | object | はい | |
| intent.origin | array | いいえ | ユーザーが承諾した提案の query_helper.origin エントリーを返してください。 |
| intent.content | array | はい | ユーザーの意図です。1 項目、1 行、200 文字以内にしてください。キーワードの羅列ではなく、文にしてください。 |
| intent.signals | object | いいえ | 構造化された意図シグナルです。上流に転送され、共有クエリパイプラインに渡されますが、このレイヤーでは結果の件数や順序が変わることを一切保証しません。 |
| intent.signals.budget | object | いいえ | |
| intent.signals.budget.max | number | いいえ | ユーザーが許容する上限価格。 |
| intent.signals.budget.currency | string | いいえ | ISO 4217コード(例:USD、EUR、JPY)。 |
| intent.signals.timeframe | enum | いいえ | ユーザーが行動を起こす時期。now | this_week | this_month | later |
| intent.signals.purchase_stage | enum | いいえ | ユーザーが現在どの段階にいるか。exploring | comparing | ready_to_buy |
| intent.confidence | number | いいえ | inferred_context と併用する場合のみ指定します。0 より大きい値が必要です。 |
| intent.provenance | enum | いいえ | この意図を生成した主体。inferred_context には confidence が必須です。user_expressed に confidence を含めてはいけません。user_expressed | inferred_context |
| context | object | いいえ | |
| context.session | object | いいえ | |
| context.session.recent_topics | array | いいえ | 最近の会話から抽出したトピックの短い語句。最大 10 件、各 50 文字。 |
| context.session.previous_request_id | string | いいえ | 前回の data.request_id。表示済みのオファーが繰り返されないようにします。 |
| context.session_id | string | いいえ | この会話で安定して使用する、推測不可能な ID を指定します。UUID などの新しい一意の値を使い、各ラウンドで再利用してください。ユーザー ID がある場合、両方が存在するとクロスラウンドの重複排除が有効になります。匿名モード(ユーザー ID なし)では、重複排除と意図の記憶はこの ID のみをキーにするため、推測可能な値(例:'session-1')を使うと、他の呼び出し元の履歴と混在します。 |
| context.user_profile | object | いいえ | 任意の閲覧者ターゲティングコンテキスト。location_ids、country、verified_age_over は AgentOffer v1.0 のフィールドです。user_pseudo_id は AON のプライベート拡張です。 |
| context.user_profile.country | string | いいえ | 閲覧者の国。大文字の ISO 3166-1 alpha-2(例:US)を指定します。location_ids がない場合に使用されます。 |
| context.user_profile.location_ids | array | いいえ | 閲覧者の現在地を示す 1~10 個の数値 AON Location Registry ID を、詳細度の高い順に指定します。country より優先されます。ユーザーのテキストから推測しないでください。 |
| context.user_profile.user_pseudo_id | string | いいえ | AON のプライベート拡張(AgentOffer v1.0 のコンテキストオブジェクトには含まれません)。フォールバック専用です。常にこのフィールドより優先される x-aon-user-pseudo-id HTTP ヘッダーを優先してください。 |
| context.user_profile.verified_age_over | integer | いいえ | インテグレーターが閲覧者について確認済みの最低年齢を整数で指定します(例:18)。推測または推定しないでください。min_age がこの値を上回るオファーは除外されます。未確認で年齢を評価しない場合は省略してください。 |
| pagination | object | いいえ | AON のプライベート拡張(AgentOffer v1.0 のリクエストオブジェクトには含まれません)。 |
| pagination.limit | integer | いいえ | 返すオファーの最大数(デフォルトは 3、上限は 20)です。「5 個見せて」のように音声で指定された数に応じて、最大 20 まで増やせます。 |
| pagination.offset | integer | いいえ | カテゴリーを limit=20、offset=0/20/40 でページングする際にスキップするオファー数です。 |
| request_id | string | いいえ | 冪等性キーです。推測できない値(UUID)を使用してください。同じクエリを再試行するときは再利用してください。質問内容を変更する場合は、新しい ID を送信してください。そうしないと、エラーなしで以前の回答が返されます。省略すると、呼び出しのたびに新規として扱われます。匿名モード(placement_id なし)では、request_id は応答に含まれますが、再生には使用されず、呼び出しごとに新たに計算されます。 |
| constraints | object | いいえ | |
| constraints.category_ids | array | いいえ | AON Taxonomy v1 のカテゴリー ID(例:finance.credit_lending)です。不明な ID は検索結果ではなく、修正候補として返されます。 |
| constraints.excluded_category_ids | array | いいえ | 結果から除外する AON Taxonomy v1 のカテゴリー ID です。親 ID を指定すると、その子孫にあたるオファーカテゴリーも除外されます。 |
| force_offer | boolean | いいえ | 検索では常に関連性による絞り込みが行われ、true に設定すると少なくとも 1 件のオファーが返されます。 |
| placement_id | string | いいえ | 任意の広告プレースメント ID です。この引数は X-AON-Placement-Id HTTP ヘッダーより優先され、省略時はヘッダーのプレースメントが使用されます。プレースメントは有効である必要があり、アトリビューションを受け取るアプリケーションを識別します。どちらも指定されない場合(または値が空の場合)、AON の共有デフォルトプレースメントで匿名モードとして実行されます。機能はしますが、アトリビューションや収益は得られません。 |
| response_options | object | いいえ | |
| response_options.thinking_mode | boolean | いいえ | false に設定すると、レスポンスから各オファーの match_reason の説明が除外されます。 |
詳細
AON MCP Server
あらゆるMCP対応エージェントが、実際に購入できる商品やサービスをおすすめできるようになります。すべてのオファーには、リアルタイムの価格と追跡可能なリンクが含まれており、Agent Offer Networkから提供されます。
- エンドポイント:
POST https://api.aon.pro/v1/mcp - トランスポート:Streamable HTTP(ステートレスなJSON-RPC 2.0 — SSEもセッションハンドシェイクも不要)
- 掲載先(推奨):
X-AON-Placement-Idヘッダーに掲載先IDを指定してください。Developer Portalで作成できます。指定しなくても匿名モードで検索できますが、収益をアプリケーションに帰属させることはできません - クイックスタート:掲載先IDを指定して、curlまたはクライアントの例を実行してください
- ドキュメント:docs.aon.pro/mcp
ツール
Hosted AON エンドポイントには、現在5つのツールが掲載されています。Protocol v1.0 では、以下の4つの基本ツールが定義されています。aon_get_category_schema は任意の Hosted カテゴリーガイダンス拡張であり、Protocol v1.0 で常に利用できるものではありません。呼び出す前に tools/list で確認してください。
aon_search_offers— 自然言語の意図に基づいてオファーを検索します。各結果には、リアルタイムの価格、トラッキングリンク、検証済みのフォローアップ候補が含まれます。aon_resolve_category— 自由形式のテキストを AON Taxonomy v1 のカテゴリー ID に変換します。aon_get_category_schema— 任意の Hosted 拡張:解決済みのカテゴリー ID に対する判断要素を返し、検索前に適切な確認質問をできるようにします。aon_submit_feedback— オファーに対する明示的な「非表示」/「興味なし」を記録します(初期段階のスキャフォールド:受け付けたことは確認されますが、まだ保存されません)。aon_manage_watch— 明示的なリクエストに応じて、オファーまたはカテゴリーのデフォルトのウォッチを復元またはキャンセルします(初期段階のスキャフォールド:受け付けたことは確認されますが、まだ保存されません)。
| ツール | 機能 |
|---|---|
aon_search_offers | 自然言語の意図に基づいてオファーを検索します。引数は AgentOffer Query リクエストオブジェクトで、REST API と同じ形式です。価格、各オファーのトラッキングリンク、エージェントが実行できる検証済みのフォローアップ候補を含む engagement ブロックとともに、オファーを返します。 |
aon_resolve_category | 自由形式のテキスト(「ハイキングブーツ」、「チームチャットソフトウェア」など)を AON Taxonomy v1 のカテゴリー ID に変換します。モデルがカテゴリー ID を暗記したり、作り出したりする必要はありません。 |
aon_get_category_schema | 任意の Hosted 拡張:解決済みのカテゴリー ID に対する判断要素を返し、検索前に適切な確認質問をできるようにします。単独で取得した結果は、Query リクエストやレスポンスに decision_factors を追加しません。 |
aon_submit_feedback | オファーに対するユーザーの明示的な「非表示」/「興味なし」を記録します。沈黙から推測することはありません。初期段階のスキャフォールド:呼び出しは成功として受け付けられますが、フィードバックはまだ保存されません。この機能の背後にあるワークフローは順次展開中です。 |
aon_manage_watch | ユーザーから明示的なリクエストがあった場合に、オファーまたはカテゴリーのデフォルトのウォッチを復元(watch)またはキャンセル(unwatch)します。初期段階のスキャフォールド:成功として受け付けられますが、ウォッチの状態はまだ保存されません。 |
エージェントに役立つ設計上の注意点:
- 柔軟な設計 — 無効な値が原因で検索に失敗することはありません。無効な値は「送信されなかった」ものとして扱われ、
extra.hints[]で修正されます。不正な形式、未知または無効なプレースメント、無効な JSON、intent.contentの欠落、またはサイズ超過の本文のみが致命的なエラーになります。プレースメントがなくてもエラーにはなりません。呼び出しは匿名モードで実行されます。 - 関連性を重視 — 結果リストが空でも、それは正当な回答であり、埋め合わせではありません。
- ガイダンスループ — フォローアップ候補には、次の呼び出しにそのままマージできる RFC 7386
request_patchと、採用のアトリビューションに使用するoriginが含まれています。
クイックスタート
curl -s -X POST https://api.aon.pro/v1/mcp \
-H "Content-Type: application/json" \
-H "X-AON-Placement-Id: $AON_PLACEMENT_ID" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "aon_search_offers",
"arguments": {
"intent": {
"content": [
{ "type": "input_text", "text": "credit card with cashback" }
]
}
}
},
"id": 1
}'
まだプレースメントをお持ちでない場合は、Developer Portal でアプリケーションとプレースメントを作成し、プレースメント ID(plc_…)を $AON_PLACEMENT_ID に保存してください。この ID はプレースメントを識別するもので、クライアント設定で安全に使用できます。
エンドポイントを試すだけの場合は、X-AON-Placement-Id ヘッダーを省略してください。呼び出しは AON の共有デフォルトプレースメントを通じて匿名モードで実行され、レスポンスには extra.identity.mode="anonymous" が含まれます。この場合、収益は発生しません。匿名の呼び出しによるクリックやコンバージョンは、後から遡っても含め、アプリケーションに関連付けられません。実際のトラフィックを送る前に、プレースメント ID を設定してください。
クライアントのセットアップ
そのまま貼り付けて使える設定は examples/ にあります。
| クライアント | 設定 |
|---|---|
| Claude Code | examples/claude-code |
| Claude Desktop | examples/claude-desktop(mcp-remote 経由) |
| Cursor | examples/cursor |
| VS Code | examples/vscode |
| curl のみ | examples/curl |
レート制限
/v1/mcp では、アプリケーションごとに tools/call リクエストを1分あたり60回まで許可しています。ハンドシェイク呼び出し(initialize、tools/list、notifications/*)はカウントされません。上限を超えた tools/call は、Retry-After ヘッダーと JSON-RPC エラー -32000 を含む HTTP 429 を返すため、モデルは再試行に関する案内を確認できます。詳細については、レート制限と FAQをご覧ください。
マネタイズとアトリビューション
すべてのオファーには、トラッキング付きの遷移先リンク(action.payload.url)が含まれています。そのまま表示してください。クリックとコンバージョンは、掲載先のアプリケーションにアトリビューションされ、これが開発者への収益分配の基準になります。レポートは開発者ポータルで確認できます。
レジストリマニフェスト
server.jsonは、このサーバーの MCP レジストリマニフェストです(スキーマ 2025-12-11、名前空間 pro.aon — aon.pro ドメインに対して DNS 検証済み)。
関連リポジトリ
protocol— AgentOffer Protocol の仕様(規範)schema— JSON スキーマ、TypeScript 型、タクソノミーexamples— HTTP/SDK/エージェント統合の例rfcs— プロトコル進化に関する提案
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。