Taste Match
आधिकारिककेवल स्विट्ज़रलैंड में और उसके आसपास आसानी से रेस्तरां खोजें और बुक करें
Taste Match MCP के साथ आप क्या कर सकते हैं?
- पहले मिलानों की संख्या जानें — पंक्तियाँ प्राप्त करने से पहले पूछें कि फ़िल्टर के समूह से कितने स्थल मेल खाते हैं, इसके लिए
count_restaurantsका उपयोग करें। - विशेषताओं के आधार पर फ़िल्टर करें —
filter_restaurantsसे स्थान, खुलने के दिन या सेवा, व्यंजन, मेनू और पेय विकल्पों या बुकिंग की उपलब्धता के आधार पर स्थल खोजें। - किसी खास व्यंजन को खोजें — मेहमान के अपने शब्दों में मेनू में कोई व्यंजन खोजें और
search_dishesके ज़रिए देखें कि कौन-से स्थल उसे परोसते हैं। - नाम से स्थल खोजें —
search_restaurantsसे नाम या प्रचलित नाम के आधार पर, और चाहें तो किसी क्षेत्र तक सीमित करके, रेस्तराँ खोजें। - लोकप्रिय विकल्प पाएँ —
list_popular_restaurantsसे किसी दिए गए क्षेत्र के सबसे पसंद किए जाने वाले स्थल सूचीबद्ध करें। - मिलते-जुलते स्थल खोजें —
list_similar_restaurantsका उपयोग करके ऐसे स्थल पाएँ जिनका स्वाद आपके पास पहले से मौजूद किसी स्थल की कुंजी से मिलता-जुलता हो।
होस्ट किया गया MCP सर्वर
npx add-mcp 'https://mcp.tastematch.io/'Claude Code, Codex, Cursor और अन्य में इंस्टॉल होता है
दस्तावेज़
| सार्वजनिक सेवा URL | https://mcp.tastematch.io/ |
|---|---|
| गोपनीयता विवरण URL | https://tastematch.io/mcp/privacy.html |
Streamable HTTP MCP Toolkit, जो आपको स्विट्ज़रलैंड और उससे आगे आपके लिए सबसे उपयुक्त रेस्तराँ खोजने में मदद करता है। ऊपर दिए गए URL का उपयोग करके इसे MCP क्लाइंट में जोड़ें। खोज सार्वजनिक है।
प्रमाणीकरण
हमारे MCP सर्वर तक पहुँचने के लिए, आपकी सेवा को /.well-known/oauth-protected-resource/mcp में authorization_servers नाम वाले प्राधिकरण सर्वर पर DCR (OAuth 2.0 Dynamic Client Registration) का उपयोग करके स्वयं पंजीकरण करना होगा; उस सर्वर के अपने मेटाडेटा दस्तावेज़ में registration_endpoint मौजूद है।
प्रमाणीकृत एंडपॉइंट का समर्थन करने के लिए, आपके उपयोगकर्ताओं को OpenID Connect (PKCE के साथ authorization code) के ज़रिए उसी प्राधिकरण सर्वर पर प्रमाणित होना होगा और वही माँगना होगा जो /.well-known/oauth-protected-resource/mcp में scopes_supported सूचीबद्ध करता है।
- 🟢 साइन इन की ज़रूरत नहीं: टूल किसी को भी जवाब देता है।
- 🟡 कुछ आर्ग्युमेंट के लिए साइन इन ज़रूरी है, जैसे
list_recommended_restaurantsresolve_key। अन्यथा कॉल सार्वजनिक हैं और उपयोगकर्ता-विशिष्ट पैरामीटर की अनुमति देती हैं; इन पैरामीटर का उपयोग केवल लॉग इन होने पर सफल होता है। लॉगिन विफलता के बारे में नीचे देखें। - 🔴 साइन इन ज़रूरी है: टूल उपयोगकर्ता की ओर से काम करता है। उपयोगकर्ता अनाम हो सकते हैं। टोकन के बिना कॉल करने पर HTTP 401 और
WWW-Authenticateचुनौती मिलती है, जो/.well-known/oauth-protected-resource/mcpकी ओर संकेत करती है; फिर क्लाइंट OAuth (PKCE के साथ authorization code) से व्यक्ति को साइन इन कराता है। साइन इन किया हुआ व्यक्ति ही पहचान होता है। - स्तर:
anonymousका अर्थ है कि कोई भी साइन इन कर सकता है।reservationमें पहला और अंतिम नाम, एक संपर्क और स्वीकृत शर्तें शामिल हैं, जिन्हें बुकिंग के लिए ज़रूरत पड़ने परpromote_identityएकत्र करता है। - दर सीमा: कॉल की गिनती प्रति साइन इन किए हुए व्यक्ति के हिसाब से होती है, और टोकन के बिना कॉल करने वाले सभी लोग एक ही बजट साझा करते हैं। सीमा से अधिक कॉल कोड के साथ अस्वीकार कर दी जाती है; प्रतीक्षा करें, फिर कम कॉल भेजें।
खोजें
🟢 count_restaurants पढ़ें किसी फ़ैसेट सेट से मेल खाने वाले स्थानों की संख्या, बिना किसी पंक्ति के। फ़िल्टर स्पेस की खोज करते समय filter_restaurants से पहले इसे कॉल करें: यह दस्तावेज़ों के बिना उसी प्रश्न का उत्तर देता है।
रेस्तराँ की गिनती करें
किसी फ़ैसेट सेट से मेल खाने वाले स्थानों की संख्या, बिना किसी पंक्ति के। फ़िल्टर स्पेस की खोज करते समय filter_restaurants से पहले इसे कॉल करें: यह दस्तावेज़ों के बिना उसी प्रश्न का उत्तर देता है।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
drinkOptions | object | पेय सूची में क्या होना चाहिए |
drinkOptions.beerSelection | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
drinkOptions.cocktailSelection | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
drinkOptions.natureWineSelection | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
drinkOptions.wineSelection | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
kitchen | object | यह किस तरह का खाना बनाता है |
kitchen.cuisine | array<string> | व्यंजनों के स्लग; इनमें से कोई एक मेल खाने के लिए पर्याप्त है; सूची get_vocabulary में है |
location | object | कहाँ खोजें: regionId या त्रिज्या वाला कोई बिंदु |
location.lat | number | खोज केंद्र का अक्षांश, lng के साथ |
location.lng | number | खोज केंद्र का देशांतर |
location.radiusMeters | integer | बिंदु के आसपास कितनी दूर तक खोजें |
location.regionId | string | खोजने के लिए क्षेत्र, list_regions या resolve_key से |
menuOptions | object | मेनू में क्या होना चाहिए |
menuOptions.fishDishes | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
menuOptions.glutenFreeDishes | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
menuOptions.halalDishes | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
menuOptions.lactoseFreeDishes | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
menuOptions.meatDishes | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
menuOptions.veganDishes | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
menuOptions.vegetarianDishes | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
nutrition | object | स्थान समग्र रूप से कैसा है |
nutrition.veganRestaurants | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
nutrition.vegetarianRestaurants | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
opening | object | स्थान कब खुला है |
opening.daytime | string | किस सेवा के लिए खुला होना चाहिए: दोपहर का भोजन या रात का खाना |
opening.openOn | array<integer> | जिन दिनों खुला होना चाहिए; रविवार 0 है |
reservation | object | इसकी बुकिंग कैसे की जा सकती है |
reservation.hasWidget | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
reservation.liveAvailability | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Count restaurants"
},
"description": "How many venues a facet set matches, with no rows. Call this before filter_restaurants when exploring a filter space: it answers the same question without the documents.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"drinkOptions": {
"additionalProperties": false,
"description": "what the drinks list must carry",
"properties": {
"beerSelection": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"cocktailSelection": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"natureWineSelection": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"wineSelection": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
}
},
"type": "object"
},
"kitchen": {
"additionalProperties": false,
"description": "the kitchen it cooks",
"properties": {
"cuisine": {
"description": "cuisine slugs, any one of which satisfies it; the list is in get_vocabulary",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"location": {
"additionalProperties": false,
"description": "where to search: a regionId, or a point with a radius",
"properties": {
"lat": {
"description": "latitude of the search centre, paired with lng",
"type": "number"
},
"lng": {
"description": "longitude of the search centre",
"type": "number"
},
"radiusMeters": {
"description": "how far around the point to look",
"type": "integer"
},
"regionId": {
"description": "the region to search in, from list_regions or resolve_key",
"type": "string"
}
},
"type": "object"
},
"menuOptions": {
"additionalProperties": false,
"description": "what the menu must carry",
"properties": {
"fishDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"glutenFreeDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"halalDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"lactoseFreeDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"meatDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"veganDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"vegetarianDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
}
},
"type": "object"
},
"nutrition": {
"additionalProperties": false,
"description": "what the venue is as a whole",
"properties": {
"veganRestaurants": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"vegetarianRestaurants": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
}
},
"type": "object"
},
"opening": {
"additionalProperties": false,
"description": "when the venue is open",
"properties": {
"daytime": {
"description": "the service to be open for: lunch or dinner",
"type": "string"
},
"openOn": {
"description": "weekdays it must be open on, Sunday is 0",
"items": {
"type": "integer"
},
"type": "array"
}
},
"type": "object"
},
"reservation": {
"additionalProperties": false,
"description": "how it can be booked",
"properties": {
"hasWidget": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"liveAvailability": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
}
},
"type": "object"
}
},
"required": [],
"type": "object"
},
"name": "count_restaurants",
"title": "Count restaurants"
}
🟢 filter_restaurants पढ़ें फ़ैसेट के आधार पर स्थान खोजें: कहाँ हैं, कब खुले हैं, किस तरह का खाना बनाते हैं, मेनू और पेय सूची में क्या है, और बुकिंग कैसे की जा सकती है। हर फ़ैसेट परिणाम को उन स्थानों तक सीमित करता है जिनमें वह मौजूद है, इसलिए केवल वही पास करें जो अतिथि ने माँगा है। विवरण और व्यंजनों के मान get_vocabulary से आते हैं — मनगढ़ंत मान को अनदेखा करने के बजाय अस्वीकार किया जाता है। लोकप्रियता के आधार पर क्रमबद्ध; कोई स्वाद वेक्टर लागू नहीं होता।
रेस्तराँ फ़िल्टर करें
फ़ैसेट के आधार पर स्थान खोजें: कहाँ हैं, कब खुले हैं, किस तरह का खाना बनाते हैं, मेनू और पेय सूची में क्या है, और बुकिंग कैसे की जा सकती है। हर फ़ैसेट परिणाम को उन स्थानों तक सीमित करता है जिनमें वह मौजूद है, इसलिए केवल वही पास करें जो अतिथि ने माँगा है। विवरण और व्यंजनों के मान get_vocabulary से आते हैं — मनगढ़ंत मान को अनदेखा करने के बजाय अस्वीकार किया जाता है। लोकप्रियता के आधार पर क्रमबद्ध; कोई स्वाद वेक्टर लागू नहीं होता।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
drinkOptions | object | पेय सूची में क्या होना चाहिए |
drinkOptions.beerSelection | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
drinkOptions.cocktailSelection | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
drinkOptions.natureWineSelection | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
drinkOptions.wineSelection | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
kitchen | object | यह किस तरह का खाना बनाता है |
kitchen.cuisine | array<string> | व्यंजनों के स्लग; इनमें से कोई एक मेल खाने के लिए पर्याप्त है; सूची get_vocabulary में है |
limit | integer | लौटाई जाने वाली पंक्तियाँ, अधिकतम 50 |
location | object | कहाँ खोजें: regionId या त्रिज्या वाला कोई बिंदु |
location.lat | number | खोज केंद्र का अक्षांश, lng के साथ |
location.lng | number | खोज केंद्र का देशांतर |
location.radiusMeters | integer | बिंदु के आसपास कितनी दूर तक खोजें |
location.regionId | string | खोजने के लिए क्षेत्र, list_regions या resolve_key से |
menuOptions | object | मेनू में क्या होना चाहिए |
menuOptions.fishDishes | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
menuOptions.glutenFreeDishes | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
menuOptions.halalDishes | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
menuOptions.lactoseFreeDishes | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
menuOptions.meatDishes | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
menuOptions.veganDishes | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
menuOptions.vegetarianDishes | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
nutrition | object | स्थान समग्र रूप से कैसा है |
nutrition.veganRestaurants | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
nutrition.vegetarianRestaurants | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
offset | integer | छोड़ने वाली पंक्तियाँ; परिणाम में totalCount के साथ पृष्ठों में देखने के लिए |
opening | object | स्थान कब खुला है |
opening.daytime | string | किस सेवा के लिए खुला होना चाहिए: दोपहर का भोजन या रात का खाना |
opening.openOn | array<integer> | जिन दिनों खुला होना चाहिए; रविवार 0 है |
reservation | object | इसकी बुकिंग कैसे की जा सकती है |
reservation.hasWidget | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
reservation.liveAvailability | boolean | true करने पर केवल वे स्थान मिलेंगे जिनमें यह मौजूद है; इसे छोड़ने पर इसके आधार पर फ़िल्टर नहीं होगा |
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Filter restaurants"
},
"description": "Search venues by facet: where, when open, what kitchen, what the menu and the drinks list carry, and how it can be booked. Every facet narrows the result to the venues carrying it, so pass only what the guest asked for. Descriptor and cuisine values come from get_vocabulary — an invented one is refused rather than ignored. Ranked by popularity; no taste vector is applied.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"drinkOptions": {
"additionalProperties": false,
"description": "what the drinks list must carry",
"properties": {
"beerSelection": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"cocktailSelection": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"natureWineSelection": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"wineSelection": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
}
},
"type": "object"
},
"kitchen": {
"additionalProperties": false,
"description": "the kitchen it cooks",
"properties": {
"cuisine": {
"description": "cuisine slugs, any one of which satisfies it; the list is in get_vocabulary",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"limit": {
"description": "rows to return, at most 50",
"type": "integer"
},
"location": {
"additionalProperties": false,
"description": "where to search: a regionId, or a point with a radius",
"properties": {
"lat": {
"description": "latitude of the search centre, paired with lng",
"type": "number"
},
"lng": {
"description": "longitude of the search centre",
"type": "number"
},
"radiusMeters": {
"description": "how far around the point to look",
"type": "integer"
},
"regionId": {
"description": "the region to search in, from list_regions or resolve_key",
"type": "string"
}
},
"type": "object"
},
"menuOptions": {
"additionalProperties": false,
"description": "what the menu must carry",
"properties": {
"fishDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"glutenFreeDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"halalDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"lactoseFreeDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"meatDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"veganDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"vegetarianDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
}
},
"type": "object"
},
"nutrition": {
"additionalProperties": false,
"description": "what the venue is as a whole",
"properties": {
"veganRestaurants": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"vegetarianRestaurants": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
}
},
"type": "object"
},
"offset": {
"description": "rows to skip; with totalCount in the result this pages through them",
"type": "integer"
},
"opening": {
"additionalProperties": false,
"description": "when the venue is open",
"properties": {
"daytime": {
"description": "the service to be open for: lunch or dinner",
"type": "string"
},
"openOn": {
"description": "weekdays it must be open on, Sunday is 0",
"items": {
"type": "integer"
},
"type": "array"
}
},
"type": "object"
},
"reservation": {
"additionalProperties": false,
"description": "how it can be booked",
"properties": {
"hasWidget": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"liveAvailability": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
}
},
"type": "object"
}
},
"required": [],
"type": "object"
},
"name": "filter_restaurants",
"title": "Filter restaurants"
}
🟢 list_popular_restaurants पढ़ें किसी एक क्षेत्र के सबसे पसंद किए गए स्थान। क्षेत्र देना ज़रूरी है: इसके बिना यह हमारे पास मौजूद हर स्थान पढ़ता है।
लोकप्रिय रेस्तराँ की सूची बनाएँ
किसी एक क्षेत्र के सबसे पसंद किए गए स्थान। क्षेत्र देना ज़रूरी है: इसके बिना यह हमारे पास मौजूद हर स्थान पढ़ता है।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
regionId required | string | पढ़ने के लिए क्षेत्र, list_regions से |
limit | integer | लौटाई जाने वाली पंक्तियाँ, अधिकतम 50 |
offset | integer | छोड़ने वाली पंक्तियाँ; परिणाम में totalCount के साथ पृष्ठों में देखने के लिए |
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "List popular restaurants"
},
"description": "The most-liked venues of one region. A region is required: without one this reads every venue we hold.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "rows to return, at most 50",
"type": "integer"
},
"offset": {
"description": "rows to skip; with totalCount in the result this pages through them",
"type": "integer"
},
"regionId": {
"description": "the region to read, from list_regions",
"type": "string"
}
},
"required": [
"regionId"
],
"type": "object"
},
"name": "list_popular_restaurants",
"title": "List popular restaurants"
}
🟡 list_recommended_restaurants पढ़ें साइन इन किए हुए अतिथि के लिए सुझाए गए स्थान, स्वाद से निकटता के क्रम में; किसी के साइन इन करने से पहले ये व्यक्तिगत सुझाव नहीं होते। bookableOnly\ केवल उन स्थानों को रखता है जहाँ मेज़ उपलब्ध है; यह बहुत छोटा समूह है और इसके लिए साइन इन करना ज़रूरी है।
अनुशंसित रेस्तराँ की सूची बनाएँ
साइन इन किए हुए अतिथि के लिए सुझाए गए स्थान, स्वाद से निकटता के क्रम में; किसी के साइन इन करने से पहले ये व्यक्तिगत सुझाव नहीं होते। bookableOnly\ केवल उन स्थानों को रखता है जहाँ मेज़ उपलब्ध है; यह बहुत छोटा समूह है और इसके लिए साइन इन करना ज़रूरी है।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
bookableOnly | boolean | केवल वे स्थान रखें जहाँ अभी उपलब्धता है |
interDiem | integer | bookableOnly के साथ, कितने दिन आगे तक मेज़ उपलब्ध हो सकती है |
limit | integer | लौटाई जाने वाली पंक्तियाँ, अधिकतम 50 |
offset | integer | छोड़ने वाली पंक्तियाँ; परिणाम में totalCount के साथ पृष्ठों में देखने के लिए |
regionId | string | सुझाव देने के लिए क्षेत्र; न देने पर पहचान का अपना क्षेत्र |
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "List recommended restaurants"
},
"description": "Venues recommended for the signed-in guest, closest in taste first; before anyone signs in they are not personal. \`bookableOnly\` keeps only venues with a table free, which is a much smaller set and needs a sign-in.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"bookableOnly": {
"description": "keep only venues with live availability",
"type": "boolean"
},
"interDiem": {
"description": "with bookableOnly, how many days ahead a free table may lie",
"type": "integer"
},
"limit": {
"description": "rows to return, at most 50",
"type": "integer"
},
"offset": {
"description": "rows to skip; with totalCount in the result this pages through them",
"type": "integer"
},
"regionId": {
"description": "the region to recommend in; the identity's own region when omitted",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "list_recommended_restaurants",
"title": "List recommended restaurants"
}
🟢 list_similar_restaurants पढ़ें उन स्थानों को जो आपके पास पहले से मौजूद किसी कुंजी वाले स्थान के स्वाद से मिलते-जुलते हैं; सबसे निकट वाले पहले। sameCategory\ उन्हें उसी भोजन-शैली परिवार तक सीमित रखता है और इसे बंद न करने पर यह चालू रहता है।
मिलते-जुलते रेस्तराँ की सूची बनाएँ
उन स्थानों को जो आपके पास पहले से मौजूद किसी कुंजी वाले स्थान के स्वाद से मिलते-जुलते हैं; सबसे निकट वाले पहले। sameCategory\ उन्हें उसी भोजन-शैली परिवार तक सीमित रखता है और इसे बंद न करने पर यह चालू रहता है।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
restaurantKey required | string | पड़ोसी स्थान खोजने के लिए स्थान |
limit | integer | लौटाई जाने वाली पंक्तियाँ, अधिकतम 50 |
offset | integer | छोड़ने वाली पंक्तियाँ; परिणाम में totalCount के साथ पृष्ठों में देखने के लिए |
sameCategory | boolean | उसी भोजन-शैली परिवार तक सीमित रखें; न देने पर true |
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "List similar restaurants"
},
"description": "Venues close in taste to one you already hold a key for, nearest first. \`sameCategory\` keeps them inside the same kitchen family and is on unless you turn it off.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "rows to return, at most 50",
"type": "integer"
},
"offset": {
"description": "rows to skip; with totalCount in the result this pages through them",
"type": "integer"
},
"restaurantKey": {
"description": "the venue to find neighbours of",
"type": "string"
},
"sameCategory": {
"description": "keep to the same kitchen family; true when omitted",
"type": "boolean"
}
},
"required": [
"restaurantKey"
],
"type": "object"
},
"name": "list_similar_restaurants",
"title": "List similar restaurants"
}
🟢 search_dishes पढ़ें किसी नामित व्यंजन को परोसने वाले स्थान खोजें। व्यंजन को ठीक वैसे ही खोजें जैसे अतिथि ने कहा है—उनके शब्दों और उसी क्रम में। व्यंजन का नाम उसकी पहचान का हिस्सा है, इसलिए उसे दोबारा न लिखें, अनुवाद न करें और छोटा न करें। लंबे शब्दों में वर्तनी की छोटी गलती चल सकती है; बहुत छोटे शब्द बिल्कुल सही होने चाहिए। हर परिणाम में व्यंजन का नाम मेनू पर छपे रूप में दिया जाता है, और exact\ केवल तभी true होता है जब नाम अक्षरशः मेल खाता हो। यह खुलने के समय के बारे में कुछ नहीं जानता—उसके लिए filter_restaurants का उपयोग करें। मेनू का कवरेज आंशिक है: खाली परिणाम का अर्थ है कि हमारे पास मौजूद किसी मेनू में उस व्यंजन का नाम नहीं है, यह नहीं कि कोई उसे बनाता ही नहीं।
व्यंजन खोजें
किसी नामित व्यंजन को परोसने वाले स्थान खोजें। व्यंजन को ठीक वैसे ही खोजें जैसे अतिथि ने कहा है—उनके शब्दों और उसी क्रम में। व्यंजन का नाम उसकी पहचान का हिस्सा है, इसलिए उसे दोबारा न लिखें, अनुवाद न करें और छोटा न करें। लंबे शब्दों में वर्तनी की छोटी गलती चल सकती है; बहुत छोटे शब्द बिल्कुल सही होने चाहिए। हर परिणाम में व्यंजन का नाम मेनू पर छपे रूप में दिया जाता है, और exact\ केवल तभी true होता है जब नाम अक्षरशः मेल खाता हो। यह खुलने के समय के बारे में कुछ नहीं जानता—उसके लिए filter_restaurants का उपयोग करें। मेनू का कवरेज आंशिक है: खाली परिणाम का अर्थ है कि हमारे पास मौजूद किसी मेनू में उस व्यंजन का नाम नहीं है, यह नहीं कि कोई उसे बनाता ही नहीं।
| Parameter | Type | Description |
|---|---|---|
q required | string | व्यंजन, जैसा अतिथि ने उसका नाम बताया |
lat | number | खोज के लिए अक्षांश, lng के साथ |
limit | integer | लौटाई जाने वाली पंक्तियाँ, अधिकतम 50 |
lng | number | खोज के लिए देशांतर |
offset | integer | छोड़ने वाली पंक्तियाँ; परिणाम में totalCount के साथ इनके पृष्ठ देखे जा सकते हैं |
radiusMeters | integer | बिंदु के आसपास कितनी दूर तक देखना है |
regionId | string | खोज को एक क्षेत्र तक सीमित करें |
Wire definition (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Search dishes"
},
"description": "Find the venues that serve a named dish. Search the dish as the guest said it, in their words and their order — the wording of a dish is part of its identity, so do not rephrase, translate or shorten it. Longer words survive a small spelling slip; very short ones must be exact. Every hit quotes the dish as the menu prints it, and \`exact\` is true only where the name matched word for word. This knows nothing of opening hours — use filter_restaurants for that. Menu coverage is partial: an empty result means no menu we hold names that dish, never that nobody cooks it.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"lat": {
"description": "latitude to search around, paired with lng",
"type": "number"
},
"limit": {
"description": "rows to return, at most 50",
"type": "integer"
},
"lng": {
"description": "longitude to search around",
"type": "number"
},
"offset": {
"description": "rows to skip; with totalCount in the result this pages through them",
"type": "integer"
},
"q": {
"description": "the dish as the guest named it",
"type": "string"
},
"radiusMeters": {
"description": "how far around the point to look",
"type": "integer"
},
"regionId": {
"description": "bound the search to one region",
"type": "string"
}
},
"required": [
"q"
],
"type": "object"
},
"name": "search_dishes",
"title": "Search dishes"
}
🟢 search_restaurants read नाम से या अतिथि के अपने शब्दों में बताए गए नाम से स्थान खोजें। कम से कम तीन अक्षर। क्षेत्र पता हो तो खोज को उसी तक सीमित करें। यदि अतिथि ने किसी खास तरह की जगह का वर्णन किया हो, नाम न बताया हो, तो filter_restaurants का उपयोग करें।
रेस्तराँ खोजें
नाम से या अतिथि के अपने शब्दों में बताए गए नाम से स्थान खोजें। कम से कम तीन अक्षर। क्षेत्र पता हो तो खोज को उसी तक सीमित करें। यदि अतिथि ने किसी खास तरह की जगह का वर्णन किया हो, नाम न बताया हो, तो filter_restaurants का उपयोग करें।
| Parameter | Type | Description |
|---|---|---|
text required | string | खोजने के लिए शब्द, कम से कम तीन अक्षर |
limit | integer | लौटाई जाने वाली पंक्तियाँ, अधिकतम 50 |
offset | integer | छोड़ने वाली पंक्तियाँ; परिणाम में totalCount के साथ इनके पृष्ठ देखे जा सकते हैं |
regionId | string | खोज को एक क्षेत्र तक सीमित करें; इसे छोड़ने पर हमारे सभी क्षेत्रों में खोज होगी |
Wire definition (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Search restaurants"
},
"description": "Find venues by name or by what they are called, in the guest's own words. Three characters at least. Bound it to a region when you know one. Use filter_restaurants when the guest described a kind of place rather than named one.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "rows to return, at most 50",
"type": "integer"
},
"offset": {
"description": "rows to skip; with totalCount in the result this pages through them",
"type": "integer"
},
"regionId": {
"description": "bound the search to one region; omitted it searches every region we cover",
"type": "string"
},
"text": {
"description": "what to search for, three characters or more",
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"name": "search_restaurants",
"title": "Search restaurants"
}
PLACE
🟢 list_regions read TasteMatch जिन क्षेत्रों को कवर करता है, उनकी सूची। हर क्षेत्र में वह regionId होता है जिसकी आवश्यकता क्षेत्र-विशिष्ट हर टूल को होती है, और IANA टाइमज़ोन होता है जिसमें वहाँ के स्थानों के खुलने के घंटे और समय-स्लॉट दिए जाते हैं। निकटतम क्षेत्र पहले पाने के लिए कोई बिंदु दें। जो स्थान इनमें से किसी क्षेत्र में नहीं है, वहाँ हमारे पास कोई स्थान नहीं है।
क्षेत्रों की सूची बनाएँ
TasteMatch जिन क्षेत्रों को कवर करता है, उनकी सूची। हर क्षेत्र में वह regionId होता है जिसकी आवश्यकता क्षेत्र-विशिष्ट हर टूल को होती है, और IANA टाइमज़ोन होता है जिसमें वहाँ के स्थानों के खुलने के घंटे और समय-स्लॉट दिए जाते हैं। निकटतम क्षेत्र पहले पाने के लिए कोई बिंदु दें। जो स्थान इनमें से किसी क्षेत्र में नहीं है, वहाँ हमारे पास कोई स्थान नहीं है।
| Parameter | Type | Description |
|---|---|---|
lat | number | दूरी के आधार पर क्रमबद्ध करने के लिए अक्षांश, lng के साथ |
limit | integer | लौटाई जाने वाली पंक्तियाँ, अधिकतम 50 |
lng | number | दूरी के आधार पर क्रमबद्ध करने के लिए देशांतर |
offset | integer | छोड़ने वाली पंक्तियाँ; परिणाम में totalCount के साथ इनके पृष्ठ देखे जा सकते हैं |
Wire definition (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "List regions"
},
"description": "The regions TasteMatch covers. Each carries the regionId every region-scoped tool takes, and the IANA timezone its venues' opening hours and slot times are written on. Pass a point to get them nearest first. A place not in any of these regions has no venues we hold.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"lat": {
"description": "latitude to sort by distance from, paired with lng",
"type": "number"
},
"limit": {
"description": "rows to return, at most 50",
"type": "integer"
},
"lng": {
"description": "longitude to sort by distance from",
"type": "number"
},
"offset": {
"description": "rows to skip; with totalCount in the result this pages through them",
"type": "integer"
}
},
"required": [],
"type": "object"
},
"name": "list_regions",
"title": "List regions"
}
🟢 search_places read अतिथि द्वारा बताए गए कस्बे, ज़िले या मोहल्ले का मिलान उस क्षेत्र से करें जिसमें वह आता है। खाली परिणाम का अर्थ है कि वह स्थान हमारे किसी भी क्षेत्र के बाहर है, यह नहीं कि नाम गलत था।
स्थान खोजें
अतिथि द्वारा बताए गए कस्बे, ज़िले या मोहल्ले का मिलान उस क्षेत्र से करें जिसमें वह आता है। खाली परिणाम का अर्थ है कि वह स्थान हमारे किसी भी क्षेत्र के बाहर है, यह नहीं कि नाम गलत था।
| Parameter | Type | Description |
|---|---|---|
q required | string | स्थान, जैसा अतिथि ने उसका नाम बताया |
countryCode | string | मिलान को सीमित करने के लिए ISO 3166-1 alpha-2 कोड |
limit | integer | लौटाई जाने वाली पंक्तियाँ, अधिकतम 50 |
offset | integer | छोड़ने वाली पंक्तियाँ; परिणाम में totalCount के साथ इनके पृष्ठ देखे जा सकते हैं |
Wire definition (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Search places"
},
"description": "Match a town, district or quarter the guest named to the region that contains it. An empty result means the place is outside every region we cover, not that the name was wrong.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"countryCode": {
"description": "ISO 3166-1 alpha-2 code to restrict the match to",
"type": "string"
},
"limit": {
"description": "rows to return, at most 50",
"type": "integer"
},
"offset": {
"description": "rows to skip; with totalCount in the result this pages through them",
"type": "integer"
},
"q": {
"description": "the place as the guest named it",
"type": "string"
}
},
"required": [
"q"
],
"type": "object"
},
"name": "search_places",
"title": "Search places"
}
RESTAURANT
🟢 get_restaurant read एक स्थान का विवरण पढ़ें। डिफ़ॉल्ट प्रोजेक्शन संक्षिप्त है — नाम, कुंजियाँ, क्षेत्र, पता, विवरण, बुकिंग का तरीका और खुलने के समय का सारांश। भारी हिस्से तभी आते हैं जब आप उन्हें fields\ में नाम से शामिल करें: ContactInformation, MenuCards, MenuCardsV2, labelVector, coverPictures, socialScore, matchInfo, tmType, eventId, businessPro, likesByUser, likesByFollowees, likesUserAvatars, likesFolloweeAvatars। बिना प्रोजेक्शन वाला दस्तावेज़ आपके बाकी कार्य से बड़ा हो सकता है।
रेस्तराँ का विवरण पाएँ
एक स्थान का विवरण पढ़ें। डिफ़ॉल्ट प्रोजेक्शन संक्षिप्त है — नाम, कुंजियाँ, क्षेत्र, पता, विवरण, बुकिंग का तरीका और खुलने के समय का सारांश। भारी हिस्से तभी आते हैं जब आप उन्हें fields\ में नाम से शामिल करें: ContactInformation, MenuCards, MenuCardsV2, labelVector, coverPictures, socialScore, matchInfo, tmType, eventId, businessPro, likesByUser, likesByFollowees, likesUserAvatars, likesFolloweeAvatars। बिना प्रोजेक्शन वाला दस्तावेज़ आपके बाकी कार्य से बड़ा हो सकता है।
| Parameter | Type | Description |
|---|---|---|
restaurantKey required | string | स्थान की कुंजी |
accessType | string | जब अतिथि ने इस स्थान को खोलने के लिए कहा, तो वे यहाँ कैसे पहुँचे — filtered, searched, recommended, similar, popular, spotlight में से एक। तब इस खोलने की क्रिया को उन्हीं के नाम से गिना जाएगा; यदि आप केवल अपने लिए स्थान देख रहे हैं, तो इसे छोड़ दें। |
fields | array<string> | लौटाने के लिए फ़ील्ड; डिफ़ॉल्ट प्रोजेक्शन संक्षिप्त है और कुंजियाँ हमेशा शामिल होती हैं |
Wire definition (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Get restaurant"
},
"description": "Read one venue. The default projection is lean — name, keys, region, address, descriptors, how it can be booked and its opening summary. The heavy parts arrive only when you name them in \`fields\`: ContactInformation, MenuCards, MenuCardsV2, labelVector, coverPictures, socialScore, matchInfo, tmType, eventId, businessPro, likesByUser, likesByFollowees, likesUserAvatars, likesFolloweeAvatars. An unprojected document can be larger than the rest of your task.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"accessType": {
"description": "when the guest asked to open this venue, how they reached it — one of filtered, searched, recommended, similar, popular, spotlight. The open is then counted as theirs; leave it out when you are only checking a venue for yourself.",
"type": "string"
},
"fields": {
"description": "the fields to return; the default projection is lean, and keys are always included",
"items": {
"type": "string"
},
"type": "array"
},
"restaurantKey": {
"description": "the venue's key",
"type": "string"
}
},
"required": [
"restaurantKey"
],
"type": "object"
},
"name": "get_restaurant",
"title": "Get restaurant"
}
🔴 like_restaurant write दर्ज करें कि सक्रिय पहचान को यह स्थान पसंद है। पसंद दर्ज करने से आगे की सिफ़ारिशें बेहतर होती हैं, और यह अतिथि की राय है, आपकी नहीं — वही पसंद दर्ज करें जो उन्होंने बताई।
रेस्तराँ पसंद करें
दर्ज करें कि सक्रिय पहचान को यह स्थान पसंद है। पसंद दर्ज करने से आगे की सिफ़ारिशें बेहतर होती हैं, और यह अतिथि की राय है, आपकी नहीं — वही पसंद दर्ज करें जो उन्होंने बताई।
| Parameter | Type | Description |
|---|---|---|
idempotencyKey required | string | इस लेखन के लिए आपकी अपनी कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
restaurantKey required | string | स्थान की कुंजी |
Wire definition (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Like restaurant"
},
"description": "Record that the acting identity likes this venue. Liking is what makes the recommendations that follow better, and it is the guest's statement, not yours — like what they said they liked.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"restaurantKey": {
"description": "the venue's key",
"type": "string"
}
},
"required": [
"idempotencyKey",
"restaurantKey"
],
"type": "object"
},
"name": "like_restaurant",
"title": "Like restaurant"
}
🔴 submit_restaurant_impressions write हमें बताएँ कि पहचान ने वास्तव में कौन-से स्थान देखे और उनमें से किन पर कार्रवाई की। हर बारी में एक बैच भेजें, और अपनी sessionId पूरी बातचीत में एक ही रखें। जो हुआ वही दर्ज करें, इरादा नहीं: सिफ़ारिशकर्ता इन्हीं संकेतों से सीखता है।
रेस्तराँ के इंप्रेशन सबमिट करें
हमें बताएँ कि पहचान ने वास्तव में कौन-से स्थान देखे और उनमें से किन पर कार्रवाई की। हर बारी में एक बैच भेजें, और अपनी sessionId पूरी बातचीत में एक ही रखें। जो हुआ वही दर्ज करें, इरादा नहीं: सिफ़ारिशकर्ता इन्हीं संकेतों से सीखता है।
| Parameter | Type | Description |
|---|---|---|
idempotencyKey required | string | इस लेखन के लिए आपकी अपनी कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
impressions required | array<object> | जो दिखाया गया या जिस पर कार्रवाई की गई |
impressions[].accessType required | string | filtered, searched, recommended, similar, popular, spotlight में से एक |
impressions[].restaurantKey required | string | |
sessionId required | string | आपकी अपनी UUID, बातचीत के हर बैच के लिए एक ही |
Wire definition (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Submit restaurant impressions"
},
"description": "Tell us which venues the identity actually saw, and which of them it acted on. One batch per turn, with a sessionId of your own that stays the same for the whole conversation. Report what happened, never what you intend: these are the signals the recommender learns from.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"impressions": {
"description": "what was shown or acted on",
"items": {
"additionalProperties": false,
"properties": {
"accessType": {
"description": "one of filtered, searched, recommended, similar, popular, spotlight",
"type": "string"
},
"restaurantKey": {
"type": "string"
}
},
"required": [
"accessType",
"restaurantKey"
],
"type": "object"
},
"type": "array"
},
"sessionId": {
"description": "a UUID of your own, the same for every batch in one conversation",
"type": "string"
}
},
"required": [
"idempotencyKey",
"impressions",
"sessionId"
],
"type": "object"
},
"name": "submit_restaurant_impressions",
"title": "Submit restaurant impressions"
}
🔴 unlike_restaurant write पसंद वापस लें। स्थान कैटलॉग में बना रहता है; केवल पहचान की उसके बारे में राय हटाई जाती है।
रेस्तराँ को नापसंद करें
पसंद वापस लें। स्थान कैटलॉग में बना रहता है; केवल पहचान की उसके बारे में राय हटाई जाती है।
| Parameter | Type | Description |
|---|---|---|
idempotencyKey required | string | इस लेखन के लिए आपकी अपनी कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
restaurantKey required | string | स्थान की कुंजी |
Wire definition (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Unlike restaurant"
},
"description": "Take back a like. The venue stays in the catalogue; only the identity's opinion of it is removed.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"restaurantKey": {
"description": "the venue's key",
"type": "string"
}
},
"required": [
"idempotencyKey",
"restaurantKey"
],
"type": "object"
},
"name": "unlike_restaurant",
"title": "Unlike restaurant"
}
AVAILABILITY
🟢 get_reservation_info read यह स्थान आरक्षण कैसे लेता है। mode\ instant होता है जब टेबल की पुष्टि तुरंत हो जाती है, request तब होता है जब स्थान के किसी व्यक्ति को स्वीकार करना पड़ता है, और यदि स्थान आरक्षण लेता ही नहीं है तो टूल मना कर देता है। इसे पहले पढ़ें: इससे तय होता है कि create_instant_reservation कॉल करना है या create_reservation_request। maxPeople\ वह सबसे बड़ी पार्टी है जिसे हम कहीं भी बैठा सकते हैं। यह केवल जानकारी पढ़ता है — न बुकिंग करता है, न कुछ दर्ज करता है।
आरक्षण की जानकारी पाएँ
यह स्थान आरक्षण कैसे लेता है। mode\ instant होता है जब टेबल की पुष्टि तुरंत हो जाती है, request तब होता है जब स्थान के किसी व्यक्ति को स्वीकार करना पड़ता है, और यदि स्थान आरक्षण लेता ही नहीं है तो टूल मना कर देता है। इसे पहले पढ़ें: इससे तय होता है कि create_instant_reservation कॉल करना है या create_reservation_request। maxPeople\ वह सबसे बड़ी पार्टी है जिसे हम कहीं भी बैठा सकते हैं। यह केवल जानकारी पढ़ता है — न बुकिंग करता है, न कुछ दर्ज करता है।
| Parameter | Type | Description |
|---|---|---|
restaurantKey required | string | स्थान की कुंजी |
Wire definition (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Get reservation info"
},
"description": "How this venue takes reservations. \`mode\` is instant when tables are confirmed live, request when someone at the venue has to accept, and the tool refuses when the venue takes none at all. Read this first: it decides whether you call create_instant_reservation or create_reservation_request. \`maxPeople\` is the largest party we can place anywhere. This reads only — it books nothing and records nothing.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"restaurantKey": {
"description": "the venue's key",
"type": "string"
}
},
"required": [
"restaurantKey"
],
"type": "object"
},
"name": "get_reservation_info",
"title": "Get reservation info"
}
🟢 list_availability_slots read किसी एक स्थान पर किसी एक दिन के लिए उपलब्ध टेबल। समय स्थान की अपनी स्थानीय घड़ी के अनुसार हैं और किसी तय अंतराल पर नहीं होते — यहाँ दिखा समय ही बुक करें, अपनी चुनी हुई कोई गोल संख्या नहीं। request-मोड वाला स्थान इसके बजाय windows\ में जवाब देता है: वे समय-अवधियाँ जिनके भीतर वह अनुरोध पर विचार करेगा। दोनों खाली हों तो उस दिन स्थान बंद है या बुकिंग की समय-सीमा बीत चुकी है।
उपलब्धता स्लॉट की सूची बनाएँ
किसी एक स्थान पर किसी एक दिन के लिए उपलब्ध टेबल। समय स्थान की अपनी स्थानीय घड़ी के अनुसार हैं और किसी तय अंतराल पर नहीं होते — यहाँ दिखा समय ही बुक करें, अपनी चुनी हुई कोई गोल संख्या नहीं। request-मोड वाला स्थान इसके बजाय windows\ में जवाब देता है: वे समय-अवधियाँ जिनके भीतर वह अनुरोध पर विचार करेगा। दोनों खाली हों तो उस दिन स्थान बंद है या बुकिंग की समय-सीमा बीत चुकी है।
| Parameter | Type | Description |
|---|---|---|
date required | string | पढ़ने का दिन, क्षेत्र के UTC ऑफ़सेट के साथ RFC3339 |
restaurantKey required | string | स्थान की कुंजी |
pax | integer | पार्टी का आकार, इससे छोटे स्लॉट हटाने के लिए |
Wire definition (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "List availability slots"
},
"description": "The tables free at one venue on one day. Times are the venue's own wall clock, and they sit on no fixed grid — book a time you read here rather than a round number you chose. A request-mode venue answers in \`windows\` instead: the spans it will consider a request inside. Both empty means shut that day, or past the booking horizon.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"date": {
"description": "the day to read, RFC3339 with the region's UTC offset",
"type": "string"
},
"pax": {
"description": "party size, to drop slots too small for it",
"type": "integer"
},
"restaurantKey": {
"description": "the venue's key",
"type": "string"
}
},
"required": [
"date",
"restaurantKey"
],
"type": "object"
},
"name": "list_availability_slots",
"title": "List availability slots"
}
RESERVATION
🔴 cancel_reservation destructive पहचान के स्वामित्व वाला आरक्षण रद्द करें। इसे वापस नहीं लिया जा सकता और टेबल छोड़ दी जाएगी। पहले आरक्षण पढ़ें, अतिथि को स्थान और समय दोहराकर बताएँ, उनकी पुष्टि की प्रतीक्षा करें, फिर दोनों यहाँ दोहराएँ: confirmRestaurantName\ और confirmDateTime\ का रिकॉर्ड में मौजूद आरक्षण से मेल खाना ज़रूरी है, वरना कॉल अस्वीकार हो जाएगी। केवल कुंजी के आधार पर कभी रद्द न करें, चाहे आपको उस पर कितना भी भरोसा हो।
आरक्षण रद्द करें
पहचान के स्वामित्व वाला आरक्षण रद्द करें। इसे वापस नहीं लिया जा सकता और टेबल छोड़ दी जाएगी। पहले आरक्षण पढ़ें, अतिथि को स्थान और समय दोहराकर बताएँ, उनकी पुष्टि की प्रतीक्षा करें, फिर दोनों यहाँ दोहराएँ: confirmRestaurantName\ और confirmDateTime\ का रिकॉर्ड में मौजूद आरक्षण से मेल खाना ज़रूरी है, वरना कॉल अस्वीकार हो जाएगी। केवल कुंजी के आधार पर कभी रद्द न करें, चाहे आपको उस पर कितना भी भरोसा हो।
| Parameter | Type | Description |
|---|---|---|
confirmDateTime required | string | आरक्षण का समय, जैसा आपने अतिथि को बताया, RFC3339 |
confirmRestaurantName required | string | स्थान का नाम, जैसा आपने अतिथि को बताया |
idempotencyKey required | string | इस लेखन के लिए आपकी अपनी कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
reservationKey required | string | रद्द किया जाने वाला आरक्षण, list_reservations के स्वामित्व वाले सेट से |
Wire definition (tools/list)
{
"annotations": {
"destructiveHint": true,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Cancel reservation"
},
"description": "Cancel a reservation the identity owns. This cannot be undone and the table is given up. Read the reservation first, say the venue and the time back to the guest, wait for them, and then echo both here: \`confirmRestaurantName\` and \`confirmDateTime\` must match the reservation on file or the call is refused. Never cancel on a key alone, however sure you are of it.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"confirmDateTime": {
"description": "the reservation's time as you said it to the guest, RFC3339",
"type": "string"
},
"confirmRestaurantName": {
"description": "the venue's name as you said it to the guest",
"type": "string"
},
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"reservationKey": {
"description": "the reservation to cancel, from the owned set of list_reservations",
"type": "string"
}
},
"required": [
"confirmDateTime",
"confirmRestaurantName",
"idempotencyKey",
"reservationKey"
],
"type": "object"
},
"name": "cancel_reservation",
"title": "Cancel reservation"
}
🔴 create_instant_reservation write अभी उपलब्ध टेबल बुक करें। यह instant स्थानों के लिए है और लौटने पर टेबल की पुष्टि हो जाती है। list_availability_slots से पढ़ा हुआ dateTime\ बुक करें — स्थान के स्लॉट किसी तय अंतराल पर नहीं होते, इसलिए गोल संख्या आम तौर पर उनमें से एक नहीं होती। approxMinutes\ को 0 ही रहने दें, जब तक अतिथि ने लचीले समय की बात न कही हो: गैर-शून्य मान से स्थान पास का समय बुक कर सकता है, और जवाब में adjusted\ तथा bookedDate\ इसकी जानकारी देते हैं। बुकिंग संग्रहीत पहचान पर होती है, जिसमें instant स्थान के लिए ईमेल और फ़ोन दोनों होना ज़रूरी है।
तत्काल आरक्षण बनाएँ
अभी उपलब्ध कोई टेबल लें। यह तुरंत बुकिंग करने वाले स्थलों के लिए है, और लौटने पर टेबल की पुष्टि हो जाती है। list_availability_slots से पढ़ा गया dateTime\ बुक करें — स्थल के स्लॉट किसी निश्चित अंतराल पर नहीं होते, इसलिए कोई गोल समय आम तौर पर उनमें शामिल नहीं होता। approxMinutes\ को 0 ही रहने दें, जब तक अतिथि ने न कहा हो कि वे समय के मामले में लचीले हैं: शून्य से अलग मान होने पर स्थल इसके बजाय आसपास का समय बुक कर सकता है, और जवाब में adjusted\ तथा bookedDate\ में इसकी जानकारी दी जाती है। बुकिंग सहेजी गई पहचान के आधार पर होती है; तुरंत बुकिंग करने वाले स्थल के लिए इसमें ईमेल और फ़ोन, दोनों होना ज़रूरी है।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
dateTime आवश्यक | string | बुक किया जाने वाला स्लॉट, क्षेत्र के UTC ऑफ़सेट के साथ RFC3339 प्रारूप में, जैसा list_availability_slots से पढ़ा गया हो |
idempotencyKey आवश्यक | string | इस लेखन के लिए आपकी अपनी कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
pax आवश्यक | integer | पार्टी का आकार |
restaurantKey आवश्यक | string | स्थल की कुंजी |
approxMinutes | integer | dateTime से कितनी दूरी तक स्थल बुक कर सकता है; 0 का अर्थ है यही समय या कुछ नहीं |
areaId | string | बैठने का क्षेत्र, आपके चुने स्लॉट से; यह खोज को सीमित करता है और बुकिंग का समय कभी नहीं बदलता |
comment | string | अतिथि के शब्दों में स्थल के लिए एक नोट |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Create instant reservation"
},
"description": "Take a table that is free now. This is for instant venues and the table is confirmed when it returns. Book a \`dateTime\` you read from list_availability_slots — the venue's slots sit on no grid, so a round number is usually not one of them. Leave \`approxMinutes\` at 0 unless the guest said they are flexible: a non-zero value lets the venue book a nearby time instead, and the answer says so in \`adjusted\` and \`bookedDate\`. The booking runs on the stored identity, which needs both an email and a phone for an instant venue.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"approxMinutes": {
"description": "how far from dateTime the venue may book instead; 0 means this time or nothing",
"type": "integer"
},
"areaId": {
"description": "the area to seat in, from the slot you chose; it narrows the search and never moves the booking",
"type": "string"
},
"comment": {
"description": "a note for the venue, in the guest's words",
"type": "string"
},
"dateTime": {
"description": "the slot to take, RFC3339 with the region's UTC offset, as read from list_availability_slots",
"type": "string"
},
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"pax": {
"description": "party size",
"type": "integer"
},
"restaurantKey": {
"description": "the venue's key",
"type": "string"
}
},
"required": [
"dateTime",
"idempotencyKey",
"pax",
"restaurantKey"
],
"type": "object"
},
"name": "create_instant_reservation",
"title": "Create instant reservation"
}
🔴 create_reservation_offer लिखें ऐसे स्थल पर बुकिंग शुरू करें जो अपने विजेट के ज़रिए बुकिंग करता है। यह एक लेखन क्रिया है: यह सक्रिय पहचान के नाम से एक ड्राफ़्ट बनाता है और अतिथि के लिए उसे पूरा करने हेतु एक बार इस्तेमाल होने वाला widgetUrl\ जारी करता है। URL अतिथि को दें, फिर लौटाए गए reservationKey\ पर get_reservation_status को बार-बार कॉल करें। हर बुकिंग प्रयास के लिए इसे एक बार कॉल करें — दूसरी कॉल से दूसरा ड्राफ़्ट बनता है। जो स्थल सीधे बुकिंग करता है, उसे ऑफ़र की ज़रूरत नहीं होती: इसके बजाय create_instant_reservation या create_reservation_request का उपयोग करें।
बुकिंग ऑफ़र बनाएँ
ऐसे स्थल पर बुकिंग शुरू करें जो अपने विजेट के ज़रिए बुकिंग करता है। यह एक लेखन क्रिया है: यह सक्रिय पहचान के नाम से एक ड्राफ़्ट बनाता है और अतिथि के लिए उसे पूरा करने हेतु एक बार इस्तेमाल होने वाला widgetUrl\ जारी करता है। URL अतिथि को दें, फिर लौटाए गए reservationKey\ पर get_reservation_status को बार-बार कॉल करें। हर बुकिंग प्रयास के लिए इसे एक बार कॉल करें — दूसरी कॉल से दूसरा ड्राफ़्ट बनता है। जो स्थल सीधे बुकिंग करता है, उसे ऑफ़र की ज़रूरत नहीं होती: इसके बजाय create_instant_reservation या create_reservation_request का उपयोग करें।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
idempotencyKey आवश्यक | string | इस लेखन के लिए आपकी अपनी कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
restaurantKey आवश्यक | string | स्थल की कुंजी |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Create reservation offer"
},
"description": "Open a booking at a venue that books through its own widget. This writes: it mints a draft attributed to the acting identity and a single-use \`widgetUrl\` for the guest to finish in. Hand the URL to the guest, then poll get_reservation_status on the \`reservationKey\` it returns. Call it once per booking attempt — a second call mints a second draft. A venue that books natively needs no offer: use create_instant_reservation or create_reservation_request instead.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"restaurantKey": {
"description": "the venue's key",
"type": "string"
}
},
"required": [
"idempotencyKey",
"restaurantKey"
],
"type": "object"
},
"name": "create_reservation_offer",
"title": "Create reservation offer"
}
🔴 create_reservation_request लिखें स्थल से टेबल का अनुरोध करें। यह अनुरोध-मोड वाले स्थलों के लिए है: आरक्षण लंबित स्थिति में लौटता है और स्थल का कोई व्यक्ति इसे स्वीकार या अस्वीकार करता है, इसलिए अतिथि को बताएँ कि टेबल अभी पक्की नहीं है। समय, list_availability_slots द्वारा बताई गई किसी एक समय-सीमा के भीतर होना चाहिए। बुकिंग सहेजी गई पहचान के आधार पर होती है — नाम और संपर्क जानकारी रिकॉर्ड से ली जाती है, इस कॉल से नहीं।
आरक्षण अनुरोध बनाएँ
स्थल से टेबल का अनुरोध करें। यह अनुरोध-मोड वाले स्थलों के लिए है: आरक्षण लंबित स्थिति में लौटता है और स्थल का कोई व्यक्ति इसे स्वीकार या अस्वीकार करता है, इसलिए अतिथि को बताएँ कि टेबल अभी पक्की नहीं है। समय, list_availability_slots द्वारा बताई गई किसी एक समय-सीमा के भीतर होना चाहिए। बुकिंग सहेजी गई पहचान के आधार पर होती है — नाम और संपर्क जानकारी रिकॉर्ड से ली जाती है, इस कॉल से नहीं।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
dateTime आवश्यक | string | अनुरोधित समय, क्षेत्र के UTC ऑफ़सेट के साथ RFC3339 प्रारूप में |
idempotencyKey आवश्यक | string | इस लेखन के लिए आपकी अपनी कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
pax आवश्यक | integer | पार्टी का आकार |
restaurantKey आवश्यक | string | स्थल की कुंजी |
comment | string | अतिथि के शब्दों में स्थल के लिए एक नोट |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Create reservation request"
},
"description": "Ask a venue for a table. This is for request-mode venues: the reservation comes back pending and someone at the venue accepts or declines it, so tell the guest it is not yet a table. The time must fall inside one of the windows list_availability_slots reported. The booking runs on the stored identity — its name and contact are read from the record, not from this call.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"comment": {
"description": "a note for the venue, in the guest's words",
"type": "string"
},
"dateTime": {
"description": "the time asked for, RFC3339 with the region's UTC offset",
"type": "string"
},
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"pax": {
"description": "party size",
"type": "integer"
},
"restaurantKey": {
"description": "the venue's key",
"type": "string"
}
},
"required": [
"dateTime",
"idempotencyKey",
"pax",
"restaurantKey"
],
"type": "object"
},
"name": "create_reservation_request",
"title": "Create reservation request"
}
🔴 get_reservation_status पढ़ें सक्रिय पहचान के एक आरक्षण की स्थिति। ऑफ़र के बाद इसे बार-बार कॉल करें: विजेट के ज़रिए की गई बुकिंग तभी वास्तविक बनती है जब स्थल इसकी पुष्टि करता है, और स्थिति से ही इसकी जानकारी मिलती है।
आरक्षण की स्थिति प्राप्त करें
सक्रिय पहचान के एक आरक्षण की स्थिति। ऑफ़र के बाद इसे बार-बार कॉल करें: विजेट के ज़रिए की गई बुकिंग तभी वास्तविक बनती है जब स्थल इसकी पुष्टि करता है, और स्थिति से ही इसकी जानकारी मिलती है।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
reservationKey आवश्यक | string | आरक्षण की कुंजी, list_reservations से |
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Get reservation status"
},
"description": "Where one reservation of the acting identity stands. Poll this after an offer: a widget booking becomes real only once the venue confirms it, and the status is how that arrives.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"reservationKey": {
"description": "the reservation's key, from list_reservations",
"type": "string"
}
},
"required": [
"reservationKey"
],
"type": "object"
},
"name": "get_reservation_status",
"title": "Get reservation status"
}
🔴 list_reservation_slots पढ़ें मौजूदा आरक्षण को किस समय पर बदला जा सकता है। यह list_availability_slots से अलग सवाल है: इसका दायरा आरक्षण और उन विकल्पों तक सीमित है जिनमें स्थल इसे बदलने देगा। केवल लाइव उपलब्धता वाले स्थल पर स्वीकार किया गया आरक्षण ही बदला जा सकता है।
आरक्षण स्लॉट सूचीबद्ध करें
मौजूदा आरक्षण को किस समय पर बदला जा सकता है। यह list_availability_slots से अलग सवाल है: इसका दायरा आरक्षण और उन विकल्पों तक सीमित है जिनमें स्थल इसे बदलने देगा। केवल लाइव उपलब्धता वाले स्थल पर स्वीकार किया गया आरक्षण ही बदला जा सकता है।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
reservationKey आवश्यक | string | बदला जाने वाला आरक्षण, list_reservations से |
fromDate | string | देखने का पहला दिन, RFC3339 प्रारूप में; न देने पर आरक्षण का अपना दिन |
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "List reservation slots"
},
"description": "Where an existing reservation could move to. This is a different question from list_availability_slots: it is scoped to the reservation and to what the venue will let it become. Only an accepted reservation at a venue with live availability can move.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"fromDate": {
"description": "the first day to look at, RFC3339; the reservation's own day when omitted",
"type": "string"
},
"reservationKey": {
"description": "the reservation to move, from list_reservations",
"type": "string"
}
},
"required": [
"reservationKey"
],
"type": "object"
},
"name": "list_reservation_slots",
"title": "List reservation slots"
}
🔴 list_reservations पढ़ें सक्रिय पहचान के सभी आरक्षण। owned\ पर कार्रवाई की जा सकती है — लेखन टूल में उन्हीं कुंजियों का उपयोग होता है। foundByEmail\ किसी दूसरे मालिक को सौंप दिया गया था: इसे इसलिए दिखाया जाता है ताकि आप इसके बारे में बात कर सकें, लेकिन इस पर हर लेखन अस्वीकार कर दिया जाता है।
आरक्षण सूचीबद्ध करें
सक्रिय पहचान के सभी आरक्षण। owned\ पर कार्रवाई की जा सकती है — लेखन टूल में उन्हीं कुंजियों का उपयोग होता है। foundByEmail\ किसी दूसरे मालिक को सौंप दिया गया था: इसे इसलिए दिखाया जाता है ताकि आप इसके बारे में बात कर सकें, लेकिन इस पर हर लेखन अस्वीकार कर दिया जाता है।
कोई पैरामीटर नहीं।
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "List reservations"
},
"description": "Every reservation the acting identity holds. \`owned\` is actionable — those keys are the ones the write tools take. \`foundByEmail\` was reassigned to another owner: it is shown so you can speak about it, and every write on it is refused.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
},
"name": "list_reservations",
"title": "List reservations"
}
🔴 update_reservation लिखें पहचान के स्वामित्व वाला आरक्षण बदलें या पार्टी का आकार बदलें। केवल वही बताएँ जो बदल रहा है। नया समय, उस आरक्षण के लिए दिए गए list_reservation_slots विकल्पों में से एक होना चाहिए।
आरक्षण अपडेट करें
पहचान के स्वामित्व वाला आरक्षण बदलें या पार्टी का आकार बदलें। केवल वही बताएँ जो बदल रहा है। नया समय, उस आरक्षण के लिए दिए गए list_reservation_slots विकल्पों में से एक होना चाहिए।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
idempotencyKey आवश्यक | string | इस लेखन के लिए आपकी अपनी कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
reservationKey आवश्यक | string | बदला जाने वाला आरक्षण, list_reservations के स्वामित्व वाले सेट से |
dateTime | string | नया समय, क्षेत्र के UTC ऑफ़सेट के साथ RFC3339 प्रारूप में |
pax | integer | पार्टी का नया आकार |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Update reservation"
},
"description": "Move a reservation the identity owns, or change its party size. Name only what changes. A new time must be one list_reservation_slots offered for that reservation.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"dateTime": {
"description": "the new time, RFC3339 with the region's UTC offset",
"type": "string"
},
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"pax": {
"description": "the new party size",
"type": "integer"
},
"reservationKey": {
"description": "the reservation to change, from the owned set of list_reservations",
"type": "string"
}
},
"required": [
"idempotencyKey",
"reservationKey"
],
"type": "object"
},
"name": "update_reservation",
"title": "Update reservation"
}
पहचान
🔴 get_identity पढ़ें वह पहचान जिसके लिए आप कार्रवाई कर रहे हैं। अतिथि से कुछ भी पूछने से पहले इसे पढ़ें: फ़ाइल में पहले से मौजूद मान कभी बदला नहीं जाता, और जो जानकारी हमारे पास पहले से है उसे दोबारा पूछना ऐसा लगता है मानो आप सुन नहीं रहे।
पहचान प्राप्त करें
वह पहचान जिसके लिए आप कार्रवाई कर रहे हैं। अतिथि से कुछ भी पूछने से पहले इसे पढ़ें: फ़ाइल में पहले से मौजूद मान कभी बदला नहीं जाता, और जो जानकारी हमारे पास पहले से है उसे दोबारा पूछना ऐसा लगता है मानो आप सुन नहीं रहे।
कोई पैरामीटर नहीं।
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Get identity"
},
"description": "The identity you are acting for. Read it before asking the guest for anything: a value already on file is never replaced, and asking again for what we hold reads as not listening.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
},
"name": "get_identity",
"title": "Get identity"
}
🟢 get_session पढ़ें यह कनेक्शन किन चीज़ों तक पहुँचता है: इसके लिए उपलब्ध यात्राएँ और वह साइन-इन किया हुआ व्यक्ति जिसके लिए आप कार्रवाई करते हैं, साथ ही उसका स्तर — acting\ तब तक अनुपस्थित रहता है जब तक कोई साइन इन न करे। जब यह स्पष्ट न हो कि कोई साइन इन है या नहीं, तो इसे पहले कॉल करें और यह पढ़ें कि मौजूदा स्तर में जो भी जानकारी अधूरी है, उसे जुटाने वाला टूल कौन-सा है: climbWith\।
सत्र प्राप्त करें
यह कनेक्शन किन चीज़ों तक पहुँचता है: इसके लिए उपलब्ध यात्राएँ और वह साइन-इन किया हुआ व्यक्ति जिसके लिए आप कार्रवाई करते हैं, साथ ही उसका स्तर — acting\ तब तक अनुपस्थित रहता है जब तक कोई साइन इन न करे। जब यह स्पष्ट न हो कि कोई साइन इन है या नहीं, तो इसे पहले कॉल करें और यह पढ़ें कि मौजूदा स्तर में जो भी जानकारी अधूरी है, उसे जुटाने वाला टूल कौन-सा है: climbWith\।
कोई पैरामीटर नहीं।
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Get session"
},
"description": "What this connection reaches: the journeys open to it, and the signed-in person you act for with their rung — \`acting\` is absent until someone signs in. Call it first when unsure whether anyone is signed in, and read \`climbWith\` for the tool that collects whatever the current rung is missing.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
},
"name": "get_session",
"title": "Get session"
}
🔴 promote_identity लिखें पहचान को आरक्षण करने योग्य स्तर तक पहुँचाएँ और पहचान में जो जानकारी नहीं है, वह दें: पहला और अंतिम नाम, संपर्क का एक माध्यम और स्वीकार की गई शर्तें। केवल वही भेजें जो अतिथि ने इस बातचीत में बताया हो। तुरंत बुकिंग करने वाले स्थल के लिए ईमेल और फ़ोन, दोनों ज़रूरी हैं, इसलिए जब अतिथि पक्की टेबल चाहता हो तो दोनों जानकारी लें।
पहचान का स्तर बढ़ाएँ
पहचान को आरक्षण करने योग्य स्तर तक पहुँचाएँ और पहचान में जो जानकारी नहीं है, वह दें: पहला और अंतिम नाम, संपर्क का एक माध्यम और स्वीकार की गई शर्तें। केवल वही भेजें जो अतिथि ने इस बातचीत में बताया हो। तुरंत बुकिंग करने वाले स्थल के लिए ईमेल और फ़ोन, दोनों ज़रूरी हैं, इसलिए जब अतिथि पक्की टेबल चाहता हो तो दोनों जानकारी लें।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
idempotencyKey आवश्यक | string | इस लेखन के लिए आपकी अपनी कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
acceptTerms | boolean | true जब अतिथि https://www.tastematch.io/agb पर दी गई शर्तें स्वीकार करे |
email | string | संपर्क ईमेल |
firstName | string | अतिथि का पहला नाम |
lastName | string | अतिथि का अंतिम नाम |
phone | string | अंतरराष्ट्रीय प्रारूप में संपर्क फ़ोन |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Promote identity"
},
"description": "Climb to the rung that can reserve, by supplying what the identity is missing: a first and last name, one contact channel, and accepted Terms. Only send what the guest told you in this conversation. An instant venue needs both an email and a phone, so collect both when the guest wants a confirmed table.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"acceptTerms": {
"description": "true when the guest accepts the Terms at https://www.tastematch.io/agb",
"type": "boolean"
},
"email": {
"description": "contact email",
"type": "string"
},
"firstName": {
"description": "the guest's first name",
"type": "string"
},
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"lastName": {
"description": "the guest's last name",
"type": "string"
},
"phone": {
"description": "contact phone in international format",
"type": "string"
}
},
"required": [
"idempotencyKey"
],
"type": "object"
},
"name": "promote_identity",
"title": "Promote identity"
}
🔴 update_identity लिखें पहचान की जानकारी ठीक करें या पूरी करें। खाली फ़ील्ड भरा जाता है और गलत फ़ील्ड सुधारा जाता है, लेकिन अतिथि द्वारा सत्यापित संपर्क माध्यम यहाँ से बदला नहीं जा सकता। केवल बदली हुई जानकारी भेजें।
पहचान अपडेट करें
पहचान की जानकारी ठीक करें या पूरी करें। खाली फ़ील्ड भरा जाता है और गलत फ़ील्ड सुधारा जाता है, लेकिन अतिथि द्वारा सत्यापित संपर्क माध्यम यहाँ से बदला नहीं जा सकता। केवल बदली हुई जानकारी भेजें।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
idempotencyKey आवश्यक | string | इस लेखन के लिए आपकी अपनी कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
acceptTerms | boolean | true जब अतिथि https://www.tastematch.io/agb पर दी गई शर्तें स्वीकार करे |
email | string | संपर्क ईमेल |
firstName | string | अतिथि का पहला नाम |
lastName | string | अतिथि का अंतिम नाम |
phone | string | अंतरराष्ट्रीय प्रारूप में संपर्क फ़ोन |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Update identity"
},
"description": "Correct or complete the identity. A blank field is filled and a wrong one is corrected, but a channel the guest has validated cannot be replaced from here. Send only what changed.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"acceptTerms": {
"description": "true when the guest accepts the Terms at https://www.tastematch.io/agb",
"type": "boolean"
},
"email": {
"description": "contact email",
"type": "string"
},
"firstName": {
"description": "the guest's first name",
"type": "string"
},
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"lastName": {
"description": "the guest's last name",
"type": "string"
},
"phone": {
"description": "contact phone in international format",
"type": "string"
}
},
"required": [
"idempotencyKey"
],
"type": "object"
},
"name": "update_identity",
"title": "Update identity"
}
पसंद
🔴 get_taste_profile पढ़ें इस पहचान की पसंद फ़ाइल में किस रूप में दर्ज है: इसमें शामिल वर्णनकर्ता, हर एक के लिए बताई गई विश्वास-स्तर की मात्रा और उनसे निकला पसंद का प्रकार। पसंद दोबारा बताने से पहले इसे पढ़ें — आप किसी प्रोफ़ाइल को सुधार रहे हैं, नई प्रोफ़ाइल शुरू नहीं कर रहे।
पसंद प्रोफ़ाइल प्राप्त करें
इस पहचान की पसंद फ़ाइल में किस रूप में दर्ज है: इसमें शामिल वर्णनकर्ता, हर एक के लिए बताई गई विश्वास-स्तर की मात्रा और उनसे निकला पसंद का प्रकार। पसंद दोबारा बताने से पहले इसे पढ़ें — आप किसी प्रोफ़ाइल को सुधार रहे हैं, नई प्रोफ़ाइल शुरू नहीं कर रहे।
कोई पैरामीटर नहीं।
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Get taste profile"
},
"description": "What this identity's taste is on file as: the descriptors it carries, the confidence stated for each, and the taste type derived from them. Read it before stating taste again — you are correcting a profile, not starting one.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
},
"name": "get_taste_profile",
"title": "Get taste profile"
}
🔴 submit_taste_profile लिखें अतिथि की पसंद को हर वर्णनकर्ता के लिए 0 से 1 तक के विश्वास-स्तर के रूप में बताएँ और बातचीत से जितने वर्णनकर्ता समर्थित हों, उतने अनुमानित करें। इससे फ़ाइल में मौजूद जानकारी पूरी तरह बदल जाती है, इसलिए सुधार के बजाय पूरी जानकारी भेजें। वर्णनकर्ता वही हैं जिनके नाम weights\ देता है; ये सभी get_vocabulary द्वारा प्रकाशित हैं — इनके अलावा किसी भी वर्णनकर्ता को अस्वीकार कर दिया जाता है। अवसर और मेनू के गुण बाकी जानकारी के साथ सहेजे जाते हैं, लेकिन वे स्थल के गुण हैं, इसलिए वे पसंद-वेक्टर के बजाय फ़िल्टर को प्रभावित करते हैं। वैकल्पिक: खोज, सूचियाँ और बुकिंग इसके बिना भी काम करती हैं; इससे केवल list_recommended_restaurants को व्यक्तिगत बनाया जाता है।
पसंद प्रोफ़ाइल सबमिट करें
प्रत्येक वर्णनकर्ता के लिए अतिथि की पसंद को 0 से 1 तक के विश्वास-मान के रूप में बताएं, और बातचीत जितनी जानकारी का समर्थन करती है, उतने वर्णनकर्ताओं का अनुमान लगाएं। इससे पहले से दर्ज जानकारी बदल जाएगी, इसलिए केवल सुधार भेजने के बजाय पूरी जानकारी भेजें। वर्णनकर्ता वही हैं जिनके नाम weights\ हैं; ये सभी get_vocabulary द्वारा प्रकाशित किए गए हैं—किसी अन्य को अस्वीकार कर दिया जाएगा। अवसर और मेनू के प्रकार बाकी जानकारी के साथ संग्रहीत होते हैं, लेकिन वे स्थल की विशेषताएँ हैं, इसलिए वे स्वाद-वेक्टर के बजाय फ़िल्टर को प्रभावित करते हैं। वैकल्पिक: इसके बिना भी खोज, सूचियाँ और बुकिंग काम करती हैं; इससे केवल list_recommended_restaurants व्यक्तिगत बनता है।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
idempotencyKey आवश्यक | string | इस एक लेखन के लिए अपनी पसंद की कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
weights आवश्यक | map<string, number> | प्रत्येक वर्णनकर्ता के लिए 0 से 1 तक का विश्वास-मान; इनमें से एक: apero, breakfast, brunch, dinner, dishCocktails, dishCraftBeer, dishNatureWine, dishWine, fineDining, late, lunch, menuFish, menuMeat, menuVegan, menuVegetarian, occasionBusiness, occasionCasual, occasionCelebration, occasionChildren, occasionCulture, occasionGroups, occasionImpressive, occasionRomantic, occasionSolo, priceCheap, pricePricey, salty, sweets |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Submit taste profile"
},
"description": "State the guest's taste as a confidence from 0 to 1 per descriptor, and infer as many as the conversation supports. This replaces what was on file, so send the whole picture rather than a correction. The descriptors are the ones \`weights\` names, all published by get_vocabulary — any other is refused. Occasions and menu characters are stored with the rest but are venue attributes, so they shape filters rather than the taste vector. Optional: discovery, lists and booking all work without it; it only makes list_recommended_restaurants personal.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"weights": {
"additionalProperties": {
"type": "number"
},
"description": "confidence 0 to 1 per descriptor, one of apero, breakfast, brunch, dinner, dishCocktails, dishCraftBeer, dishNatureWine, dishWine, fineDining, late, lunch, menuFish, menuMeat, menuVegan, menuVegetarian, occasionBusiness, occasionCasual, occasionCelebration, occasionChildren, occasionCulture, occasionGroups, occasionImpressive, occasionRomantic, occasionSolo, priceCheap, pricePricey, salty, sweets",
"type": "object"
}
},
"required": [
"idempotencyKey",
"weights"
],
"type": "object"
},
"name": "submit_taste_profile",
"title": "Submit taste profile"
}
सूचियाँ
🔴 add_restaurant_to_list लिखें किसी स्थल को पहचान की सूचियों में से किसी एक में जोड़ें। अगर वह पहले से सूची में है, तो कुछ नहीं बदलेगा।
रेस्तराँ को सूची में जोड़ें
किसी स्थल को पहचान की सूचियों में से किसी एक में जोड़ें। अगर वह पहले से सूची में है, तो कुछ नहीं बदलेगा।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
idempotencyKey आवश्यक | string | इस एक लेखन के लिए अपनी पसंद की कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
listKey आवश्यक | string | वह सूची जिसमें जोड़ना है |
restaurantKey आवश्यक | string | जोड़ने के लिए स्थल |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Add restaurant to list"
},
"description": "Put a venue on one of the identity's lists. Adding one that is already there changes nothing.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"listKey": {
"description": "the list to add to",
"type": "string"
},
"restaurantKey": {
"description": "the venue to add",
"type": "string"
}
},
"required": [
"idempotencyKey",
"listKey",
"restaurantKey"
],
"type": "object"
},
"name": "add_restaurant_to_list",
"title": "Add restaurant to list"
}
🔴 create_list लिखें पहचान के लिए नाम वाली सूची शुरू करें। सूची का नाम उसके उद्देश्य के अनुसार रखें—अतिथि अगली बार फिर यह नाम देखेगा, और आप भी।
सूची बनाएँ
पहचान के लिए नाम वाली सूची शुरू करें। सूची का नाम उसके उद्देश्य के अनुसार रखें—अतिथि अगली बार फिर यह नाम देखेगा, और आप भी।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
idempotencyKey आवश्यक | string | इस एक लेखन के लिए अपनी पसंद की कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
title आवश्यक | string | अतिथि की भाषा में, सूची का उद्देश्य |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Create list"
},
"description": "Start a named list for the identity. Name it for what it is for — the guest will see the name again next time, and so will you.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"title": {
"description": "what the list is for, in the guest's language",
"type": "string"
}
},
"required": [
"idempotencyKey",
"title"
],
"type": "object"
},
"name": "create_list",
"title": "Create list"
}
🔴 delete_list विनाशकारी पहचान की सूचियों में से एक और उसमें मौजूद सभी चीज़ें हटाएँ। पहले सूची पढ़ें और अतिथि को बताएँ कि क्या हटेगा; इसे पूर्ववत नहीं किया जा सकता।
सूची हटाएँ
पहचान की सूचियों में से एक और उसमें मौजूद सभी चीज़ें हटाएँ। पहले सूची पढ़ें और अतिथि को बताएँ कि क्या हटेगा; इसे पूर्ववत नहीं किया जा सकता।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
idempotencyKey आवश्यक | string | इस एक लेखन के लिए अपनी पसंद की कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
listKey आवश्यक | string | हटाई जाने वाली सूची |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": true,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Delete list"
},
"description": "Delete one of the identity's lists and everything on it. Read the list first and tell the guest what will go; this cannot be undone.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"listKey": {
"description": "the list to delete",
"type": "string"
}
},
"required": [
"idempotencyKey",
"listKey"
],
"type": "object"
},
"name": "delete_list",
"title": "Delete list"
}
🔴 get_list पढ़ें सक्रिय पहचान की सूचियों में से एक को उसमें मौजूद हर स्थल सहित पूरा पढ़ें। किसी अन्य पहचान की सूची पढ़ी नहीं जा सकती।
सूची प्राप्त करें
सक्रिय पहचान की सूचियों में से एक को उसमें मौजूद हर स्थल सहित पूरा पढ़ें। किसी अन्य पहचान की सूची पढ़ी नहीं जा सकती।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
listKey आवश्यक | string | सूची की कुंजी, list_lists से |
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Get list"
},
"description": "Read one of the acting identity's lists in full, with every venue on it. Another identity's list is not readable.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"listKey": {
"description": "the list's key, from list_lists",
"type": "string"
}
},
"required": [
"listKey"
],
"type": "object"
},
"name": "get_list",
"title": "Get list"
}
🔴 list_lists पढ़ें पहचान की अपनी सूचियाँ, हर सूची के लिए संख्या और कवर सहित। लौटकर हुई बातचीत की शुरुआत में इसे पढ़ें: इससे पता चलता है कि अतिथि ने पिछली बार क्या रखा था।
सूचियाँ दिखाएँ
पहचान की अपनी सूचियाँ, हर सूची के लिए संख्या और कवर सहित। लौटकर हुई बातचीत की शुरुआत में इसे पढ़ें: इससे पता चलता है कि अतिथि ने पिछली बार क्या रखा था।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
limit | integer | लौटाई जाने वाली पंक्तियाँ, अधिकतम 50 |
offset | integer | छोड़ने वाली पंक्तियाँ; परिणाम में totalCount के साथ इनके पृष्ठों में सूची देखी जा सकती है |
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "List lists"
},
"description": "The identity's own lists, with a count and a cover for each. Read this at the start of a returning conversation: it is what the guest kept last time.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "rows to return, at most 50",
"type": "integer"
},
"offset": {
"description": "rows to skip; with totalCount in the result this pages through them",
"type": "integer"
}
},
"required": [],
"type": "object"
},
"name": "list_lists",
"title": "List lists"
}
🔴 remove_restaurant_from_list विनाशकारी पहचान की किसी सूची से कोई स्थल हटाएँ। कॉल करने से पहले अतिथि को बताएँ कि कौन-सा स्थल और कौन-सी सूची है—इससे डेटा हटता है।
रेस्तराँ को सूची से हटाएँ
पहचान की किसी सूची से कोई स्थल हटाएँ। कॉल करने से पहले अतिथि को बताएँ कि कौन-सा स्थल और कौन-सी सूची है—इससे डेटा हटता है।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
idempotencyKey आवश्यक | string | इस एक लेखन के लिए अपनी पसंद की कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
listKey आवश्यक | string | वह सूची जिससे हटाना है |
restaurantKey आवश्यक | string | हटाने के लिए स्थल |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": true,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Remove restaurant from list"
},
"description": "Take a venue off one of the identity's lists. Say which venue and which list to the guest before you call it — this removes data.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"listKey": {
"description": "the list to remove from",
"type": "string"
},
"restaurantKey": {
"description": "the venue to remove",
"type": "string"
}
},
"required": [
"idempotencyKey",
"listKey",
"restaurantKey"
],
"type": "object"
},
"name": "remove_restaurant_from_list",
"title": "Remove restaurant from list"
}
🔴 update_list लिखें पहचान की किसी सूची का नाम बदलें। उसमें मौजूद स्थल जस के तस रहेंगे।
सूची अपडेट करें
पहचान की किसी सूची का नाम बदलें। उसमें मौजूद स्थल जस के तस रहेंगे।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
idempotencyKey आवश्यक | string | इस एक लेखन के लिए अपनी पसंद की कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
listKey आवश्यक | string | नाम बदलने वाली सूची |
title आवश्यक | string | नया नाम |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Update list"
},
"description": "Rename one of the identity's lists. The venues on it are untouched.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"listKey": {
"description": "the list to rename",
"type": "string"
},
"title": {
"description": "the new name",
"type": "string"
}
},
"required": [
"idempotencyKey",
"listKey",
"title"
],
"type": "object"
},
"name": "update_list",
"title": "Update list"
}
समूह
🔴 close_group_match लिखें समूह के मिलान में आगे के वोट बंद करें। मिलान और सभी वोट पढ़े जा सकेंगे; केवल मतदान रुक जाएगा। समूह के निर्णय पर पहुँचने के बाद इसे बंद करें, फिर विजेता बुक करें।
समूह मिलान बंद करें
समूह के मिलान में आगे के वोट बंद करें। मिलान और सभी वोट पढ़े जा सकेंगे; केवल मतदान रुक जाएगा। समूह के निर्णय पर पहुँचने के बाद इसे बंद करें, फिर विजेता बुक करें।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
groupMatchKey आवश्यक | string | बंद किया जाने वाला मिलान |
idempotencyKey आवश्यक | string | इस एक लेखन के लिए अपनी पसंद की कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Close group match"
},
"description": "Close a group match to further votes. The match and every vote stay readable; only voting stops. Close it once the group has decided, then book the winner.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"groupMatchKey": {
"description": "the match to close",
"type": "string"
},
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
}
},
"required": [
"groupMatchKey",
"idempotencyKey"
],
"type": "object"
},
"name": "close_group_match",
"title": "Close group match"
}
🔴 create_group_match लिखें समूह के लिए निर्णय शुरू करें: कुछ स्थल, कुछ तारीखें और पूछे जाने वाले लोग। जवाब में साझा करने का लिंक होगा—अतिथि को दें ताकि वह इसे आगे भेज सके, क्योंकि आमंत्रित व्यक्ति इस लिंक से वोट देने के लिए TasteMatch पहचान के बिना भी शामिल हो सकता है। विकल्प कम रखें: यह निर्णय है, सूचीपत्र नहीं।
समूह मिलान बनाएँ
समूह के लिए निर्णय शुरू करें: कुछ स्थल, कुछ तारीखें और पूछे जाने वाले लोग। जवाब में साझा करने का लिंक होगा—अतिथि को दें ताकि वह इसे आगे भेज सके, क्योंकि आमंत्रित व्यक्ति इस लिंक से वोट देने के लिए TasteMatch पहचान के बिना भी शामिल हो सकता है। विकल्प कम रखें: यह निर्णय है, सूचीपत्र नहीं।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
dateOptions आवश्यक | array<string> | चुनने के लिए तारीखें, क्षेत्र के UTC ऑफ़सेट सहित RFC3339 प्रारूप में |
idempotencyKey आवश्यक | string | इस एक लेखन के लिए अपनी पसंद की कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
restaurantKeys आवश्यक | array<string> | चुनने के लिए स्थल |
title आवश्यक | string | समूह क्या तय कर रहा है, अतिथि के शब्दों में |
invitees | array<object> | पूछे जाने वाले लोग, प्रत्येक का नाम और ईमेल |
invitees[].displayName आवश्यक | string | वह नाम जो समूह देखेगा |
invitees[].email आवश्यक | string | आमंत्रण कहाँ भेजना है |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Create group match"
},
"description": "Start a group decision: a few venues, a few dates, and the people to ask. The answer carries a share link — give that to the guest to send on, because an invitee needs no TasteMatch identity to vote through it. Keep the options few: this is a decision, not a catalogue.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"dateOptions": {
"description": "the dates to choose between, RFC3339 with the region's UTC offset",
"items": {
"type": "string"
},
"type": "array"
},
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"invitees": {
"description": "the people to ask, each by name and email",
"items": {
"additionalProperties": false,
"properties": {
"displayName": {
"description": "the name the group will see",
"type": "string"
},
"email": {
"description": "where the invitation goes",
"type": "string"
}
},
"required": [
"displayName",
"email"
],
"type": "object"
},
"type": "array"
},
"restaurantKeys": {
"description": "the venues to choose between",
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"description": "what the group is deciding, in the guest's words",
"type": "string"
}
},
"required": [
"dateOptions",
"idempotencyKey",
"restaurantKeys",
"title"
],
"type": "object"
},
"name": "create_group_match",
"title": "Create group match"
}
🔴 delete_group_match विनाशकारी समूह का मिलान हटाएँ। जिनके पास भी साझा लिंक है, उनके लिए वह काम करना बंद कर देगा और वोट भी हट जाएँगे। कॉल करने से पहले मिलान पढ़ें और अतिथि को बताएँ कि क्या हटेगा।
समूह मिलान हटाएँ
समूह का मिलान हटाएँ। जिनके पास भी साझा लिंक है, उनके लिए वह काम करना बंद कर देगा और वोट भी हट जाएँगे। कॉल करने से पहले मिलान पढ़ें और अतिथि को बताएँ कि क्या हटेगा।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
groupMatchKey आवश्यक | string | हटाया जाने वाला मिलान |
idempotencyKey आवश्यक | string | इस एक लेखन के लिए अपनी पसंद की कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": true,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Delete group match"
},
"description": "Delete a group match. The share link stops working for everyone who holds it, and the votes go with it. Read the match and tell the guest what will go before you call this.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"groupMatchKey": {
"description": "the match to delete",
"type": "string"
},
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
}
},
"required": [
"groupMatchKey",
"idempotencyKey"
],
"type": "object"
},
"name": "delete_group_match",
"title": "Delete group match"
}
🔴 get_group_match पढ़ें पहचान द्वारा बनाया गया एक समूह मिलान: स्थल, तारीख के विकल्प, किसे आमंत्रित किया गया, किसने वोट दिया और किसके लिए, तथा साझा लिंक।
समूह मिलान प्राप्त करें
पहचान द्वारा बनाया गया एक समूह मिलान: स्थल, तारीख के विकल्प, किसे आमंत्रित किया गया, किसने वोट दिया और किसके लिए, तथा साझा लिंक।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
groupMatchKey आवश्यक | string | मिलान की कुंजी, list_group_matches से |
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Get group match"
},
"description": "One group match the identity created: the venues, the date options, who was invited, who has voted and for what, and the share link.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"groupMatchKey": {
"description": "the match's key, from list_group_matches",
"type": "string"
}
},
"required": [
"groupMatchKey"
],
"type": "object"
},
"name": "get_group_match",
"title": "Get group match"
}
🔴 list_group_matches पढ़ें इस पहचान द्वारा बनाए गए समूह मिलान, साथ में आमंत्रित लोगों और वोट देने वालों की संख्या। जिन मिलानों में इसे केवल आमंत्रित किया गया था, वे यहाँ नहीं हैं।
समूह मिलान सूचीबद्ध करें
इस पहचान द्वारा बनाए गए समूह मिलान, साथ में आमंत्रित लोगों और वोट देने वालों की संख्या। जिन मिलानों में इसे केवल आमंत्रित किया गया था, वे यहाँ नहीं हैं।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
limit | integer | लौटाई जाने वाली पंक्तियाँ, अधिकतम 50 |
offset | integer | छोड़ने वाली पंक्तियाँ; परिणाम में totalCount के साथ इनके पृष्ठों में सूची देखी जा सकती है |
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "List group matches"
},
"description": "The group matches this identity created, with how many were invited and how many have voted. Matches it was merely invited to are not here.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "rows to return, at most 50",
"type": "integer"
},
"offset": {
"description": "rows to skip; with totalCount in the result this pages through them",
"type": "integer"
}
},
"required": [],
"type": "object"
},
"name": "list_group_matches",
"title": "List group matches"
}
🔴 submit_group_match_vote लिखें खुले समूह मिलान में एक व्यक्ति का वोट दर्ज करें। नाम से आमंत्रित व्यक्ति के लिए memberId\ दें; साझा लिंक से शामिल होने वाले व्यक्ति के लिए इसके बजाय displayName\ दें। केवल वही दर्ज करें जो उस व्यक्ति ने वास्तव में कहा हो: मिलान की कुंजी का होना ही पूरा प्राधिकरण है, और उस व्यक्ति से न लिया गया memberId उसका वोट बदल देगा। मिलान अब भी खुला होना चाहिए।
समूह मिलान का वोट जमा करें
खुले समूह मिलान में एक व्यक्ति का वोट दर्ज करें। नाम से आमंत्रित व्यक्ति के लिए memberId\ दें; साझा लिंक से शामिल होने वाले व्यक्ति के लिए इसके बजाय displayName\ दें। केवल वही दर्ज करें जो उस व्यक्ति ने वास्तव में कहा हो: मिलान की कुंजी का होना ही पूरा प्राधिकरण है, और उस व्यक्ति से न लिया गया memberId उसका वोट बदल देगा। मिलान अब भी खुला होना चाहिए।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
groupMatchKey आवश्यक | string | जिस मिलान में वोट दिया जा रहा है |
idempotencyKey आवश्यक | string | इस एक लेखन के लिए अपनी पसंद की कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
picks आवश्यक | array<object> | व्यक्ति द्वारा स्वीकार किए गए प्रत्येक स्थल और तारीख के जोड़े के लिए एक चयन |
picks[].dateOptionIdx आवश्यक | integer | तारीख के विकल्प का इंडेक्स, शून्य से गिनते हुए |
picks[].restaurantKey आवश्यक | string | |
displayName | string | लिंक से शामिल होने वाले व्यक्ति का नाम, जब उसे नाम से आमंत्रित न किया गया हो |
memberId | string | वह आमंत्रित व्यक्ति जिसका यह वोट है, get_group_match से |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Submit group match vote"
},
"description": "Cast one person's vote in an open group match. Pass \`memberId\` for someone who was invited by name; pass \`displayName\` instead for someone joining off the share link. Vote only what that person actually said: possession of the match key is the whole authorisation, and a memberId you did not collect from that person overwrites their vote. The match must still be open.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"displayName": {
"description": "the name of someone joining off the link, when they were not invited by name",
"type": "string"
},
"groupMatchKey": {
"description": "the match being voted in",
"type": "string"
},
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"memberId": {
"description": "the invitee this vote belongs to, from get_group_match",
"type": "string"
},
"picks": {
"description": "one pick per venue and date pair the person accepts",
"items": {
"additionalProperties": false,
"properties": {
"dateOptionIdx": {
"description": "the index of the date option, counting from zero",
"type": "integer"
},
"restaurantKey": {
"type": "string"
}
},
"required": [
"dateOptionIdx",
"restaurantKey"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"groupMatchKey",
"idempotencyKey",
"picks"
],
"type": "object"
},
"name": "submit_group_match_vote",
"title": "Submit group match vote"
}
साझा करना
🔴 cancel_shared_reservation विनाशकारी उस आरक्षण को रद्द करें जिसके संपादन लिंक अतिथि के पास है। इसे पूर्ववत नहीं किया जा सकता। कॉल करने से पहले अतिथि को स्थल और समय दोहराकर बताएँ और उनकी पुष्टि की प्रतीक्षा करें। सक्रिय पहचान के अपने आरक्षण के लिए इसके बजाय cancel_reservation का उपयोग करें, जो इस पुष्टि की जाँच आपके लिए करता है।
साझा आरक्षण रद्द करें
उस आरक्षण को रद्द करें जिसके संपादन लिंक अतिथि के पास है। इसे पूर्ववत नहीं किया जा सकता। कॉल करने से पहले अतिथि को स्थल और समय दोहराकर बताएँ और उनकी पुष्टि की प्रतीक्षा करें। सक्रिय पहचान के अपने आरक्षण के लिए इसके बजाय cancel_reservation का उपयोग करें, जो इस पुष्टि की जाँच आपके लिए करता है।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
editToken आवश्यक | string | अतिथि के अपने संपादन लिंक से टोकन |
idempotencyKey आवश्यक | string | इस एक लेखन के लिए अपनी पसंद की कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": true,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Cancel shared reservation"
},
"description": "Cancel a reservation the guest holds an edit link for. This cannot be undone. Say the venue and the time back to the guest and wait for them before you call it. For a reservation the acting identity owns, use cancel_reservation instead, which checks that echo for you.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"editToken": {
"description": "the token from the guest's own edit link",
"type": "string"
},
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
}
},
"required": [
"editToken",
"idempotencyKey"
],
"type": "object"
},
"name": "cancel_shared_reservation",
"title": "Cancel shared reservation"
}
🔴 create_share_key लिखें अतिथि को किसी और को भेजने के लिए एक लिंक बनाएँ। केवल पढ़ने के लिए: इसे खोलने वाला कोई भी व्यक्ति देख सकता है, संपादित नहीं। एक ही ऑब्जेक्ट के लिए दो बार लिंक बनाने पर वही लिंक मिलता है। लिंक केवल उस स्थल के लिए बनाएँ जिसके बारे में अतिथि ने पूछा हो, या उस आरक्षण के लिए जिसका स्वामी सक्रिय पहचान है — लिंक रखने वाला कोई भी व्यक्ति उसे पढ़ सकता है, और आरक्षण के लिंक में स्थल, तारीख और पार्टी का आकार दिखता है।
शेयर कुंजी बनाएँ
अतिथि को किसी और को भेजने के लिए एक लिंक बनाएँ। केवल पढ़ने के लिए: इसे खोलने वाला कोई भी व्यक्ति देख सकता है, संपादित नहीं। एक ही ऑब्जेक्ट के लिए दो बार लिंक बनाने पर वही लिंक मिलता है। लिंक केवल उस स्थल के लिए बनाएँ जिसके बारे में अतिथि ने पूछा हो, या उस आरक्षण के लिए जिसका स्वामी सक्रिय पहचान है — लिंक रखने वाला कोई भी व्यक्ति उसे पढ़ सकता है, और आरक्षण के लिंक में स्थल, तारीख और पार्टी का आकार दिखता है।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
idempotencyKey आवश्यक | string | इस एक लेखन के लिए अपनी बनाई हुई कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
kind आवश्यक | string | क्या साझा करना है: restaurant, reservation |
objectKey आवश्यक | string | साझा किए जाने वाले स्थल या आरक्षण की कुंजी |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Create share key"
},
"description": "Mint a link the guest can send to someone else. Read-kind only: whoever opens it can look, never edit. Minting twice for the same object returns the same link. Mint only for a venue the guest asked about or a reservation the acting identity owns — a link is readable by anyone who holds it, and a reservation's link shows the venue, the date and the party size.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"kind": {
"description": "what to share: restaurant, reservation",
"type": "string"
},
"objectKey": {
"description": "the key of the venue or reservation to share",
"type": "string"
}
},
"required": [
"idempotencyKey",
"kind",
"objectKey"
],
"type": "object"
},
"name": "create_share_key",
"title": "Create share key"
}
🟢 get_share_sitemap पढ़ें हर साझा किए जा सकने वाले स्थल और सूची की सार्वजनिक अनुक्रमणिका, XML के रूप में। यह बड़ी है: इसे यह जानने के लिए पढ़ें कि कुल मिलाकर क्या मौजूद है, किसी एक सवाल का जवाब देने के लिए नहीं।
शेयर साइटमैप प्राप्त करें
हर साझा किए जा सकने वाले स्थल और सूची की सार्वजनिक अनुक्रमणिका, XML के रूप में। यह बड़ी है: इसे यह जानने के लिए पढ़ें कि कुल मिलाकर क्या मौजूद है, किसी एक सवाल का जवाब देने के लिए नहीं।
कोई पैरामीटर नहीं।
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Get share sitemap"
},
"description": "The public index of every shareable venue and list, as XML. Large: read it to discover what exists at all, not to answer one question.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
},
"name": "get_share_sitemap",
"title": "Get share sitemap"
}
🟢 resolve_share_public_id पढ़ें tastematch.io स्थल या सूची URL में मौजूद पठनीय सार्वजनिक पेज id को उस ऑब्जेक्ट और उसकी कुंजी में बदलें जिसका वह नाम बताता है।
शेयर सार्वजनिक id हल करें
tastematch.io स्थल या सूची URL में मौजूद पठनीय सार्वजनिक पेज id को उस ऑब्जेक्ट और उसकी कुंजी में बदलें जिसका वह नाम बताता है।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
objectType आवश्यक | string | restaurant या list |
publicId आवश्यक | string | सार्वजनिक URL से पठनीय id |
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Resolve share public id"
},
"description": "Turn a public page id — the readable one in a tastematch.io venue or list URL — into the object it names and its key.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"objectType": {
"description": "restaurant or list",
"type": "string"
},
"publicId": {
"description": "the readable id from the public URL",
"type": "string"
}
},
"required": [
"objectType",
"publicId"
],
"type": "object"
},
"name": "resolve_share_public_id",
"title": "Resolve share public id"
}
🟢 resolve_share_token पढ़ें अतिथि द्वारा भेजे गए शेयर लिंक को उस चीज़ में बदलें जिस पर वह जाता है — स्थल, आरक्षण या समूह मैच — और आगे जारी रखने के लिए उसकी कुंजी प्राप्त करें। टोकन दें, जो लिंक का आखिरी path segment है। जो लिंक समाप्त हो चुका है या कभी हमारा था ही नहीं, वह बस नहीं मिलता।
शेयर टोकन हल करें
अतिथि द्वारा भेजे गए शेयर लिंक को उस चीज़ में बदलें जिस पर वह जाता है — स्थल, आरक्षण या समूह मैच — और आगे जारी रखने के लिए उसकी कुंजी प्राप्त करें। टोकन दें, जो लिंक का आखिरी path segment है। जो लिंक समाप्त हो चुका है या कभी हमारा था ही नहीं, वह बस नहीं मिलता।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
token आवश्यक | string | शेयर लिंक से टोकन, उसका आखिरी path segment |
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Resolve share token"
},
"description": "Turn a share link the guest pasted into the thing it points at — a venue, a reservation or a group match — and the key to carry on with. Pass the token, which is the last path segment of the link. A link that has expired or was never ours is simply not found.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"token": {
"description": "the token from the share link, its last path segment",
"type": "string"
}
},
"required": [
"token"
],
"type": "object"
},
"name": "resolve_share_token",
"title": "Resolve share token"
}
🔴 update_shared_reservation लिखें उस आरक्षण में बदलाव करें जिसके लिए अतिथि के पास संपादन लिंक है — ऐसा आरक्षण जो कहीं और बनाया गया हो, हमारे ज़रिए नहीं। लिंक ही प्राधिकरण है, इसलिए अतिथि से वह माँगें और उसका उपयोग केवल उसी आरक्षण के लिए करें जिसका उसने नाम लिया है। सक्रिय पहचान के स्वामित्व वाले आरक्षण के लिए, update_reservation का उपयोग करें।
साझा आरक्षण अपडेट करें
उस आरक्षण में बदलाव करें जिसके लिए अतिथि के पास संपादन लिंक है — ऐसा आरक्षण जो कहीं और बनाया गया हो, हमारे ज़रिए नहीं। लिंक ही प्राधिकरण है, इसलिए अतिथि से वह माँगें और उसका उपयोग केवल उसी आरक्षण के लिए करें जिसका उसने नाम लिया है। सक्रिय पहचान के स्वामित्व वाले आरक्षण के लिए, update_reservation का उपयोग करें।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
editToken आवश्यक | string | अतिथि के अपने संपादन लिंक से टोकन |
idempotencyKey आवश्यक | string | इस एक लेखन के लिए अपनी बनाई हुई कुंजी; वही कुंजी दोबारा भेजने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है |
dateTime | string | नया समय, क्षेत्र के UTC ऑफ़सेट के साथ RFC3339 |
pax | integer | पार्टी का नया आकार |
वायर परिभाषा (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Update shared reservation"
},
"description": "Change a reservation the guest holds an edit link for — one made somewhere else, not through us. The link is the authorisation, so ask the guest for it and use it only for the reservation they named. For a reservation the acting identity owns, use update_reservation instead.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"dateTime": {
"description": "the new time, RFC3339 with the region's UTC offset",
"type": "string"
},
"editToken": {
"description": "the token from the guest's own edit link",
"type": "string"
},
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"pax": {
"description": "the new party size",
"type": "integer"
}
},
"required": [
"editToken",
"idempotencyKey"
],
"type": "object"
},
"name": "update_shared_reservation",
"title": "Update shared reservation"
}
उपयोगिता
🟢 get_skill पढ़ें एक या अधिक प्लेबुक पूरी पढ़ें। हर बार एक के बजाय कई प्लेबुक एक साथ माँगें।
कौशल प्राप्त करें
एक या अधिक प्लेबुक पूरी पढ़ें। हर बार एक के बजाय कई प्लेबुक एक साथ माँगें।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
names आवश्यक | array<string> | पढ़ने के लिए प्लेबुक, list_skills से |
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Get skill"
},
"description": "Read one or more playbooks in full. Ask for several at once rather than one per turn.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"names": {
"description": "the playbooks to read, from list_skills",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"names"
],
"type": "object"
},
"name": "get_skill",
"title": "Get skill"
}
🟢 get_vocabulary पढ़ें फ़िल्टर किन-किन मानों को स्वीकार करते हैं, हर अक्ष के अनुसार, और उन्हें मिलाने का नियम। पहला फ़िल्टर लगाने से पहले इसे पढ़ें और बातचीत के दौरान याद रखें — अनुमान से दिया गया विवरण अस्वीकार कर दिया जाता है, और अनुमान से दिया गया cuisine slug चुपचाप कोई परिणाम नहीं देता।
शब्दावली प्राप्त करें
फ़िल्टर किन-किन मानों को स्वीकार करते हैं, हर अक्ष के अनुसार, और उन्हें मिलाने का नियम। पहला फ़िल्टर लगाने से पहले इसे पढ़ें और बातचीत के दौरान याद रखें — अनुमान से दिया गया विवरण अस्वीकार कर दिया जाता है, और अनुमान से दिया गया cuisine slug चुपचाप कोई परिणाम नहीं देता।
कोई पैरामीटर नहीं।
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Get vocabulary"
},
"description": "Every value the filters accept, by axis, with the rule for combining them. Read it before your first filter and keep it for the conversation — a guessed descriptor is refused, and a guessed cuisine slug quietly matches nothing.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
},
"name": "get_vocabulary",
"title": "Get vocabulary"
}
🟢 list_skills पढ़ें उपलब्ध प्लेबुक, हर एक एक पंक्ति में। जिस यात्रा का अनुभव आपने पहले नहीं किया है, उससे पहले प्लेबुक पढ़ें; उनमें क्रम और वे पेचीदगियाँ दी गई हैं जो टूल के विवरण में नहीं मिलतीं।
कौशल सूचीबद्ध करें
उपलब्ध प्लेबुक, हर एक एक पंक्ति में। जिस यात्रा का अनुभव आपने पहले नहीं किया है, उससे पहले प्लेबुक पढ़ें; उनमें क्रम और वे पेचीदगियाँ दी गई हैं जो टूल के विवरण में नहीं मिलतीं।
कोई पैरामीटर नहीं।
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "List skills"
},
"description": "The playbooks available, one line each. Read a playbook before a journey you have not done before; they carry the sequence and the traps that the tool descriptions cannot.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
},
"name": "list_skills",
"title": "List skills"
}
🟡 resolve_key पढ़ें अतिथि द्वारा बताए गए नाम को उन संभावित कुंजियों में बदलें जिनका वह अर्थ हो सकता है, सबसे उपयुक्त पहले। kind\ बताता है कि आप क्या खोज रहे हैं: restaurant, region, list, reservation। list\ या reservation\ साइन-इन किए हुए व्यक्ति का अपना होता है और इसके लिए साइन-इन आवश्यक है। हर चीज़ को एक बार हल करें और फिर कुंजी को आगे इस्तेमाल करें: बाद में दोबारा हल करने पर नाम किसी दूसरे स्थल पर जा सकता है। जब एक से अधिक उम्मीदवार काफ़ी करीब हों, तो अतिथि को लेबल दोहराकर बताएँ।
कुंजी हल करें
अतिथि द्वारा बताए गए नाम को उन संभावित कुंजियों में बदलें जिनका वह अर्थ हो सकता है, सबसे उपयुक्त पहले। kind\ बताता है कि आप क्या खोज रहे हैं: restaurant, region, list, reservation। list\ या reservation\ साइन-इन किए हुए व्यक्ति का अपना होता है और इसके लिए साइन-इन आवश्यक है। हर चीज़ को एक बार हल करें और फिर कुंजी को आगे इस्तेमाल करें: बाद में दोबारा हल करने पर नाम किसी दूसरे स्थल पर जा सकता है। जब एक से अधिक उम्मीदवार काफ़ी करीब हों, तो अतिथि को लेबल दोहराकर बताएँ।
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
kind आवश्यक | string | क्या हल करना है: restaurant, region, list, reservation |
lat | number | अक्षांश, किसी नाम के बजाय बिंदु से क्षेत्र हल करने के लिए |
lng | number | देशांतर, lat के साथ जोड़ा जाता है |
regionId | string | restaurant खोज को एक क्षेत्र तक सीमित करें |
text | string | अतिथि द्वारा बताया गया नाम |
वायर परिभाषा (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Resolve key"
},
"description": "Turn a name the guest said into the keys it might mean, best first. \`kind\` says what you are looking for: restaurant, region, list, reservation. A \`list\` or a \`reservation\` is the signed-in person's own and needs a sign-in. Resolve once per thing and then thread the key: a name resolved again later can land on a different venue. Say the label back to the guest when more than one candidate came close.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"kind": {
"description": "what to resolve: restaurant, region, list, reservation",
"type": "string"
},
"lat": {
"description": "latitude, to resolve a region from a point instead of a name",
"type": "number"
},
"lng": {
"description": "longitude, paired with lat",
"type": "number"
},
"regionId": {
"description": "bound a restaurant search to one region",
"type": "string"
},
"text": {
"description": "the name as the guest said it",
"type": "string"
}
},
"required": [
"kind"
],
"type": "object"
},
"name": "resolve_key",
"title": "Resolve key"
}
निर्देश
आप TasteMatch core का उपयोग करने वाले एजेंट हैं — रेस्तराँ खोज, स्वाद मिलान और आरक्षण। उपयोगी होने के लिए आपको TasteMatch vector या हमारी लेबलिंग समझने की ज़रूरत नहीं है। किसी भी फ़िल्टर का उपयोग अपनी पसंद की व्याख्या के अनुसार करें। कभी कोई विवरण गढ़ें नहीं — get_vocabulary को कॉल करें। आप एक व्यक्ति की ओर से काम करते हैं: जिसने इस कनेक्शन में साइन इन किया है। जब तक कोई साइन इन नहीं करता, खोज काम करती है, और जिस टूल को किसी व्यक्ति की ज़रूरत होती है वह उनसे साइन इन करने को कहता है। यात्राएँ: DISCOVER, PLACE, RESTAURANT, AVAILABILITY, RESERVATION, IDENTITY, TASTE, LISTS, GROUP, SHARE, UTILITY। नाम का व्याकरण — हर टूल इसी के अनुरूप है: get_ | list_ | search_ | filter_ | count_ | resolve_ पढ़ें create_ | update_ | delete_ | {verb}_ लिखें इरादे के अनुसार मार्ग चुनें: नाम, कुंजी नहीं -> resolve_key, फिर कुंजी पर काम करें "X जैसे रेस्तराँ" -> filter_restaurants, get_vocabulary से फ़ैसेट "कितने" -> count_restaurants, कभी पंक्तियों को फ़िल्टर करके गिनें नहीं कोई खास स्थल -> get_restaurant, fields[] के साथ कोई नामित व्यंजन -> search_dishes बुकिंग -> get_reservation_info -> list_availability_slots -> create_instant_reservation या create_reservation_request बाद के लिए कुछ रखना -> एक सूची कुंजियाँ आपके पास रखने के लिए हैं। किसी नाम को एक बार हल करें, फिर यात्रा के बाकी हिस्से में कुंजी का उपयोग करें। जिस नाम की कुंजी आपके पास पहले से है, उसे दोबारा हल न करें। सूचियाँ आपका संग्रह हैं। किसी छोटी सूची, तुलना समूह या उन जगहों को जिन्हें आपने चर्चा में लिया है, नाम वाली सूची में रखें: वह सक्रिय पहचान की होती है और अगले सत्र में भी मौजूद रहती है, जहाँ आपका संदर्भ मौजूद नहीं होता। पहचान केवल तभी ली जाती है जब उसकी ज़रूरत हो, उससे पहले कभी नहीं। खोज से कुछ नहीं लिखा जाता और साइन-इन की ज़रूरत नहीं होती। आरक्षण के लिए आरक्षण स्तर आवश्यक है: एक नाम, संपर्क का एक माध्यम और स्वीकार की गई शर्तें। पहचान के कारण कोई टूल मना करे, तो वह बताता है कि कौन-सा स्तर नहीं है और उस तक पहुँचने वाला टूल कौन-सा है। फ़ाइल में पहले से मौजूद मान को आपके भेजे किसी मान से कभी बदला नहीं जाता। कोई सामाजिक सुविधा नहीं है: न फ़ॉलो, न ब्लॉक, न फ़ॉलोअर, न उपयोगकर्ता खोज, न सूचनाएँ और न प्रोफ़ाइल ब्राउज़ करना। समूह मिलान कई लोगों वाली एकमात्र सुविधा है, और यह शेयर लिंक से काम करती है — आमंत्रित लोगों को TasteMatch पहचान की ज़रूरत नहीं है। डेटा दक्षता: डिफ़ॉल्ट सीमा 10 है, totalCount हमेशा रिपोर्ट किया जाता है। हमेशा फ़िल्टर करें। पूरे दस्तावेज़ों के बजाय fields[] माँगें। बैच में काम करें, लूप न करें। बुकिंग: पहले स्थल का बुकिंग मोड पढ़ें; instant और request अलग-अलग टूल हैं। list_availability_slots से पढ़ा हुआ स्लॉट बुक करें। approxMinutes को 0 ही रहने दें, जब तक अतिथि ने न बताया हो कि वह समय में लचीलापन रखता है — शून्य से अलग मान स्थल को आपके माँगे समय से अलग समय बुक करने देता है, और जवाब में adjusted और bookedDate इसकी जानकारी देते हैं। लेखन: idempotencyKey दें — एक ही कुंजी दो बार देने पर दोबारा लिखने के बजाय पहला परिणाम लौटता है। विनाशकारी टूल पर टिप्पणी की गई है; उसे कॉल करने से पहले लक्ष्य पढ़ें और अतिथि को बताएँ कि क्या हटाया जाएगा। cancel_reservation के लिए पहले पुष्टि आवश्यक है: आरक्षण पढ़ें, स्थल और समय अतिथि को दोहराकर बताएँ, प्रतीक्षा करें और कॉल में दोनों को दोहराएँ। केवल कुंजी के आधार पर कभी रद्द न करें, चाहे आपको कितना भी यक़ीन हो। विफलता पर संदेश पढ़ें। सत्यापन, न मिलने या अनुमति न होने का इनकार हमारी ओर से है और बताता है कि कॉल कैसे ठीक करें — उसे ठीक करें, दोहराएँ नहीं। केवल कोड मिलने पर दोबारा प्रयास न करें; उसकी जानकारी दें। जब तक अन्यथा न कहा जाए, परिणाम कच्चे JSON के बजाय पढ़ने योग्य सारांश के रूप में प्रस्तुत करें। ऐसी यात्रा के लिए प्लेबुक जिसे आपने पहले नहीं किया है: list_skills, फिर get_skill।
कौशल
discover-to-reserve — पूरी यात्रा: स्थल खोजें, जानें कि वहाँ बुकिंग कैसे होती है, टेबल लें
पहले जगह, फिर स्थल, फिर बुकिंग। 1. अतिथि की बताई जगह को regionId में बदलें: kind region के साथ resolve_key, या list_regions। 2. स्थल खोजें: किसी प्रकार की जगह के लिए filter_restaurants, नामित जगह के लिए search_restaurants, नामित व्यंजन के लिए search_dishes। पहला फ़िल्टर लगाने से पहले get_vocabulary एक बार पढ़ें। 3. अतिथि का विवरण अस्पष्ट हो, तो पंक्तियाँ लाने से पहले count_restaurants से दायरा सीमित करें। 4. स्थल पढ़ें: get_restaurant, डिफ़ॉल्ट रूप से संक्षिप्त; बाकी के लिए fields[]। 5. जानें कि वहाँ बुकिंग कैसे होती है: get_reservation_info। यही अगला टूल तय करता है; इसका अनुमान कभी न लगाएँ। 6. उपलब्ध समय पढ़ें: list_availability_slots। अतिथि को वास्तविक समय बताएँ। 7. पहचान केवल अब लें: अतिथि साइन इन करे, फिर आरक्षण करने योग्य स्तर तक पहुँचने के लिए promote_identity चलाएँ। 8. टेबल लें: instant स्थल पर create_instant_reservation, request स्थल पर create_reservation_request, और अपने विजेट के ज़रिए बुकिंग करने वाले स्थल पर create_reservation_offer। अतिथि को बताएँ कि इन तीन में से क्या हुआ। request अभी टेबल नहीं है; offer भी तब तक टेबल नहीं है जब तक वे विजेट में प्रक्रिया पूरी न कर लें और get_reservation_status इसकी पुष्टि न कर दे।
sign-in-and-identity — आप किसकी ओर से काम करते हैं, स्तर, कौन-सा टूल स्तर बढ़ाता है, हर स्तर से क्या संभव होता है
आप इस कनेक्शन में साइन इन किए हुए एक व्यक्ति की ओर से काम करते हैं। साइन-इन ही पहचान है; इसके अलावा कुछ भी यह तय नहीं करता कि किसका डेटा प्रभावित होगा, और कोई तर्क भी ऐसा नहीं कर सकता। किसी के साइन इन करने से पहले, खोज की सुविधा काम करती है। किसी व्यक्ति की ओर से काम करने वाला टूल कॉल करने पर उनसे साइन इन करने को कहता है, इसलिए मेहमान को इसकी ज़रूरत होने पर टूल कॉल करें, उनसे पहले साइन इन करने को न कहें। पहचान के पास मौजूद जानकारी से तय होने वाले स्तर: अनाम साइन-इन से खोज, सूचियाँ, समूह मिलान, स्वाद आरक्षण + पहला और आखिरी नाम, संपर्क से आरक्षण प्रोफ़ाइल + सत्यापित संपर्क, यहाँ इससे ज़्यादा कुछ नहीं। promote_identity से आगे बढ़ें। पहचान के लिए अस्वीकृति में उस स्तर का नाम दिया जाता है जिसकी आपको कमी है और उस टूल का भी जो वहाँ तक पहुँचाता है — दोबारा कोशिश करने के बजाय उसे पढ़ें। किसी इंस्टेंट वेन्यू के लिए ईमेल और फ़ोन, दोनों चाहिए, इसलिए जब मेहमान अनुरोध के बजाय पक्की टेबल चाहता हो, तो दोनों जानकारी लें। फ़ाइल में पहले से मौजूद मान को आपके भेजे किसी भी मान से कभी बदला नहीं जाता। मेहमान से वह जानकारी माँगने से पहले get_identity पढ़ें जो हमारे पास पहले से है।
label-vocabulary — विवरणक के आयाम, मानचित्रित करने के बजाय सत्यापन, और फ़ैसेट का मेल
get_vocabulary कॉल करें और उसके शब्दों का हूबहू इस्तेमाल करें। कभी कोई शब्द न गढ़ें, उसका अनुवाद न करें, उसे छोटा न करें। आयाम: dims (वेन्यू कैसा है), occasions (वह किस अवसर के लिए उपयुक्त है), menuMetas (कौन-सी सेवा), menuDescriptors (मेन्यू में क्या है), cuisine (किस तरह का खाना)। फ़ैसेट के बीच AND, एक फ़ैसेट के भीतर OR। हर मान दायरा सीमित करता है। मेहमान ने जो माँगा है, वही दें और कुछ नहीं — ऐसा फ़िल्टर जो किसी ने नहीं माँगा, चुपचाप उन वेन्यू को हटा देता है जो उन्हें पसंद आ सकते थे। menuDescriptors वेन्यू की तरफ़ के हैं, मेहमान की तरफ़ के नहीं। सीलिएक रोग वाले व्यक्ति को "ग्लूटेन-मुक्त मेहमान" की ज़रूरत नहीं; उन्हें ऐसे मेन्यू की ज़रूरत है जिसमें ग्लूटेन-मुक्त व्यंजन छपे हों। अज्ञात मान को उस फ़ैसेट का नाम बताने वाले संदेश के साथ अस्वीकार किया जाता है। वरना, गढ़ा हुआ cuisine slug खाली सूची लौटाता, जो ऐसा लगता है मानो "यहाँ उस तरह की कोई चीज़ नहीं है"।
availability-semantics — इंस्टेंट बनाम अनुरोध, स्लॉट की सीढ़ी, approxMinutes और adjusted
वेन्यू का बुकिंग मोड उसी का अपना होता है। टूल चुनने से पहले get_reservation_info से इसे पढ़ें। इंस्टेंट: टेबल की तुरंत पुष्टि होती है -> create_instant_reservation अनुरोध: वेन्यू का कोई व्यक्ति स्वीकार करता है -> create_reservation_request स्लॉट के समय वेन्यू की अपनी समय-सारणी पर होते हैं। वे किसी तय अंतराल पर नहीं होते, इसलिए जहाँ 19:15 बुक हो सकता है, वहाँ अक्सर 19:00 नहीं हो सकता। list_availability_slots पढ़ें और उसी से मिला समय बुक करें। pax दें, तो टूल पार्टी के लिए बहुत छोटे स्लॉट हटा देता है, जिनमें हर क्षेत्र के न्यूनतम आकार भी शामिल हैं। बैठने की जगह तय रखने के लिए चुने हुए स्लॉट का areaId दें; इससे खोज का दायरा सीमित होता है, बुकिंग की जगह नहीं बदलती। approxMinutes का डिफ़ॉल्ट मान 0 है, यानी यही समय या कुछ नहीं। इसे तभी बढ़ाएँ जब मेहमान ने कहा हो कि वह समय को लेकर लचीला है, और फिर जवाब में adjusted\ और bookedDate\ पढ़ें और उन्हें बताएँ कि उन्हें वास्तव में क्या मिला। खाली स्लॉट और खाली समय-सीमाओं का मतलब है कि उस दिन वेन्यू बंद है या बुकिंग की समय-सीमा बीत चुकी है। दोबारा कोशिश करने के बजाय कोई और दिन सुझाएँ।
group-match — समूह मिलान बनाएँ, लिंक से आमंत्रित करें, बिना पहचान वाले लोगों से वोट लें, बंद करें
समूह मिलान कई लोगों के लिए एकमात्र सुविधा है, और यह लिंक के ज़रिए काम करती है। 1. कुछ वेन्यू और कुछ तारीखों के साथ create_group_match करें। दोनों की संख्या कम रखें: यह एक फ़ैसला है, कैटलॉग नहीं। 2. जवाब में साझा करने का लिंक होता है। मेहमान को दें ताकि वह इसे दूसरों तक पहुँचा सके। लिंक खोलने वाला कोई भी व्यक्ति बिना किसी TasteMatch पहचान के वोट दे सकता है। 3. get_group_match दिखाता है कि किसने वोट दिया है और किसके लिए। submit_group_match_vote उस वोट के लिए है जो लिंक के बजाय आप तक पहुँचता है — नाम से आमंत्रित व्यक्ति के लिए memberId, नए व्यक्ति के लिए displayName। 4. समूह के फ़ैसला कर लेने पर close_group_match करें। वोट पढ़े जा सकते हैं। 5. फिर, जो भी मेज़बानी कर रहा हो, उसके लिए बुकिंग प्रक्रिया के ज़रिए विजेता बुक करें।
regions-and-places — जगह का पता लगाना, और regionId किस काम आता है
क्षेत्र के दायरे वाले हर काम के लिए regionId चाहिए, और regionId हमें देना होता है, मेहमान से नहीं लेना। kind region के साथ resolve_key किसी कस्बे, ज़िले, पते या lat और lng को लेता है। list_regions उन सभी जगहों की सूची देता है जहाँ हमारी सेवा उपलब्ध है; search_places किसी छोटी जगह को उस क्षेत्र से मिलाता है जिसमें वह आती है। किसी क्षेत्र में वह IANA टाइमज़ोन होता है जिसके अनुसार वहाँ के वेन्यू के समय लिखे जाते हैं। आपके भेजे हर dateTime में उस क्षेत्र का UTC ऑफ़सेट होना चाहिए, और पढ़े गए हर स्लॉट का समय उसी घड़ी के अनुसार होता है। खाली नतीजे का मतलब है कि वहाँ हमारे पास कोई वेन्यू नहीं है। खोज का दायरा चुपचाप बढ़ाने के बजाय यह बात बताएँ।
lists-as-store — सूची में क्या रखें, संदर्भ में क्या नहीं
आपका संदर्भ बातचीत के साथ समाप्त हो जाता है। सूची नहीं। create_list और add_restaurant_to_list से शॉर्टलिस्ट, तुलना के लिए वेन्यू का समूह या वे जगहें जिन्हें मेहमान पहले ही मना कर चुका है, एक नाम वाली सूची में रखें। सूची का नाम उसके उद्देश्य के अनुसार रखें; मेहमान को वह नाम फिर दिखेगा। लौटकर शुरू होने वाली बातचीत में list_lists से शुरुआत करें। पिछली बार उन्होंने यही सहेजा था। सूचियाँ काम करने वाली पहचान की होती हैं और यहाँ निजी रहती हैं — साझा करना, किसी और की सूची देखना और सूचियों में खोज करना सामाजिक सुविधाएँ हैं, और इस इंटरफ़ेस में सामाजिक सुविधाएँ नहीं हैं। जमा करने के बजाय छाँटें: remove_restaurant_from_list डेटा हटाता है, इसलिए पहले मेहमान को बताएँ कि कौन-सा वेन्यू और कौन-सी सूची हटाई जाएगी।
bulk-and-pagination — फ़िल्टर से पहले गिनती, लूप के बजाय बैच, डिफ़ॉल्ट सीमाएँ, fields[]
कम माँगें। count_restaurants बिना पंक्तियों के "कितने" का जवाब देता है। दायरा सीमित करते समय इसका इस्तेमाल करें और पंक्तियाँ एक बार में लें। हर सूची और खोज टूल limit और offset लेता है और totalCount बताता है। डिफ़ॉल्ट limit 10 है। खोज दोबारा चलाने के बजाय offset से अगले पृष्ठ पर जाएँ। get_restaurant डिफ़ॉल्ट रूप से सीमित फ़ील्ड देता है। fields[] में केवल वही फ़ील्ड लिखें जिनके बारे में आप मेहमान को वास्तव में बताएँगे; लेबल वेक्टर और मेन्यू कार्ड बड़े होते हैं। जहाँ बैच संभव हो, बैच करें: हर टर्न में एक impressions कॉल, और एक get_skill में कई स्किल। किसी नाम को एक बार resolve करें और उसकी key आगे इस्तेमाल करें। दोबारा resolve करने में एक अतिरिक्त राउंड ट्रिप लगता है और किसी दूसरे वेन्यू पर पहुँचने की संभावना भी रहती है।