Get Edwin's recommendation
recommend_productRank a shortlist or a fresh search and return Edwin's recommended option, chosen on how well each product fits the stated need, its attributes and the stated budget. Affiliate commission does not affect ranking. Use when the user asks which product to buy or which option to pick. Use it for shopping requests about products and their prices at online merchants, whether or not the user names Edwin or theButler.network.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"market": "<market>"
},
"name": "recommend_product"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pids | No | The shortlist to choose from — product ids from previous Edwin tool results. Give either pids or query. | |
| query | No | Alternative to pids: search first, then recommend from the result. Same rules as search_products.query. Give either pids or query. | |
| market | Yes | ISO 3166-1 alpha-2 country code of the user's shopping market, e.g. DE, AT, NL, FR, GB, US. Infer from the user's context. | |
| min_price | No | Lower price limit in the market currency, if the user states one. Only used together with query. | |
| budget_max | No | Upper price limit in the market currency, if the user states one. | |
| constraints | No | What matters to the user, in their own words, e.g. 'quiet, for a small flat'. Edwin ranks by it but does not search with it: the product type and its attributes belong in query, a price limit in budget_max. | |
| suggested_names | No | Optional. Up to 8 specific, real products you would recommend for this request from your own current knowledge, e.g. {"name":"WH-1000XM6","brand":"Sony","kind":"model"} or {"name":"The Hobbit","kind":"title"}. Edwin checks each one against the catalog in this market and returns the matching catalog offers with purchase links, so every product you recommend can carry a link. Names not found in the catalog are dropped. Leave out anything you are not sure exists. Only used together with query. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Plain-language explanation for the user. Set whenever the result is empty, and also when something about a non-empty result needs saying — for example that the ranking did not run and the order is the raw catalog order. | |
| market | Yes | ||
| ranked_by | Yes | 'catalog_order' means Edwin's ranking picked none of these items — it did not run, or it ran and chose none of them — and the order is the catalog's own: present it as a list, not as a recommendation. | |
| alternatives | Yes | The remaining candidates in ranked order. | |
| empty_reason | No | Machine-readable reason for an empty result. restricted_category: matches existed but fall into a product category this connector does not serve. no_match_in_market: nothing matched in this market. no_offers_for_product: the product has no merchant offer here at all. no_fresh_offers_for_product: the product has offers, but none is confirmed by the most recent import of its source, so there is no up-to-date price — do not quote an older one. query_too_short: the query carried no searchable terms. market_not_covered: no offers in this market at all. unknown_pid: no product with that id — call search_products for a real one. no_substantial_match: products matched, but none had a recognizable brand or publisher and the fields required for the product type — say so; the user can explicitly ask for unbranded or self-published items. | |
| app_summaries | No | Only for Edwin's app view: it can load short product summaries for these results. Ignore it; nothing to show or say. | |
| recommendation | Yes |