Taste Match
resmiPesan dan temukan restoran dengan mudah — hanya di dalam dan sekitar Swiss
Apa yang bisa Anda lakukan dengan Taste Match MCP?
- Hitung kecocokan terlebih dahulu — Tanyakan berapa banyak tempat yang sesuai dengan serangkaian filter sebelum mengambil baris, menggunakan
count_restaurants. - Filter berdasarkan aspek — Cari tempat berdasarkan lokasi, hari atau layanan buka, masakan, pilihan menu dan minuman, atau ketersediaan pemesanan dengan
filter_restaurants. - Cari hidangan tertentu — Telusuri menu untuk hidangan dengan kata-kata yang digunakan tamu sendiri dan lihat tempat mana yang menyajikannya melalui
search_dishes. - Cari tempat berdasarkan nama — Temukan restoran berdasarkan nama atau sebutannya, dengan opsi membatasi pencarian ke suatu wilayah, menggunakan
search_restaurants. - Dapatkan pilihan populer — Tampilkan tempat yang paling disukai di wilayah tertentu dengan
list_popular_restaurants. - Temukan tempat serupa — Dapatkan tempat dengan selera yang mirip dengan tempat yang sudah Anda miliki kuncinya, menggunakan
list_similar_restaurants.
Server MCP Terhosting
npx add-mcp 'https://mcp.tastematch.io/'Terpasang ke Claude Code, Codex, Cursor, dan lainnya
Dokumentasi
| URL layanan publik | https://mcp.tastematch.io/ |
|---|---|
| URL pernyataan privasi | https://tastematch.io/mcp/privacy.html |
Toolkit MCP Streamable HTTP yang membantu Anda menemukan restoran yang paling cocok di Swiss dan wilayah yang lebih jauh. Tambahkan ke klien MCP menggunakan URL di atas. Penemuan bersifat publik.
AUTENTIKASI
Untuk mengakses server MCP kami, layanan Anda harus mendaftarkan diri menggunakan DCR (OAuth 2.0 Dynamic Client Registration) di server otorisasi yang disebutkan di bawah authorization_servers dalam /.well-known/oauth-protected-resource/mcp; dokumen metadata server tersebut memuat registration_endpoint sendiri.
Untuk mendukung endpoint terautentikasi, pengguna Anda harus melakukan autentikasi ke server otorisasi yang sama dengan OpenID Connect (authorization code with PKCE), dengan meminta apa yang tercantum dalam /.well-known/oauth-protected-resource/mcp pada scopes_supported.
- 🟢 Tanpa masuk: alat menjawab siapa saja.
- 🟡 Masuk untuk beberapa argumen, misalnya
list_recommended_restaurantsresolve_key. Selain itu, panggilan bersifat publik dan mengizinkan parameter khusus pengguna; penggunaan parameter ini hanya berhasil jika sudah masuk. Lihat kegagalan masuk di bawah. - 🔴 Masuk: alat bertindak atas nama pengguna. Pengguna boleh anonim. Jika dipanggil tanpa token, alat menjawab dengan HTTP 401 dan tantangan
WWW-Authenticateyang mengarah ke/.well-known/oauth-protected-resource/mcp, lalu klien meminta orang tersebut masuk dengan OAuth (authorization code with PKCE). Orang yang masuk menjadi identitasnya. - Tingkat:
anonymousadalah siapa saja yang sudah masuk.reservationmenambahkan nama depan dan belakang, satu kontak, serta persetujuan terhadap Ketentuan, yang dikumpulkan olehpromote_identitysaat diperlukan untuk pemesanan. - Batas laju: panggilan dihitung per orang yang sudah masuk, dan semua pemanggil tanpa token berbagi satu kuota. Panggilan yang melampaui batas akan ditolak dengan kode; tunggu, lalu kirim lebih sedikit panggilan.
TEMUKAN
🟢 count_restaurants baca Jumlah tempat yang cocok dengan sekumpulan faset, tanpa baris hasil. Panggil ini sebelum filter_restaurants saat menjelajahi ruang filter: alat ini menjawab pertanyaan yang sama tanpa dokumen.
Hitung restoran
Jumlah tempat yang cocok dengan sekumpulan faset, tanpa baris hasil. Panggil ini sebelum filter_restaurants saat menjelajahi ruang filter: alat ini menjawab pertanyaan yang sama tanpa dokumen.
| Parameter | Tipe | Deskripsi |
|---|---|---|
drinkOptions | object | hal yang harus tersedia dalam daftar minuman |
drinkOptions.beerSelection | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
drinkOptions.cocktailSelection | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
drinkOptions.natureWineSelection | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
drinkOptions.wineSelection | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
kitchen | object | jenis masakan yang disajikan |
kitchen.cuisine | array<string> | slug masakan; salah satunya sudah cukup untuk memenuhi kriteria; daftarnya ada di get_vocabulary |
location | object | lokasi pencarian: regionId, atau titik dengan radius |
location.lat | number | lintang pusat pencarian, dipasangkan dengan lng |
location.lng | number | bujur pusat pencarian |
location.radiusMeters | integer | jarak pencarian dari titik |
location.regionId | string | wilayah pencarian, dari list_regions atau resolve_key |
menuOptions | object | hal yang harus tersedia dalam menu |
menuOptions.fishDishes | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
menuOptions.glutenFreeDishes | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
menuOptions.halalDishes | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
menuOptions.lactoseFreeDishes | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
menuOptions.meatDishes | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
menuOptions.veganDishes | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
menuOptions.vegetarianDishes | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
nutrition | object | karakteristik tempat secara keseluruhan |
nutrition.veganRestaurants | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
nutrition.vegetarianRestaurants | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
opening | object | waktu tempat buka |
opening.daytime | string | layanan yang harus tersedia: makan siang atau makan malam |
opening.openOn | array<integer> | hari kerja tempat harus buka; Minggu adalah 0 |
reservation | object | cara pemesanan tempat |
reservation.hasWidget | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
reservation.liveAvailability | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
Definisi wire (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 baca Cari tempat berdasarkan faset: lokasi, waktu buka, jenis masakan, isi menu dan daftar minuman, serta cara pemesanan. Setiap faset membatasi hasil ke tempat yang memenuhi kriteria tersebut, jadi kirim hanya hal yang diminta tamu. Nilai deskriptor dan masakan berasal dari get_vocabulary — nilai yang dibuat-buat akan ditolak, bukan diabaikan. Diurutkan berdasarkan popularitas; tidak ada vektor selera yang diterapkan.
Filter restoran
Cari tempat berdasarkan faset: lokasi, waktu buka, jenis masakan, isi menu dan daftar minuman, serta cara pemesanan. Setiap faset membatasi hasil ke tempat yang memenuhi kriteria tersebut, jadi kirim hanya hal yang diminta tamu. Nilai deskriptor dan masakan berasal dari get_vocabulary — nilai yang dibuat-buat akan ditolak, bukan diabaikan. Diurutkan berdasarkan popularitas; tidak ada vektor selera yang diterapkan.
| Parameter | Tipe | Deskripsi |
|---|---|---|
drinkOptions | object | hal yang harus tersedia dalam daftar minuman |
drinkOptions.beerSelection | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
drinkOptions.cocktailSelection | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
drinkOptions.natureWineSelection | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
drinkOptions.wineSelection | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
kitchen | object | jenis masakan yang disajikan |
kitchen.cuisine | array<string> | slug masakan; salah satunya sudah cukup untuk memenuhi kriteria; daftarnya ada di get_vocabulary |
limit | integer | jumlah baris yang dikembalikan, maksimal 50 |
location | object | lokasi pencarian: regionId, atau titik dengan radius |
location.lat | number | lintang pusat pencarian, dipasangkan dengan lng |
location.lng | number | bujur pusat pencarian |
location.radiusMeters | integer | jarak pencarian dari titik |
location.regionId | string | wilayah pencarian, dari list_regions atau resolve_key |
menuOptions | object | hal yang harus tersedia dalam menu |
menuOptions.fishDishes | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
menuOptions.glutenFreeDishes | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
menuOptions.halalDishes | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
menuOptions.lactoseFreeDishes | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
menuOptions.meatDishes | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
menuOptions.veganDishes | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
menuOptions.vegetarianDishes | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
nutrition | object | karakteristik tempat secara keseluruhan |
nutrition.veganRestaurants | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
nutrition.vegetarianRestaurants | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
offset | integer | jumlah baris yang dilewati; gunakan bersama totalCount dalam hasil untuk menelusuri halaman |
opening | object | waktu tempat buka |
opening.daytime | string | layanan yang harus tersedia: makan siang atau makan malam |
opening.openOn | array<integer> | hari kerja tempat harus buka; Minggu adalah 0 |
reservation | object | cara pemesanan tempat |
reservation.hasWidget | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
reservation.liveAvailability | boolean | true membatasi hasil ke tempat yang menyediakannya; hilangkan agar tidak membatasi berdasarkan hal ini |
Definisi wire (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 baca Tempat paling disukai di satu wilayah. Wilayah wajib diisi: tanpa wilayah, alat ini akan membaca semua tempat yang kami miliki.
Daftar restoran populer
Tempat paling disukai di satu wilayah. Wilayah wajib diisi: tanpa wilayah, alat ini akan membaca semua tempat yang kami miliki.
| Parameter | Tipe | Deskripsi |
|---|---|---|
regionId wajib | string | wilayah yang akan dibaca, dari list_regions |
limit | integer | jumlah baris yang dikembalikan, maksimal 50 |
offset | integer | jumlah baris yang dilewati; gunakan bersama totalCount dalam hasil untuk menelusuri halaman |
Definisi wire (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 baca Tempat yang direkomendasikan untuk tamu yang sudah masuk, diurutkan dari yang paling sesuai dengan seleranya; sebelum siapa pun masuk, rekomendasi ini tidak bersifat personal. bookableOnly\ hanya menyertakan tempat yang memiliki meja tersedia, jumlahnya jauh lebih sedikit dan memerlukan masuk.
Daftar restoran yang direkomendasikan
Tempat yang direkomendasikan untuk tamu yang sudah masuk, diurutkan dari yang paling sesuai dengan seleranya; sebelum siapa pun masuk, rekomendasi ini tidak bersifat personal. bookableOnly\ hanya menyertakan tempat yang memiliki meja tersedia, jumlahnya jauh lebih sedikit dan memerlukan masuk.
| Parameter | Tipe | Deskripsi |
|---|---|---|
bookableOnly | boolean | hanya sertakan tempat dengan ketersediaan langsung |
interDiem | integer | dengan bookableOnly, jumlah hari ke depan yang mungkin memiliki meja kosong |
limit | integer | jumlah baris yang dikembalikan, maksimal 50 |
offset | integer | jumlah baris yang dilewati; gunakan bersama totalCount dalam hasil untuk menelusuri halaman |
regionId | string | wilayah untuk rekomendasi; jika tidak diisi, gunakan wilayah identitas |
Definisi wire (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 baca Tempat yang seleranya mirip dengan tempat yang kuncinya sudah Anda miliki, diurutkan dari yang paling mirip. sameCategory\ membatasi hasil ke tempat dalam rumpun jenis masakan yang sama dan aktif secara default, kecuali dinonaktifkan.
Daftar restoran serupa
Tempat yang seleranya mirip dengan tempat yang kuncinya sudah Anda miliki, diurutkan dari yang paling mirip. sameCategory\ membatasi hasil ke tempat dalam rumpun jenis masakan yang sama dan aktif secara default, kecuali dinonaktifkan.
| Parameter | Tipe | Deskripsi |
|---|---|---|
restaurantKey wajib | string | tempat yang akan dicari tetangganya |
limit | integer | jumlah baris yang dikembalikan, maksimal 50 |
offset | integer | jumlah baris yang dilewati; gunakan bersama totalCount dalam hasil untuk menelusuri halaman |
sameCategory | boolean | batasi ke rumpun jenis masakan yang sama; true jika tidak diisi |
Definisi wire (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 baca Temukan tempat yang menyajikan hidangan tertentu. Cari hidangan dengan kata-kata dan urutan yang digunakan tamu — nama hidangan merupakan bagian dari identitasnya, jadi jangan mengubah susunan kata, menerjemahkan, atau menyingkatnya. Kata yang lebih panjang tetap cocok meski ada sedikit kesalahan ejaan; kata yang sangat pendek harus tepat. Setiap hasil menyebutkan hidangan sebagaimana tercetak di menu, dan exact\ bernilai true hanya jika namanya cocok kata demi kata. Alat ini tidak mengetahui jam buka — gunakan filter_restaurants untuk itu. Cakupan menu tidak lengkap: hasil kosong berarti tidak ada menu yang kami miliki yang mencantumkan hidangan tersebut, bukan berarti tidak ada yang memasaknya.
Cari hidangan
Temukan tempat yang menyajikan hidangan tertentu. Cari hidangan dengan kata-kata dan urutan yang digunakan tamu — nama hidangan merupakan bagian dari identitasnya, jadi jangan mengubah susunan kata, menerjemahkan, atau menyingkatnya. Kata yang lebih panjang tetap cocok meski ada sedikit kesalahan ejaan; kata yang sangat pendek harus tepat. Setiap hasil menyebutkan hidangan sebagaimana tercetak di menu, dan exact\ bernilai true hanya jika namanya cocok kata demi kata. Alat ini tidak mengetahui jam buka — gunakan filter_restaurants untuk itu. Cakupan menu tidak lengkap: hasil kosong berarti tidak ada menu yang kami miliki yang mencantumkan hidangan tersebut, bukan berarti tidak ada yang memasaknya.
| Parameter | Type | Description |
|---|---|---|
q wajib | string | hidangan sebagaimana disebutkan oleh tamu |
lat | number | lintang untuk pencarian di sekitar, dipasangkan dengan lng |
limit | integer | jumlah baris yang dikembalikan, maksimal 50 |
lng | number | bujur untuk pencarian di sekitar |
offset | integer | jumlah baris yang dilewati; dengan totalCount dalam hasil, ini digunakan untuk menelusuri halaman |
radiusMeters | integer | seberapa jauh dari titik untuk mencari |
regionId | string | batasi pencarian ke satu wilayah |
Definisi wire (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 baca Temukan tempat berdasarkan nama atau sebutan yang digunakan tamu, dengan kata-kata mereka sendiri. Minimal tiga karakter. Batasi ke suatu wilayah jika Anda mengetahuinya. Gunakan filter_restaurants jika tamu menjelaskan jenis tempat, bukan menyebutkan namanya.
Cari restoran
Temukan tempat berdasarkan nama atau sebutan yang digunakan tamu, dengan kata-kata mereka sendiri. Minimal tiga karakter. Batasi ke suatu wilayah jika Anda mengetahuinya. Gunakan filter_restaurants jika tamu menjelaskan jenis tempat, bukan menyebutkan namanya.
| Parameter | Type | Description |
|---|---|---|
text wajib | string | kata yang dicari, minimal tiga karakter |
limit | integer | jumlah baris yang dikembalikan, maksimal 50 |
offset | integer | jumlah baris yang dilewati; dengan totalCount dalam hasil, ini digunakan untuk menelusuri halaman |
regionId | string | batasi pencarian ke satu wilayah; jika tidak disertakan, pencarian mencakup semua wilayah yang kami layani |
Definisi wire (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"
}
TEMPAT
🟢 list_regions baca Wilayah yang dicakup TasteMatch. Setiap wilayah memiliki regionId yang digunakan oleh semua alat yang cakupannya terbatas pada wilayah, serta zona waktu IANA yang digunakan untuk menuliskan jam buka dan waktu slot tempat-tempatnya. Berikan titik untuk mendapatkan hasil yang diurutkan dari yang terdekat. Tempat yang tidak berada di salah satu wilayah ini tidak memiliki tempat yang kami simpan.
Daftar wilayah
Wilayah yang dicakup TasteMatch. Setiap wilayah memiliki regionId yang digunakan oleh semua alat yang cakupannya terbatas pada wilayah, serta zona waktu IANA yang digunakan untuk menuliskan jam buka dan waktu slot tempat-tempatnya. Berikan titik untuk mendapatkan hasil yang diurutkan dari yang terdekat. Tempat yang tidak berada di salah satu wilayah ini tidak memiliki tempat yang kami simpan.
| Parameter | Type | Description |
|---|---|---|
lat | number | lintang untuk mengurutkan berdasarkan jarak, dipasangkan dengan lng |
limit | integer | jumlah baris yang dikembalikan, maksimal 50 |
lng | number | bujur untuk mengurutkan berdasarkan jarak |
offset | integer | jumlah baris yang dilewati; dengan totalCount dalam hasil, ini digunakan untuk menelusuri halaman |
Definisi wire (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 baca Cocokkan kota, distrik, atau kawasan yang disebutkan tamu dengan wilayah yang mencakupnya. Hasil kosong berarti tempat tersebut berada di luar semua wilayah yang kami layani, bukan berarti namanya salah.
Cari tempat
Cocokkan kota, distrik, atau kawasan yang disebutkan tamu dengan wilayah yang mencakupnya. Hasil kosong berarti tempat tersebut berada di luar semua wilayah yang kami layani, bukan berarti namanya salah.
| Parameter | Type | Description |
|---|---|---|
q wajib | string | tempat sebagaimana disebutkan oleh tamu |
countryCode | string | kode ISO 3166-1 alpha-2 untuk membatasi pencocokan |
limit | integer | jumlah baris yang dikembalikan, maksimal 50 |
offset | integer | jumlah baris yang dilewati; dengan totalCount dalam hasil, ini digunakan untuk menelusuri halaman |
Definisi wire (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"
}
RESTORAN
🟢 get_restaurant baca Baca satu tempat. Proyeksi default berisi informasi ringkas — nama, kunci, wilayah, alamat, deskripsi, cara pemesanan, dan ringkasan jam buka. Bagian yang lebih besar hanya disertakan jika Anda menyebutkannya di fields\: ContactInformation, MenuCards, MenuCardsV2, labelVector, coverPictures, socialScore, matchInfo, tmType, eventId, businessPro, likesByUser, likesByFollowees, likesUserAvatars, likesFolloweeAvatars. Dokumen tanpa proyeksi dapat berukuran lebih besar daripada bagian lain dari tugas Anda.
Dapatkan restoran
Baca satu tempat. Proyeksi default berisi informasi ringkas — nama, kunci, wilayah, alamat, deskripsi, cara pemesanan, dan ringkasan jam buka. Bagian yang lebih besar hanya disertakan jika Anda menyebutkannya di fields\: ContactInformation, MenuCards, MenuCardsV2, labelVector, coverPictures, socialScore, matchInfo, tmType, eventId, businessPro, likesByUser, likesByFollowees, likesUserAvatars, likesFolloweeAvatars. Dokumen tanpa proyeksi dapat berukuran lebih besar daripada bagian lain dari tugas Anda.
| Parameter | Type | Description |
|---|---|---|
restaurantKey wajib | string | kunci tempat |
accessType | string | saat tamu meminta untuk membuka tempat ini, bagaimana mereka menemukannya — salah satu dari filtered, searched, recommended, similar, popular, spotlight. Pembukaan kemudian dihitung sebagai tindakan mereka; jangan sertakan jika Anda hanya memeriksa tempat untuk diri sendiri. |
fields | array<string> | bidang yang dikembalikan; proyeksi default berisi informasi ringkas, dan kunci selalu disertakan |
Definisi wire (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 tulis Catat bahwa identitas yang bertindak menyukai tempat ini. Menyukai tempat akan meningkatkan kualitas rekomendasi berikutnya, dan ini adalah pernyataan tamu, bukan Anda — sukai tempat yang mereka katakan mereka sukai.
Sukai restoran
Catat bahwa identitas yang bertindak menyukai tempat ini. Menyukai tempat akan meningkatkan kualitas rekomendasi berikutnya, dan ini adalah pernyataan tamu, bukan Anda — sukai tempat yang mereka katakan mereka sukai.
| Parameter | Type | Description |
|---|---|---|
idempotencyKey wajib | string | kunci buatan Anda untuk penulisan ini; mengirimkan kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
restaurantKey wajib | string | kunci tempat |
Definisi wire (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 tulis Beri tahu kami tempat mana yang benar-benar dilihat oleh identitas tersebut dan mana yang ditindaklanjuti. Satu batch per giliran, dengan sessionId buatan Anda sendiri yang tetap sama sepanjang percakapan. Laporkan apa yang terjadi, bukan apa yang Anda rencanakan: inilah sinyal yang dipelajari oleh sistem pemberi rekomendasi.
Kirim impresi restoran
Beri tahu kami tempat mana yang benar-benar dilihat oleh identitas tersebut dan mana yang ditindaklanjuti. Satu batch per giliran, dengan sessionId buatan Anda sendiri yang tetap sama sepanjang percakapan. Laporkan apa yang terjadi, bukan apa yang Anda rencanakan: inilah sinyal yang dipelajari oleh sistem pemberi rekomendasi.
| Parameter | Type | Description |
|---|---|---|
idempotencyKey wajib | string | kunci buatan Anda untuk penulisan ini; mengirimkan kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
impressions wajib | array<object> | apa yang ditampilkan atau ditindaklanjuti |
impressions[].accessType wajib | string | salah satu dari filtered, searched, recommended, similar, popular, spotlight |
impressions[].restaurantKey wajib | string | |
sessionId wajib | string | UUID buatan Anda sendiri, sama untuk setiap batch dalam satu percakapan |
Definisi wire (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 tulis Batalkan suka. Tempat tersebut tetap ada di katalog; hanya pendapat identitas tentang tempat itu yang dihapus.
Batal sukai restoran
Batalkan suka. Tempat tersebut tetap ada di katalog; hanya pendapat identitas tentang tempat itu yang dihapus.
| Parameter | Type | Description |
|---|---|---|
idempotencyKey wajib | string | kunci buatan Anda untuk penulisan ini; mengirimkan kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
restaurantKey wajib | string | kunci tempat |
Definisi wire (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"
}
KETERSEDIAAN
🟢 get_reservation_info baca Cara tempat ini menerima reservasi. mode\ bernilai instant jika meja dikonfirmasi secara langsung, request jika seseorang di tempat tersebut harus menyetujuinya, dan alat akan menolak jika tempat tersebut sama sekali tidak menerima reservasi. Baca ini terlebih dahulu: informasi ini menentukan apakah Anda memanggil create_instant_reservation atau create_reservation_request. maxPeople\ adalah jumlah tamu terbesar yang dapat kami tempatkan di mana pun. Ini hanya membaca — tidak membuat reservasi dan tidak mencatat apa pun.
Dapatkan info reservasi
Cara tempat ini menerima reservasi. mode\ bernilai instant jika meja dikonfirmasi secara langsung, request jika seseorang di tempat tersebut harus menyetujuinya, dan alat akan menolak jika tempat tersebut sama sekali tidak menerima reservasi. Baca ini terlebih dahulu: informasi ini menentukan apakah Anda memanggil create_instant_reservation atau create_reservation_request. maxPeople\ adalah jumlah tamu terbesar yang dapat kami tempatkan di mana pun. Ini hanya membaca — tidak membuat reservasi dan tidak mencatat apa pun.
| Parameter | Type | Description |
|---|---|---|
restaurantKey wajib | string | kunci tempat |
Definisi wire (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 baca Meja yang tersedia di satu tempat pada satu hari. Waktu menggunakan jam lokal tempat tersebut dan tidak mengikuti interval tetap — pesan waktu yang Anda baca di sini, bukan angka bulat yang Anda pilih sendiri. Tempat dengan mode request memberikan windows\ sebagai gantinya: rentang waktu yang dapat dipertimbangkan untuk permintaan. Jika keduanya kosong, tempat tersebut tutup pada hari itu atau sudah melewati batas waktu pemesanan.
Daftar slot ketersediaan
Meja yang tersedia di satu tempat pada satu hari. Waktu menggunakan jam lokal tempat tersebut dan tidak mengikuti interval tetap — pesan waktu yang Anda baca di sini, bukan angka bulat yang Anda pilih sendiri. Tempat dengan mode request memberikan windows\ sebagai gantinya: rentang waktu yang dapat dipertimbangkan untuk permintaan. Jika keduanya kosong, tempat tersebut tutup pada hari itu atau sudah melewati batas waktu pemesanan.
| Parameter | Type | Description |
|---|---|---|
date wajib | string | tanggal yang akan dibaca, RFC3339 dengan offset UTC wilayah tersebut |
restaurantKey wajib | string | kunci tempat |
pax | integer | jumlah tamu, untuk menghapus slot yang terlalu kecil |
Definisi wire (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"
}
RESERVASI
🔴 cancel_reservation destruktif Batalkan reservasi milik identitas tersebut. Tindakan ini tidak dapat dibatalkan dan meja akan dilepas. Baca reservasi terlebih dahulu, sebutkan kembali nama tempat dan waktunya kepada tamu, tunggu konfirmasi mereka, lalu ulangi keduanya di sini: confirmRestaurantName\ dan confirmDateTime\ harus cocok dengan data reservasi atau panggilan akan ditolak. Jangan pernah membatalkan hanya berdasarkan kunci, seberapa pun Anda yakin.
Batalkan reservasi
Batalkan reservasi milik identitas tersebut. Tindakan ini tidak dapat dibatalkan dan meja akan dilepas. Baca reservasi terlebih dahulu, sebutkan kembali nama tempat dan waktunya kepada tamu, tunggu konfirmasi mereka, lalu ulangi keduanya di sini: confirmRestaurantName\ dan confirmDateTime\ harus cocok dengan data reservasi atau panggilan akan ditolak. Jangan pernah membatalkan hanya berdasarkan kunci, seberapa pun Anda yakin.
| Parameter | Type | Description |
|---|---|---|
confirmDateTime wajib | string | waktu reservasi sebagaimana Anda menyebutkannya kepada tamu, RFC3339 |
confirmRestaurantName wajib | string | nama tempat sebagaimana Anda menyebutkannya kepada tamu |
idempotencyKey wajib | string | kunci buatan Anda untuk penulisan ini; mengirimkan kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
reservationKey wajib | string | reservasi yang akan dibatalkan, dari daftar milik list_reservations |
Definisi wire (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 tulis Pesan meja yang tersedia sekarang. Ini untuk tempat instant dan meja akan dikonfirmasi saat hasilnya dikembalikan. Pesan dateTime\ yang Anda baca dari list_availability_slots — slot tempat tersebut tidak mengikuti interval tetap, jadi waktu bulat biasanya bukan salah satunya. Biarkan approxMinutes\ bernilai 0 kecuali tamu mengatakan mereka fleksibel: nilai bukan nol memungkinkan tempat tersebut memesan waktu yang berdekatan, dan jawabannya akan menyatakannya di adjusted\ dan bookedDate\. Pemesanan menggunakan identitas yang tersimpan, yang memerlukan email dan nomor telepon untuk tempat instant.
Buat reservasi instan
Ambil meja yang tersedia sekarang. Ini untuk tempat yang menerima pemesanan instan, dan meja dikonfirmasi saat hasilnya dikembalikan. Pesan dateTime\ yang Anda baca dari list_availability_slots — slot tempat tersebut tidak mengikuti kisi waktu, jadi waktu bulat biasanya bukan salah satunya. Biarkan approxMinutes\ tetap 0 kecuali tamu mengatakan bahwa mereka fleksibel: nilai bukan nol memungkinkan tempat tersebut memesan waktu terdekat, dan jawabannya menyebutkan hal itu di adjusted\ dan bookedDate\. Pemesanan menggunakan identitas yang tersimpan, yang harus memiliki email dan nomor telepon untuk tempat yang menerima pemesanan instan.
| Parameter | Tipe | Deskripsi |
|---|---|---|
dateTime wajib | string | slot yang akan dipesan, RFC3339 dengan offset UTC wilayah tersebut, seperti yang dibaca dari list_availability_slots |
idempotencyKey wajib | string | kunci pilihan Anda untuk penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
pax wajib | integer | jumlah tamu |
restaurantKey wajib | string | kunci tempat tersebut |
approxMinutes | integer | seberapa jauh dari dateTime tempat tersebut boleh memesan; 0 berarti waktu ini atau tidak sama sekali |
areaId | string | area tempat duduk, dari slot yang Anda pilih; ini mempersempit pencarian dan tidak pernah mengubah waktu pemesanan |
comment | string | catatan untuk tempat tersebut, dengan kata-kata tamu |
Definisi wire (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 tulis Buka pemesanan di tempat yang menerima pemesanan melalui widgetnya sendiri. Ini melakukan penulisan: membuat draf yang dikaitkan dengan identitas yang bertindak dan widgetUrl\ sekali pakai untuk diselesaikan oleh tamu. Berikan URL kepada tamu, lalu lakukan polling get_reservation_status menggunakan reservationKey\ yang dikembalikan. Panggil sekali untuk setiap upaya pemesanan — panggilan kedua akan membuat draf kedua. Tempat yang menerima pemesanan secara langsung tidak memerlukan penawaran: gunakan create_instant_reservation atau create_reservation_request.
Buat penawaran reservasi
Buka pemesanan di tempat yang menerima pemesanan melalui widgetnya sendiri. Ini melakukan penulisan: membuat draf yang dikaitkan dengan identitas yang bertindak dan widgetUrl\ sekali pakai untuk diselesaikan oleh tamu. Berikan URL kepada tamu, lalu lakukan polling get_reservation_status menggunakan reservationKey\ yang dikembalikan. Panggil sekali untuk setiap upaya pemesanan — panggilan kedua akan membuat draf kedua. Tempat yang menerima pemesanan secara langsung tidak memerlukan penawaran: gunakan create_instant_reservation atau create_reservation_request.
| Parameter | Tipe | Deskripsi |
|---|---|---|
idempotencyKey wajib | string | kunci pilihan Anda untuk penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
restaurantKey wajib | string | kunci tempat tersebut |
Definisi wire (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 tulis Minta meja kepada tempat tersebut. Ini untuk tempat yang menggunakan mode permintaan: reservasi akan berstatus tertunda dan seseorang di tempat tersebut akan menerima atau menolaknya, jadi beri tahu tamu bahwa meja belum dikonfirmasi. Waktu harus berada dalam salah satu rentang yang dilaporkan oleh list_availability_slots. Pemesanan menggunakan identitas yang tersimpan — nama dan kontaknya dibaca dari catatan, bukan dari panggilan ini.
Buat permintaan reservasi
Minta meja kepada tempat tersebut. Ini untuk tempat yang menggunakan mode permintaan: reservasi akan berstatus tertunda dan seseorang di tempat tersebut akan menerima atau menolaknya, jadi beri tahu tamu bahwa meja belum dikonfirmasi. Waktu harus berada dalam salah satu rentang yang dilaporkan oleh list_availability_slots. Pemesanan menggunakan identitas yang tersimpan — nama dan kontaknya dibaca dari catatan, bukan dari panggilan ini.
| Parameter | Tipe | Deskripsi |
|---|---|---|
dateTime wajib | string | waktu yang diminta, RFC3339 dengan offset UTC wilayah tersebut |
idempotencyKey wajib | string | kunci pilihan Anda untuk penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
pax wajib | integer | jumlah tamu |
restaurantKey wajib | string | kunci tempat tersebut |
comment | string | catatan untuk tempat tersebut, dengan kata-kata tamu |
Definisi wire (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 baca Status salah satu reservasi milik identitas yang bertindak. Lakukan polling setelah membuat penawaran: pemesanan melalui widget baru menjadi nyata setelah tempat tersebut mengonfirmasinya, dan status menunjukkan konfirmasi itu.
Dapatkan status reservasi
Status salah satu reservasi milik identitas yang bertindak. Lakukan polling setelah membuat penawaran: pemesanan melalui widget baru menjadi nyata setelah tempat tersebut mengonfirmasinya, dan status menunjukkan konfirmasi itu.
| Parameter | Tipe | Deskripsi |
|---|---|---|
reservationKey wajib | string | kunci reservasi, dari list_reservations |
Definisi wire (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 baca Waktu yang dapat dipindahkan untuk reservasi yang sudah ada. Ini berbeda dari list_availability_slots: cakupannya terbatas pada reservasi tersebut dan waktu yang diizinkan oleh tempat itu. Hanya reservasi yang telah diterima di tempat dengan ketersediaan langsung yang dapat dipindahkan.
Daftar slot reservasi
Waktu yang dapat dipindahkan untuk reservasi yang sudah ada. Ini berbeda dari list_availability_slots: cakupannya terbatas pada reservasi tersebut dan waktu yang diizinkan oleh tempat itu. Hanya reservasi yang telah diterima di tempat dengan ketersediaan langsung yang dapat dipindahkan.
| Parameter | Tipe | Deskripsi |
|---|---|---|
reservationKey wajib | string | reservasi yang akan dipindahkan, dari list_reservations |
fromDate | string | hari pertama yang akan diperiksa, RFC3339; secara default menggunakan hari reservasi jika tidak diisi |
Definisi wire (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 baca Semua reservasi yang dimiliki identitas yang bertindak. owned\ dapat ditindaklanjuti — kunci tersebut adalah yang digunakan oleh alat penulisan. foundByEmail\ telah dialihkan ke pemilik lain: reservasi itu ditampilkan agar Anda dapat membicarakannya, tetapi semua penulisan terhadapnya akan ditolak.
Daftar reservasi
Semua reservasi yang dimiliki identitas yang bertindak. owned\ dapat ditindaklanjuti — kunci tersebut adalah yang digunakan oleh alat penulisan. foundByEmail\ telah dialihkan ke pemilik lain: reservasi itu ditampilkan agar Anda dapat membicarakannya, tetapi semua penulisan terhadapnya akan ditolak.
Tanpa parameter.
Definisi wire (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 tulis Pindahkan reservasi yang dimiliki identitas tersebut, atau ubah jumlah tamunya. Sebutkan hanya hal yang berubah. Waktu baru harus merupakan salah satu waktu yang ditawarkan oleh list_reservation_slots untuk reservasi tersebut.
Perbarui reservasi
Pindahkan reservasi yang dimiliki identitas tersebut, atau ubah jumlah tamunya. Sebutkan hanya hal yang berubah. Waktu baru harus merupakan salah satu waktu yang ditawarkan oleh list_reservation_slots untuk reservasi tersebut.
| Parameter | Tipe | Deskripsi |
|---|---|---|
idempotencyKey wajib | string | kunci pilihan Anda untuk penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
reservationKey wajib | string | reservasi yang akan diubah, dari kumpulan reservasi milik sendiri di list_reservations |
dateTime | string | waktu baru, RFC3339 dengan offset UTC wilayah tersebut |
pax | integer | jumlah tamu baru |
Definisi wire (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"
}
IDENTITAS
🔴 get_identity baca Identitas yang Anda wakili. Bacalah sebelum meminta apa pun kepada tamu: nilai yang sudah tercatat tidak pernah diganti, dan menanyakan kembali informasi yang sudah kami miliki akan terkesan tidak menyimak.
Dapatkan identitas
Identitas yang Anda wakili. Bacalah sebelum meminta apa pun kepada tamu: nilai yang sudah tercatat tidak pernah diganti, dan menanyakan kembali informasi yang sudah kami miliki akan terkesan tidak menyimak.
Tanpa parameter.
Definisi wire (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 baca Cakupan koneksi ini: alur yang tersedia baginya, dan orang yang masuk yang Anda wakili beserta tingkatnya — acting\ tidak ada sampai seseorang masuk. Panggil terlebih dahulu jika Anda tidak yakin apakah ada yang sudah masuk, dan baca climbWith\ untuk mengetahui alat yang mengumpulkan informasi yang masih kurang pada tingkat saat ini.
Dapatkan sesi
Cakupan koneksi ini: alur yang tersedia baginya, dan orang yang masuk yang Anda wakili beserta tingkatnya — acting\ tidak ada sampai seseorang masuk. Panggil terlebih dahulu jika Anda tidak yakin apakah ada yang sudah masuk, dan baca climbWith\ untuk mengetahui alat yang mengumpulkan informasi yang masih kurang pada tingkat saat ini.
Tanpa parameter.
Definisi wire (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 tulis Naikkan ke tingkat yang memungkinkan reservasi dengan memberikan informasi identitas yang masih kurang: nama depan dan belakang, satu saluran kontak, serta persetujuan terhadap Terms. Kirim hanya informasi yang disampaikan tamu dalam percakapan ini. Tempat yang menerima pemesanan instan memerlukan email dan nomor telepon, jadi kumpulkan keduanya jika tamu menginginkan meja yang dikonfirmasi.
Tingkatkan identitas
Naikkan ke tingkat yang memungkinkan reservasi dengan memberikan informasi identitas yang masih kurang: nama depan dan belakang, satu saluran kontak, serta persetujuan terhadap Terms. Kirim hanya informasi yang disampaikan tamu dalam percakapan ini. Tempat yang menerima pemesanan instan memerlukan email dan nomor telepon, jadi kumpulkan keduanya jika tamu menginginkan meja yang dikonfirmasi.
| Parameter | Tipe | Deskripsi |
|---|---|---|
idempotencyKey wajib | string | kunci pilihan Anda untuk penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
acceptTerms | boolean | true jika tamu menyetujui Terms di https://www.tastematch.io/agb |
email | string | email kontak |
firstName | string | nama depan tamu |
lastName | string | nama belakang tamu |
phone | string | nomor telepon kontak dalam format internasional |
Definisi wire (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 tulis Perbaiki atau lengkapi identitas. Kolom kosong akan diisi dan kolom yang salah akan diperbaiki, tetapi saluran kontak yang telah divalidasi oleh tamu tidak dapat diganti dari sini. Kirim hanya informasi yang berubah.
Perbarui identitas
Perbaiki atau lengkapi identitas. Kolom kosong akan diisi dan kolom yang salah akan diperbaiki, tetapi saluran kontak yang telah divalidasi oleh tamu tidak dapat diganti dari sini. Kirim hanya informasi yang berubah.
| Parameter | Tipe | Deskripsi |
|---|---|---|
idempotencyKey wajib | string | kunci pilihan Anda untuk penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
acceptTerms | boolean | true jika tamu menyetujui Terms di https://www.tastematch.io/agb |
email | string | email kontak |
firstName | string | nama depan tamu |
lastName | string | nama belakang tamu |
phone | string | nomor telepon kontak dalam format internasional |
Definisi wire (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"
}
SELERA
🔴 get_taste_profile baca Selera yang tercatat untuk identitas ini: deskripsi yang dimilikinya, tingkat keyakinan yang dinyatakan untuk masing-masing, dan jenis selera yang disimpulkan darinya. Bacalah sebelum menyatakan selera lagi — Anda sedang memperbaiki profil, bukan memulai yang baru.
Dapatkan profil selera
Selera yang tercatat untuk identitas ini: deskripsi yang dimilikinya, tingkat keyakinan yang dinyatakan untuk masing-masing, dan jenis selera yang disimpulkan darinya. Bacalah sebelum menyatakan selera lagi — Anda sedang memperbaiki profil, bukan memulai yang baru.
Tanpa parameter.
Definisi wire (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 tulis Nyatakan selera tamu sebagai tingkat keyakinan dari 0 hingga 1 untuk setiap deskripsi, dan simpulkan sebanyak mungkin yang didukung oleh percakapan. Ini menggantikan informasi yang tercatat, jadi kirim gambaran lengkap, bukan koreksi. Deskripsi yang valid adalah yang disebutkan oleh weights\, semuanya dipublikasikan oleh get_vocabulary — deskripsi lainnya akan ditolak. Acara dan karakter menu disimpan bersama informasi lainnya, tetapi merupakan atribut tempat, sehingga memengaruhi filter, bukan vektor selera. Opsional: penemuan, daftar, dan pemesanan semuanya dapat dilakukan tanpanya; ini hanya membuat list_recommended_restaurants menjadi personal.
Kirim profil selera
Nyatakan selera tamu sebagai tingkat keyakinan dari 0 hingga 1 untuk setiap deskriptor, dan simpulkan sebanyak mungkin yang didukung oleh percakapan. Ini menggantikan data yang tersimpan, jadi kirim gambaran lengkap, bukan koreksi. Deskriptornya adalah yang dinamai weights\, semuanya diterbitkan oleh get_vocabulary — deskriptor lainnya akan ditolak. Acara dan karakter menu disimpan bersama data lainnya, tetapi merupakan atribut tempat, jadi keduanya membentuk filter, bukan vektor selera. Opsional: penemuan, daftar, dan pemesanan semuanya berfungsi tanpa ini; data ini hanya membuat list_recommended_restaurants menjadi personal.
| Parameter | Tipe | Deskripsi |
|---|---|---|
idempotencyKey wajib | string | kunci pilihan Anda untuk penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
weights wajib | map<string, number> | tingkat keyakinan 0 hingga 1 untuk setiap deskriptor, salah satu dari 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 |
Definisi wire (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"
}
DAFTAR
🔴 add_restaurant_to_list write Tambahkan tempat ke salah satu daftar milik identitas. Jika tempat tersebut sudah ada di daftar, tidak ada perubahan.
Tambahkan restoran ke daftar
Tambahkan tempat ke salah satu daftar milik identitas. Jika tempat tersebut sudah ada di daftar, tidak ada perubahan.
| Parameter | Tipe | Deskripsi |
|---|---|---|
idempotencyKey wajib | string | kunci pilihan Anda untuk penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
listKey wajib | string | daftar yang akan ditambahkan |
restaurantKey wajib | string | tempat yang akan ditambahkan |
Definisi wire (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 write Buat daftar bernama untuk identitas. Beri nama sesuai tujuannya — tamu akan melihat nama itu lagi nanti, begitu pula Anda.
Buat daftar
Buat daftar bernama untuk identitas. Beri nama sesuai tujuannya — tamu akan melihat nama itu lagi nanti, begitu pula Anda.
| Parameter | Tipe | Deskripsi |
|---|---|---|
idempotencyKey wajib | string | kunci pilihan Anda untuk penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
title wajib | string | tujuan daftar, dalam bahasa tamu |
Definisi wire (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 destructive Hapus salah satu daftar milik identitas beserta semua isinya. Baca daftar terlebih dahulu dan beri tahu tamu apa saja yang akan dihapus; tindakan ini tidak dapat dibatalkan.
Hapus daftar
Hapus salah satu daftar milik identitas beserta semua isinya. Baca daftar terlebih dahulu dan beri tahu tamu apa saja yang akan dihapus; tindakan ini tidak dapat dibatalkan.
| Parameter | Tipe | Deskripsi |
|---|---|---|
idempotencyKey wajib | string | kunci pilihan Anda untuk penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
listKey wajib | string | daftar yang akan dihapus |
Definisi wire (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 read Baca seluruh isi salah satu daftar milik identitas yang sedang bertindak, termasuk setiap tempat di dalamnya. Daftar milik identitas lain tidak dapat dibaca.
Dapatkan daftar
Baca seluruh isi salah satu daftar milik identitas yang sedang bertindak, termasuk setiap tempat di dalamnya. Daftar milik identitas lain tidak dapat dibaca.
| Parameter | Tipe | Deskripsi |
|---|---|---|
listKey wajib | string | kunci daftar, dari list_lists |
Definisi wire (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 read Daftar milik identitas itu sendiri, beserta jumlah item dan gambar sampul untuk masing-masing. Baca ini di awal percakapan lanjutan: inilah yang disimpan tamu terakhir kali.
Daftar daftar
Daftar milik identitas itu sendiri, beserta jumlah item dan gambar sampul untuk masing-masing. Baca ini di awal percakapan lanjutan: inilah yang disimpan tamu terakhir kali.
| Parameter | Tipe | Deskripsi |
|---|---|---|
limit | integer | jumlah baris yang dikembalikan, maksimal 50 |
offset | integer | jumlah baris yang dilewati; bersama totalCount dalam hasil, ini digunakan untuk menelusuri halaman-halamannya |
Definisi wire (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 destructive Hapus tempat dari salah satu daftar milik identitas. Sebelum memanggilnya, beri tahu tamu tempat dan daftar yang dimaksud — tindakan ini menghapus data.
Hapus restoran dari daftar
Hapus tempat dari salah satu daftar milik identitas. Sebelum memanggilnya, beri tahu tamu tempat dan daftar yang dimaksud — tindakan ini menghapus data.
| Parameter | Tipe | Deskripsi |
|---|---|---|
idempotencyKey wajib | string | kunci pilihan Anda untuk penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
listKey wajib | string | daftar yang akan dihapus |
restaurantKey wajib | string | tempat yang akan dihapus |
Definisi wire (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 write Ganti nama salah satu daftar milik identitas. Tempat-tempat di dalamnya tidak berubah.
Perbarui daftar
Ganti nama salah satu daftar milik identitas. Tempat-tempat di dalamnya tidak berubah.
| Parameter | Tipe | Deskripsi |
|---|---|---|
idempotencyKey wajib | string | kunci pilihan Anda untuk penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
listKey wajib | string | daftar yang akan diganti namanya |
title wajib | string | nama baru |
Definisi wire (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"
}
GRUP
🔴 close_group_match write Tutup pencocokan grup agar tidak menerima suara lagi. Pencocokan dan semua suara tetap dapat dibaca; hanya pemungutan suara yang dihentikan. Tutup setelah grup mengambil keputusan, lalu pesan pemenangnya.
Tutup pencocokan grup
Tutup pencocokan grup agar tidak menerima suara lagi. Pencocokan dan semua suara tetap dapat dibaca; hanya pemungutan suara yang dihentikan. Tutup setelah grup mengambil keputusan, lalu pesan pemenangnya.
| Parameter | Tipe | Deskripsi |
|---|---|---|
groupMatchKey wajib | string | pencocokan yang akan ditutup |
idempotencyKey wajib | string | kunci pilihan Anda untuk penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
Definisi wire (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 write Mulai pengambilan keputusan grup: beberapa tempat, beberapa tanggal, dan orang-orang yang akan dimintai pendapat. Jawabannya menyertakan tautan berbagi — berikan kepada tamu untuk diteruskan, karena orang yang diundang tidak memerlukan identitas TasteMatch untuk memberikan suara melalui tautan tersebut. Batasi jumlah opsi: ini adalah keputusan, bukan katalog.
Buat pencocokan grup
Mulai pengambilan keputusan grup: beberapa tempat, beberapa tanggal, dan orang-orang yang akan dimintai pendapat. Jawabannya menyertakan tautan berbagi — berikan kepada tamu untuk diteruskan, karena orang yang diundang tidak memerlukan identitas TasteMatch untuk memberikan suara melalui tautan tersebut. Batasi jumlah opsi: ini adalah keputusan, bukan katalog.
| Parameter | Tipe | Deskripsi |
|---|---|---|
dateOptions wajib | array<string> | tanggal yang akan dipilih, dalam RFC3339 dengan offset UTC wilayah tersebut |
idempotencyKey wajib | string | kunci pilihan Anda untuk penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
restaurantKeys wajib | array<string> | tempat-tempat yang akan dipilih |
title wajib | string | hal yang diputuskan grup, dengan kata-kata tamu |
invitees | array<object> | orang-orang yang akan dimintai pendapat, masing-masing dengan nama dan email |
invitees[].displayName wajib | string | nama yang akan dilihat grup |
invitees[].email wajib | string | tujuan pengiriman undangan |
Definisi wire (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 destructive Hapus pencocokan grup. Tautan berbagi tidak akan berfungsi lagi bagi siapa pun yang memilikinya, dan semua suara akan ikut terhapus. Baca pencocokan tersebut dan beri tahu tamu apa saja yang akan dihapus sebelum memanggilnya.
Hapus pencocokan grup
Hapus pencocokan grup. Tautan berbagi tidak akan berfungsi lagi bagi siapa pun yang memilikinya, dan semua suara akan ikut terhapus. Baca pencocokan tersebut dan beri tahu tamu apa saja yang akan dihapus sebelum memanggilnya.
| Parameter | Tipe | Deskripsi |
|---|---|---|
groupMatchKey wajib | string | pencocokan yang akan dihapus |
idempotencyKey wajib | string | kunci pilihan Anda untuk penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
Definisi wire (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 read Satu pencocokan grup yang dibuat oleh identitas tersebut: tempat-tempatnya, opsi tanggal, siapa yang diundang, siapa yang telah memberikan suara dan pilihannya, serta tautan berbagi.
Dapatkan pencocokan grup
Satu pencocokan grup yang dibuat oleh identitas tersebut: tempat-tempatnya, opsi tanggal, siapa yang diundang, siapa yang telah memberikan suara dan pilihannya, serta tautan berbagi.
| Parameter | Tipe | Deskripsi |
|---|---|---|
groupMatchKey wajib | string | kunci pencocokan, dari list_group_matches |
Definisi wire (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 read Pencocokan grup yang dibuat oleh identitas ini, beserta jumlah orang yang diundang dan yang telah memberikan suara. Pencocokan yang hanya mengundang identitas ini tidak tercantum di sini.
Daftar pencocokan grup
Pencocokan grup yang dibuat oleh identitas ini, beserta jumlah orang yang diundang dan yang telah memberikan suara. Pencocokan yang hanya mengundang identitas ini tidak tercantum di sini.
| Parameter | Tipe | Deskripsi |
|---|---|---|
limit | integer | jumlah baris yang dikembalikan, maksimal 50 |
offset | integer | jumlah baris yang dilewati; bersama totalCount dalam hasil, ini digunakan untuk menelusuri halaman-halamannya |
Definisi wire (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 write Berikan suara satu orang dalam pencocokan grup yang masih terbuka. Gunakan memberId\ untuk orang yang diundang dengan nama; gunakan displayName\ untuk orang yang bergabung melalui tautan berbagi. Catat hanya pilihan yang benar-benar disampaikan orang tersebut: kepemilikan kunci pencocokan merupakan satu-satunya otorisasi, dan memberId yang tidak Anda peroleh dari orang tersebut akan menimpa suaranya. Pencocokan harus masih terbuka.
Kirim suara pencocokan grup
Berikan suara satu orang dalam pencocokan grup yang masih terbuka. Gunakan memberId\ untuk orang yang diundang dengan nama; gunakan displayName\ untuk orang yang bergabung melalui tautan berbagi. Catat hanya pilihan yang benar-benar disampaikan orang tersebut: kepemilikan kunci pencocokan merupakan satu-satunya otorisasi, dan memberId yang tidak Anda peroleh dari orang tersebut akan menimpa suaranya. Pencocokan harus masih terbuka.
| Parameter | Tipe | Deskripsi |
|---|---|---|
groupMatchKey wajib | string | pencocokan yang digunakan untuk memberikan suara |
idempotencyKey wajib | string | kunci pilihan Anda untuk penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
picks wajib | array<object> | satu pilihan untuk setiap pasangan tempat dan tanggal yang diterima orang tersebut |
picks[].dateOptionIdx wajib | integer | indeks opsi tanggal, dimulai dari nol |
picks[].restaurantKey wajib | string | |
displayName | string | nama orang yang bergabung melalui tautan, jika mereka tidak diundang dengan nama |
memberId | string | orang yang diundang yang menjadi pemilik suara ini, dari get_group_match |
Definisi wire (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"
}
BERBAGI
🔴 cancel_shared_reservation destructive Batalkan reservasi yang memiliki tautan edit pada tamu. Tindakan ini tidak dapat dibatalkan. Sebutkan kembali tempat dan waktunya kepada tamu, lalu tunggu konfirmasi mereka sebelum memanggilnya. Untuk reservasi milik identitas yang sedang bertindak, gunakan cancel_reservation, yang akan memeriksa konfirmasi tersebut untuk Anda.
Batalkan reservasi bersama
Batalkan reservasi yang memiliki tautan edit pada tamu. Tindakan ini tidak dapat dibatalkan. Sebutkan kembali tempat dan waktunya kepada tamu, lalu tunggu konfirmasi mereka sebelum memanggilnya. Untuk reservasi milik identitas yang sedang bertindak, gunakan cancel_reservation, yang akan memeriksa konfirmasi tersebut untuk Anda.
| Parameter | Tipe | Deskripsi |
|---|---|---|
editToken wajib | string | token dari tautan edit milik tamu |
idempotencyKey wajib | string | kunci pilihan Anda untuk penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
Definisi wire (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 tulis Buat tautan yang dapat dikirim tamu kepada orang lain. Hanya untuk dibaca: siapa pun yang membukanya dapat melihat, tetapi tidak dapat mengedit. Membuat tautan dua kali untuk objek yang sama akan menghasilkan tautan yang sama. Buat tautan hanya untuk tempat yang ditanyakan tamu atau reservasi yang dimiliki identitas yang sedang bertindak — tautan dapat dibaca oleh siapa pun yang memilikinya, dan tautan reservasi menampilkan tempat, tanggal, dan jumlah orang.
Buat kunci berbagi
Buat tautan yang dapat dikirim tamu kepada orang lain. Hanya untuk dibaca: siapa pun yang membukanya dapat melihat, tetapi tidak dapat mengedit. Membuat tautan dua kali untuk objek yang sama akan menghasilkan tautan yang sama. Buat tautan hanya untuk tempat yang ditanyakan tamu atau reservasi yang dimiliki identitas yang sedang bertindak — tautan dapat dibaca oleh siapa pun yang memilikinya, dan tautan reservasi menampilkan tempat, tanggal, dan jumlah orang.
| Parameter | Tipe | Deskripsi |
|---|---|---|
idempotencyKey wajib | string | kunci pilihan Anda untuk satu penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
kind wajib | string | yang akan dibagikan: restaurant, reservation |
objectKey wajib | string | kunci tempat atau reservasi yang akan dibagikan |
Definisi wire (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 baca Indeks publik semua tempat dan daftar yang dapat dibagikan, dalam format XML. Ukurannya besar: baca untuk mengetahui apa saja yang tersedia, bukan untuk menjawab satu pertanyaan.
Dapatkan peta situs berbagi
Indeks publik semua tempat dan daftar yang dapat dibagikan, dalam format XML. Ukurannya besar: baca untuk mengetahui apa saja yang tersedia, bukan untuk menjawab satu pertanyaan.
Tanpa parameter.
Definisi wire (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 baca Ubah ID halaman publik — ID yang dapat dibaca dalam URL tempat atau daftar di tastematch.io — menjadi objek yang dirujuk dan kuncinya.
Selesaikan ID publik berbagi
Ubah ID halaman publik — ID yang dapat dibaca dalam URL tempat atau daftar di tastematch.io — menjadi objek yang dirujuk dan kuncinya.
| Parameter | Tipe | Deskripsi |
|---|---|---|
objectType wajib | string | restaurant atau list |
publicId wajib | string | ID yang dapat dibaca dari URL publik |
Definisi wire (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 baca Ubah tautan berbagi yang ditempelkan tamu menjadi hal yang dituju tautan tersebut — tempat, reservasi, atau kecocokan grup — beserta kunci untuk melanjutkan. Berikan token, yaitu segmen path terakhir dari tautan. Tautan yang sudah kedaluwarsa atau bukan milik kami akan dianggap tidak ditemukan.
Selesaikan token berbagi
Ubah tautan berbagi yang ditempelkan tamu menjadi hal yang dituju tautan tersebut — tempat, reservasi, atau kecocokan grup — beserta kunci untuk melanjutkan. Berikan token, yaitu segmen path terakhir dari tautan. Tautan yang sudah kedaluwarsa atau bukan milik kami akan dianggap tidak ditemukan.
| Parameter | Tipe | Deskripsi |
|---|---|---|
token wajib | string | token dari tautan berbagi, yaitu segmen path terakhirnya |
Definisi wire (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 tulis Ubah reservasi yang memiliki tautan edit dari tamu — reservasi yang dibuat di tempat lain, bukan melalui kami. Tautan tersebut adalah otorisasi, jadi mintalah kepada tamu dan gunakan hanya untuk reservasi yang mereka sebutkan. Untuk reservasi yang dimiliki identitas yang sedang bertindak, gunakan update_reservation.
Perbarui reservasi bersama
Ubah reservasi yang memiliki tautan edit dari tamu — reservasi yang dibuat di tempat lain, bukan melalui kami. Tautan tersebut adalah otorisasi, jadi mintalah kepada tamu dan gunakan hanya untuk reservasi yang mereka sebutkan. Untuk reservasi yang dimiliki identitas yang sedang bertindak, gunakan update_reservation.
| Parameter | Tipe | Deskripsi |
|---|---|---|
editToken wajib | string | token dari tautan edit milik tamu |
idempotencyKey wajib | string | kunci pilihan Anda untuk satu penulisan ini; mengirim kunci yang sama lagi akan mengembalikan hasil pertama, bukan menulis dua kali |
dateTime | string | waktu baru, RFC3339 dengan offset UTC wilayah |
pax | integer | jumlah orang yang baru |
Definisi wire (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"
}
UTILITAS
🟢 get_skill baca Baca satu atau beberapa panduan lengkap. Minta beberapa sekaligus, bukan satu per giliran.
Dapatkan keahlian
Baca satu atau beberapa panduan lengkap. Minta beberapa sekaligus, bukan satu per giliran.
| Parameter | Tipe | Deskripsi |
|---|---|---|
names wajib | array<string> | panduan yang akan dibaca, dari list_skills |
Definisi wire (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 baca Semua nilai yang diterima filter, berdasarkan sumbu, beserta aturan penggabungannya. Baca sebelum menggunakan filter untuk pertama kali dan simpan untuk percakapan ini — deskriptor yang ditebak akan ditolak, sedangkan slug masakan yang ditebak tidak akan menghasilkan kecocokan.
Dapatkan kosakata
Semua nilai yang diterima filter, berdasarkan sumbu, beserta aturan penggabungannya. Baca sebelum menggunakan filter untuk pertama kali dan simpan untuk percakapan ini — deskriptor yang ditebak akan ditolak, sedangkan slug masakan yang ditebak tidak akan menghasilkan kecocokan.
Tanpa parameter.
Definisi wire (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 baca Panduan yang tersedia, masing-masing satu baris. Baca panduan sebelum menjalani alur yang belum pernah Anda lakukan; panduan memuat urutan dan hal-hal yang perlu diwaspadai yang tidak tercantum dalam deskripsi alat.
Daftar keahlian
Panduan yang tersedia, masing-masing satu baris. Baca panduan sebelum menjalani alur yang belum pernah Anda lakukan; panduan memuat urutan dan hal-hal yang perlu diwaspadai yang tidak tercantum dalam deskripsi alat.
Tanpa parameter.
Definisi wire (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 baca Ubah nama yang disebutkan tamu menjadi kunci yang mungkin dimaksud, diurutkan dari yang paling cocok. kind\ menunjukkan apa yang dicari: restaurant, region, list, reservation. list\ atau reservation\ adalah milik orang yang masuk dan memerlukan proses masuk. Selesaikan satu kali untuk setiap hal, lalu teruskan kuncinya: nama yang diselesaikan lagi nanti dapat mengarah ke tempat yang berbeda. Sebutkan kembali labelnya kepada tamu jika ada lebih dari satu kandidat yang hampir cocok.
Selesaikan kunci
Ubah nama yang disebutkan tamu menjadi kunci yang mungkin dimaksud, diurutkan dari yang paling cocok. kind\ menunjukkan apa yang dicari: restaurant, region, list, reservation. list\ atau reservation\ adalah milik orang yang masuk dan memerlukan proses masuk. Selesaikan satu kali untuk setiap hal, lalu teruskan kuncinya: nama yang diselesaikan lagi nanti dapat mengarah ke tempat yang berbeda. Sebutkan kembali labelnya kepada tamu jika ada lebih dari satu kandidat yang hampir cocok.
| Parameter | Tipe | Deskripsi |
|---|---|---|
kind wajib | string | yang akan diselesaikan: restaurant, region, list, reservation |
lat | number | lintang, untuk menyelesaikan wilayah dari titik, bukan nama |
lng | number | bujur, dipasangkan dengan lat |
regionId | string | batasi pencarian restaurant ke satu wilayah |
text | string | nama sebagaimana disebutkan tamu |
Definisi wire (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"
}
PETUNJUK
Anda adalah agen yang menggunakan TasteMatch core — penemuan restoran, pencocokan selera, dan reservasi. Anda tidak perlu memahami vektor TasteMatch atau sistem pelabelan kami untuk dapat membantu. Gunakan filter apa pun dengan interpretasi yang Anda pilih. Jangan pernah mengarang deskriptor — panggil get_vocabulary. Anda bertindak untuk satu orang: siapa pun yang masuk ke koneksi ini. Sebelum ada yang masuk, fitur penemuan tetap berfungsi, dan alat yang memerlukan identitas akan meminta mereka untuk masuk. Alur: DISCOVER, PLACE, RESTAURANT, AVAILABILITY, RESERVATION, IDENTITY, TASTE, LISTS, GROUP, SHARE, UTILITY. Tata bahasa nama — setiap alat mengikuti pola: get_ | list_ | search_ | filter_ | count_ | resolve_ untuk baca; create_ | update_ | delete_ | {verb}_ untuk tulis. Arahkan berdasarkan maksud: Nama, bukan kunci -> resolve_key, lalu operasikan dengan kunci tersebut "restoran seperti X" -> filter_restaurants, gunakan faset dari get_vocabulary "berapa banyak" -> count_restaurants, jangan pernah memfilter lalu menghitung baris Tempat tertentu -> get_restaurant, dengan fields[] Hidangan tertentu -> search_dishes Pemesanan -> get_reservation_info -> list_availability_slots -> create_instant_reservation atau create_reservation_request Menyimpan sesuatu untuk nanti -> sebuah daftar Kunci adalah milik Anda untuk disimpan. Selesaikan nama satu kali, lalu teruskan kuncinya sepanjang alur. Jangan selesaikan ulang nama yang kuncinya sudah Anda miliki. Daftar adalah tempat penyimpanan Anda. Masukkan daftar pilihan, kumpulan perbandingan, atau tempat yang telah dibahas ke dalam daftar bernama: daftar itu milik identitas yang sedang bertindak dan tetap tersedia pada sesi berikutnya, saat konteks Anda mungkin sudah tidak ada. Identitas dikumpulkan saat diperlukan, tidak pernah sebelumnya. Penemuan tidak menulis apa pun dan tidak memerlukan proses masuk. Untuk reservasi, diperlukan tingkat reservasi: nama, satu saluran kontak, dan persetujuan terhadap Terms. Alat yang menolak karena identitas akan menyebutkan tingkat yang belum Anda miliki dan alat untuk mencapainya. Nilai yang sudah tersimpan tidak pernah diganti dengan nilai yang Anda kirim. Tidak ada fitur sosial: tidak ada mengikuti, memblokir, pengikut, pencarian pengguna, notifikasi, atau penelusuran profil. Kecocokan grup adalah satu-satunya fitur untuk banyak orang, dan berfungsi melalui tautan berbagi — orang yang diundang tidak memerlukan identitas TasteMatch.
Efisiensi data: batas default 10, totalCount selalu dilaporkan. Selalu gunakan filter. Minta fields[], bukan seluruh dokumen. Lakukan secara berkelompok, jangan berulang kali. Pemesanan: baca mode pemesanan tempat terlebih dahulu; pemesanan instan dan permintaan adalah alat yang berbeda. Pesan slot yang Anda baca dari list_availability_slots. Biarkan approxMinutes bernilai 0 kecuali tamu memberi tahu bahwa mereka fleksibel — nilai bukan nol memungkinkan tempat memesan waktu yang berbeda dari yang diminta, dan jawabannya akan menyatakannya dalam adjusted dan bookedDate.
Penulisan: berikan idempotencyKey — kunci yang sama dua kali akan mengembalikan hasil pertama, bukan menulis dua kali. Alat destruktif diberi anotasi; baca target dan beri tahu tamu apa yang akan dihapus sebelum memanggilnya. cancel_reservation harus dikonfirmasi terlebih dahulu: baca reservasi, sebutkan kembali tempat dan waktunya kepada tamu, tunggu, lalu sertakan keduanya dalam pemanggilan. Jangan pernah membatalkan hanya berdasarkan kunci, seberapa pun yakinnya Anda. Jika gagal, baca pesannya. Penolakan validasi, tidak ditemukan, atau terlarang berasal dari kami dan memberi tahu cara memperbaiki pemanggilan — perbaiki, jangan ulangi. Kode tanpa penjelasan tidak dapat dicoba ulang; laporkan. Sajikan hasil sebagai ringkasan yang mudah dibaca, bukan JSON mentah, kecuali diminta sebaliknya. Panduan untuk alur yang belum pernah Anda lakukan: list_skills, lalu get_skill.
KEAHLIAN
discover-to-reserve — seluruh alur: temukan tempat, baca cara pemesanannya, pesan meja
Mulai dari tempat, lalu restoran, lalu pemesanan. 1. Ubah lokasi tamu menjadi regionId: resolve_key dengan kind region, atau list_regions. 2. Temukan tempat: filter_restaurants untuk jenis tempat, search_restaurants untuk nama tertentu, search_dishes untuk hidangan tertentu. Baca get_vocabulary satu kali sebelum menggunakan filter untuk pertama kali. 3. Persempit dengan count_restaurants sebelum mengambil baris jika deskripsi tamu masih samar. 4. Baca restoran: get_restaurant, gunakan tampilan ringkas secara default, fields[] untuk sisanya. 5. Baca cara pemesanannya: get_reservation_info. Ini menentukan alat berikutnya dan tidak boleh ditebak. 6. Baca ketersediaan: list_availability_slots. Tawarkan waktu yang benar-benar tersedia kepada tamu. 7. Kumpulkan identitas hanya sekarang: tamu masuk, lalu gunakan promote_identity untuk mencapai tingkat yang dapat melakukan reservasi. 8. Pesan meja: create_instant_reservation di tempat yang menerima pemesanan instan, create_reservation_request di tempat yang menerima permintaan, create_reservation_offer di tempat yang memesan melalui widgetnya sendiri. Beri tahu tamu mana dari ketiganya yang terjadi. Permintaan belum berarti meja sudah dipesan; penawaran juga belum berarti meja sudah dipesan sampai mereka menyelesaikan proses di widget dan get_reservation_status menyatakannya.
sign-in-and-identity — untuk siapa Anda bertindak, tingkatannya, alat untuk naik tingkat, dan apa yang dapat dilakukan pada setiap tingkat
Anda bertindak untuk satu orang: orang yang masuk ke koneksi ini. Identitasnya adalah sesi masuk tersebut; tidak ada hal lain yang menentukan data siapa yang disentuh, dan tidak ada argumen yang dapat mengubahnya. Sebelum siapa pun masuk, penemuan tetap berfungsi. Alat yang bertindak untuk seseorang akan meminta mereka masuk saat Anda memanggilnya, jadi panggil alat itu saat tamu membutuhkannya, alih-alih meminta mereka masuk terlebih dahulu. Tingkatan, diturunkan dari apa yang dimiliki identitas: masuk secara anonim memberi akses ke penemuan, daftar, pencocokan grup, reservasi berdasarkan selera + nama depan dan belakang, kontak memberi akses ke profil reservasi + kontak tervalidasi, tidak ada tambahan di sini. Naikkan tingkatan dengan promote_identity. Penolakan terkait identitas menyebutkan tingkatan yang belum Anda miliki dan alat untuk mencapainya — baca pesannya, jangan mencoba lagi. Tempat dengan pemesanan instan memerlukan email dan nomor telepon, jadi kumpulkan keduanya saat tamu menginginkan meja yang dikonfirmasi, bukan permintaan. Nilai yang sudah tersimpan tidak akan pernah diganti oleh apa pun yang Anda kirim. Baca get_identity sebelum meminta tamu memberikan sesuatu yang sudah kami miliki.
label-vocabulary — sumbu deskriptor, validasi-bukan-pemetaan, dan cara facet digabungkan
Panggil get_vocabulary dan gunakan istilahnya persis. Jangan pernah mengarang, menerjemahkan, atau menyingkatnya. Sumbu: dims (seperti apa tempatnya), occasions (cocok untuk apa), menuMetas (jenis layanan), menuDescriptors (apa yang tersedia di menu), cuisine (jenis masakan). AND antarfacet, OR dalam satu facet. Setiap nilai mempersempit hasil. Teruskan apa yang diminta tamu dan jangan tambahkan apa pun — filter yang tidak diminta siapa pun akan diam-diam menghapus tempat yang mungkin mereka sukai. menuDescriptors adalah sisi tempat, bukan sisi tamu. Orang dengan penyakit celiac tidak membutuhkan "tamu bebas gluten"; mereka membutuhkan menu yang mencantumkan hidangan bebas gluten. Nilai yang tidak dikenal akan ditolak dengan pesan yang menyebutkan facet-nya. Slug cuisine yang dikarang akan menghasilkan daftar kosong yang seolah mengatakan "tidak ada tempat seperti itu di sini".
availability-semantics — instan versus permintaan, urutan slot, approxMinutes dan adjusted
Mode pemesanan tempat ditentukan oleh tempat itu sendiri. Baca dengan get_reservation_info sebelum memilih alat. meja instan dikonfirmasi langsung -> create_instant_reservation permintaan diterima oleh seseorang di tempat -> create_reservation_request Waktu slot mengikuti urutan milik tempat itu sendiri pada jam lokalnya. Waktu tersebut tidak mengikuti kisi tertentu, jadi pukul 19:00 sering kali tidak dapat dipesan, sedangkan pukul 19:15 bisa. Baca list_availability_slots dan pesan waktu yang diberikan. Teruskan pax dan alat akan menghapus slot yang terlalu kecil untuk rombongan, termasuk minimum per area. Teruskan areaId dari slot yang Anda pilih untuk mempertahankan area tempat duduk; ini mempersempit pencarian dan tidak pernah memindahkan pemesanan. approxMinutes secara default bernilai 0, artinya hanya waktu ini atau tidak sama sekali. Naikkan nilainya hanya jika tamu mengatakan bahwa mereka fleksibel, lalu baca adjusted\ dan bookedDate\ dalam jawaban dan beri tahu mereka waktu yang benar-benar didapat. Slot dan rentang waktu yang kosong berarti tempat tutup pada hari itu atau tanggalnya melewati batas pemesanan. Tawarkan hari lain, jangan mencoba lagi.
group-match — buat, undang lewat tautan, kumpulkan suara dari orang tanpa identitas, tutup
Pencocokan grup adalah fitur untuk banyak orang, dan cara kerjanya menggunakan tautan. 1. Buat dengan create_group_match beberapa tempat dan beberapa tanggal. Batasi keduanya: ini keputusan, bukan katalog. 2. Jawaban berisi tautan berbagi. Berikan kepada tamu untuk dibagikan. Siapa pun yang membukanya dapat memberikan suara tanpa identitas TasteMatch sama sekali. 3. get_group_match menampilkan siapa yang sudah memberikan suara dan pilihannya. submit_group_match_vote digunakan untuk suara yang disampaikan kepada Anda, bukan melalui tautan — memberId untuk seseorang yang diundang dengan nama, displayName untuk orang baru. 4. Panggil close_group_match setelah grup memutuskan. Suara tetap dapat dibaca. 5. Lalu pesan pilihan pemenang melalui alur pemesanan, untuk siapa pun yang menjadi tuan rumah.
regions-and-places — menentukan lokasi, dan kegunaan regionId
Semua hal yang cakupannya berdasarkan wilayah memerlukan regionId, dan regionId berasal dari kami, bukan dari tamu. resolve_key dengan kind region menerima nama kota, distrik, alamat, atau lat dan lng. list_regions mencantumkan semua wilayah yang kami cakup; search_places mencocokkan lokasi yang lebih kecil dengan wilayah yang menaunginya. Wilayah menyertakan zona waktu IANA yang digunakan untuk menuliskan waktu tempat-tempat di dalamnya. Setiap dateTime yang Anda kirim harus menyertakan offset UTC wilayah tersebut, dan setiap waktu slot yang Anda baca menggunakan jam itu. Hasil kosong berarti kami tidak memiliki tempat di sana. Katakan demikian, alih-alih diam-diam memperluas pencarian.
lists-as-store — apa yang sebaiknya disimpan dalam daftar, bukan dalam konteks
Konteks Anda berakhir bersama percakapan. Daftar tidak. Simpan daftar pilihan, kumpulan perbandingan, atau tempat-tempat yang sudah ditolak tamu dalam daftar bernama dengan create_list dan add_restaurant_to_list. Beri nama sesuai kegunaannya; tamu akan melihat nama itu lagi. Mulai percakapan lanjutan dengan list_lists. Itulah yang mereka simpan terakhir kali. Daftar terkait dengan identitas yang bertindak dan bersifat pribadi di sini — berbagi, melihat daftar orang lain, dan mencari di seluruh daftar adalah fitur sosial, dan antarmuka ini tidak memiliki fitur sosial. Hapus item alih-alih terus menumpuk: remove_restaurant_from_list menghapus data, jadi beri tahu tamu terlebih dahulu tempat dan daftar mana yang akan dihapus.
bulk-and-pagination — hitung sebelum memfilter, gunakan batch alih-alih perulangan, batas default, fields[]
Minta lebih sedikit. count_restaurants menjawab "berapa banyak" tanpa mengembalikan baris. Gunakan saat mempersempit pilihan, lalu ambil barisnya sekali. Setiap alat daftar dan pencarian menerima limit dan offset serta melaporkan totalCount. Batas default adalah 10. Gunakan offset untuk membuka halaman berikutnya, alih-alih menjalankan pencarian lagi. get_restaurant secara default menggunakan proyeksi ringkas. Sebutkan fields[] hanya untuk hal yang benar-benar akan Anda sampaikan kepada tamu; vektor label dan kartu menu berukuran besar. Lakukan secara batch jika tersedia: satu panggilan impressions per giliran, beberapa skill dalam satu get_skill. Tentukan nama sekali, lalu teruskan key-nya. Menentukannya lagi berarti satu perjalanan bolak-balik tambahan dan risiko mendapatkan tempat yang berbeda.