Taste Match
公式スイス国内および周辺地域のレストランを簡単に予約・検索できます。
Taste Match MCPで何ができますか?
- まず件数を確認 — 条件に合う店舗の一覧を取得する前に、
count_restaurantsを使って該当する店舗数を確認します。 - 条件で絞り込む —
filter_restaurantsを使って、場所、営業日やサービス、料理のジャンル、メニューやドリンクの選択肢、予約可否で店舗を検索します。 - 料理名で検索 — ゲスト自身の言葉で料理名をメニューから検索し、
search_dishesで提供している店舗を確認します。 - 店名で検索 —
search_restaurantsを使って、店名や呼び名でレストランを検索します。地域を指定して絞り込むこともできます。 - 人気の店舗を探す —
list_popular_restaurantsを使って、指定した地域で最も人気のある店舗を一覧表示します。 - 似た店舗を探す —
list_similar_restaurantsを使って、すでにキーがわかっている店舗と好みが近い店舗を探します。
ホスト型 MCP サーバー
npx add-mcp 'https://mcp.tastematch.io/'Claude Code、Codex、Cursor などにインストールできます
ドキュメント
| 公開サービス URL | https://mcp.tastematch.io/ |
|---|---|
| プライバシーに関する声明の URL | https://tastematch.io/mcp/privacy.html |
スイス国内およびその周辺で、あなたにぴったりのレストランを見つけるための Streamable HTTP MCP Toolkit です。上記の URL を使って MCP クライアントに追加してください。検索は公開されています。
認証
MCP サーバーにアクセスするには、サービスが /.well-known/oauth-protected-resource/mcp 内の authorization_servers で指定された認可サーバーに対し、DCR(OAuth 2.0 Dynamic Client Registration)を使って自己登録する必要があります。そのサーバー独自のメタデータ文書に registration_endpoint が記載されています。
認証が必要なエンドポイントをサポートするには、ユーザーが同じ認可サーバーに対して OpenID Connect(PKCE を使用した認可コードフロー)で認証し、/.well-known/oauth-protected-resource/mcp に記載された scopes_supported を要求する必要があります。
- 🟢 サインイン不要: 誰でもツールから回答を得られます。
- 🟡 一部の引数でサインインが必要。例:
list_recommended_restaurantsresolve_key。それ以外の呼び出しは公開されており、ユーザー固有のパラメーターを指定できます。これらのパラメーターは、ログイン中の場合にのみ使用できます。ログイン失敗については以下を参照してください。 - 🔴 サインイン必須: ツールはユーザーに代わって動作します。ユーザーは匿名でもかまいません。トークンなしで呼び出すと、
/.well-known/oauth-protected-resource/mcpを示すWWW-Authenticateチャレンジとともに HTTP 401 が返され、クライアントは OAuth(PKCE を使用した認可コードフロー)でユーザーをサインインさせます。サインインしたユーザーが本人として扱われます。 - 段階:
anonymousはサインイン済みであれば誰でも利用できます。reservationでは、予約時に必要な氏名、連絡先 1 件、利用規約への同意が追加され、これらはpromote_identityが収集します。 - レート制限: 呼び出しはサインインしたユーザーごとにカウントされ、トークンを持たないすべての呼び出し元は共通の上限を使用します。上限を超えた呼び出しはコードとともに拒否されます。しばらく待ってから、呼び出し回数を減らしてください。
検索
🟢 count_restaurants 読み取り ファセット条件に一致する店舗数を、行を返さずに調べます。フィルター条件を検討する際は、filter_restaurants の前に呼び出してください。店舗情報を取得せずに同じ件数を確認できます。
レストラン数を数える
ファセット条件に一致する店舗数を、行を返さずに調べます。フィルター条件を検討する際は、filter_restaurants の前に呼び出してください。店舗情報を取得せずに同じ件数を確認できます。
| パラメーター | 型 | 説明 |
|---|---|---|
drinkOptions | object | ドリンクリストに含まれている必要があるもの |
drinkOptions.beerSelection | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
drinkOptions.cocktailSelection | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
drinkOptions.natureWineSelection | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
drinkOptions.wineSelection | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
kitchen | object | 提供する料理の種類 |
kitchen.cuisine | array<string> | 料理のスラッグ。いずれか 1 つに一致すれば条件を満たします。一覧は get_vocabulary にあります |
location | object | 検索場所: regionId、または半径を指定した地点 |
location.lat | number | 検索中心の緯度。lng と組み合わせて指定します |
location.lng | number | 検索中心の経度 |
location.radiusMeters | integer | 地点から検索する範囲 |
location.regionId | string | 検索する地域。list_regions または resolve_key から指定します |
menuOptions | object | メニューに含まれている必要があるもの |
menuOptions.fishDishes | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
menuOptions.glutenFreeDishes | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
menuOptions.halalDishes | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
menuOptions.lactoseFreeDishes | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
menuOptions.meatDishes | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
menuOptions.veganDishes | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
menuOptions.vegetarianDishes | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
nutrition | object | 店舗全体の特徴 |
nutrition.veganRestaurants | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
nutrition.vegetarianRestaurants | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
opening | object | 店舗の営業時間 |
opening.daytime | string | 営業している必要がある時間帯: lunch または dinner |
opening.openOn | array<integer> | 営業している必要がある曜日。日曜日は 0 です |
reservation | object | 予約方法 |
reservation.hasWidget | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
reservation.liveAvailability | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
ワイヤー定義 (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Count restaurants"
},
"description": "How many venues a facet set matches, with no rows. Call this before filter_restaurants when exploring a filter space: it answers the same question without the documents.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"drinkOptions": {
"additionalProperties": false,
"description": "what the drinks list must carry",
"properties": {
"beerSelection": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"cocktailSelection": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"natureWineSelection": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"wineSelection": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
}
},
"type": "object"
},
"kitchen": {
"additionalProperties": false,
"description": "the kitchen it cooks",
"properties": {
"cuisine": {
"description": "cuisine slugs, any one of which satisfies it; the list is in get_vocabulary",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"location": {
"additionalProperties": false,
"description": "where to search: a regionId, or a point with a radius",
"properties": {
"lat": {
"description": "latitude of the search centre, paired with lng",
"type": "number"
},
"lng": {
"description": "longitude of the search centre",
"type": "number"
},
"radiusMeters": {
"description": "how far around the point to look",
"type": "integer"
},
"regionId": {
"description": "the region to search in, from list_regions or resolve_key",
"type": "string"
}
},
"type": "object"
},
"menuOptions": {
"additionalProperties": false,
"description": "what the menu must carry",
"properties": {
"fishDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"glutenFreeDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"halalDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"lactoseFreeDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"meatDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"veganDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"vegetarianDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
}
},
"type": "object"
},
"nutrition": {
"additionalProperties": false,
"description": "what the venue is as a whole",
"properties": {
"veganRestaurants": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"vegetarianRestaurants": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
}
},
"type": "object"
},
"opening": {
"additionalProperties": false,
"description": "when the venue is open",
"properties": {
"daytime": {
"description": "the service to be open for: lunch or dinner",
"type": "string"
},
"openOn": {
"description": "weekdays it must be open on, Sunday is 0",
"items": {
"type": "integer"
},
"type": "array"
}
},
"type": "object"
},
"reservation": {
"additionalProperties": false,
"description": "how it can be booked",
"properties": {
"hasWidget": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"liveAvailability": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
}
},
"type": "object"
}
},
"required": [],
"type": "object"
},
"name": "count_restaurants",
"title": "Count restaurants"
}
🟢 filter_restaurants 読み取り 場所、営業時間、料理の種類、メニューやドリンクリストに含まれるもの、予約方法などのファセットで店舗を検索します。各ファセットは該当する店舗に結果を絞り込むため、ゲストが指定した条件だけを渡してください。特徴や料理の値は get_vocabulary から取得します。存在しない値を指定すると無視されず、拒否されます。人気順で並べられ、好みのベクトルは適用されません。
レストランを絞り込む
場所、営業時間、料理の種類、メニューやドリンクリストに含まれるもの、予約方法などのファセットで店舗を検索します。各ファセットは該当する店舗に結果を絞り込むため、ゲストが指定した条件だけを渡してください。特徴や料理の値は get_vocabulary から取得します。存在しない値を指定すると無視されず、拒否されます。人気順で並べられ、好みのベクトルは適用されません。
| パラメーター | 型 | 説明 |
|---|---|---|
drinkOptions | object | ドリンクリストに含まれている必要があるもの |
drinkOptions.beerSelection | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
drinkOptions.cocktailSelection | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
drinkOptions.natureWineSelection | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
drinkOptions.wineSelection | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
kitchen | object | 提供する料理の種類 |
kitchen.cuisine | array<string> | 料理のスラッグ。いずれか 1 つに一致すれば条件を満たします。一覧は get_vocabulary にあります |
limit | integer | 返す行数。最大 50 |
location | object | 検索場所: regionId、または半径を指定した地点 |
location.lat | number | 検索中心の緯度。lng と組み合わせて指定します |
location.lng | number | 検索中心の経度 |
location.radiusMeters | integer | 地点から検索する範囲 |
location.regionId | string | 検索する地域。list_regions または resolve_key から指定します |
menuOptions | object | メニューに含まれている必要があるもの |
menuOptions.fishDishes | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
menuOptions.glutenFreeDishes | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
menuOptions.halalDishes | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
menuOptions.lactoseFreeDishes | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
menuOptions.meatDishes | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
menuOptions.veganDishes | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
menuOptions.vegetarianDishes | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
nutrition | object | 店舗全体の特徴 |
nutrition.veganRestaurants | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
nutrition.vegetarianRestaurants | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
offset | integer | スキップする行数。結果の totalCount と組み合わせてページ送りに使います |
opening | object | 店舗の営業時間 |
opening.daytime | string | 営業している必要がある時間帯: lunch または dinner |
opening.openOn | array<integer> | 営業している必要がある曜日。日曜日は 0 です |
reservation | object | 予約方法 |
reservation.hasWidget | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
reservation.liveAvailability | boolean | true の場合、それを提供する店舗に絞り込みます。絞り込まない場合は省略します |
ワイヤー定義 (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Filter restaurants"
},
"description": "Search venues by facet: where, when open, what kitchen, what the menu and the drinks list carry, and how it can be booked. Every facet narrows the result to the venues carrying it, so pass only what the guest asked for. Descriptor and cuisine values come from get_vocabulary — an invented one is refused rather than ignored. Ranked by popularity; no taste vector is applied.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"drinkOptions": {
"additionalProperties": false,
"description": "what the drinks list must carry",
"properties": {
"beerSelection": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"cocktailSelection": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"natureWineSelection": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"wineSelection": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
}
},
"type": "object"
},
"kitchen": {
"additionalProperties": false,
"description": "the kitchen it cooks",
"properties": {
"cuisine": {
"description": "cuisine slugs, any one of which satisfies it; the list is in get_vocabulary",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"limit": {
"description": "rows to return, at most 50",
"type": "integer"
},
"location": {
"additionalProperties": false,
"description": "where to search: a regionId, or a point with a radius",
"properties": {
"lat": {
"description": "latitude of the search centre, paired with lng",
"type": "number"
},
"lng": {
"description": "longitude of the search centre",
"type": "number"
},
"radiusMeters": {
"description": "how far around the point to look",
"type": "integer"
},
"regionId": {
"description": "the region to search in, from list_regions or resolve_key",
"type": "string"
}
},
"type": "object"
},
"menuOptions": {
"additionalProperties": false,
"description": "what the menu must carry",
"properties": {
"fishDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"glutenFreeDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"halalDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"lactoseFreeDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"meatDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"veganDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"vegetarianDishes": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
}
},
"type": "object"
},
"nutrition": {
"additionalProperties": false,
"description": "what the venue is as a whole",
"properties": {
"veganRestaurants": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"vegetarianRestaurants": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
}
},
"type": "object"
},
"offset": {
"description": "rows to skip; with totalCount in the result this pages through them",
"type": "integer"
},
"opening": {
"additionalProperties": false,
"description": "when the venue is open",
"properties": {
"daytime": {
"description": "the service to be open for: lunch or dinner",
"type": "string"
},
"openOn": {
"description": "weekdays it must be open on, Sunday is 0",
"items": {
"type": "integer"
},
"type": "array"
}
},
"type": "object"
},
"reservation": {
"additionalProperties": false,
"description": "how it can be booked",
"properties": {
"hasWidget": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
},
"liveAvailability": {
"description": "true narrows to venues carrying it; omit it to not narrow on it",
"type": "boolean"
}
},
"type": "object"
}
},
"required": [],
"type": "object"
},
"name": "filter_restaurants",
"title": "Filter restaurants"
}
🟢 list_popular_restaurants 読み取り 1 つの地域で最も高く評価されている店舗を取得します。地域の指定は必須です。指定しない場合、登録されているすべての店舗が対象になります。
人気のレストランを一覧表示
1 つの地域で最も高く評価されている店舗を取得します。地域の指定は必須です。指定しない場合、登録されているすべての店舗が対象になります。
| パラメーター | 型 | 説明 |
|---|---|---|
regionId required | string | 取得する地域。list_regions から指定します |
limit | integer | 返す行数。最大 50 |
offset | integer | スキップする行数。結果の totalCount と組み合わせてページ送りに使います |
ワイヤー定義 (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "List popular restaurants"
},
"description": "The most-liked venues of one region. A region is required: without one this reads every venue we hold.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "rows to return, at most 50",
"type": "integer"
},
"offset": {
"description": "rows to skip; with totalCount in the result this pages through them",
"type": "integer"
},
"regionId": {
"description": "the region to read, from list_regions",
"type": "string"
}
},
"required": [
"regionId"
],
"type": "object"
},
"name": "list_popular_restaurants",
"title": "List popular restaurants"
}
🟡 list_recommended_restaurants 読み取り サインイン中のゲストの好みに近い順に、おすすめの店舗を取得します。サインイン前は個人向けのおすすめではありません。bookableOnly\ を指定すると、空席のある店舗だけに絞り込まれます。対象は大幅に少なくなり、サインインが必要です。
おすすめのレストランを一覧表示
サインイン中のゲストの好みに近い順に、おすすめの店舗を取得します。サインイン前は個人向けのおすすめではありません。bookableOnly\ を指定すると、空席のある店舗だけに絞り込まれます。対象は大幅に少なくなり、サインインが必要です。
| パラメーター | 型 | 説明 |
|---|---|---|
bookableOnly | boolean | 現在予約可能な店舗だけに絞り込む |
interDiem | integer | bookableOnly を指定した場合、空席を検索する日数 |
limit | integer | 返す行数。最大 50 |
offset | integer | スキップする行数。結果の totalCount と組み合わせてページ送りに使います |
regionId | string | おすすめを検索する地域。省略した場合は本人の地域 |
ワイヤー定義 (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "List recommended restaurants"
},
"description": "Venues recommended for the signed-in guest, closest in taste first; before anyone signs in they are not personal. \`bookableOnly\` keeps only venues with a table free, which is a much smaller set and needs a sign-in.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"bookableOnly": {
"description": "keep only venues with live availability",
"type": "boolean"
},
"interDiem": {
"description": "with bookableOnly, how many days ahead a free table may lie",
"type": "integer"
},
"limit": {
"description": "rows to return, at most 50",
"type": "integer"
},
"offset": {
"description": "rows to skip; with totalCount in the result this pages through them",
"type": "integer"
},
"regionId": {
"description": "the region to recommend in; the identity's own region when omitted",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "list_recommended_restaurants",
"title": "List recommended restaurants"
}
🟢 list_similar_restaurants 読み取り すでにキーを持っている店舗と好みが近い店舗を、近い順に取得します。sameCategory\ を指定すると、同じ料理の系統に絞り込まれます。無効にしない限り有効です。
類似するレストランを一覧表示
すでにキーを持っている店舗と好みが近い店舗を、近い順に取得します。sameCategory\ を指定すると、同じ料理の系統に絞り込まれます。無効にしない限り有効です。
| パラメーター | 型 | 説明 |
|---|---|---|
restaurantKey required | string | 類似店舗を探す基準となる店舗 |
limit | integer | 返す行数。最大 50 |
offset | integer | スキップする行数。結果の totalCount と組み合わせてページ送りに使います |
sameCategory | boolean | 同じ料理の系統に絞り込む。省略時は true |
ワイヤー定義 (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "List similar restaurants"
},
"description": "Venues close in taste to one you already hold a key for, nearest first. \`sameCategory\` keeps them inside the same kitchen family and is on unless you turn it off.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "rows to return, at most 50",
"type": "integer"
},
"offset": {
"description": "rows to skip; with totalCount in the result this pages through them",
"type": "integer"
},
"restaurantKey": {
"description": "the venue to find neighbours of",
"type": "string"
},
"sameCategory": {
"description": "keep to the same kitchen family; true when omitted",
"type": "boolean"
}
},
"required": [
"restaurantKey"
],
"type": "object"
},
"name": "list_similar_restaurants",
"title": "List similar restaurants"
}
🟢 search_dishes 読み取り 指定した料理を提供する店舗を検索します。料理名は、ゲストが使った言葉と語順のまま検索してください。料理名の表現はその料理の一部であるため、言い換えたり、翻訳したり、短縮したりしないでください。長い単語なら多少のスペルミスがあっても一致しますが、非常に短い単語は正確に入力する必要があります。各検索結果には、メニューに記載された料理名が引用されます。exact\ が true になるのは、料理名が一字一句一致した場合だけです。このツールでは営業時間は確認できません。営業時間を調べるには filter_restaurants を使ってください。メニュー情報は一部の店舗に限られます。結果が空でも、登録されているメニューにその料理名がないことを示すだけで、どの店舗もその料理を作っていないという意味ではありません。
料理を検索
指定した料理を提供する店舗を検索します。料理名は、ゲストが使った言葉と語順のまま検索してください。料理名の表現はその料理の一部であるため、言い換えたり、翻訳したり、短縮したりしないでください。長い単語なら多少のスペルミスがあっても一致しますが、非常に短い単語は正確に入力する必要があります。各検索結果には、メニューに記載された料理名が引用されます。exact\ が true になるのは、料理名が一字一句一致した場合だけです。このツールでは営業時間は確認できません。営業時間を調べるには filter_restaurants を使ってください。メニュー情報は一部の店舗に限られます。結果が空でも、登録されているメニューにその料理名がないことを示すだけで、どの店舗もその料理を作っていないという意味ではありません。
| パラメーター | 型 | 説明 |
|---|---|---|
q 必須 | string | ゲストが料理を何と呼んだか |
lat | number | 検索範囲の緯度。lng と組み合わせて指定 |
limit | integer | 返す行数。最大 50 |
lng | number | 検索範囲の経度 |
offset | integer | スキップする行数。結果の totalCount と合わせてページを移動 |
radiusMeters | integer | 地点の周囲を検索する範囲 |
regionId | string | 検索対象を 1 つの地域に限定 |
Wire definition (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Search dishes"
},
"description": "Find the venues that serve a named dish. Search the dish as the guest said it, in their words and their order — the wording of a dish is part of its identity, so do not rephrase, translate or shorten it. Longer words survive a small spelling slip; very short ones must be exact. Every hit quotes the dish as the menu prints it, and \`exact\` is true only where the name matched word for word. This knows nothing of opening hours — use filter_restaurants for that. Menu coverage is partial: an empty result means no menu we hold names that dish, never that nobody cooks it.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"lat": {
"description": "latitude to search around, paired with lng",
"type": "number"
},
"limit": {
"description": "rows to return, at most 50",
"type": "integer"
},
"lng": {
"description": "longitude to search around",
"type": "number"
},
"offset": {
"description": "rows to skip; with totalCount in the result this pages through them",
"type": "integer"
},
"q": {
"description": "the dish as the guest named it",
"type": "string"
},
"radiusMeters": {
"description": "how far around the point to look",
"type": "integer"
},
"regionId": {
"description": "bound the search to one region",
"type": "string"
}
},
"required": [
"q"
],
"type": "object"
},
"name": "search_dishes",
"title": "Search dishes"
}
🟢 search_restaurants read ゲスト自身の言葉で、名前または呼び名から店舗を検索します。3 文字以上を指定してください。地域がわかっている場合は検索対象を限定してください。ゲストが店舗名ではなく種類を説明した場合は、filter_restaurants を使用してください。
レストランを検索
ゲスト自身の言葉で、名前または呼び名から店舗を検索します。3 文字以上を指定してください。地域がわかっている場合は検索対象を限定してください。ゲストが店舗名ではなく種類を説明した場合は、filter_restaurants を使用してください。
| パラメーター | 型 | 説明 |
|---|---|---|
text 必須 | string | 検索語。3 文字以上 |
limit | integer | 返す行数。最大 50 |
offset | integer | スキップする行数。結果の totalCount と合わせてページを移動 |
regionId | string | 検索対象を 1 つの地域に限定。省略すると、対象となるすべての地域を検索 |
Wire definition (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Search restaurants"
},
"description": "Find venues by name or by what they are called, in the guest's own words. Three characters at least. Bound it to a region when you know one. Use filter_restaurants when the guest described a kind of place rather than named one.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "rows to return, at most 50",
"type": "integer"
},
"offset": {
"description": "rows to skip; with totalCount in the result this pages through them",
"type": "integer"
},
"regionId": {
"description": "bound the search to one region; omitted it searches every region we cover",
"type": "string"
},
"text": {
"description": "what to search for, three characters or more",
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"name": "search_restaurants",
"title": "Search restaurants"
}
PLACE
🟢 list_regions read TasteMatch が対応する地域。各地域には、地域を指定するすべてのツールで使う regionId と、その地域の店舗の営業時間および予約枠の時刻に使われる IANA タイムゾーンが含まれます。地点を渡すと、近い順に取得できます。これらの地域に含まれない場所には、当社が登録している店舗はありません。
地域を一覧表示
TasteMatch が対応する地域。各地域には、地域を指定するすべてのツールで使う regionId と、その地域の店舗の営業時間および予約枠の時刻に使われる IANA タイムゾーンが含まれます。地点を渡すと、近い順に取得できます。これらの地域に含まれない場所には、当社が登録している店舗はありません。
| パラメーター | 型 | 説明 |
|---|---|---|
lat | number | 距離順の基準となる緯度。lng と組み合わせて指定 |
limit | integer | 返す行数。最大 50 |
lng | number | 距離順の基準となる経度 |
offset | integer | スキップする行数。結果の totalCount と合わせてページを移動 |
Wire definition (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "List regions"
},
"description": "The regions TasteMatch covers. Each carries the regionId every region-scoped tool takes, and the IANA timezone its venues' opening hours and slot times are written on. Pass a point to get them nearest first. A place not in any of these regions has no venues we hold.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"lat": {
"description": "latitude to sort by distance from, paired with lng",
"type": "number"
},
"limit": {
"description": "rows to return, at most 50",
"type": "integer"
},
"lng": {
"description": "longitude to sort by distance from",
"type": "number"
},
"offset": {
"description": "rows to skip; with totalCount in the result this pages through them",
"type": "integer"
}
},
"required": [],
"type": "object"
},
"name": "list_regions",
"title": "List regions"
}
🟢 search_places read ゲストが挙げた町、地区、または街区を、それを含む地域に照合します。結果が空の場合、その場所の名前が間違っているのではなく、対応地域の範囲外であることを意味します。
場所を検索
ゲストが挙げた町、地区、または街区を、それを含む地域に照合します。結果が空の場合、その場所の名前が間違っているのではなく、対応地域の範囲外であることを意味します。
| パラメーター | 型 | 説明 |
|---|---|---|
q 必須 | string | ゲストが場所を何と呼んだか |
countryCode | string | 照合対象を限定する ISO 3166-1 alpha-2 コード |
limit | integer | 返す行数。最大 50 |
offset | integer | スキップする行数。結果の totalCount と合わせてページを移動 |
Wire definition (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Search places"
},
"description": "Match a town, district or quarter the guest named to the region that contains it. An empty result means the place is outside every region we cover, not that the name was wrong.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"countryCode": {
"description": "ISO 3166-1 alpha-2 code to restrict the match to",
"type": "string"
},
"limit": {
"description": "rows to return, at most 50",
"type": "integer"
},
"offset": {
"description": "rows to skip; with totalCount in the result this pages through them",
"type": "integer"
},
"q": {
"description": "the place as the guest named it",
"type": "string"
}
},
"required": [
"q"
],
"type": "object"
},
"name": "search_places",
"title": "Search places"
}
RESTAURANT
🟢 get_restaurant read 店舗を 1 件読み取ります。デフォルトの投影は軽量で、名前、キー、地域、住所、説明、予約方法、営業時間の概要が含まれます。重いデータは、fields\ で指定した場合にのみ返されます: ContactInformation, MenuCards, MenuCardsV2, labelVector, coverPictures, socialScore, matchInfo, tmType, eventId, businessPro, likesByUser, likesByFollowees, likesUserAvatars, likesFolloweeAvatars。投影を指定しないドキュメントは、タスクの残りの部分より大きくなることがあります。
レストランを取得
店舗を 1 件読み取ります。デフォルトの投影は軽量で、名前、キー、地域、住所、説明、予約方法、営業時間の概要が含まれます。重いデータは、fields\ で指定した場合にのみ返されます: ContactInformation, MenuCards, MenuCardsV2, labelVector, coverPictures, socialScore, matchInfo, tmType, eventId, businessPro, likesByUser, likesByFollowees, likesUserAvatars, likesFolloweeAvatars。投影を指定しないドキュメントは、タスクの残りの部分より大きくなることがあります。
| パラメーター | 型 | 説明 |
|---|---|---|
restaurantKey 必須 | string | 店舗のキー |
accessType | string | ゲストがこの店舗を開くよう求めたとき、どの経路で店舗にたどり着いたか。filtered、searched、recommended、similar、popular、spotlight のいずれか。開いた記録はゲストのものとしてカウントされます。自分で店舗を確認するだけの場合は省略してください。 |
fields | array<string> | 返すフィールド。デフォルトの投影は軽量で、キーは常に含まれます |
Wire definition (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Get restaurant"
},
"description": "Read one venue. The default projection is lean — name, keys, region, address, descriptors, how it can be booked and its opening summary. The heavy parts arrive only when you name them in \`fields\`: ContactInformation, MenuCards, MenuCardsV2, labelVector, coverPictures, socialScore, matchInfo, tmType, eventId, businessPro, likesByUser, likesByFollowees, likesUserAvatars, likesFolloweeAvatars. An unprojected document can be larger than the rest of your task.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"accessType": {
"description": "when the guest asked to open this venue, how they reached it — one of filtered, searched, recommended, similar, popular, spotlight. The open is then counted as theirs; leave it out when you are only checking a venue for yourself.",
"type": "string"
},
"fields": {
"description": "the fields to return; the default projection is lean, and keys are always included",
"items": {
"type": "string"
},
"type": "array"
},
"restaurantKey": {
"description": "the venue's key",
"type": "string"
}
},
"required": [
"restaurantKey"
],
"type": "object"
},
"name": "get_restaurant",
"title": "Get restaurant"
}
🔴 like_restaurant write 操作中の ID がこの店舗を「いいね」したことを記録します。「いいね」は、その後のおすすめの精度を高めます。これはあなたではなくゲストの意思表示です。ゲストが「いいね」と言ったものに対してのみ実行してください。
レストランに「いいね」する
操作中の ID がこの店舗を「いいね」したことを記録します。「いいね」は、その後のおすすめの精度を高めます。これはあなたではなくゲストの意思表示です。ゲストが「いいね」と言ったものに対してのみ実行してください。
| パラメーター | 型 | 説明 |
|---|---|---|
idempotencyKey 必須 | string | この書き込み専用に独自のキーを指定。同じキーを再送すると、二重に書き込まず最初の結果を返します |
restaurantKey 必須 | string | 店舗のキー |
Wire definition (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Like restaurant"
},
"description": "Record that the acting identity likes this venue. Liking is what makes the recommendations that follow better, and it is the guest's statement, not yours — like what they said they liked.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"restaurantKey": {
"description": "the venue's key",
"type": "string"
}
},
"required": [
"idempotencyKey",
"restaurantKey"
],
"type": "object"
},
"name": "like_restaurant",
"title": "Like restaurant"
}
🔴 submit_restaurant_impressions write ID が実際に見た店舗と、そのうちどの店舗に対して行動したかを報告します。1 ターンにつき 1 バッチを送信し、会話全体を通じて同じ sessionId を使用してください。意図ではなく、実際に起きたことを報告してください。これらはレコメンダーが学習するシグナルです。
レストランのインプレッションを送信
ID が実際に見た店舗と、そのうちどの店舗に対して行動したかを報告します。1 ターンにつき 1 バッチを送信し、会話全体を通じて同じ sessionId を使用してください。意図ではなく、実際に起きたことを報告してください。これらはレコメンダーが学習するシグナルです。
| パラメーター | 型 | 説明 |
|---|---|---|
idempotencyKey 必須 | string | この書き込み専用に独自のキーを指定。同じキーを再送すると、二重に書き込まず最初の結果を返します |
impressions 必須 | array<object> | 表示または操作された内容 |
impressions[].accessType 必須 | string | filtered、searched、recommended、similar、popular、spotlight のいずれか |
impressions[].restaurantKey 必須 | string | |
sessionId 必須 | string | 独自に用意した UUID。会話内のすべてのバッチで同じものを使用 |
Wire definition (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Submit restaurant impressions"
},
"description": "Tell us which venues the identity actually saw, and which of them it acted on. One batch per turn, with a sessionId of your own that stays the same for the whole conversation. Report what happened, never what you intend: these are the signals the recommender learns from.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"impressions": {
"description": "what was shown or acted on",
"items": {
"additionalProperties": false,
"properties": {
"accessType": {
"description": "one of filtered, searched, recommended, similar, popular, spotlight",
"type": "string"
},
"restaurantKey": {
"type": "string"
}
},
"required": [
"accessType",
"restaurantKey"
],
"type": "object"
},
"type": "array"
},
"sessionId": {
"description": "a UUID of your own, the same for every batch in one conversation",
"type": "string"
}
},
"required": [
"idempotencyKey",
"impressions",
"sessionId"
],
"type": "object"
},
"name": "submit_restaurant_impressions",
"title": "Submit restaurant impressions"
}
🔴 unlike_restaurant write 「いいね」を取り消します。店舗はカタログに残り、ID の評価だけが削除されます。
レストランの「いいね」を取り消す
「いいね」を取り消します。店舗はカタログに残り、ID の評価だけが削除されます。
| パラメーター | 型 | 説明 |
|---|---|---|
idempotencyKey 必須 | string | この書き込み専用に独自のキーを指定。同じキーを再送すると、二重に書き込まず最初の結果を返します |
restaurantKey 必須 | string | 店舗のキー |
Wire definition (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Unlike restaurant"
},
"description": "Take back a like. The venue stays in the catalogue; only the identity's opinion of it is removed.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"restaurantKey": {
"description": "the venue's key",
"type": "string"
}
},
"required": [
"idempotencyKey",
"restaurantKey"
],
"type": "object"
},
"name": "unlike_restaurant",
"title": "Unlike restaurant"
}
AVAILABILITY
🟢 get_reservation_info read この店舗の予約方法を確認します。mode\ は、テーブルがリアルタイムで確定する場合は instant、店舗側の承認が必要な場合は request です。店舗が予約を受け付けていない場合、ツールは拒否されます。まずこれを読み取ってください。create_instant_reservation と create_reservation_request のどちらを呼び出すかが決まります。maxPeople\ は、予約可能な最大人数です。これは読み取り専用で、予約も記録も行いません。
予約情報を取得
この店舗の予約方法を確認します。mode\ は、テーブルがリアルタイムで確定する場合は instant、店舗側の承認が必要な場合は request です。店舗が予約を受け付けていない場合、ツールは拒否されます。まずこれを読み取ってください。create_instant_reservation と create_reservation_request のどちらを呼び出すかが決まります。maxPeople\ は、予約可能な最大人数です。これは読み取り専用で、予約も記録も行いません。
| パラメーター | 型 | 説明 |
|---|---|---|
restaurantKey 必須 | string | 店舗のキー |
Wire definition (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Get reservation info"
},
"description": "How this venue takes reservations. \`mode\` is instant when tables are confirmed live, request when someone at the venue has to accept, and the tool refuses when the venue takes none at all. Read this first: it decides whether you call create_instant_reservation or create_reservation_request. \`maxPeople\` is the largest party we can place anywhere. This reads only — it books nothing and records nothing.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"restaurantKey": {
"description": "the venue's key",
"type": "string"
}
},
"required": [
"restaurantKey"
],
"type": "object"
},
"name": "get_reservation_info",
"title": "Get reservation info"
}
🟢 list_availability_slots read ある店舗で特定の日に空いているテーブルを確認します。時刻は店舗の現地時刻で、固定の時間刻みには沿っていません。ここで確認した時刻を予約してください。自分で選んだ切りのよい時刻を指定しないでください。request モードの店舗では、代わりに windows\ に、リクエスト可能な時間帯が返されます。どちらも空の場合、その日は休業日か、予約受付期間外です。
空き予約枠を一覧表示
ある店舗で特定の日に空いているテーブルを確認します。時刻は店舗の現地時刻で、固定の時間刻みには沿っていません。ここで確認した時刻を予約してください。自分で選んだ切りのよい時刻を指定しないでください。request モードの店舗では、代わりに windows\ に、リクエスト可能な時間帯が返されます。どちらも空の場合、その日は休業日か、予約受付期間外です。
| パラメーター | 型 | 説明 |
|---|---|---|
date 必須 | string | 確認する日付。地域の UTC オフセットを含む RFC3339 形式 |
restaurantKey 必須 | string | 店舗のキー |
pax | integer | 人数。人数に足りない予約枠を除外します |
Wire definition (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "List availability slots"
},
"description": "The tables free at one venue on one day. Times are the venue's own wall clock, and they sit on no fixed grid — book a time you read here rather than a round number you chose. A request-mode venue answers in \`windows\` instead: the spans it will consider a request inside. Both empty means shut that day, or past the booking horizon.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"date": {
"description": "the day to read, RFC3339 with the region's UTC offset",
"type": "string"
},
"pax": {
"description": "party size, to drop slots too small for it",
"type": "integer"
},
"restaurantKey": {
"description": "the venue's key",
"type": "string"
}
},
"required": [
"date",
"restaurantKey"
],
"type": "object"
},
"name": "list_availability_slots",
"title": "List availability slots"
}
RESERVATION
🔴 cancel_reservation destructive ID が所有する予約をキャンセルします。取り消しはできず、テーブルは解放されます。まず予約を読み取り、店舗名と時刻をゲストに伝えて確認を待ってから、両方をここにそのまま入力してください。confirmRestaurantName\ と confirmDateTime\ が予約記録と一致しない場合、呼び出しは拒否されます。キーだけを根拠にキャンセルしてはいけません。確信があっても同様です。
予約をキャンセル
ID が所有する予約をキャンセルします。取り消しはできず、テーブルは解放されます。まず予約を読み取り、店舗名と時刻をゲストに伝えて確認を待ってから、両方をここにそのまま入力してください。confirmRestaurantName\ と confirmDateTime\ が予約記録と一致しない場合、呼び出しは拒否されます。キーだけを根拠にキャンセルしてはいけません。確信があっても同様です。
| パラメーター | 型 | 説明 |
|---|---|---|
confirmDateTime 必須 | string | ゲストに伝えた予約時刻。RFC3339 形式 |
confirmRestaurantName 必須 | string | ゲストに伝えた店舗名 |
idempotencyKey 必須 | string | この書き込み専用に独自のキーを指定。同じキーを再送すると、二重に書き込まず最初の結果を返します |
reservationKey 必須 | string | キャンセルする予約。list_reservations の所有予約一覧から指定 |
Wire definition (tools/list)
{
"annotations": {
"destructiveHint": true,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Cancel reservation"
},
"description": "Cancel a reservation the identity owns. This cannot be undone and the table is given up. Read the reservation first, say the venue and the time back to the guest, wait for them, and then echo both here: \`confirmRestaurantName\` and \`confirmDateTime\` must match the reservation on file or the call is refused. Never cancel on a key alone, however sure you are of it.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"confirmDateTime": {
"description": "the reservation's time as you said it to the guest, RFC3339",
"type": "string"
},
"confirmRestaurantName": {
"description": "the venue's name as you said it to the guest",
"type": "string"
},
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"reservationKey": {
"description": "the reservation to cancel, from the owned set of list_reservations",
"type": "string"
}
},
"required": [
"confirmDateTime",
"confirmRestaurantName",
"idempotencyKey",
"reservationKey"
],
"type": "object"
},
"name": "cancel_reservation",
"title": "Cancel reservation"
}
🔴 create_instant_reservation write 現在空いているテーブルを予約します。instant モードの店舗向けで、呼び出しが返ると予約が確定します。list_availability_slots で確認した dateTime\ を予約してください。店舗の予約枠は固定の時間刻みに沿っていないため、切りのよい時刻は通常、予約枠にありません。ゲストが時間に融通が利くと言っていない限り、approxMinutes\ は 0 のままにしてください。0 以外を指定すると、店舗が近い時刻で予約する場合があり、その場合は回答の adjusted\ と bookedDate\ に示されます。予約には保存済みの ID が使われます。instant モードの店舗では、その ID にメールアドレスと電話番号の両方が必要です。
即時予約を作成
現在空いているテーブルを予約します。これは即時予約対応の店舗向けで、予約は処理が完了すると確定します。list_availability_slots から取得した dateTime\ を予約してください。店舗の空き枠は一定間隔ではないため、切りのよい時刻が空いているとは限りません。ゲストが時間に融通が利くと言った場合を除き、approxMinutes\ は 0 のままにしてください。0 以外を指定すると、店舗が近い時刻で予約することがあり、その場合は回答の adjusted\ と bookedDate\ に示されます。予約には保存済みの本人情報が使われます。即時予約対応の店舗では、メールアドレスと電話番号の両方が必要です。
| Parameter | Type | Description |
|---|---|---|
dateTime required | string | 予約する枠。list_availability_slots から取得した、地域の UTC オフセット付き RFC3339 形式の日時 |
idempotencyKey required | string | この書き込み専用に指定する任意のキー。同じキーを再送すると、二重に書き込まず最初の結果を返します |
pax required | integer | 人数 |
restaurantKey required | string | 店舗のキー |
approxMinutes | integer | 店舗が dateTime の代わりに予約してよい時間の幅。0 は指定時刻のみを意味します |
areaId | string | 選択した枠の座席エリア。検索範囲を絞りますが、予約時刻は変更しません |
comment | string | ゲストの言葉で記した、店舗へのメモ |
Wire definition (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 write 独自のウィジェットで予約を受け付ける店舗の予約を開始します。これは書き込み操作です。操作する本人に紐づく下書きを作成し、ゲストが予約を完了するための一度限りの widgetUrl\ を発行します。URL をゲストに渡し、その後、返された reservationKey\ を使って get_reservation_status をポーリングしてください。予約の試行ごとに一度だけ呼び出してください。2 回目の呼び出しでは、別の下書きが作成されます。店舗が独自に予約を受け付ける場合、オファーは不要です。代わりに create_instant_reservation または create_reservation_request を使用してください。
予約オファーを作成
独自のウィジェットで予約を受け付ける店舗の予約を開始します。これは書き込み操作です。操作する本人に紐づく下書きを作成し、ゲストが予約を完了するための一度限りの widgetUrl\ を発行します。URL をゲストに渡し、その後、返された reservationKey\ を使って get_reservation_status をポーリングしてください。予約の試行ごとに一度だけ呼び出してください。2 回目の呼び出しでは、別の下書きが作成されます。店舗が独自に予約を受け付ける場合、オファーは不要です。代わりに create_instant_reservation または create_reservation_request を使用してください。
| Parameter | Type | Description |
|---|---|---|
idempotencyKey required | string | この書き込み専用に指定する任意のキー。同じキーを再送すると、二重に書き込まず最初の結果を返します |
restaurantKey required | string | 店舗のキー |
Wire definition (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 write 店舗にテーブルをリクエストします。これはリクエスト方式の店舗向けです。予約は保留中として返され、店舗の担当者が承認または却下するため、まだテーブルが確保されていないことをゲストに伝えてください。時刻は list_availability_slots が報告した時間帯のいずれかに含まれている必要があります。予約には保存済みの本人情報が使われます。名前と連絡先はこの呼び出しではなく、記録から読み取られます。
予約リクエストを作成
店舗にテーブルをリクエストします。これはリクエスト方式の店舗向けです。予約は保留中として返され、店舗の担当者が承認または却下するため、まだテーブルが確保されていないことをゲストに伝えてください。時刻は list_availability_slots が報告した時間帯のいずれかに含まれている必要があります。予約には保存済みの本人情報が使われます。名前と連絡先はこの呼び出しではなく、記録から読み取られます。
| Parameter | Type | Description |
|---|---|---|
dateTime required | string | 希望時刻。地域の UTC オフセット付き RFC3339 形式 |
idempotencyKey required | string | この書き込み専用に指定する任意のキー。同じキーを再送すると、二重に書き込まず最初の結果を返します |
pax required | integer | 人数 |
restaurantKey required | string | 店舗のキー |
comment | string | ゲストの言葉で記した、店舗へのメモ |
Wire definition (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 read 操作する本人の予約状況を確認します。オファーの後にポーリングしてください。ウィジェット経由の予約は店舗が確定して初めて成立し、その結果はステータスで確認できます。
予約状況を取得
操作する本人の予約状況を確認します。オファーの後にポーリングしてください。ウィジェット経由の予約は店舗が確定して初めて成立し、その結果はステータスで確認できます。
| Parameter | Type | Description |
|---|---|---|
reservationKey required | string | list_reservations から取得した予約のキー |
Wire definition (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 read 既存の予約を変更できる候補を確認します。これは list_availability_slots とは異なり、対象の予約と、店舗が変更先として認める内容に限定されます。変更できるのは、リアルタイムの空き状況を提供する店舗での承認済み予約のみです。
予約枠を一覧表示
既存の予約を変更できる候補を確認します。これは list_availability_slots とは異なり、対象の予約と、店舗が変更先として認める内容に限定されます。変更できるのは、リアルタイムの空き状況を提供する店舗での承認済み予約のみです。
| Parameter | Type | Description |
|---|---|---|
reservationKey required | string | list_reservations から取得した、変更対象の予約 |
fromDate | string | 確認する最初の日。RFC3339 形式。省略した場合は予約当日 |
Wire definition (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 read 操作する本人が保有するすべての予約を一覧表示します。owned\ は操作可能で、書き込みツールで指定できるキーです。foundByEmail\ は別の所有者に再割り当てされています。内容を伝えるために表示されますが、これに対する書き込みはすべて拒否されます。
予約を一覧表示
操作する本人が保有するすべての予約を一覧表示します。owned\ は操作可能で、書き込みツールで指定できるキーです。foundByEmail\ は別の所有者に再割り当てされています。内容を伝えるために表示されますが、これに対する書き込みはすべて拒否されます。
パラメーターはありません。
Wire definition (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 write 本人が保有する予約の日時または人数を変更します。変更する項目だけを指定してください。新しい時刻は、その予約に対して list_reservation_slots が提示した候補のいずれかである必要があります。
予約を更新
本人が保有する予約の日時または人数を変更します。変更する項目だけを指定してください。新しい時刻は、その予約に対して list_reservation_slots が提示した候補のいずれかである必要があります。
| Parameter | Type | Description |
|---|---|---|
idempotencyKey required | string | この書き込み専用に指定する任意のキー。同じキーを再送すると、二重に書き込まず最初の結果を返します |
reservationKey required | string | list_reservations の本人所有分から取得した、変更対象の予約 |
dateTime | string | 新しい時刻。地域の UTC オフセット付き RFC3339 形式 |
pax | integer | 新しい人数 |
Wire definition (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"
}
IDENTITY
🔴 get_identity read 操作する本人の情報です。ゲストに何かを尋ねる前に読み取ってください。すでに登録されている値は置き換えられません。登録済みの情報を再度尋ねると、話を聞いていないように受け取られます。
本人情報を取得
操作する本人の情報です。ゲストに何かを尋ねる前に読み取ってください。すでに登録されている値は置き換えられません。登録済みの情報を再度尋ねると、話を聞いていないように受け取られます。
パラメーターはありません。
Wire definition (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 read この接続で利用できる内容、つまりアクセス可能なジャーニーと、操作対象となるサインイン済みユーザーおよびその段階を確認します。サインインするまでは acting\ はありません。サインイン状態が不明な場合は最初に呼び出し、現在の段階で不足している情報を収集するツールについては climbWith\ を確認してください。
セッションを取得
この接続で利用できる内容、つまりアクセス可能なジャーニーと、操作対象となるサインイン済みユーザーおよびその段階を確認します。サインインするまでは acting\ はありません。サインイン状態が不明な場合は最初に呼び出し、現在の段階で不足している情報を収集するツールについては climbWith\ を確認してください。
パラメーターはありません。
Wire definition (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 write 本人情報に不足している内容を入力して、予約可能な段階まで進めます。必要なのは、姓と名、連絡手段を1つ、利用規約への同意です。この会話でゲストが伝えた情報だけを送信してください。即時予約対応の店舗ではメールアドレスと電話番号の両方が必要なため、確定したテーブルを希望する場合は両方を確認してください。
本人情報を昇格
本人情報に不足している内容を入力して、予約可能な段階まで進めます。必要なのは、姓と名、連絡手段を1つ、利用規約への同意です。この会話でゲストが伝えた情報だけを送信してください。即時予約対応の店舗ではメールアドレスと電話番号の両方が必要なため、確定したテーブルを希望する場合は両方を確認してください。
| Parameter | Type | Description |
|---|---|---|
idempotencyKey required | string | この書き込み専用に指定する任意のキー。同じキーを再送すると、二重に書き込まず最初の結果を返します |
acceptTerms | boolean | ゲストが https://www.tastematch.io/agb の利用規約に同意した場合は true |
email | string | 連絡用メールアドレス |
firstName | string | ゲストの名 |
lastName | string | ゲストの姓 |
phone | string | 国際形式の連絡用電話番号 |
Wire definition (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 write 本人情報を修正または補完します。空欄は入力され、誤った情報は修正されますが、ゲストが確認済みの連絡手段はここから変更できません。変更した項目だけを送信してください。
本人情報を更新
本人情報を修正または補完します。空欄は入力され、誤った情報は修正されますが、ゲストが確認済みの連絡手段はここから変更できません。変更した項目だけを送信してください。
| Parameter | Type | Description |
|---|---|---|
idempotencyKey required | string | この書き込み専用に指定する任意のキー。同じキーを再送すると、二重に書き込まず最初の結果を返します |
acceptTerms | boolean | ゲストが https://www.tastematch.io/agb の利用規約に同意した場合は true |
email | string | 連絡用メールアドレス |
firstName | string | ゲストの名 |
lastName | string | ゲストの姓 |
phone | string | 国際形式の連絡用電話番号 |
Wire definition (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"
}
TASTE
🔴 get_taste_profile read この本人の味覚プロフィールに登録されている内容、つまり記述子、その信頼度、およびそこから導出された味覚タイプを確認します。味覚について再度述べる前に読み取ってください。新規作成ではなく、プロフィールの修正を行います。
味覚プロフィールを取得
この本人の味覚プロフィールに登録されている内容、つまり記述子、その信頼度、およびそこから導出された味覚タイプを確認します。味覚について再度述べる前に読み取ってください。新規作成ではなく、プロフィールの修正を行います。
パラメーターはありません。
Wire definition (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 write ゲストの味覚を記述子ごとに 0 から 1 の信頼度で示し、会話から判断できる限り多くの記述子を推定してください。これは登録済みの内容を置き換えるため、修正箇所だけでなく全体像を送信してください。記述子は weights\ が指定するもので、すべて get_vocabulary で公開されています。それ以外は拒否されます。利用シーンとメニューの特徴も他の情報とともに保存されますが、店舗の属性であるため、味覚ベクトルではなくフィルターに反映されます。任意項目です。これがなくても店舗の検索、リスト、予約は利用できます。設定すると list_recommended_restaurants が個人に合わせた結果を返します。
味覚プロフィールを送信
ゲストの好みを、各記述子について0〜1の確信度で示し、会話から判断できる限り多く推測してください。これは登録済みの内容を置き換えるため、修正点だけでなく全体像を送信してください。記述子は weights\ が指定するものに限られ、すべて get_vocabulary で公開されています。それ以外は拒否されます。利用シーンとメニューの特徴もほかの情報とともに保存されますが、会場の属性であるため、好みのベクトルではなくフィルターに反映されます。任意項目です。これがなくても検索、リスト、予約はすべて利用できます。これが反映されるのは list_recommended_restaurants が個人向けになる点だけです。
| Parameter | Type | Description |
|---|---|---|
idempotencyKey required | string | この書き込み専用に自分で決めるキー。同じキーを再度送信すると、二重に書き込まず最初の結果を返します |
weights required | map<string, number> | 記述子ごとの確信度(0〜1)。aperо、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 のいずれか |
Wire definition (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"
}
LISTS
🔴 add_restaurant_to_list write IDのリストに会場を追加します。すでに追加済みの場合は変更されません。
リストにレストランを追加
IDのリストに会場を追加します。すでに追加済みの場合は変更されません。
| Parameter | Type | Description |
|---|---|---|
idempotencyKey required | string | この書き込み専用に自分で決めるキー。同じキーを再度送信すると、二重に書き込まず最初の結果を返します |
listKey required | string | 追加先のリスト |
restaurantKey required | string | 追加する会場 |
Wire definition (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 IDの名前付きリストを作成します。用途がわかる名前を付けてください。ゲストは次回もその名前を目にし、あなたも同様です。
リストを作成
IDの名前付きリストを作成します。用途がわかる名前を付けてください。ゲストは次回もその名前を目にし、あなたも同様です。
| Parameter | Type | Description |
|---|---|---|
idempotencyKey required | string | この書き込み専用に自分で決めるキー。同じキーを再度送信すると、二重に書き込まず最初の結果を返します |
title required | string | ゲストの言語で記した、リストの用途 |
Wire definition (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 IDのリストを、その中のすべての項目とともに削除します。まずリストを読み取り、削除される内容をゲストに伝えてください。元に戻すことはできません。
リストを削除
IDのリストを、その中のすべての項目とともに削除します。まずリストを読み取り、削除される内容をゲストに伝えてください。元に戻すことはできません。
| Parameter | Type | Description |
|---|---|---|
idempotencyKey required | string | この書き込み専用に自分で決めるキー。同じキーを再度送信すると、二重に書き込まず最初の結果を返します |
listKey required | string | 削除するリスト |
Wire definition (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 操作中のIDのリストを、登録されているすべての会場とともに読み取ります。他のIDのリストは読み取れません。
リストを取得
操作中のIDのリストを、登録されているすべての会場とともに読み取ります。他のIDのリストは読み取れません。
| Parameter | Type | Description |
|---|---|---|
listKey required | string | list_lists から取得したリストのキー |
Wire definition (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 ID自身のリストを、それぞれの件数とカバー画像とともに取得します。会話を再開したときは、まずこれを読み取ってください。前回ゲストが保存した内容を確認できます。
リスト一覧
ID自身のリストを、それぞれの件数とカバー画像とともに取得します。会話を再開したときは、まずこれを読み取ってください。前回ゲストが保存した内容を確認できます。
| Parameter | Type | Description |
|---|---|---|
limit | integer | 返す行数(最大50) |
offset | integer | スキップする行数。結果の totalCount と併用すると、ページ分割して取得できます |
Wire definition (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 IDのリストから会場を削除します。呼び出す前に、どの会場をどのリストから削除するのかゲストに伝えてください。データが削除されます。
リストからレストランを削除
IDのリストから会場を削除します。呼び出す前に、どの会場をどのリストから削除するのかゲストに伝えてください。データが削除されます。
| Parameter | Type | Description |
|---|---|---|
idempotencyKey required | string | この書き込み専用に自分で決めるキー。同じキーを再度送信すると、二重に書き込まず最初の結果を返します |
listKey required | string | 削除元のリスト |
restaurantKey required | string | 削除する会場 |
Wire definition (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 IDのリスト名を変更します。リスト内の会場は変更されません。
リストを更新
IDのリスト名を変更します。リスト内の会場は変更されません。
| Parameter | Type | Description |
|---|---|---|
idempotencyKey required | string | この書き込み専用に自分で決めるキー。同じキーを再度送信すると、二重に書き込まず最初の結果を返します |
listKey required | string | 名前を変更するリスト |
title required | string | 新しい名前 |
Wire definition (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"
}
GROUP
🔴 close_group_match write グループ投票を締め切り、以後の投票を停止します。マッチとすべての投票は引き続き読み取れます。停止するのは投票だけです。グループの決定後に締め切り、選ばれた会場を予約してください。
グループマッチを締め切る
グループ投票を締め切り、以後の投票を停止します。マッチとすべての投票は引き続き読み取れます。停止するのは投票だけです。グループの決定後に締め切り、選ばれた会場を予約してください。
| Parameter | Type | Description |
|---|---|---|
groupMatchKey required | string | 締め切るマッチ |
idempotencyKey required | string | この書き込み専用に自分で決めるキー。同じキーを再度送信すると、二重に書き込まず最初の結果を返します |
Wire definition (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 グループでの意思決定を開始します。候補の会場と日程をいくつか用意し、意見を聞く相手を指定します。応答には共有リンクが含まれます。ゲストに渡して共有してもらってください。招待された人は、TasteMatchのIDがなくてもリンクから投票できます。候補は絞ってください。これは意思決定のためのもので、カタログではありません。
グループマッチを作成
グループでの意思決定を開始します。候補の会場と日程をいくつか用意し、意見を聞く相手を指定します。応答には共有リンクが含まれます。ゲストに渡して共有してもらってください。招待された人は、TasteMatchのIDがなくてもリンクから投票できます。候補は絞ってください。これは意思決定のためのもので、カタログではありません。
| Parameter | Type | Description |
|---|---|---|
dateOptions required | array<string> | 選択肢となる日程。地域のUTCオフセットを含むRFC3339形式 |
idempotencyKey required | string | この書き込み専用に自分で決めるキー。同じキーを再度送信すると、二重に書き込まず最初の結果を返します |
restaurantKeys required | array<string> | 選択肢となる会場 |
title required | string | ゲストの言葉で記した、グループが決める内容 |
invitees | array<object> | 招待する人。各人の名前とメールアドレスを指定 |
invitees[].displayName required | string | グループに表示される名前 |
invitees[].email required | string | 招待の送信先 |
Wire definition (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 グループマッチを削除します。共有リンクは、リンクを持つ全員に対して無効になり、投票も削除されます。呼び出す前にマッチを読み取り、削除される内容をゲストに伝えてください。
グループマッチを削除
グループマッチを削除します。共有リンクは、リンクを持つ全員に対して無効になり、投票も削除されます。呼び出す前にマッチを読み取り、削除される内容をゲストに伝えてください。
| Parameter | Type | Description |
|---|---|---|
groupMatchKey required | string | 削除するマッチ |
idempotencyKey required | string | この書き込み専用に自分で決めるキー。同じキーを再度送信すると、二重に書き込まず最初の結果を返します |
Wire definition (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 IDが作成したグループマッチを1件取得します。会場、日程の選択肢、招待した人、投票した人とその投票内容、共有リンクを確認できます。
グループマッチを取得
IDが作成したグループマッチを1件取得します。会場、日程の選択肢、招待した人、投票した人とその投票内容、共有リンクを確認できます。
| Parameter | Type | Description |
|---|---|---|
groupMatchKey required | string | list_group_matches から取得したマッチのキー |
Wire definition (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 このIDが作成したグループマッチを、招待人数と投票済み人数とともに取得します。招待されただけのマッチは含まれません。
グループマッチ一覧
このIDが作成したグループマッチを、招待人数と投票済み人数とともに取得します。招待されただけのマッチは含まれません。
| Parameter | Type | Description |
|---|---|---|
limit | integer | 返す行数(最大50) |
offset | integer | スキップする行数。結果の totalCount と併用すると、ページ分割して取得できます |
Wire definition (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 オープン中のグループマッチに、1人分の投票を登録します。名前で招待された人には memberId\ を渡し、共有リンクから参加する人には代わりに displayName\ を渡してください。その人が実際に表明した内容だけを投票してください。マッチキーを持っていることが唯一の認可手段であり、その人から取得していない memberId を指定すると、その人の投票が上書きされます。マッチは引き続きオープンである必要があります。
グループマッチの投票を送信
オープン中のグループマッチに、1人分の投票を登録します。名前で招待された人には memberId\ を渡し、共有リンクから参加する人には代わりに displayName\ を渡してください。その人が実際に表明した内容だけを投票してください。マッチキーを持っていることが唯一の認可手段であり、その人から取得していない memberId を指定すると、その人の投票が上書きされます。マッチは引き続きオープンである必要があります。
| Parameter | Type | Description |
|---|---|---|
groupMatchKey required | string | 投票対象のマッチ |
idempotencyKey required | string | この書き込み専用に自分で決めるキー。同じキーを再度送信すると、二重に書き込まず最初の結果を返します |
picks required | array<object> | その人が受け入れる、会場と日程の各組み合わせにつき1つの選択 |
picks[].dateOptionIdx required | integer | 日程の選択肢のインデックス(0から数える) |
picks[].restaurantKey required | string | |
displayName | string | 名前で招待されていないリンク参加者の名前 |
memberId | string | get_group_match から取得した、この投票の対象となる招待者 |
Wire definition (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"
}
SHARE
🔴 cancel_shared_reservation destructive ゲストが編集リンクを持つ予約をキャンセルします。元に戻すことはできません。呼び出す前に会場と時刻をゲストに復唱し、確認を待ってください。操作中のIDが所有する予約には、代わりに cancel_reservation を使用してください。こちらは復唱確認を行います。
共有予約をキャンセル
ゲストが編集リンクを持つ予約をキャンセルします。元に戻すことはできません。呼び出す前に会場と時刻をゲストに復唱し、確認を待ってください。操作中のIDが所有する予約には、代わりに cancel_reservation を使用してください。こちらは復唱確認を行います。
| Parameter | Type | Description |
|---|---|---|
editToken required | string | ゲスト自身の編集リンクに含まれるトークン |
idempotencyKey required | string | この書き込み専用に自分で決めるキー。同じキーを再度送信すると、二重に書き込まず最初の結果を返します |
Wire definition (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 write ゲストが他の人に送れるリンクを発行します。読み取り専用です。開いた人は誰でも閲覧できますが、編集はできません。同じオブジェクトに対して2回発行すると、同じリンクが返されます。ゲストが問い合わせた会場、または実行中のIDが所有する予約に限って発行してください。リンクを持っている人なら誰でも閲覧でき、予約のリンクには会場、日付、人数が表示されます。
共有キーを作成
ゲストが他の人に送れるリンクを発行します。読み取り専用です。開いた人は誰でも閲覧できますが、編集はできません。同じオブジェクトに対して2回発行すると、同じリンクが返されます。ゲストが問い合わせた会場、または実行中のIDが所有する予約に限って発行してください。リンクを持っている人なら誰でも閲覧でき、予約のリンクには会場、日付、人数が表示されます。
| Parameter | Type | Description |
|---|---|---|
idempotencyKey required | string | この書き込み専用に独自に指定するキー。同じキーを再度送信すると、二重に書き込まず最初の結果が返されます |
kind required | string | 共有する対象: restaurant, reservation |
objectKey required | string | 共有する会場または予約のキー |
Wire definition (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 read 共有可能なすべての会場とリストの公開インデックスをXML形式で取得します。大容量です。個別の質問に答えるためではなく、どのようなものがあるかを把握するために読み取ってください。
共有サイトマップを取得
共有可能なすべての会場とリストの公開インデックスをXML形式で取得します。大容量です。個別の質問に答えるためではなく、どのようなものがあるかを把握するために読み取ってください。
パラメーターはありません。
Wire definition (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 read tastematch.io の会場またはリストのURLに含まれる、読みやすい公開ページIDを、対応するオブジェクトとそのキーに変換します。
共有公開IDを解決
tastematch.io の会場またはリストのURLに含まれる、読みやすい公開ページIDを、対応するオブジェクトとそのキーに変換します。
| Parameter | Type | Description |
|---|---|---|
objectType required | string | restaurant または list |
publicId required | string | 公開URLに含まれる読みやすいID |
Wire definition (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 read ゲストが貼り付けた共有リンクを、リンク先の対象(会場、予約、またはグループマッチ)と、その後の操作に使うキーに変換します。リンクの最後のパスセグメントであるトークンを渡してください。期限切れのリンクや、こちらが発行したものではないリンクは、単に見つからないものとして扱われます。
共有トークンを解決
ゲストが貼り付けた共有リンクを、リンク先の対象(会場、予約、またはグループマッチ)と、その後の操作に使うキーに変換します。リンクの最後のパスセグメントであるトークンを渡してください。期限切れのリンクや、こちらが発行したものではないリンクは、単に見つからないものとして扱われます。
| Parameter | Type | Description |
|---|---|---|
token required | string | 共有リンクのトークン。最後のパスセグメント |
Wire definition (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 write ゲストが編集リンクを持っている予約を変更します。これはこちらを通さず、別の場所で作成された予約です。リンクが認証手段となるため、ゲストにリンクを求め、ゲストが指定した予約にのみ使用してください。実行中のIDが所有する予約には、代わりに update_reservation を使用してください。
共有予約を更新
ゲストが編集リンクを持っている予約を変更します。これはこちらを通さず、別の場所で作成された予約です。リンクが認証手段となるため、ゲストにリンクを求め、ゲストが指定した予約にのみ使用してください。実行中のIDが所有する予約には、代わりに update_reservation を使用してください。
| Parameter | Type | Description |
|---|---|---|
editToken required | string | ゲスト自身の編集リンクに含まれるトークン |
idempotencyKey required | string | この書き込み専用に独自に指定するキー。同じキーを再度送信すると、二重に書き込まず最初の結果が返されます |
dateTime | string | 新しい時刻。地域のUTCオフセットを含むRFC3339形式 |
pax | integer | 新しい人数 |
Wire definition (tools/list)
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": false,
"title": "Update shared reservation"
},
"description": "Change a reservation the guest holds an edit link for — one made somewhere else, not through us. The link is the authorisation, so ask the guest for it and use it only for the reservation they named. For a reservation the acting identity owns, use update_reservation instead.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"dateTime": {
"description": "the new time, RFC3339 with the region's UTC offset",
"type": "string"
},
"editToken": {
"description": "the token from the guest's own edit link",
"type": "string"
},
"idempotencyKey": {
"description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
"type": "string"
},
"pax": {
"description": "the new party size",
"type": "integer"
}
},
"required": [
"editToken",
"idempotencyKey"
],
"type": "object"
},
"name": "update_shared_reservation",
"title": "Update shared reservation"
}
ユーティリティ
🟢 get_skill read 1つ以上のプレイブックを全文で読み取ります。ターンごとに1つずつではなく、複数をまとめて指定してください。
スキルを取得
1つ以上のプレイブックを全文で読み取ります。ターンごとに1つずつではなく、複数をまとめて指定してください。
| Parameter | Type | Description |
|---|---|---|
names required | array<string> | list_skills から選ぶ、読み取るプレイブック |
Wire definition (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 read フィルターが受け付けるすべての値を、軸ごとに、組み合わせルールとともに取得します。最初のフィルターを使う前に読み取り、会話中は参照できるようにしておいてください。推測した特徴語は拒否され、推測した料理ジャンルのスラッグは何も一致しないまま処理されます。
語彙を取得
フィルターが受け付けるすべての値を、軸ごとに、組み合わせルールとともに取得します。最初のフィルターを使う前に読み取り、会話中は参照できるようにしておいてください。推測した特徴語は拒否され、推測した料理ジャンルのスラッグは何も一致しないまま処理されます。
パラメーターはありません。
Wire definition (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 read 利用可能なプレイブックを1行ずつ表示します。初めて行う手順の前にプレイブックを読み取ってください。ツールの説明だけでは分からない手順や注意点が記載されています。
スキルを一覧表示
利用可能なプレイブックを1行ずつ表示します。初めて行う手順の前にプレイブックを読み取ってください。ツールの説明だけでは分からない手順や注意点が記載されています。
パラメーターはありません。
Wire definition (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 read ゲストが口にした名前を、該当する可能性のあるキーに、可能性の高い順で変換します。kind\ は、restaurant、region、list、reservation のうち、何を探しているかを指定します。list\ または reservation\ はサインイン中の本人のものであり、サインインが必要です。対象ごとに一度だけ解決し、その後はキーを引き継いでください。後から名前を再解決すると、別の会場に行き着くことがあります。候補が複数あり、どれも有力な場合は、ラベルをゲストに伝えて確認してください。
キーを解決
ゲストが口にした名前を、該当する可能性のあるキーに、可能性の高い順で変換します。kind\ は、restaurant、region、list、reservation のうち、何を探しているかを指定します。list\ または reservation\ はサインイン中の本人のものであり、サインインが必要です。対象ごとに一度だけ解決し、その後はキーを引き継いでください。後から名前を再解決すると、別の会場に行き着くことがあります。候補が複数あり、どれも有力な場合は、ラベルをゲストに伝えて確認してください。
| Parameter | Type | Description |
|---|---|---|
kind required | string | 解決する対象: restaurant、region、list、reservation |
lat | number | 名前ではなく地点から地域を解決するための緯度 |
lng | number | 経度。lat と組み合わせて指定 |
regionId | string | レストラン検索を1つの地域に限定 |
text | string | ゲストが口にした名前 |
Wire definition (tools/list)
{
"annotations": {
"idempotentHint": false,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Resolve key"
},
"description": "Turn a name the guest said into the keys it might mean, best first. \`kind\` says what you are looking for: restaurant, region, list, reservation. A \`list\` or a \`reservation\` is the signed-in person's own and needs a sign-in. Resolve once per thing and then thread the key: a name resolved again later can land on a different venue. Say the label back to the guest when more than one candidate came close.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"kind": {
"description": "what to resolve: restaurant, region, list, reservation",
"type": "string"
},
"lat": {
"description": "latitude, to resolve a region from a point instead of a name",
"type": "number"
},
"lng": {
"description": "longitude, paired with lat",
"type": "number"
},
"regionId": {
"description": "bound a restaurant search to one region",
"type": "string"
},
"text": {
"description": "the name as the guest said it",
"type": "string"
}
},
"required": [
"kind"
],
"type": "object"
},
"name": "resolve_key",
"title": "Resolve key"
}
手順
あなたはTasteMatchコアを使用するエージェントです。TasteMatchはレストランの検索、好みのマッチング、予約を扱います。TasteMatchのベクトルやラベル付けの仕組みを理解していなくても、役に立つ対応ができます。フィルターは、あなたなりの解釈で使用してください。特徴語を決して作り出さず、get_vocabulary を呼び出してください。あなたが対応するのは1人だけです。この接続にサインインした人が対象です。サインイン前でも検索はできますが、本人確認が必要なツールを使うと、サインインを求められます。
手順: DISCOVER、PLACE、RESTAURANT、AVAILABILITY、RESERVATION、IDENTITY、TASTE、LISTS、GROUP、SHARE、UTILITY。
名前の構文 — すべてのツールは次の形式に従います: get_ | list_ | search_ | filter_ | count_ | resolve_ は読み取り create_ | update_ | delete_ | {verb}_ は書き込み
意図に応じたルーティング: 名前であってキーではない場合 -> resolve_key を使い、その後キーで操作 「Xのようなレストラン」 -> filter_restaurants。ファセットは get_vocabulary から取得 「いくつあるか」 -> count_restaurants。行をフィルターしてから数えるのではなく、必ずこれを使う 特定の会場 -> get_restaurant。fields[] を指定 料理名 -> search_dishes 予約 -> get_reservation_info -> list_availability_slots -> create_instant_reservation または create_reservation_request 後で使うために保存 -> リスト
キーは保持して使います。名前を一度解決したら、その後の手順ではキーを引き継いでください。すでにキーを持っている名前を再解決しないでください。
リストは保存場所です。候補リスト、比較対象、または話題にした場所を名前付きリストに追加してください。リストは実行中のIDに属し、次のセッションでも残ります。次のセッションでは、現在の文脈は引き継がれません。
本人確認情報は必要になった時点でのみ収集し、それより前には求めません。検索では何も書き込まず、サインインも不要です。予約には予約用の段階が必要です。名前、連絡手段1つ、利用規約への同意が必要です。本人確認情報が理由でツールが拒否された場合、不足している段階と、次の段階に進むためのツールが示されます。すでに登録されている値は、送信した値で置き換えられることはありません。
ソーシャル機能はありません。フォロー、ブロック、フォロワー、ユーザー検索、通知、プロフィール閲覧はできません。複数人で使える唯一の機能はグループマッチで、共有リンクを使います。招待された人はTasteMatchのIDを持っている必要はありません。
データ効率: デフォルトの上限は10で、totalCount は常に報告されます。必ずフィルターを使ってください。ドキュメント全体ではなく fields[] を指定してください。ループせず、まとめて処理してください。
予約: まず会場の予約方式を読み取ってください。即時予約とリクエスト予約では、使用するツールが異なります。list_availability_slots で取得した枠を予約してください。ゲストが時間に融通が利くと言っていない限り、approxMinutes は0のままにしてください。0以外を指定すると、会場が希望とは異なる時刻で予約する可能性があり、その場合は adjusted と bookedDate に示されます。
書き込み: idempotencyKey を渡してください。同じキーを2回使うと、二重に書き込まず最初の結果が返されます。破壊的な操作を行うツールには注記があります。実行前に対象を読み取り、何が削除されるかをゲストに伝えてください。
cancel_reservation は、必ず事前に確認を取ってください。予約を読み取り、会場と時刻をゲストに伝えて確認を待ち、呼び出し時にその両方を指定してください。キーだけを頼りに、どれほど確信があってもキャンセルしてはいけません。
失敗した場合はメッセージを読んでください。検証エラー、見つからない、または禁止による拒否は、こちら側の問題であり、呼び出しを修正する方法が示されています。修正してから再試行し、同じ呼び出しを繰り返さないでください。コードだけが返された場合は再試行せず、そのまま報告してください。
特に求められない限り、生のJSONではなく、読みやすい要約として結果を提示してください。
初めて行う手順のプレイブック: list_skills、次に get_skill。
スキル
discover-to-reserve — 会場を探し、予約方法を確認し、テーブルを予約するまでの一連の手順
まず場所、次に会場、最後に予約。1. ゲストがいる場所を regionId に変換します。kind region を指定して resolve_key を使うか、list_regions を使います。2. 会場を探します。場所の種類なら filter_restaurants、名前が分かっている場合は search_restaurants、料理名なら search_dishes を使います。最初のフィルターを使う前に get_vocabulary を一度読み取ってください。3. ゲストの説明が曖昧な場合は、結果を取得する前に count_restaurants で絞り込みます。4. 会場を読み取ります。get_restaurant を使い、デフォルトでは必要最小限の情報を取得し、それ以外は fields[] で指定します。5. 予約方法を読み取ります。get_reservation_info を使います。次に使うツールはこれで決まり、推測してはいけません。6. 空き状況を読み取ります。list_availability_slots を使い、実際に空いている時刻をゲストに提示します。7. ここで初めて本人確認情報を収集します。ゲストにサインインしてもらい、次に promote_identity を使って予約可能な段階に進めます。8. テーブルを予約します。即時予約の会場では create_instant_reservation、リクエスト予約の会場では create_reservation_request、独自ウィジェットで予約する会場では create_reservation_offer を使います。3つのうち、どの処理が行われたかをゲストに伝えてください。リクエストはまだ予約確定ではありません。オファーも、ゲストがウィジェットで手続きを完了し、get_reservation_status で確定が確認されるまでは予約確定ではありません。
sign-in-and-identity — 対応する相手、各段階、段階を進めるツール、各段階でできること
あなたは一人のために行動します。この接続にサインインしている人です。サインイン情報が本人確認の基準です。誰のデータを扱うかを決めるものはほかになく、引数で指定することもできません。誰もサインインしていない間も、探索は利用できます。人のために行動するツールは、呼び出すときにサインインを求めます。そのため、ゲストに必要になった時点で呼び出し、先にサインインするよう求めないでください。本人確認の段階は、本人が持つ情報から決まります。匿名のサインイン済みユーザーは、探索、一覧、グループマッチ、好みの予約にアクセスできます。氏名があれば、連絡先の登録に進めます。連絡先があれば、予約プロフィールの登録に進めます。ここで追加の情報は必要ありません。promote_identity で段階を上げます。本人確認に関する拒否メッセージには、不足している段階と、そこへ進むためのツールが示されます。再試行せず、その内容を読んでください。即時予約にはメールアドレスと電話番号の両方が必要です。ゲストがリクエストではなく確定したテーブルを希望する場合は、両方を確認してください。すでに登録されている値が、送信した値で置き換えられることはありません。ゲストに、すでに登録済みの情報を尋ねる前に get_identity を読み取ってください。
label-vocabulary — 記述子の軸、値の検証(マッピングではない)、ファセットの組み合わせ方
get_vocabulary を呼び出し、その語彙をそのまま使ってください。新しい語彙を作ったり、翻訳したり、短縮したりしないでください。軸:dims(会場の特徴)、occasions(どんな用途に合うか)、menuMetas(どのサービスか)、menuDescriptors(メニューに何があるか)、cuisine(どの料理の系統か)。ファセット間は AND、同じファセット内は OR です。値を指定するたびに絞り込まれます。ゲストが求めたものだけを渡してください。求められていないフィルターを加えると、ゲストが気に入ったかもしれない会場が、気づかれないまま除外されます。menuDescriptors は会場側の属性であり、ゲスト側の属性ではありません。セリアック病の人に必要なのは「グルテンフリーのゲスト」ではなく、グルテンフリーの料理が記載されたメニューです。不明な値は、該当するファセット名を示すメッセージとともに拒否されます。料理の系統を表すスラッグをでっち上げると、空の一覧が返り、「その種類の店はここにはない」と誤解されるおそれがあります。
availability-semantics — 即時予約とリクエスト予約、時間枠の段階、approxMinutes と adjusted
予約方式は会場ごとに異なります。ツールを選ぶ前に get_reservation_info で確認してください。即時予約:テーブルがその場で確定します -> create_instant_reservation。リクエスト予約:会場の担当者が承認します -> create_reservation_request。時間枠は、会場独自の時間刻みで、会場の現地時刻に基づいています。一定の時間間隔には沿っていないため、19:15 は予約できても 19:00 は予約できないことがよくあります。list_availability_slots を読み取り、返された時間を予約してください。pax を渡すと、人数に足りない時間枠(エリアごとの最低人数を含む)が除外されます。選んだ時間枠の areaId を渡すと、その席を確保できます。検索範囲は絞られますが、予約が別の場所に移ることはありません。approxMinutes の既定値は 0 で、指定時刻のみが対象です。ゲストが時間に融通を利かせられると言った場合に限り値を増やし、その場合は回答にある adjusted\ と bookedDate\ を読み取り、実際に確保された内容を伝えてください。時間枠や期間が空の場合、その日は休業日か、予約可能期間外です。再試行せず、別の日を提案してください。
group-match — 作成、リンクで招待、本人確認なしの参加者から投票を集める、終了
グループマッチは複数人向けの唯一の機能で、リンクを使って動作します。1. create_group_match で、いくつかの会場と日付を登録します。どちらも少数にしてください。これはカタログではなく、選択のためのものです。2. 回答には共有リンクが含まれます。ゲストに渡して、ほかの人に共有してもらってください。リンクを開いた人は誰でも、TasteMatch の本人確認なしで投票できます。3. get_group_match で、誰が何に投票したかを確認できます。submit_group_match_vote は、リンクではなくあなたに届いた投票を登録するためのものです。名前で招待された人には memberId、新しい参加者には displayName を使います。4. グループの決定後に close_group_match を呼び出します。投票結果は引き続き確認できます。5. その後、予約を担当する人のために、予約の手順を通じて選ばれた会場を予約します。
regions-and-places — 場所の解決と regionId の用途
地域に紐づくすべての操作には regionId が必要です。regionId はゲストからではなく、こちらから取得します。kind region を指定して resolve_key を呼び出すと、町、地区、住所、または緯度と経度を使って解決できます。list_regions では対応地域全体を一覧表示できます。search_places では、より小さな場所を検索し、それを含む地域を特定できます。地域には、その地域の会場の時刻表記に使われる IANA タイムゾーンが含まれます。送信するすべての dateTime には、その地域の UTC オフセットを含めてください。読み取るすべての時間枠は、その地域の時刻に基づいています。結果が空の場合、その地域には会場がありません。検索範囲を黙って広げず、そのことを伝えてください。
lists-as-store — コンテキストではなくリストに保存するもの
会話が終われば、コンテキストも終わります。リストは残ります。候補リスト、比較対象、またはゲストがすでに断った場所は、create_list と add_restaurant_to_list を使って名前付きリストに保存してください。用途がわかる名前を付けてください。ゲストにはその名前が再び表示されます。再訪時の会話は list_lists から始めてください。前回ゲストが残した内容を確認できます。リストは操作中の本人に属し、ここでは非公開です。共有、他人のリストの閲覧、リスト横断検索はソーシャル機能ですが、このインターフェースにはソーシャル機能がありません。リストを増やし続けるのではなく、整理してください。remove_restaurant_from_list はデータを削除するため、実行前にどの会場をどのリストから削除するのか、ゲストに伝えてください。
bulk-and-pagination — フィルターの前に件数を確認、ループではなく一括処理、既定の上限、fields[]
必要な情報だけを求めてください。count_restaurants は、行を返さずに「いくつあるか」に答えます。絞り込みの際に使い、行の取得は一度だけにしてください。すべての一覧・検索ツールは limit と offset を受け取り、totalCount を返します。既定の limit は 10 です。検索を再実行するのではなく、offset を使ってページを進めてください。get_restaurant の既定の取得項目は最小限です。ゲストに実際に伝える項目だけを fields[] に指定してください。ラベルのベクトルとメニューカードは大きなデータです。一括処理できるものはまとめてください。1ターンにつき impressions の呼び出しは1回、get_skill では複数のスキルをまとめて取得します。名前は一度だけ解決し、そのキーを後続の処理に渡してください。再度解決すると、余分な往復が発生するだけでなく、別の会場に解決される可能性もあります。