Discover and verify products for a need
find_productsDiscover candidate products for a buyer need. Takes a need in natural language (e.g. "best value home espresso machine", market "TH"), Unless the need is out of scope or live discovery is off or rate-limited, each call reads the verified catalog and also runs live web discovery, which sends the need text to web-search providers. A confirmed live result is returned when there is one; catalog candidates are returned instead when live discovery is unavailable, rate-limited, fails, or confirms no fit. Returns up to 3 candidates with explicit fit accounting.
find_products is the quick candidate-list tool; research_shopping is the full verified-research job. For a specific brand+model, search_catalog is cheaper and returns the same live-lookup block on a miss.
Response fields: • candidates[].verification — "catalog-verified" for a catalog row whose stated requirements each have a receipt, "catalog-candidate" for a catalog starting point whose fit still needs checking, or "live-unverified" for a live page read during this run. • candidates[].status — "resolved" means both identity and the parsed buyer constraints were supported by the cited page; "abstain" means identity or need fit could not be established. Inspect constraint_check for matched, conflicting, and unverified requirements. • candidates[].constraint_check.receipts maps each receipt-backed matched requirement to its supporting source URL and trust label. • Live candidates come from current web-search results, so they are a sample of what the market offers rather than a ranking. • status at the top level — "no_match" means no candidate was confirmed as satisfying the need; "disabled" means live discovery is off and no candidates are returned; "rate_limited" or "unavailable" means no discovery ran and no catalog candidate was found.
• live_discovery.status="unavailable" means receipted catalog candidates were returned while live discovery was unavailable.
Optional market (ISO 3166-1 alpha-2) biases discovery and marketplace checks toward seller pages serving that country and scopes the lookup cache. "Available in " means the seller page serves that market, not that stock is guaranteed.
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": {
"need": "<need>"
},
"name": "find_products"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | Max candidates to verify (each costs a live lookup; capped at 3). | |
| need | Yes | The buyer need in natural language, e.g. "quiet mechanical keyboard for open office" or "best value home espresso machine". | |
| market | No | Buyer market as ISO 3166-1 alpha-2 country code (e.g. "TH"). Biases discovery and marketplace checks toward seller pages serving that country and scopes the cache; availability is not a stock guarantee. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| need | No | ||
| error | No | ||
| market | No | ||
| reason | No | ||
| status | No | ||
| took_ms | No | ||
| guidance | No | ||
| candidates | Yes | ||
| verification | No | ||
| live_discovery | No | ||
| serp_considered | No |