关于 AON — Agent Offer Network
AON MCP 将支持 MCP 的 Agent 连接到可搜索的真实商品与服务报价,提供实时价格和跟踪链接。开发者可将点击与转化归因到应用 placement;部分反馈和关注工具目前仅确认调用,尚未持久化。
主要功能
- 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 | 是 | 用户的意图。一个条目,单行,不超过 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 确定,因此可猜测的值(例如 '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 时至少返回一个优惠。 |
| placement_id | string | 否 | 可选的广告版位 ID。此参数优先于 X-AON-Placement-Id HTTP 标头;省略时使用该标头提供的版位。版位必须处于启用状态,并用于标识接收归因信息的应用。如果两者均未提供(或值为空),则调用会在 AON 的共享默认版位下以匿名模式运行:功能可用,但不会获得归因或收入。 |
| response_options | object | 否 | |
| response_options.thinking_mode | boolean | 否 | 设为 false 可从响应中移除每项优惠的 match_reason 说明。 |
详细介绍
AON MCP 服务
让任何支持 MCP 的 Agent 都能推荐真实可购买的产品和服务——每条推荐都附带实时定价和可追踪链接,内容来自 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 端点目前列出五种工具。协议 v1.0 指定了下面四种基础工具;aon_get_category_schema 是可选的 Hosted 类别指导扩展,并非可移植的协议 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 块,Agent 可以据此采取行动。 |
aon_resolve_category | 将自由文本(“徒步靴”“团队聊天软件”)转换为 AON Taxonomy v1 类别 ID——模型无需记忆或臆造这些 ID。 |
aon_get_category_schema | 可选的 Hosted 扩展:返回已解析类别 ID 的决策因素,以便在搜索前提出合适的澄清问题。其独立结果不会将 decision_factors 添加到 Query 请求或响应中。 |
aon_submit_feedback | 记录用户对某项优惠明确表示的“已忽略”/“不感兴趣”——绝不会根据沉默推断。早期脚手架:调用会成功确认收到,但反馈尚未持久化;相关工作流正在逐步推出。 |
aon_manage_watch | 在用户明确提出请求时,恢复(watch)或取消(unwatch)对某项优惠或类别的默认关注。早期脚手架:已成功确认收到,但关注状态尚未持久化。 |
Agent 可从以下设计说明中获益:
- 宽容设计 — 无效值不会导致搜索失败;系统会将其视为“未发送”,并在
extra.hints[]中予以修正。只有格式错误、未知或未启用的 placement、无效 JSON、缺少intent.content或请求正文过大才会导致硬性失败。缺少 placement 不算错误:调用会以匿名模式运行。 - 相关性门控 — 空结果列表也是有效答案,绝不填充无关内容。
- 指导循环 — 后续建议包含一个 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
}'
还没有 placement?请在 Developer Portal 中创建应用和 placement,并将 placement ID(plc_…)保存到 $AON_PLACEMENT_ID。它用于标识你的 placement,可安全用于客户端配置。
若只想试用端点,可以不发送 X-AON-Placement-Id 标头:调用会通过 AON 的共享默认 placement 以匿名模式运行,响应中会包含 extra.identity.mode="anonymous",并且不会带来任何收益——匿名调用产生的点击和转化无法归因到你的应用,也无法事后补记。正式接入流量前,请配置 placement 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 每个应用每分钟允许 60 次 tools/call 请求;握手调用(initialize、tools/list、notifications/*)不计入限制。超出限制的 tools/call 请求会返回 HTTP 429 响应,其中包含 Retry-After 标头和 JSON-RPC 错误 -32000,以便模型读取重试建议。详情请参阅:
速率限制与常见问题。
变现与归因
每个优惠都包含一个可追踪的目标链接(action.payload.url)。
请原样展示该链接——点击和转化会归因到你所放置内容对应的应用,这是开发者收入分成的依据。报告可在开发者门户中查看。
注册表清单
server.json 是此服务的 MCP 注册表清单(架构 2025-12-11,命名空间 pro.aon——已通过 DNS 针对 aon.pro 域名验证)。
相关仓库
protocol— AgentOffer Protocol 规范(规范性文件)schema— JSON 架构、TypeScript 类型、分类体系examples— HTTP / SDK / Agent 集成示例rfcs— 协议演进提案
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。