AON — Agent Offer Network
RemoteAbout AON — Agent Offer Network
Real, buyable product and service offers with live pricing and trackable links for any MCP agent
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://api.aon.pro/v1/mcpclaude mcp add --transport http pro-aon https://api.aon.pro/v1/mcp{"mcpServers":{"pro-aon":{"type":"http","url":"https://api.aon.pro/v1/mcp"}}}Open in Cursor{"servers":{"pro-aon":{"type":"http","url":"https://api.aon.pro/v1/mcp"}}}Open in VS Code{"mcpServers":{"pro-aon":{"type":"http","url":"https://api.aon.pro/v1/mcp"}}}{"mcpServers":{"pro-aon":{"serverUrl":"https://api.aon.pro/v1/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
https://api.aon.pro/v1/mcpAuth requiredTools
5| Parameter | Type | Required | Description |
|---|---|---|---|
| sort | enum | No | AON private extension (not part of the AgentOffer protocol). Only recommended is supported today; any other value is treated as unset and reported in extra.hints.recommended |
| intent | object | Yes | |
| intent.origin | array | No | Echo back the query_helper.origin entries of any suggestion the user accepted. |
| intent.content | array | Yes | The user's intent. One item, single line, under 200 characters — a sentence, not a keyword list. |
| intent.signals | object | No | Structured intent signals. They are forwarded upstream and enter the shared query pipeline, but this layer makes NO promise that they change the number or order of results. |
| intent.signals.budget | object | No | |
| intent.signals.budget.max | number | No | Upper price bound the user accepts. |
| intent.signals.budget.currency | string | No | ISO 4217 code, e.g. USD, EUR, JPY. |
| intent.signals.timeframe | enum | No | When the user wants to act.now | this_week | this_month | later |
| intent.signals.purchase_stage | enum | No | How far along the user is.exploring | comparing | ready_to_buy |
| intent.confidence | number | No | Only with inferred_context. Must be greater than 0. |
| intent.provenance | enum | No | Who produced this intent. inferred_context requires confidence; user_expressed must NOT carry confidence.user_expressed | inferred_context |
| context | object | No | |
| context.session | object | No | |
| context.session.recent_topics | array | No | Up to 10 distilled topic phrases (50 chars each) from the recent conversation. |
| context.session.previous_request_id | string | No | data.request_id of the previous round, so offers already shown are not repeated. |
| context.session_id | string | No | Stable, unguessable id for this conversation — use a fresh unique value such as a UUID and reuse it across rounds. With a user identity, cross-round de-duplication engages when both are present; in anonymous mode (no user identity) de-duplication and intent memory are keyed by this id alone, so a guessable value (e.g. 'session-1') would mix your history with other callers'. |
| context.user_profile | object | No | Optional viewer targeting context. location_ids, country and verified_age_over are AgentOffer v1.0 fields; user_pseudo_id is an AON private extension. |
| context.user_profile.country | string | No | Viewer country, uppercase ISO 3166-1 alpha-2 (e.g. US). Used when location_ids is absent. |
| context.user_profile.location_ids | array | No | 1-10 numeric AON Location Registry ids for the viewer's current location, most specific first. Takes precedence over country. Never infer from the user's text. |
| context.user_profile.user_pseudo_id | string | No | AON private extension (not part of the AgentOffer v1.0 context object). Fallback only — prefer the x-aon-user-pseudo-id HTTP header, which always wins over this field. |
| context.user_profile.verified_age_over | integer | No | Integer the integrator has VERIFIED the viewer is at least (e.g. 18). Never guess or infer it. Offers whose min_age is above it are excluded; omit when unverified and age is not evaluated. |
| pagination | object | No | AON private extension (not part of the AgentOffer v1.0 request object). |
| pagination.limit | integer | No | Maximum number of offers to return (default 3, hard cap 20). A spoken count such as "show me 5" may raise this up to 20. |
| pagination.offset | integer | No | Number of offers to skip, for paging through a category with limit=20, offset=0/20/40. |
| request_id | string | No | Your idempotency key. Use an unguessable value (UUID). Reuse it to retry the SAME query; if you change what you are asking for, send a NEW id — otherwise you get the previous answer back with no error. Omit it and every call is treated as new. In anonymous mode (no placement_id) request_id is echoed but never replayed — every call is computed fresh. |
| constraints | object | No | |
| constraints.category_ids | array | No | AON Taxonomy v1 category ids, e.g. finance.credit_lending. An unknown id comes back as a correction, not results. |
| constraints.excluded_category_ids | array | No | AON Taxonomy v1 category ids to leave out of results. Parent ids exclude descendant offer categories. |
| force_offer | boolean | No | The search always stays relevance-gated and returns at least one offer when it is set to true. |
| placement_id | string | No | Optional ad placement id. This argument takes precedence over the X-AON-Placement-Id HTTP header; when omitted, the header supplies the placement. The placement must be active and identifies the application that receives attribution. If neither is provided (or the value is empty), the call runs in anonymous mode under AON's shared default placement: it works, but earns no attribution or revenue. |
| response_options | object | No | |
| response_options.thinking_mode | boolean | No | Set false to drop the per-offer match_reason explanation from the response. |
Details
The maintainer has not added details yet. Check the README in the repository.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.