Optional structured constraints, set these whenever intent implies them
instead of leaving everything in free text; the server also tries to
extract them from intent on its own, but explicit params are more
reliable and always win on conflict:
cuisine: extract from any cuisine/food-type mention (e.g. "italian food",
"thai place", "sushi"), pass the cuisine word itself, e.g. "italian".
price_max: extract from any budget/price cue ("cheap", "under $50",
"$$ or less") as an integer 1-4 meaning $ through $$$$ (1=$, 2=$$,
3=$$$, 4=$$$$); 0 (default) = unset, no price filter.
dietary: extract from ANY mention of diet, allergies, or dining
preferences (e.g. "my wife is vegetarian" -> ["vegetarian"], "gluten
allergy" -> ["gluten-free"]). Bare and "-options"-suffixed forms both
match (e.g. "vegan" matches a restaurant tagged "vegan-options"), so
either is fine, prefer values from this set: vegan, vegan-options,
vegetarian, vegetarian-options, gluten-free-options, dairy-free-options,
organic, plant-based-milk, fair-trade. This is a HARD filter, every
listed value must be satisfiable by a returned restaurant, never
relaxed.
party_size: extract from any group-size mention ("for 6", "party of 4",
"just the two of us" -> 2). 0 (default) = unset.
bookable: True only when the caller specifically needs a restaurant with
a live booking link (e.g. "somewhere I can book right now"). False
(default) means UNFILTERED, it does NOT mean "must not be bookable";
there is no way to require a non-bookable restaurant through this
param.