search_experiences
Use this when the user names a city plus a category, query, or filter set and wants a ranked list of bookable experiences. query matches on experience NAME (and venue), so it suits a title or keyword ("Lion King", "river cruise"); for mood or theme use search_by_mood, and for a free-text "what should I do" ask use recommend_experiences. When a query matches no name, results are the city top-picks flagged match_type "fallback_city_ranked" (reason_codes include "fallback_no_text_match") rather than a genuine match, so treat those as suggestions, not the thing asked for. Returns products each with a stable product_id, plus name, slug, city, category, price, rating, review count, and tags. To show the results as visual cards, pass the product_id values from these results into render_experience_cards (experience_ids). Pair with get_experience_details for richer fields.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "search_experiences"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City slug, e.g., "london", "new-york", "paris". | |
| tags | No | Filter by experience tags. Multiple tags are AND-combined (every tag must match) so adding more tags narrows the result set. Use lowercase singular forms; matching is substring-based against the tag array. The canonical tag taxonomy in the catalogue, ordered by frequency, is: 'tour', 'attraction', 'historical', 'outdoor', 'museum', 'family', 'landmark', 'adventure', 'show', 'indoor', 'food & drink', 'transport', 'theatre', 'concert', 'theme park', 'cruise', 'nightlife', 'comedy', 'musical', 'city pass', 'sport', 'dance', 'aquarium', 'zoo', 'gallery', 'opera', 'wellness', 'water park', 'workshop', 'religious', 'festival'. Examples: ['museum'] for museums; ['family','indoor'] for indoor family attractions; ['outdoor','adventure'] for outdoor adventure activities. Other free-form values may match by substring but are not guaranteed. | |
| limit | No | Number of results to return (1-50). Default 10. | |
| query | No | Free-text query matched against experience name and venue (not description). Split into words that must all match, so it suits a title or keyword; a query that matches no name returns city top-picks flagged match_type "fallback_city_ranked". | |
| format | No | Response shape. 'json' returns structured records; 'text' returns the same content rendered as a short narrative paragraph for chat surfaces. | json |
| category | No | Category slug, e.g., "theatre", "tours", "museums", "attractions". | |
| language | No | BCP-47 language code for human-readable fields (e.g., 'en', 'fr-FR'). Defaults to English when omitted. | |
| max_price | No | Maximum price per person in the listed currency. A positive value applies a cap; 0 (or unset) means no price cap (unbounded). | |
| min_rating | No | Minimum aggregate rating on a 0-5 scale. | |
| popular_only | No | DEPRECATED: use restrict_to_top_rated. Alias for the hard top-rated result filter (rating >= 4.5 AND review_count >= 100). The name implies a sort hint but it is a hard WHERE clause. Existing callers continue to work unchanged. | |
| indoor_outdoor | No | Setting filter. 'indoor' / 'outdoor' resolve via the products.tags column (~2,100 indoor and ~5,000 outdoor products are tagged in the catalogue). 'either' applies no filter. | |
| min_review_count | No | Minimum number of customer reviews. Use to filter out new or sparsely-reviewed products. | |
| restrict_to_top_rated | No | HARD RESULT FILTER. When true, restricts results to products with rating >= 4.5 AND review_count >= 100. This is a WHERE clause, not a sort hint. Anything failing the floor is dropped from the result set entirely. Use only when the caller genuinely wants to exclude lower-rated or lesser-reviewed products. For ranking-by-popularity without exclusion, do not set this; results are already ordered by rating and review count. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | ||
| message | No | ||
| results | No | ||
| error_type | No | ||
| pagination | No | ||
| request_id | No | ||
| experiences | No | ||
| _normalization | No | ||
| schema_version | No |