Search products across merchants
search_productsFind purchasable product matches across merchants in a specified market. Use when the user wants to find or buy something: a need, a category, a budget, a gift idea, the best product of a kind, or the price of a named product. Returns normalized product entities with merchant count, price range and the cheapest current offer per product, each with a link. Each product carries a rang that says whether it matches a name suggested for the request (by you or by Edwin) or is another catalog match. Call get_offers only when the user wants the full merchant list for one product. Queries may be in any language. 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": {
"query": "<query>",
"market": "<market>"
},
"name": "search_products"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many products to return. | |
| query | Yes | The product the user is looking for: product type plus key attributes (size, colour, use case), e.g. 'oled tv 65 inch'. Keep brand and model names exactly as the user wrote them. Product-type terms in German or English retrieve best; other languages are accepted. | |
| fields | No | Restrict the returned product fields to these. `pid`, and on search results `rang` and `grund`, are always included. Leave this out to get the full item including its image — only pass a list if you deliberately want fewer fields. | |
| 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. | |
| budget_max | No | Upper price limit in the market currency, if the user states one. | |
| 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. |
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. | |
| items | Yes | ||
| market | Yes | Canonical market the results are priced for. | |
| mischung | No | How to present the ranks, read from the query: 'anker_vorne' when the user compared with something familiar, 'entdeckung_vorne' when they asked for something less obvious, 'beide' otherwise. The item order is Edwin's ranking when a ranking ran (see note). Absent when no suggested names were looked up for this call. | |
| 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. | |
| wenig_auswahl | No | True when fewer than three products passed the checks for their product type among the matches checked (the note says whether that was all matches or only part). Say that the selection is small instead of padding the answer. Absent when part of the search did not answer in time. |