Taste Match

oficial

Reserva y encuentra restaurantes fácilmente, solo en Suiza y sus alrededores.

¿Qué puedes hacer con Taste Match MCP?

  • Cuenta las coincidencias primero — Pregunta cuántos locales cumplen un conjunto de filtros antes de obtener filas, usando count_restaurants.
  • Filtra por facetas — Busca locales por ubicación, día u horario de apertura, tipo de servicio, cocina, opciones de menú y bebidas, o posibilidad de reservar con filter_restaurants.
  • Busca un plato concreto — Busca un plato en los menús con las palabras que use el propio comensal y descubre qué locales lo sirven mediante search_dishes.
  • Busca un local por nombre — Encuentra restaurantes por su nombre o por cómo se llaman, opcionalmente limitando la búsqueda a una región, con search_restaurants.
  • Descubre los más populares — Muestra los locales que más gustan en una región determinada con list_popular_restaurants.
  • Encuentra locales similares — Encuentra locales con gustos parecidos a los de uno del que ya tienes una clave, usando list_similar_restaurants.

Servidor MCP alojado

npx add-mcp 'https://mcp.tastematch.io/'

Se instala en Claude Code, Codex, Cursor y más

Documentación

URL del servicio públicohttps://mcp.tastematch.io/
URL de la declaración de privacidadhttps://tastematch.io/mcp/privacy.html

Kit de herramientas MCP con HTTP transmisible que te ayuda a encontrar los restaurantes que mejor se adaptan a tus gustos en Suiza y más allá. Añádelo a un cliente MCP usando la URL anterior. El descubrimiento es público.

AUTENTICACIÓN

Para acceder a nuestro servidor MCP, tu servicio deberá registrarse por sí mismo mediante DCR (registro dinámico de clientes de OAuth 2.0) en el servidor de autorización indicado bajo authorization_servers en /.well-known/oauth-protected-resource/mcp; el documento de metadatos de ese servidor contiene el registration_endpoint.

Para admitir endpoints autenticados, tus usuarios deberán autenticarse en el mismo servidor de autorización con OpenID Connect (código de autorización con PKCE), solicitando lo que enumera scopes_supported en /.well-known/oauth-protected-resource/mcp.

  • 🟢 Sin iniciar sesión: la herramienta responde a cualquiera.
  • 🟡 Inicio de sesión para algunos argumentos, p. ej., list_recommended_restaurants resolve_key. En los demás casos, las llamadas son públicas y permiten parámetros específicos del usuario; estos parámetros solo funcionan si se ha iniciado sesión. Consulta más abajo qué ocurre si falla el inicio de sesión.
  • 🔴 Inicio de sesión: la herramienta actúa en nombre de un usuario. Los usuarios pueden ser anónimos. Si se llama sin un token, responde con HTTP 401 y un desafío WWW-Authenticate que apunta a /.well-known/oauth-protected-resource/mcp, y el cliente inicia sesión en nombre de la persona mediante OAuth (código de autorización con PKCE). La persona que ha iniciado sesión es la identidad.
  • Nivel: anonymous corresponde a cualquier persona que haya iniciado sesión. reservation añade nombre y apellidos, un contacto y la aceptación de los Términos, datos que promote_identity recopila cuando una reserva los necesita.
  • Límite de solicitudes: las llamadas se contabilizan por persona que haya iniciado sesión, y todas las personas que llaman sin token comparten un mismo cupo. Si se supera el límite, la llamada se rechaza con un código; espera y luego envía menos solicitudes.

DESCUBRIR

🟢 count_restaurants read Cuenta cuántos locales coinciden con un conjunto de facetas, sin devolver filas. Llámala antes de filter_restaurants al explorar un espacio de filtros: responde a la misma pregunta sin los documentos.

Contar restaurantes

Cuenta cuántos locales coinciden con un conjunto de facetas, sin devolver filas. Llámala antes de filter_restaurants al explorar un espacio de filtros: responde a la misma pregunta sin los documentos.

ParámetroTipoDescripción
drinkOptionsobjectlo que debe incluir la carta de bebidas
drinkOptions.beerSelectionbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
drinkOptions.cocktailSelectionbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
drinkOptions.natureWineSelectionbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
drinkOptions.wineSelectionbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
kitchenobjectel tipo de cocina que ofrece
kitchen.cuisinearray<string>identificadores de cocina; basta con que coincida uno. La lista está en get_vocabulary
locationobjectdónde buscar: un regionId o un punto con un radio
location.latnumberlatitud del centro de búsqueda, junto con lng
location.lngnumberlongitud del centro de búsqueda
location.radiusMetersintegerdistancia alrededor del punto en la que buscar
location.regionIdstringregión donde buscar, obtenida de list_regions o resolve_key
menuOptionsobjectlo que debe incluir el menú
menuOptions.fishDishesbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
menuOptions.glutenFreeDishesbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
menuOptions.halalDishesbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
menuOptions.lactoseFreeDishesbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
menuOptions.meatDishesbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
menuOptions.veganDishesbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
menuOptions.vegetarianDishesbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
nutritionobjectqué tipo de local es en conjunto
nutrition.veganRestaurantsbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
nutrition.vegetarianRestaurantsbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
openingobjectcuándo está abierto el local
opening.daytimestringservicio durante el que debe estar abierto: almuerzo o cena
opening.openOnarray<integer>días de la semana en que debe estar abierto; el domingo es 0
reservationobjectcómo se puede reservar
reservation.hasWidgetbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
reservation.liveAvailabilitybooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro

Definición de la interfaz (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 read Busca locales por facetas: dónde están, cuándo abren, qué tipo de cocina ofrecen, qué incluye el menú y la carta de bebidas, y cómo se pueden reservar. Cada faceta limita los resultados a los locales que la cumplen, así que indica solo lo que haya pedido el cliente. Los valores de descriptores y cocinas se obtienen de get_vocabulary; los valores inventados se rechazan, no se ignoran. Ordenados por popularidad; no se aplica ningún vector de gustos.

Filtrar restaurantes

Busca locales por facetas: dónde están, cuándo abren, qué tipo de cocina ofrecen, qué incluye el menú y la carta de bebidas, y cómo se pueden reservar. Cada faceta limita los resultados a los locales que la cumplen, así que indica solo lo que haya pedido el cliente. Los valores de descriptores y cocinas se obtienen de get_vocabulary; los valores inventados se rechazan, no se ignoran. Ordenados por popularidad; no se aplica ningún vector de gustos.

ParámetroTipoDescripción
drinkOptionsobjectlo que debe incluir la carta de bebidas
drinkOptions.beerSelectionbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
drinkOptions.cocktailSelectionbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
drinkOptions.natureWineSelectionbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
drinkOptions.wineSelectionbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
kitchenobjectel tipo de cocina que ofrece
kitchen.cuisinearray<string>identificadores de cocina; basta con que coincida uno. La lista está en get_vocabulary
limitintegerfilas que se devolverán, como máximo 50
locationobjectdónde buscar: un regionId o un punto con un radio
location.latnumberlatitud del centro de búsqueda, junto con lng
location.lngnumberlongitud del centro de búsqueda
location.radiusMetersintegerdistancia alrededor del punto en la que buscar
location.regionIdstringregión donde buscar, obtenida de list_regions o resolve_key
menuOptionsobjectlo que debe incluir el menú
menuOptions.fishDishesbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
menuOptions.glutenFreeDishesbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
menuOptions.halalDishesbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
menuOptions.lactoseFreeDishesbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
menuOptions.meatDishesbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
menuOptions.veganDishesbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
menuOptions.vegetarianDishesbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
nutritionobjectqué tipo de local es en conjunto
nutrition.veganRestaurantsbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
nutrition.vegetarianRestaurantsbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
offsetintegerfilas que se omitirán; junto con totalCount en el resultado, permite recorrer las páginas
openingobjectcuándo está abierto el local
opening.daytimestringservicio durante el que debe estar abierto: almuerzo o cena
opening.openOnarray<integer>días de la semana en que debe estar abierto; el domingo es 0
reservationobjectcómo se puede reservar
reservation.hasWidgetbooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro
reservation.liveAvailabilitybooleantrue limita los resultados a los locales que lo incluyen; omítelo para no aplicar este filtro

Definición de la interfaz (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 read Los locales más populares de una región. Es obligatorio indicar una región: si no se indica, se consultan todos los locales que tenemos.

Listar restaurantes populares

Los locales más populares de una región. Es obligatorio indicar una región: si no se indica, se consultan todos los locales que tenemos.

ParámetroTipoDescripción
regionId requiredstringregión que se consultará, obtenida de list_regions
limitintegerfilas que se devolverán, como máximo 50
offsetintegerfilas que se omitirán; junto con totalCount en el resultado, permite recorrer las páginas

Definición de la interfaz (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 read Locales recomendados para el cliente que ha iniciado sesión, ordenados de mayor a menor afinidad de gustos; antes de que alguien inicie sesión, las recomendaciones no son personalizadas. bookableOnly\ conserva solo los locales con una mesa disponible, un conjunto mucho más reducido que requiere iniciar sesión.

Listar restaurantes recomendados

Locales recomendados para el cliente que ha iniciado sesión, ordenados de mayor a menor afinidad de gustos; antes de que alguien inicie sesión, las recomendaciones no son personalizadas. bookableOnly\ conserva solo los locales con una mesa disponible, un conjunto mucho más reducido que requiere iniciar sesión.

ParámetroTipoDescripción
bookableOnlybooleanconservar solo los locales con disponibilidad en tiempo real
interDiemintegercon bookableOnly, cuántos días de antelación puede haber para una mesa disponible
limitintegerfilas que se devolverán, como máximo 50
offsetintegerfilas que se omitirán; junto con totalCount en el resultado, permite recorrer las páginas
regionIdstringregión para las recomendaciones; si se omite, se usa la región propia de la identidad

Definición de la interfaz (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 read Locales con gustos similares a los de uno que ya tienes identificado, ordenados de mayor a menor similitud. sameCategory\ los mantiene dentro de la misma familia de cocina y está activado de forma predeterminada.

Listar restaurantes similares

Locales con gustos similares a los de uno que ya tienes identificado, ordenados de mayor a menor similitud. sameCategory\ los mantiene dentro de la misma familia de cocina y está activado de forma predeterminada.

ParámetroTipoDescripción
restaurantKey requiredstringlocal para el que se buscarán otros similares
limitintegerfilas que se devolverán, como máximo 50
offsetintegerfilas que se omitirán; junto con totalCount en el resultado, permite recorrer las páginas
sameCategorybooleanlimitar los resultados a la misma familia de cocina; true si se omite

Definición de la interfaz (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 read Busca los locales que sirven un plato determinado. Busca el plato tal como lo ha dicho el cliente, con sus palabras y en el mismo orden: la forma de nombrar un plato es parte de su identidad, así que no la reformules, traduzcas ni acortes. Las palabras largas admiten pequeños errores ortográficos; las muy cortas deben ser exactas. Cada resultado cita el plato tal como aparece en el menú, y exact\ solo es true cuando el nombre coincide palabra por palabra. Esta herramienta no tiene en cuenta los horarios; para eso, usa filter_restaurants. La cobertura de menús es parcial: si no hay resultados, significa que ningún menú que tengamos incluye el nombre de ese plato, no que nadie lo prepare.

Buscar platos

Busca los locales que sirven un plato determinado. Busca el plato tal como lo ha dicho el cliente, con sus palabras y en el mismo orden: la forma de nombrar un plato es parte de su identidad, así que no la reformules, traduzcas ni acortes. Las palabras largas admiten pequeños errores ortográficos; las muy cortas deben ser exactas. Cada resultado cita el plato tal como aparece en el menú, y exact\ solo es true cuando el nombre coincide palabra por palabra. Esta herramienta no tiene en cuenta los horarios; para eso, usa filter_restaurants. La cobertura de menús es parcial: si no hay resultados, significa que ningún menú que tengamos incluye el nombre de ese plato, no que nadie lo prepare.

ParámetroTipoDescripción
q obligatoriostringel plato tal como lo nombró el comensal
latnumberlatitud alrededor de la cual buscar, junto con lng
limitintegerfilas que devolver, como máximo 50
lngnumberlongitud alrededor de la cual buscar
offsetintegerfilas que omitir; con totalCount en el resultado, permite recorrerlas por páginas
radiusMetersintegerdistancia alrededor del punto en la que buscar
regionIdstringlimitar la búsqueda a una región

Definición de conexión (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 lectura Buscar locales por nombre o por cómo los llama el comensal, con sus propias palabras. Al menos tres caracteres. Limita la búsqueda a una región cuando sepas cuál. Usa filter_restaurants cuando el comensal describa un tipo de local en lugar de nombrar uno.

Buscar restaurantes

Buscar locales por nombre o por cómo los llama el comensal, con sus propias palabras. Al menos tres caracteres. Limita la búsqueda a una región cuando sepas cuál. Usa filter_restaurants cuando el comensal describa un tipo de local en lugar de nombrar uno.

ParámetroTipoDescripción
text obligatoriostringqué buscar, tres caracteres o más
limitintegerfilas que devolver, como máximo 50
offsetintegerfilas que omitir; con totalCount en el resultado, permite recorrerlas por páginas
regionIdstringlimitar la búsqueda a una región; si se omite, busca en todas las regiones que cubrimos

Definición de conexión (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 lectura Las regiones que cubre TasteMatch. Cada una incluye el regionId que requieren todas las herramientas limitadas a una región y la zona horaria IANA en la que se expresan los horarios de apertura y las horas de los turnos de sus locales. Pasa un punto para obtenerlas ordenadas de la más cercana a la más lejana. Un lugar que no esté en ninguna de estas regiones no tiene locales en nuestros registros.

Listar regiones

Las regiones que cubre TasteMatch. Cada una incluye el regionId que requieren todas las herramientas limitadas a una región y la zona horaria IANA en la que se expresan los horarios de apertura y las horas de los turnos de sus locales. Pasa un punto para obtenerlas ordenadas de la más cercana a la más lejana. Un lugar que no esté en ninguna de estas regiones no tiene locales en nuestros registros.

ParámetroTipoDescripción
latnumberlatitud desde la que ordenar por distancia, junto con lng
limitintegerfilas que devolver, como máximo 50
lngnumberlongitud desde la que ordenar por distancia
offsetintegerfilas que omitir; con totalCount en el resultado, permite recorrerlas por páginas

Definición de conexión (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 lectura Relacionar el pueblo, distrito o barrio que nombró el comensal con la región que lo contiene. Un resultado vacío significa que el lugar está fuera de todas las regiones que cubrimos, no que el nombre sea incorrecto.

Buscar lugares

Relacionar el pueblo, distrito o barrio que nombró el comensal con la región que lo contiene. Un resultado vacío significa que el lugar está fuera de todas las regiones que cubrimos, no que el nombre sea incorrecto.

ParámetroTipoDescripción
q obligatoriostringel lugar tal como lo nombró el comensal
countryCodestringcódigo ISO 3166-1 alpha-2 para limitar la búsqueda
limitintegerfilas que devolver, como máximo 50
offsetintegerfilas que omitir; con totalCount en el resultado, permite recorrerlas por páginas

Definición de conexión (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 lectura Leer un local. La proyección predeterminada es reducida: nombre, claves, región, dirección, descriptores, cómo se puede reservar y un resumen de horarios. Los datos más pesados solo se incluyen si los nombras en fields\: ContactInformation, MenuCards, MenuCardsV2, labelVector, coverPictures, socialScore, matchInfo, tmType, eventId, businessPro, likesByUser, likesByFollowees, likesUserAvatars, likesFolloweeAvatars. Un documento sin proyección puede ser más grande que el resto de tu tarea.

Obtener restaurante

Leer un local. La proyección predeterminada es reducida: nombre, claves, región, dirección, descriptores, cómo se puede reservar y un resumen de horarios. Los datos más pesados solo se incluyen si los nombras en fields\: ContactInformation, MenuCards, MenuCardsV2, labelVector, coverPictures, socialScore, matchInfo, tmType, eventId, businessPro, likesByUser, likesByFollowees, likesUserAvatars, likesFolloweeAvatars. Un documento sin proyección puede ser más grande que el resto de tu tarea.

ParámetroTipoDescripción
restaurantKey obligatoriostringla clave del local
accessTypestringcuando el comensal pidió abrir este local, cómo llegó a él: uno de filtered, searched, recommended, similar, popular, spotlight. La apertura se contabiliza entonces como suya; omítelo si solo estás consultando un local por tu cuenta.
fieldsarray<string>los campos que se devolverán; la proyección predeterminada es reducida y las claves siempre se incluyen

Definición de conexión (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 escritura Registrar que a la identidad activa le gusta este local. Indicar que le gusta es lo que mejora las recomendaciones posteriores, y debe reflejar lo que dijo el comensal, no tu opinión: marca como favorito lo que dijo que le gustaba.

Me gusta el restaurante

Registrar que a la identidad activa le gusta este local. Indicar que le gusta es lo que mejora las recomendaciones posteriores, y debe reflejar lo que dijo el comensal, no tu opinión: marca como favorito lo que dijo que le gustaba.

ParámetroTipoDescripción
idempotencyKey obligatoriostringuna clave propia para esta escritura; si vuelves a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
restaurantKey obligatoriostringla clave del local

Definición de conexión (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 escritura Indícanos qué locales vio realmente la identidad y en cuáles actuó. Un lote por turno, con un sessionId propio que se mantenga igual durante toda la conversación. Informa de lo que ocurrió, nunca de lo que pretendes hacer: estas son las señales de las que aprende el recomendador.

Enviar impresiones de restaurantes

Indícanos qué locales vio realmente la identidad y en cuáles actuó. Un lote por turno, con un sessionId propio que se mantenga igual durante toda la conversación. Informa de lo que ocurrió, nunca de lo que pretendes hacer: estas son las señales de las que aprende el recomendador.

ParámetroTipoDescripción
idempotencyKey obligatoriostringuna clave propia para esta escritura; si vuelves a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
impressions obligatorioarray<object>lo que se mostró o en lo que se actuó
impressions[].accessType obligatoriostringuno de filtered, searched, recommended, similar, popular, spotlight
impressions[].restaurantKey obligatoriostring
sessionId obligatoriostringun UUID propio, el mismo para cada lote de una conversación

Definición de conexión (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 escritura Retirar un «me gusta». El local permanece en el catálogo; solo se elimina la opinión de la identidad sobre él.

Quitar «me gusta» del restaurante

Retirar un «me gusta». El local permanece en el catálogo; solo se elimina la opinión de la identidad sobre él.

ParámetroTipoDescripción
idempotencyKey obligatoriostringuna clave propia para esta escritura; si vuelves a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
restaurantKey obligatoriostringla clave del local

Definición de conexión (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 lectura Cómo acepta reservas este local. mode\ es instant cuando las mesas se confirman en tiempo real, request cuando alguien del local debe aceptar la solicitud, y la herramienta la rechaza si el local no acepta reservas. Lee esto primero: determina si debes llamar a create_instant_reservation o a create_reservation_request. maxPeople\ es el tamaño máximo de grupo que podemos acomodar. Esta consulta solo lee datos: no reserva ni registra nada.

Obtener información de reservas

Cómo acepta reservas este local. mode\ es instant cuando las mesas se confirman en tiempo real, request cuando alguien del local debe aceptar la solicitud, y la herramienta la rechaza si el local no acepta reservas. Lee esto primero: determina si debes llamar a create_instant_reservation o a create_reservation_request. maxPeople\ es el tamaño máximo de grupo que podemos acomodar. Esta consulta solo lee datos: no reserva ni registra nada.

ParámetroTipoDescripción
restaurantKey obligatoriostringla clave del local

Definición de conexión (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 lectura Las mesas disponibles en un local durante un día. Las horas siguen el reloj local del establecimiento y no se ajustan a una cuadrícula fija: reserva una hora que hayas consultado aquí, no una hora redonda que hayas elegido. Un local en modalidad de solicitud responde en windows\ en su lugar: los intervalos en los que aceptará solicitudes. Si ambos están vacíos, el local está cerrado ese día o ya pasó el plazo máximo para reservar.

Listar horarios disponibles

Las mesas disponibles en un local durante un día. Las horas siguen el reloj local del establecimiento y no se ajustan a una cuadrícula fija: reserva una hora que hayas consultado aquí, no una hora redonda que hayas elegido. Un local en modalidad de solicitud responde en windows\ en su lugar: los intervalos en los que aceptará solicitudes. Si ambos están vacíos, el local está cerrado ese día o ya pasó el plazo máximo para reservar.

ParámetroTipoDescripción
date obligatoriostringel día que se consultará, en formato RFC3339 con el desfase UTC de la región
restaurantKey obligatoriostringla clave del local
paxintegertamaño del grupo, para descartar horarios que no tengan capacidad suficiente

Definición de conexión (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 destructiva Cancelar una reserva que pertenece a la identidad. Esta acción no se puede deshacer y se pierde la mesa. Consulta primero la reserva, dile al comensal el nombre del local y la hora, espera su respuesta y luego repite ambos aquí: confirmRestaurantName\ y confirmDateTime\ deben coincidir con los datos de la reserva o se rechazará la llamada. Nunca canceles basándote solo en una clave, por mucha seguridad que tengas.

Cancelar reserva

Cancelar una reserva que pertenece a la identidad. Esta acción no se puede deshacer y se pierde la mesa. Consulta primero la reserva, dile al comensal el nombre del local y la hora, espera su respuesta y luego repite ambos aquí: confirmRestaurantName\ y confirmDateTime\ deben coincidir con los datos de la reserva o se rechazará la llamada. Nunca canceles basándote solo en una clave, por mucha seguridad que tengas.

ParámetroTipoDescripción
confirmDateTime obligatoriostringla hora de la reserva tal como se la dijiste al comensal, en formato RFC3339
confirmRestaurantName obligatoriostringel nombre del local tal como se lo dijiste al comensal
idempotencyKey obligatoriostringuna clave propia para esta escritura; si vuelves a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
reservationKey obligatoriostringla reserva que se cancelará, del conjunto de reservas propias de list_reservations

Definición de conexión (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 escritura Reservar una mesa disponible ahora. Esto es para locales instant y la mesa queda confirmada al recibir la respuesta. Reserva una dateTime\ que hayas consultado con list_availability_slots: los horarios del local no siguen una cuadrícula, así que normalmente no habrá uno a una hora redonda. Deja approxMinutes\ en 0 salvo que el comensal haya dicho que tiene flexibilidad: un valor distinto de cero permite que el local reserve una hora cercana en su lugar, y la respuesta lo indicará en adjusted\ y bookedDate\. La reserva se realiza con la identidad almacenada, que necesita tanto un correo electrónico como un teléfono para un local instant.

Crear reserva instantánea Toma una mesa que esté libre ahora. Esto es para locales instantáneos y la mesa queda confirmada cuando se devuelve el resultado. Reserva una dateTime\ que hayas leído de list_availability_slots: los horarios del local no siguen una cuadrícula, así que normalmente no habrá uno a una hora redonda. Deja approxMinutes\ en 0, salvo que el cliente haya dicho que tiene flexibilidad: un valor distinto de cero permite que el local reserve una hora cercana, y la respuesta lo indica en adjusted\ y bookedDate\. La reserva se realiza con la identidad guardada, que necesita tanto un correo electrónico como un teléfono para un local instantáneo.

ParámetroTipoDescripción
dateTime obligatoriostringel horario que se va a reservar, en RFC3339 con el desfase UTC de la región, tal como se leyó de list_availability_slots
idempotencyKey obligatoriostringuna clave propia para esta escritura; si se vuelve a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
pax obligatoriointegertamaño del grupo
restaurantKey obligatoriostringla clave del local
approxMinutesintegercuánto puede desviarse el local de dateTime al reservar; 0 significa esta hora o ninguna
areaIdstringla zona donde sentarse, del horario elegido; acota la búsqueda y nunca cambia la reserva
commentstringuna nota para el local, con las palabras del cliente

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Create instant reservation"
  },
  "description": "Take a table that is free now. This is for instant venues and the table is confirmed when it returns. Book a \`dateTime\` you read from list_availability_slots — the venue's slots sit on no grid, so a round number is usually not one of them. Leave \`approxMinutes\` at 0 unless the guest said they are flexible: a non-zero value lets the venue book a nearby time instead, and the answer says so in \`adjusted\` and \`bookedDate\`. The booking runs on the stored identity, which needs both an email and a phone for an instant venue.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "approxMinutes": {
        "description": "how far from dateTime the venue may book instead; 0 means this time or nothing",
        "type": "integer"
      },
      "areaId": {
        "description": "the area to seat in, from the slot you chose; it narrows the search and never moves the booking",
        "type": "string"
      },
      "comment": {
        "description": "a note for the venue, in the guest's words",
        "type": "string"
      },
      "dateTime": {
        "description": "the slot to take, RFC3339 with the region's UTC offset, as read from list_availability_slots",
        "type": "string"
      },
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      },
      "pax": {
        "description": "party size",
        "type": "integer"
      },
      "restaurantKey": {
        "description": "the venue's key",
        "type": "string"
      }
    },
    "required": [
      "dateTime",
      "idempotencyKey",
      "pax",
      "restaurantKey"
    ],
    "type": "object"
  },
  "name": "create_instant_reservation",
  "title": "Create instant reservation"
}

🔴 create_reservation_offer escritura Abre una reserva en un local que gestiona las reservas mediante su propio widget. Esta operación escribe: crea un borrador atribuido a la identidad que actúa y un widgetUrl\ de un solo uso para que el cliente lo complete. Comparte la URL con el cliente y luego consulta get_reservation_status usando el reservationKey\ que devuelve. Llámala una vez por intento de reserva: una segunda llamada crea un segundo borrador. Un local que gestiona las reservas de forma nativa no necesita una oferta: usa create_instant_reservation o create_reservation_request.

Crear oferta de reserva

Abre una reserva en un local que gestiona las reservas mediante su propio widget. Esta operación escribe: crea un borrador atribuido a la identidad que actúa y un widgetUrl\ de un solo uso para que el cliente lo complete. Comparte la URL con el cliente y luego consulta get_reservation_status usando el reservationKey\ que devuelve. Llámala una vez por intento de reserva: una segunda llamada crea un segundo borrador. Un local que gestiona las reservas de forma nativa no necesita una oferta: usa create_instant_reservation o create_reservation_request.

ParámetroTipoDescripción
idempotencyKey obligatoriostringuna clave propia para esta escritura; si se vuelve a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
restaurantKey obligatoriostringla clave del local

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Create reservation offer"
  },
  "description": "Open a booking at a venue that books through its own widget. This writes: it mints a draft attributed to the acting identity and a single-use \`widgetUrl\` for the guest to finish in. Hand the URL to the guest, then poll get_reservation_status on the \`reservationKey\` it returns. Call it once per booking attempt — a second call mints a second draft. A venue that books natively needs no offer: use create_instant_reservation or create_reservation_request instead.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      },
      "restaurantKey": {
        "description": "the venue's key",
        "type": "string"
      }
    },
    "required": [
      "idempotencyKey",
      "restaurantKey"
    ],
    "type": "object"
  },
  "name": "create_reservation_offer",
  "title": "Create reservation offer"
}

🔴 create_reservation_request escritura Pide una mesa a un local. Esto es para locales en modo solicitud: la reserva se devuelve como pendiente y alguien del local la acepta o la rechaza, así que dile al cliente que todavía no tiene una mesa. La hora debe estar dentro de una de las franjas indicadas por list_availability_slots. La reserva se realiza con la identidad guardada: el nombre y los datos de contacto se leen del registro, no de esta llamada.

Crear solicitud de reserva

Pide una mesa a un local. Esto es para locales en modo solicitud: la reserva se devuelve como pendiente y alguien del local la acepta o la rechaza, así que dile al cliente que todavía no tiene una mesa. La hora debe estar dentro de una de las franjas indicadas por list_availability_slots. La reserva se realiza con la identidad guardada: el nombre y los datos de contacto se leen del registro, no de esta llamada.

ParámetroTipoDescripción
dateTime obligatoriostringla hora solicitada, en RFC3339 con el desfase UTC de la región
idempotencyKey obligatoriostringuna clave propia para esta escritura; si se vuelve a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
pax obligatoriointegertamaño del grupo
restaurantKey obligatoriostringla clave del local
commentstringuna nota para el local, con las palabras del cliente

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Create reservation request"
  },
  "description": "Ask a venue for a table. This is for request-mode venues: the reservation comes back pending and someone at the venue accepts or declines it, so tell the guest it is not yet a table. The time must fall inside one of the windows list_availability_slots reported. The booking runs on the stored identity — its name and contact are read from the record, not from this call.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "comment": {
        "description": "a note for the venue, in the guest's words",
        "type": "string"
      },
      "dateTime": {
        "description": "the time asked for, RFC3339 with the region's UTC offset",
        "type": "string"
      },
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      },
      "pax": {
        "description": "party size",
        "type": "integer"
      },
      "restaurantKey": {
        "description": "the venue's key",
        "type": "string"
      }
    },
    "required": [
      "dateTime",
      "idempotencyKey",
      "pax",
      "restaurantKey"
    ],
    "type": "object"
  },
  "name": "create_reservation_request",
  "title": "Create reservation request"
}

🔴 get_reservation_status lectura Consulta el estado de una reserva de la identidad que actúa. Consúltalo después de una oferta: una reserva mediante widget solo se hace efectiva cuando el local la confirma, y el estado es la forma de saberlo.

Obtener estado de la reserva

Consulta el estado de una reserva de la identidad que actúa. Consúltalo después de una oferta: una reserva mediante widget solo se hace efectiva cuando el local la confirma, y el estado es la forma de saberlo.

ParámetroTipoDescripción
reservationKey obligatoriostringla clave de la reserva, de list_reservations

Definición de wire (tools/list)

{
  "annotations": {
    "idempotentHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "Get reservation status"
  },
  "description": "Where one reservation of the acting identity stands. Poll this after an offer: a widget booking becomes real only once the venue confirms it, and the status is how that arrives.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "reservationKey": {
        "description": "the reservation's key, from list_reservations",
        "type": "string"
      }
    },
    "required": [
      "reservationKey"
    ],
    "type": "object"
  },
  "name": "get_reservation_status",
  "title": "Get reservation status"
}

🔴 list_reservation_slots lectura Consulta a qué horario podría cambiarse una reserva existente. Esta es una pregunta distinta de list_availability_slots: se limita a la reserva y a las opciones que el local permite. Solo se puede cambiar una reserva aceptada en un local con disponibilidad en tiempo real.

Listar horarios de reserva

Consulta a qué horario podría cambiarse una reserva existente. Esta es una pregunta distinta de list_availability_slots: se limita a la reserva y a las opciones que el local permite. Solo se puede cambiar una reserva aceptada en un local con disponibilidad en tiempo real.

ParámetroTipoDescripción
reservationKey obligatoriostringla reserva que se va a cambiar, de list_reservations
fromDatestringel primer día que se debe consultar, en RFC3339; si se omite, se usa el día de la propia reserva

Definición de wire (tools/list)

{
  "annotations": {
    "idempotentHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "List reservation slots"
  },
  "description": "Where an existing reservation could move to. This is a different question from list_availability_slots: it is scoped to the reservation and to what the venue will let it become. Only an accepted reservation at a venue with live availability can move.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "fromDate": {
        "description": "the first day to look at, RFC3339; the reservation's own day when omitted",
        "type": "string"
      },
      "reservationKey": {
        "description": "the reservation to move, from list_reservations",
        "type": "string"
      }
    },
    "required": [
      "reservationKey"
    ],
    "type": "object"
  },
  "name": "list_reservation_slots",
  "title": "List reservation slots"
}

🔴 list_reservations lectura Todas las reservas que tiene la identidad que actúa. owned\ permite realizar acciones: esas son las claves que aceptan las herramientas de escritura. foundByEmail\ se reasignó a otro titular: se muestra para que puedas hablar de ella, pero se rechaza cualquier escritura sobre ella.

Listar reservas

Todas las reservas que tiene la identidad que actúa. owned\ permite realizar acciones: esas son las claves que aceptan las herramientas de escritura. foundByEmail\ se reasignó a otro titular: se muestra para que puedas hablar de ella, pero se rechaza cualquier escritura sobre ella.

Sin parámetros.

Definición de wire (tools/list)

{
  "annotations": {
    "idempotentHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "List reservations"
  },
  "description": "Every reservation the acting identity holds. \`owned\` is actionable — those keys are the ones the write tools take. \`foundByEmail\` was reassigned to another owner: it is shown so you can speak about it, and every write on it is refused.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {},
    "required": [],
    "type": "object"
  },
  "name": "list_reservations",
  "title": "List reservations"
}

🔴 update_reservation escritura Cambia una reserva que pertenece a la identidad o modifica el tamaño del grupo. Indica solo lo que cambia. La nueva hora debe ser una de las que ofrece list_reservation_slots para esa reserva.

Actualizar reserva

Cambia una reserva que pertenece a la identidad o modifica el tamaño del grupo. Indica solo lo que cambia. La nueva hora debe ser una de las que ofrece list_reservation_slots para esa reserva.

ParámetroTipoDescripción
idempotencyKey obligatoriostringuna clave propia para esta escritura; si se vuelve a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
reservationKey obligatoriostringla reserva que se va a cambiar, del conjunto de reservas propias de list_reservations
dateTimestringla nueva hora, en RFC3339 con el desfase UTC de la región
paxintegerel nuevo tamaño del grupo

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Update reservation"
  },
  "description": "Move a reservation the identity owns, or change its party size. Name only what changes. A new time must be one list_reservation_slots offered for that reservation.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "dateTime": {
        "description": "the new time, RFC3339 with the region's UTC offset",
        "type": "string"
      },
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      },
      "pax": {
        "description": "the new party size",
        "type": "integer"
      },
      "reservationKey": {
        "description": "the reservation to change, from the owned set of list_reservations",
        "type": "string"
      }
    },
    "required": [
      "idempotencyKey",
      "reservationKey"
    ],
    "type": "object"
  },
  "name": "update_reservation",
  "title": "Update reservation"
}

IDENTIDAD

🔴 get_identity lectura La identidad en cuyo nombre actúas. Léela antes de pedirle nada al cliente: un valor que ya esté registrado nunca se sustituye, y volver a pedir lo que ya tenemos da la impresión de que no estás escuchando.

Obtener identidad

La identidad en cuyo nombre actúas. Léela antes de pedirle nada al cliente: un valor que ya esté registrado nunca se sustituye, y volver a pedir lo que ya tenemos da la impresión de que no estás escuchando.

Sin parámetros.

Definición de wire (tools/list)

{
  "annotations": {
    "idempotentHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "Get identity"
  },
  "description": "The identity you are acting for. Read it before asking the guest for anything: a value already on file is never replaced, and asking again for what we hold reads as not listening.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {},
    "required": [],
    "type": "object"
  },
  "name": "get_identity",
  "title": "Get identity"
}

🟢 get_session lectura Qué permite esta conexión: los recorridos disponibles y la persona que ha iniciado sesión en cuyo nombre actúas, junto con su nivel; acting\ no está presente hasta que alguien inicia sesión. Llámalo primero si no sabes si alguien ha iniciado sesión y consulta climbWith\ para saber qué herramienta recopila lo que le falta al nivel actual.

Obtener sesión

Qué permite esta conexión: los recorridos disponibles y la persona que ha iniciado sesión en cuyo nombre actúas, junto con su nivel; acting\ no está presente hasta que alguien inicia sesión. Llámalo primero si no sabes si alguien ha iniciado sesión y consulta climbWith\ para saber qué herramienta recopila lo que le falta al nivel actual.

Sin parámetros.

Definición de wire (tools/list)

{
  "annotations": {
    "idempotentHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "Get session"
  },
  "description": "What this connection reaches: the journeys open to it, and the signed-in person you act for with their rung — \`acting\` is absent until someone signs in. Call it first when unsure whether anyone is signed in, and read \`climbWith\` for the tool that collects whatever the current rung is missing.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {},
    "required": [],
    "type": "object"
  },
  "name": "get_session",
  "title": "Get session"
}

🔴 promote_identity escritura Sube al nivel que permite reservar proporcionando los datos que le faltan a la identidad: nombre y apellidos, un canal de contacto y la aceptación de los Términos. Envía únicamente lo que el cliente te haya dicho en esta conversación. Un local instantáneo necesita tanto un correo electrónico como un teléfono, así que recopila ambos si el cliente quiere una mesa confirmada.

Promover identidad

Sube al nivel que permite reservar proporcionando los datos que le faltan a la identidad: nombre y apellidos, un canal de contacto y la aceptación de los Términos. Envía únicamente lo que el cliente te haya dicho en esta conversación. Un local instantáneo necesita tanto un correo electrónico como un teléfono, así que recopila ambos si el cliente quiere una mesa confirmada.

ParámetroTipoDescripción
idempotencyKey obligatoriostringuna clave propia para esta escritura; si se vuelve a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
acceptTermsbooleantrue cuando el cliente acepta los Términos en https://www.tastematch.io/agb
emailstringcorreo electrónico de contacto
firstNamestringnombre del cliente
lastNamestringapellidos del cliente
phonestringteléfono de contacto en formato internacional

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Promote identity"
  },
  "description": "Climb to the rung that can reserve, by supplying what the identity is missing: a first and last name, one contact channel, and accepted Terms. Only send what the guest told you in this conversation. An instant venue needs both an email and a phone, so collect both when the guest wants a confirmed table.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "acceptTerms": {
        "description": "true when the guest accepts the Terms at https://www.tastematch.io/agb",
        "type": "boolean"
      },
      "email": {
        "description": "contact email",
        "type": "string"
      },
      "firstName": {
        "description": "the guest's first name",
        "type": "string"
      },
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      },
      "lastName": {
        "description": "the guest's last name",
        "type": "string"
      },
      "phone": {
        "description": "contact phone in international format",
        "type": "string"
      }
    },
    "required": [
      "idempotencyKey"
    ],
    "type": "object"
  },
  "name": "promote_identity",
  "title": "Promote identity"
}

🔴 update_identity escritura Corrige o completa la identidad. Se rellena un campo vacío y se corrige uno incorrecto, pero no se puede sustituir desde aquí un canal que el cliente haya validado. Envía solo lo que haya cambiado.

Actualizar identidad

Corrige o completa la identidad. Se rellena un campo vacío y se corrige uno incorrecto, pero no se puede sustituir desde aquí un canal que el cliente haya validado. Envía solo lo que haya cambiado.

ParámetroTipoDescripción
idempotencyKey obligatoriostringuna clave propia para esta escritura; si se vuelve a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
acceptTermsbooleantrue cuando el cliente acepta los Términos en https://www.tastematch.io/agb
emailstringcorreo electrónico de contacto
firstNamestringnombre del cliente
lastNamestringapellidos del cliente
phonestringteléfono de contacto en formato internacional

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Update identity"
  },
  "description": "Correct or complete the identity. A blank field is filled and a wrong one is corrected, but a channel the guest has validated cannot be replaced from here. Send only what changed.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "acceptTerms": {
        "description": "true when the guest accepts the Terms at https://www.tastematch.io/agb",
        "type": "boolean"
      },
      "email": {
        "description": "contact email",
        "type": "string"
      },
      "firstName": {
        "description": "the guest's first name",
        "type": "string"
      },
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      },
      "lastName": {
        "description": "the guest's last name",
        "type": "string"
      },
      "phone": {
        "description": "contact phone in international format",
        "type": "string"
      }
    },
    "required": [
      "idempotencyKey"
    ],
    "type": "object"
  },
  "name": "update_identity",
  "title": "Update identity"
}

GUSTOS

🔴 get_taste_profile lectura Qué gustos de esta identidad constan en el registro: los descriptores que incluye, el nivel de confianza indicado para cada uno y el tipo de gusto que se deriva de ellos. Léelo antes de volver a indicar gustos: estás corrigiendo un perfil, no creando uno.

Obtener perfil de gustos

Qué gustos de esta identidad constan en el registro: los descriptores que incluye, el nivel de confianza indicado para cada uno y el tipo de gusto que se deriva de ellos. Léelo antes de volver a indicar gustos: estás corrigiendo un perfil, no creando uno.

Sin parámetros.

Definición de wire (tools/list)

{
  "annotations": {
    "idempotentHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "Get taste profile"
  },
  "description": "What this identity's taste is on file as: the descriptors it carries, the confidence stated for each, and the taste type derived from them. Read it before stating taste again — you are correcting a profile, not starting one.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {},
    "required": [],
    "type": "object"
  },
  "name": "get_taste_profile",
  "title": "Get taste profile"
}

🔴 submit_taste_profile escritura Indica los gustos del cliente con un nivel de confianza de 0 a 1 para cada descriptor e infiere tantos como permita la conversación. Esto sustituye lo que constaba en el registro, así que envía el perfil completo, no una corrección. Los descriptores son los que nombra weights\, todos publicados por get_vocabulary; se rechaza cualquier otro. Las ocasiones y las características de los menús se guardan junto con el resto, pero son atributos del local, así que sirven para definir filtros en lugar de formar parte del vector de gustos. Es opcional: la búsqueda, las listas y las reservas funcionan sin ello; solo personaliza list_recommended_restaurants.

Enviar perfil de gustos Indica el gusto del comensal como un nivel de confianza de 0 a 1 para cada descriptor e infiere tantos como permita la conversación. Esto reemplaza lo que estaba registrado, así que envía el perfil completo en lugar de una corrección. Los descriptores son los que nombra weights\; todos están publicados por get_vocabulary; cualquier otro se rechaza. Las ocasiones y los tipos de menú se almacenan junto con el resto, pero son atributos del local, así que sirven para filtrar en lugar de formar parte del vector de gustos. Opcional: el descubrimiento, las listas y las reservas funcionan sin esto; solo hace que list_recommended_restaurants sea personalizado.

ParámetroTipoDescripción
idempotencyKey obligatoriostringuna clave propia para esta escritura; si vuelves a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
weights obligatoriomap<string, number>nivel de confianza de 0 a 1 para cada descriptor, uno de 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

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Submit taste profile"
  },
  "description": "State the guest's taste as a confidence from 0 to 1 per descriptor, and infer as many as the conversation supports. This replaces what was on file, so send the whole picture rather than a correction. The descriptors are the ones \`weights\` names, all published by get_vocabulary — any other is refused. Occasions and menu characters are stored with the rest but are venue attributes, so they shape filters rather than the taste vector. Optional: discovery, lists and booking all work without it; it only makes list_recommended_restaurants personal.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      },
      "weights": {
        "additionalProperties": {
          "type": "number"
        },
        "description": "confidence 0 to 1 per descriptor, one of apero, breakfast, brunch, dinner, dishCocktails, dishCraftBeer, dishNatureWine, dishWine, fineDining, late, lunch, menuFish, menuMeat, menuVegan, menuVegetarian, occasionBusiness, occasionCasual, occasionCelebration, occasionChildren, occasionCulture, occasionGroups, occasionImpressive, occasionRomantic, occasionSolo, priceCheap, pricePricey, salty, sweets",
        "type": "object"
      }
    },
    "required": [
      "idempotencyKey",
      "weights"
    ],
    "type": "object"
  },
  "name": "submit_taste_profile",
  "title": "Submit taste profile"
}

LISTAS

🔴 add_restaurant_to_list escritura Añade un local a una de las listas de la identidad. Si ya está en la lista, no se modifica nada.

Añadir restaurante a la lista

Añade un local a una de las listas de la identidad. Si ya está en la lista, no se modifica nada.

ParámetroTipoDescripción
idempotencyKey obligatoriostringuna clave propia para esta escritura; si vuelves a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
listKey obligatoriostringla lista a la que añadirlo
restaurantKey obligatoriostringel local que se va a añadir

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Add restaurant to list"
  },
  "description": "Put a venue on one of the identity's lists. Adding one that is already there changes nothing.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      },
      "listKey": {
        "description": "the list to add to",
        "type": "string"
      },
      "restaurantKey": {
        "description": "the venue to add",
        "type": "string"
      }
    },
    "required": [
      "idempotencyKey",
      "listKey",
      "restaurantKey"
    ],
    "type": "object"
  },
  "name": "add_restaurant_to_list",
  "title": "Add restaurant to list"
}

🔴 create_list escritura Crea una lista con nombre para la identidad. Ponle un nombre que indique para qué sirve: el comensal volverá a verlo la próxima vez, y tú también.

Crear lista

Crea una lista con nombre para la identidad. Ponle un nombre que indique para qué sirve: el comensal volverá a verlo la próxima vez, y tú también.

ParámetroTipoDescripción
idempotencyKey obligatoriostringuna clave propia para esta escritura; si vuelves a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
title obligatoriostringpara qué sirve la lista, en el idioma del comensal

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Create list"
  },
  "description": "Start a named list for the identity. Name it for what it is for — the guest will see the name again next time, and so will you.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      },
      "title": {
        "description": "what the list is for, in the guest's language",
        "type": "string"
      }
    },
    "required": [
      "idempotencyKey",
      "title"
    ],
    "type": "object"
  },
  "name": "create_list",
  "title": "Create list"
}

🔴 delete_list destructiva Elimina una de las listas de la identidad y todo lo que contiene. Lee primero la lista e informa al comensal de lo que se eliminará; esta acción no se puede deshacer.

Eliminar lista

Elimina una de las listas de la identidad y todo lo que contiene. Lee primero la lista e informa al comensal de lo que se eliminará; esta acción no se puede deshacer.

ParámetroTipoDescripción
idempotencyKey obligatoriostringuna clave propia para esta escritura; si vuelves a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
listKey obligatoriostringla lista que se va a eliminar

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": true,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Delete list"
  },
  "description": "Delete one of the identity's lists and everything on it. Read the list first and tell the guest what will go; this cannot be undone.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      },
      "listKey": {
        "description": "the list to delete",
        "type": "string"
      }
    },
    "required": [
      "idempotencyKey",
      "listKey"
    ],
    "type": "object"
  },
  "name": "delete_list",
  "title": "Delete list"
}

🔴 get_list lectura Lee completa una de las listas de la identidad activa, con todos los locales que contiene. No se pueden leer las listas de otra identidad.

Obtener lista

Lee completa una de las listas de la identidad activa, con todos los locales que contiene. No se pueden leer las listas de otra identidad.

ParámetroTipoDescripción
listKey obligatoriostringla clave de la lista, obtenida de list_lists

Definición de wire (tools/list)

{
  "annotations": {
    "idempotentHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "Get list"
  },
  "description": "Read one of the acting identity's lists in full, with every venue on it. Another identity's list is not readable.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "listKey": {
        "description": "the list's key, from list_lists",
        "type": "string"
      }
    },
    "required": [
      "listKey"
    ],
    "type": "object"
  },
  "name": "get_list",
  "title": "Get list"
}

🔴 list_lists lectura Las listas propias de la identidad, con el recuento y una imagen de portada de cada una. Léelas al inicio de una conversación con un comensal que regresa: muestran lo que guardó la última vez.

Listar listas

Las listas propias de la identidad, con el recuento y una imagen de portada de cada una. Léelas al inicio de una conversación con un comensal que regresa: muestran lo que guardó la última vez.

ParámetroTipoDescripción
limitintegerfilas que se devolverán, como máximo 50
offsetintegerfilas que se omitirán; junto con totalCount en el resultado, permite recorrerlas por páginas

Definición de wire (tools/list)

{
  "annotations": {
    "idempotentHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "List lists"
  },
  "description": "The identity's own lists, with a count and a cover for each. Read this at the start of a returning conversation: it is what the guest kept last time.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "limit": {
        "description": "rows to return, at most 50",
        "type": "integer"
      },
      "offset": {
        "description": "rows to skip; with totalCount in the result this pages through them",
        "type": "integer"
      }
    },
    "required": [],
    "type": "object"
  },
  "name": "list_lists",
  "title": "List lists"
}

🔴 remove_restaurant_from_list destructiva Quita un local de una de las listas de la identidad. Antes de llamarla, indica al comensal qué local y de qué lista se quitará; esto elimina datos.

Quitar restaurante de la lista

Quita un local de una de las listas de la identidad. Antes de llamarla, indica al comensal qué local y de qué lista se quitará; esto elimina datos.

ParámetroTipoDescripción
idempotencyKey obligatoriostringuna clave propia para esta escritura; si vuelves a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
listKey obligatoriostringla lista de la que se quitará
restaurantKey obligatoriostringel local que se quitará

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": true,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Remove restaurant from list"
  },
  "description": "Take a venue off one of the identity's lists. Say which venue and which list to the guest before you call it — this removes data.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      },
      "listKey": {
        "description": "the list to remove from",
        "type": "string"
      },
      "restaurantKey": {
        "description": "the venue to remove",
        "type": "string"
      }
    },
    "required": [
      "idempotencyKey",
      "listKey",
      "restaurantKey"
    ],
    "type": "object"
  },
  "name": "remove_restaurant_from_list",
  "title": "Remove restaurant from list"
}

🔴 update_list escritura Cambia el nombre de una de las listas de la identidad. Los locales que contiene no se modifican.

Actualizar lista

Cambia el nombre de una de las listas de la identidad. Los locales que contiene no se modifican.

ParámetroTipoDescripción
idempotencyKey obligatoriostringuna clave propia para esta escritura; si vuelves a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
listKey obligatoriostringla lista a la que se cambiará el nombre
title obligatoriostringel nombre nuevo

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Update list"
  },
  "description": "Rename one of the identity's lists. The venues on it are untouched.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      },
      "listKey": {
        "description": "the list to rename",
        "type": "string"
      },
      "title": {
        "description": "the new name",
        "type": "string"
      }
    },
    "required": [
      "idempotencyKey",
      "listKey",
      "title"
    ],
    "type": "object"
  },
  "name": "update_list",
  "title": "Update list"
}

GRUPO

🔴 close_group_match escritura Cierra una votación grupal para impedir que se emitan más votos. La votación y todos los votos seguirán siendo legibles; solo se detienen las votaciones. Ciérrala cuando el grupo haya decidido y luego reserva la opción ganadora.

Cerrar votación grupal

Cierra una votación grupal para impedir que se emitan más votos. La votación y todos los votos seguirán siendo legibles; solo se detienen las votaciones. Ciérrala cuando el grupo haya decidido y luego reserva la opción ganadora.

ParámetroTipoDescripción
groupMatchKey obligatoriostringla votación que se cerrará
idempotencyKey obligatoriostringuna clave propia para esta escritura; si vuelves a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Close group match"
  },
  "description": "Close a group match to further votes. The match and every vote stay readable; only voting stops. Close it once the group has decided, then book the winner.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "groupMatchKey": {
        "description": "the match to close",
        "type": "string"
      },
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      }
    },
    "required": [
      "groupMatchKey",
      "idempotencyKey"
    ],
    "type": "object"
  },
  "name": "close_group_match",
  "title": "Close group match"
}

🔴 create_group_match escritura Inicia una decisión grupal: unos cuantos locales, unas cuantas fechas y las personas a quienes consultar. La respuesta incluye un enlace para compartir; dáselo al comensal para que lo reenvíe, ya que los invitados no necesitan una identidad de TasteMatch para votar mediante el enlace. Limita las opciones: se trata de tomar una decisión, no de crear un catálogo.

Crear votación grupal

Inicia una decisión grupal: unos cuantos locales, unas cuantas fechas y las personas a quienes consultar. La respuesta incluye un enlace para compartir; dáselo al comensal para que lo reenvíe, ya que los invitados no necesitan una identidad de TasteMatch para votar mediante el enlace. Limita las opciones: se trata de tomar una decisión, no de crear un catálogo.

ParámetroTipoDescripción
dateOptions obligatorioarray<string>las fechas entre las que se elegirá, en formato RFC3339 con el desfase UTC de la región
idempotencyKey obligatoriostringuna clave propia para esta escritura; si vuelves a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
restaurantKeys obligatorioarray<string>los locales entre los que se elegirá
title obligatoriostringqué decisión está tomando el grupo, expresado con las palabras del comensal
inviteesarray<object>las personas a quienes consultar, cada una con nombre y correo electrónico
invitees[].displayName obligatoriostringel nombre que verá el grupo
invitees[].email obligatoriostringdónde se enviará la invitación

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Create group match"
  },
  "description": "Start a group decision: a few venues, a few dates, and the people to ask. The answer carries a share link — give that to the guest to send on, because an invitee needs no TasteMatch identity to vote through it. Keep the options few: this is a decision, not a catalogue.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "dateOptions": {
        "description": "the dates to choose between, RFC3339 with the region's UTC offset",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      },
      "invitees": {
        "description": "the people to ask, each by name and email",
        "items": {
          "additionalProperties": false,
          "properties": {
            "displayName": {
              "description": "the name the group will see",
              "type": "string"
            },
            "email": {
              "description": "where the invitation goes",
              "type": "string"
            }
          },
          "required": [
            "displayName",
            "email"
          ],
          "type": "object"
        },
        "type": "array"
      },
      "restaurantKeys": {
        "description": "the venues to choose between",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "title": {
        "description": "what the group is deciding, in the guest's words",
        "type": "string"
      }
    },
    "required": [
      "dateOptions",
      "idempotencyKey",
      "restaurantKeys",
      "title"
    ],
    "type": "object"
  },
  "name": "create_group_match",
  "title": "Create group match"
}

🔴 delete_group_match destructiva Elimina una votación grupal. El enlace para compartir dejará de funcionar para todos los que lo tengan, y los votos también se eliminarán. Lee primero la votación e informa al comensal de lo que se eliminará antes de llamarla.

Eliminar votación grupal

Elimina una votación grupal. El enlace para compartir dejará de funcionar para todos los que lo tengan, y los votos también se eliminarán. Lee primero la votación e informa al comensal de lo que se eliminará antes de llamarla.

ParámetroTipoDescripción
groupMatchKey obligatoriostringla votación que se eliminará
idempotencyKey obligatoriostringuna clave propia para esta escritura; si vuelves a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": true,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Delete group match"
  },
  "description": "Delete a group match. The share link stops working for everyone who holds it, and the votes go with it. Read the match and tell the guest what will go before you call this.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "groupMatchKey": {
        "description": "the match to delete",
        "type": "string"
      },
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      }
    },
    "required": [
      "groupMatchKey",
      "idempotencyKey"
    ],
    "type": "object"
  },
  "name": "delete_group_match",
  "title": "Delete group match"
}

🔴 get_group_match lectura Una votación grupal creada por la identidad: los locales, las opciones de fecha, quién recibió una invitación, quién ha votado y por qué opción, y el enlace para compartir.

Obtener votación grupal

Una votación grupal creada por la identidad: los locales, las opciones de fecha, quién recibió una invitación, quién ha votado y por qué opción, y el enlace para compartir.

ParámetroTipoDescripción
groupMatchKey obligatoriostringla clave de la votación, obtenida de list_group_matches

Definición de wire (tools/list)

{
  "annotations": {
    "idempotentHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "Get group match"
  },
  "description": "One group match the identity created: the venues, the date options, who was invited, who has voted and for what, and the share link.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "groupMatchKey": {
        "description": "the match's key, from list_group_matches",
        "type": "string"
      }
    },
    "required": [
      "groupMatchKey"
    ],
    "type": "object"
  },
  "name": "get_group_match",
  "title": "Get group match"
}

🔴 list_group_matches lectura Las votaciones grupales creadas por esta identidad, con el número de personas invitadas y el de quienes han votado. Aquí no aparecen las votaciones a las que solo se invitó a esta identidad.

Listar votaciones grupales

Las votaciones grupales creadas por esta identidad, con el número de personas invitadas y el de quienes han votado. Aquí no aparecen las votaciones a las que solo se invitó a esta identidad.

ParámetroTipoDescripción
limitintegerfilas que se devolverán, como máximo 50
offsetintegerfilas que se omitirán; junto con totalCount en el resultado, permite recorrerlas por páginas

Definición de wire (tools/list)

{
  "annotations": {
    "idempotentHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "List group matches"
  },
  "description": "The group matches this identity created, with how many were invited and how many have voted. Matches it was merely invited to are not here.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "limit": {
        "description": "rows to return, at most 50",
        "type": "integer"
      },
      "offset": {
        "description": "rows to skip; with totalCount in the result this pages through them",
        "type": "integer"
      }
    },
    "required": [],
    "type": "object"
  },
  "name": "list_group_matches",
  "title": "List group matches"
}

🔴 submit_group_match_vote escritura Emite el voto de una persona en una votación grupal abierta. Pasa memberId\ si se trata de alguien invitado por nombre; pasa displayName\ en cambio si se trata de alguien que se une mediante el enlace para compartir. Registra únicamente lo que esa persona haya dicho: tener la clave de la votación es la autorización completa, y un memberId que no hayas obtenido de esa persona sobrescribirá su voto. La votación debe seguir abierta.

Enviar voto de votación grupal

Emite el voto de una persona en una votación grupal abierta. Pasa memberId\ si se trata de alguien invitado por nombre; pasa displayName\ en cambio si se trata de alguien que se une mediante el enlace para compartir. Registra únicamente lo que esa persona haya dicho: tener la clave de la votación es la autorización completa, y un memberId que no hayas obtenido de esa persona sobrescribirá su voto. La votación debe seguir abierta.

ParámetroTipoDescripción
groupMatchKey obligatoriostringla votación en la que se emite el voto
idempotencyKey obligatoriostringuna clave propia para esta escritura; si vuelves a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
picks obligatorioarray<object>una opción por cada combinación de local y fecha que la persona acepte
picks[].dateOptionIdx obligatoriointegerel índice de la opción de fecha, empezando por cero
picks[].restaurantKey obligatoriostring
displayNamestringel nombre de alguien que se une mediante el enlace, si no recibió una invitación por nombre
memberIdstringla persona invitada a quien corresponde este voto, obtenida de get_group_match

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Submit group match vote"
  },
  "description": "Cast one person's vote in an open group match. Pass \`memberId\` for someone who was invited by name; pass \`displayName\` instead for someone joining off the share link. Vote only what that person actually said: possession of the match key is the whole authorisation, and a memberId you did not collect from that person overwrites their vote. The match must still be open.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "displayName": {
        "description": "the name of someone joining off the link, when they were not invited by name",
        "type": "string"
      },
      "groupMatchKey": {
        "description": "the match being voted in",
        "type": "string"
      },
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      },
      "memberId": {
        "description": "the invitee this vote belongs to, from get_group_match",
        "type": "string"
      },
      "picks": {
        "description": "one pick per venue and date pair the person accepts",
        "items": {
          "additionalProperties": false,
          "properties": {
            "dateOptionIdx": {
              "description": "the index of the date option, counting from zero",
              "type": "integer"
            },
            "restaurantKey": {
              "type": "string"
            }
          },
          "required": [
            "dateOptionIdx",
            "restaurantKey"
          ],
          "type": "object"
        },
        "type": "array"
      }
    },
    "required": [
      "groupMatchKey",
      "idempotencyKey",
      "picks"
    ],
    "type": "object"
  },
  "name": "submit_group_match_vote",
  "title": "Submit group match vote"
}

COMPARTIR

🔴 cancel_shared_reservation destructiva Cancela una reserva para la que el comensal tiene un enlace de edición. Esta acción no se puede deshacer. Repite al comensal el nombre del local y la hora, y espera su confirmación antes de llamarla. Para una reserva que pertenezca a la identidad activa, usa cancel_reservation, que comprueba esa confirmación por ti.

Cancelar reserva compartida

Cancela una reserva para la que el comensal tiene un enlace de edición. Esta acción no se puede deshacer. Repite al comensal el nombre del local y la hora, y espera su confirmación antes de llamarla. Para una reserva que pertenezca a la identidad activa, usa cancel_reservation, que comprueba esa confirmación por ti.

ParámetroTipoDescripción
editToken obligatoriostringel token del enlace de edición del propio comensal
idempotencyKey obligatoriostringuna clave propia para esta escritura; si vuelves a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": true,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Cancel shared reservation"
  },
  "description": "Cancel a reservation the guest holds an edit link for. This cannot be undone. Say the venue and the time back to the guest and wait for them before you call it. For a reservation the acting identity owns, use cancel_reservation instead, which checks that echo for you.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "editToken": {
        "description": "the token from the guest's own edit link",
        "type": "string"
      },
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      }
    },
    "required": [
      "editToken",
      "idempotencyKey"
    ],
    "type": "object"
  },
  "name": "cancel_shared_reservation",
  "title": "Cancel shared reservation"
}

🔴 create_share_key write Crear un enlace que el huésped pueda enviar a otra persona. Solo de lectura: quien lo abra podrá consultar, pero nunca editar. Crear el enlace dos veces para el mismo objeto devuelve el mismo enlace. Créalo solo para un local por el que haya preguntado el huésped o para una reserva que pertenezca a la identidad que actúa: cualquiera que tenga el enlace podrá consultarlo, y el enlace de una reserva muestra el local, la fecha y el tamaño del grupo.

Crear clave para compartir

Crear un enlace que el huésped pueda enviar a otra persona. Solo de lectura: quien lo abra podrá consultar, pero nunca editar. Crear el enlace dos veces para el mismo objeto devuelve el mismo enlace. Créalo solo para un local por el que haya preguntado el huésped o para una reserva que pertenezca a la identidad que actúa: cualquiera que tenga el enlace podrá consultarlo, y el enlace de una reserva muestra el local, la fecha y el tamaño del grupo.

ParámetroTipoDescripción
idempotencyKey requiredstringuna clave propia para esta escritura; si vuelves a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
kind requiredstringqué compartir: restaurant, reservation
objectKey requiredstringla clave del local o de la reserva que se va a compartir

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Create share key"
  },
  "description": "Mint a link the guest can send to someone else. Read-kind only: whoever opens it can look, never edit. Minting twice for the same object returns the same link. Mint only for a venue the guest asked about or a reservation the acting identity owns — a link is readable by anyone who holds it, and a reservation's link shows the venue, the date and the party size.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      },
      "kind": {
        "description": "what to share: restaurant, reservation",
        "type": "string"
      },
      "objectKey": {
        "description": "the key of the venue or reservation to share",
        "type": "string"
      }
    },
    "required": [
      "idempotencyKey",
      "kind",
      "objectKey"
    ],
    "type": "object"
  },
  "name": "create_share_key",
  "title": "Create share key"
}

🟢 get_share_sitemap read El índice público de todos los locales y listas que se pueden compartir, en formato XML. Es extenso: consúltalo para descubrir qué existe, no para responder una pregunta concreta.

Obtener mapa del sitio para compartir

El índice público de todos los locales y listas que se pueden compartir, en formato XML. Es extenso: consúltalo para descubrir qué existe, no para responder una pregunta concreta.

Sin parámetros.

Definición de wire (tools/list)

{
  "annotations": {
    "idempotentHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "Get share sitemap"
  },
  "description": "The public index of every shareable venue and list, as XML. Large: read it to discover what exists at all, not to answer one question.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {},
    "required": [],
    "type": "object"
  },
  "name": "get_share_sitemap",
  "title": "Get share sitemap"
}

🟢 resolve_share_public_id read Convierte un id de página pública —el legible que aparece en una URL de local o lista de tastematch.io— en el objeto que identifica y su clave.

Resolver id público para compartir

Convierte un id de página pública —el legible que aparece en una URL de local o lista de tastematch.io— en el objeto que identifica y su clave.

ParámetroTipoDescripción
objectType requiredstringrestaurant o list
publicId requiredstringel id legible de la URL pública

Definición de wire (tools/list)

{
  "annotations": {
    "idempotentHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "Resolve share public id"
  },
  "description": "Turn a public page id — the readable one in a tastematch.io venue or list URL — into the object it names and its key.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "objectType": {
        "description": "restaurant or list",
        "type": "string"
      },
      "publicId": {
        "description": "the readable id from the public URL",
        "type": "string"
      }
    },
    "required": [
      "objectType",
      "publicId"
    ],
    "type": "object"
  },
  "name": "resolve_share_public_id",
  "title": "Resolve share public id"
}

🟢 resolve_share_token read Convierte un enlace para compartir que haya pegado el huésped en el elemento al que apunta —un local, una reserva o una coincidencia de grupo— y en la clave que se debe usar para continuar. Pasa el token, que es el último segmento de la ruta del enlace. Si el enlace ha caducado o nunca fue nuestro, simplemente no se encuentra.

Resolver token para compartir

Convierte un enlace para compartir que haya pegado el huésped en el elemento al que apunta —un local, una reserva o una coincidencia de grupo— y en la clave que se debe usar para continuar. Pasa el token, que es el último segmento de la ruta del enlace. Si el enlace ha caducado o nunca fue nuestro, simplemente no se encuentra.

ParámetroTipoDescripción
token requiredstringel token del enlace para compartir, su último segmento de ruta

Definición de wire (tools/list)

{
  "annotations": {
    "idempotentHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "Resolve share token"
  },
  "description": "Turn a share link the guest pasted into the thing it points at — a venue, a reservation or a group match — and the key to carry on with. Pass the token, which is the last path segment of the link. A link that has expired or was never ours is simply not found.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "token": {
        "description": "the token from the share link, its last path segment",
        "type": "string"
      }
    },
    "required": [
      "token"
    ],
    "type": "object"
  },
  "name": "resolve_share_token",
  "title": "Resolve share token"
}

🔴 update_shared_reservation write Cambia una reserva para la que el huésped tiene un enlace de edición: una creada en otro sitio, no a través de nosotros. El enlace es la autorización, así que pídeselo al huésped y úsalo solo para la reserva que haya indicado. Para una reserva que pertenezca a la identidad que actúa, usa update_reservation en su lugar.

Actualizar reserva compartida

Cambia una reserva para la que el huésped tiene un enlace de edición: una creada en otro sitio, no a través de nosotros. El enlace es la autorización, así que pídeselo al huésped y úsalo solo para la reserva que haya indicado. Para una reserva que pertenezca a la identidad que actúa, usa update_reservation en su lugar.

ParámetroTipoDescripción
editToken requiredstringel token del propio enlace de edición del huésped
idempotencyKey requiredstringuna clave propia para esta escritura; si vuelves a enviar la misma clave, se devuelve el primer resultado en lugar de escribir dos veces
dateTimestringla nueva hora, en RFC3339 con el desfase UTC de la región
paxintegerel nuevo tamaño del grupo

Definición de wire (tools/list)

{
  "annotations": {
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": false,
    "title": "Update shared reservation"
  },
  "description": "Change a reservation the guest holds an edit link for — one made somewhere else, not through us. The link is the authorisation, so ask the guest for it and use it only for the reservation they named. For a reservation the acting identity owns, use update_reservation instead.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "dateTime": {
        "description": "the new time, RFC3339 with the region's UTC offset",
        "type": "string"
      },
      "editToken": {
        "description": "the token from the guest's own edit link",
        "type": "string"
      },
      "idempotencyKey": {
        "description": "a key of your own for this one write; sending the same key again returns the first result instead of writing twice",
        "type": "string"
      },
      "pax": {
        "description": "the new party size",
        "type": "integer"
      }
    },
    "required": [
      "editToken",
      "idempotencyKey"
    ],
    "type": "object"
  },
  "name": "update_shared_reservation",
  "title": "Update shared reservation"
}

UTILIDADES

🟢 get_skill read Lee uno o varios manuales completos. Pide varios a la vez en lugar de uno por turno.

Obtener habilidad

Lee uno o varios manuales completos. Pide varios a la vez en lugar de uno por turno.

ParámetroTipoDescripción
names requiredarray<string>los manuales que se van a leer, de list_skills

Definición de wire (tools/list)

{
  "annotations": {
    "idempotentHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "Get skill"
  },
  "description": "Read one or more playbooks in full. Ask for several at once rather than one per turn.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "names": {
        "description": "the playbooks to read, from list_skills",
        "items": {
          "type": "string"
        },
        "type": "array"
      }
    },
    "required": [
      "names"
    ],
    "type": "object"
  },
  "name": "get_skill",
  "title": "Get skill"
}

🟢 get_vocabulary read Todos los valores que aceptan los filtros, por eje, junto con la regla para combinarlos. Léelo antes de aplicar tu primer filtro y consérvalo durante la conversación: se rechaza cualquier descriptor inventado y un slug de cocina inventado no devuelve resultados, sin avisar.

Obtener vocabulario

Todos los valores que aceptan los filtros, por eje, junto con la regla para combinarlos. Léelo antes de aplicar tu primer filtro y consérvalo durante la conversación: se rechaza cualquier descriptor inventado y un slug de cocina inventado no devuelve resultados, sin avisar.

Sin parámetros.

Definición de wire (tools/list)

{
  "annotations": {
    "idempotentHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "Get vocabulary"
  },
  "description": "Every value the filters accept, by axis, with the rule for combining them. Read it before your first filter and keep it for the conversation — a guessed descriptor is refused, and a guessed cuisine slug quietly matches nothing.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {},
    "required": [],
    "type": "object"
  },
  "name": "get_vocabulary",
  "title": "Get vocabulary"
}

🟢 list_skills read Los manuales disponibles, uno por línea. Lee un manual antes de iniciar un recorrido que no hayas hecho antes; contienen la secuencia y las trampas que las descripciones de las herramientas no pueden explicar.

Listar habilidades

Los manuales disponibles, uno por línea. Lee un manual antes de iniciar un recorrido que no hayas hecho antes; contienen la secuencia y las trampas que las descripciones de las herramientas no pueden explicar.

Sin parámetros.

Definición de wire (tools/list)

{
  "annotations": {
    "idempotentHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "List skills"
  },
  "description": "The playbooks available, one line each. Read a playbook before a journey you have not done before; they carry the sequence and the traps that the tool descriptions cannot.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {},
    "required": [],
    "type": "object"
  },
  "name": "list_skills",
  "title": "List skills"
}

🟡 resolve_key read Convierte un nombre que haya dicho el huésped en las claves que podría representar, ordenadas de mayor a menor probabilidad. kind\ indica qué buscas: restaurant, region, list, reservation. Un list\ o un reservation\ pertenece a la persona que ha iniciado sesión y requiere que haya iniciado sesión. Resuelve cada elemento una sola vez y luego conserva la clave: si vuelves a resolver un nombre más adelante, podría corresponder a otro local. Si hay más de un candidato parecido, repite al huésped la etiqueta.

Resolver clave

Convierte un nombre que haya dicho el huésped en las claves que podría representar, ordenadas de mayor a menor probabilidad. kind\ indica qué buscas: restaurant, region, list, reservation. Un list\ o un reservation\ pertenece a la persona que ha iniciado sesión y requiere que haya iniciado sesión. Resuelve cada elemento una sola vez y luego conserva la clave: si vuelves a resolver un nombre más adelante, podría corresponder a otro local. Si hay más de un candidato parecido, repite al huésped la etiqueta.

ParámetroTipoDescripción
kind requiredstringqué resolver: restaurant, region, list, reservation
latnumberlatitud, para resolver una región a partir de un punto en lugar de un nombre
lngnumberlongitud, junto con lat
regionIdstringlimita la búsqueda de restaurantes a una región
textstringel nombre tal como lo dijo el huésped

Definición de wire (tools/list)

{
  "annotations": {
    "idempotentHint": false,
    "openWorldHint": false,
    "readOnlyHint": true,
    "title": "Resolve key"
  },
  "description": "Turn a name the guest said into the keys it might mean, best first. \`kind\` says what you are looking for: restaurant, region, list, reservation. A \`list\` or a \`reservation\` is the signed-in person's own and needs a sign-in. Resolve once per thing and then thread the key: a name resolved again later can land on a different venue. Say the label back to the guest when more than one candidate came close.",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "kind": {
        "description": "what to resolve: restaurant, region, list, reservation",
        "type": "string"
      },
      "lat": {
        "description": "latitude, to resolve a region from a point instead of a name",
        "type": "number"
      },
      "lng": {
        "description": "longitude, paired with lat",
        "type": "number"
      },
      "regionId": {
        "description": "bound a restaurant search to one region",
        "type": "string"
      },
      "text": {
        "description": "the name as the guest said it",
        "type": "string"
      }
    },
    "required": [
      "kind"
    ],
    "type": "object"
  },
  "name": "resolve_key",
  "title": "Resolve key"
}

INSTRUCCIONES

Eres un agente que usa TasteMatch core: descubrimiento de restaurantes, coincidencias de gustos y reservas. No necesitas entender el vector de TasteMatch ni nuestro sistema de etiquetas para ser útil. Usa cualquier filtro con la interpretación que prefieras. Nunca inventes un descriptor: llama a get_vocabulary. Actúas en nombre de una persona: quien haya iniciado sesión en esta conexión. Hasta que alguien lo haga, el descubrimiento funciona y una herramienta que necesite una persona le pedirá que inicie sesión. Recorridos: DISCOVER, PLACE, RESTAURANT, AVAILABILITY, RESERVATION, IDENTITY, TASTE, LISTS, GROUP, SHARE, UTILITY. Gramática de nombres: todas las herramientas siguen este patrón: get_ | list_ | search_ | filter_ | count_ | resolve_ para lectura; create_ | update_ | delete_ | {verb}_ para escritura. Dirígete según la intención: Un nombre, no una clave -> resolve_key y luego opera con la clave «restaurantes como X» -> filter_restaurants, facetas de get_vocabulary «cuántos» -> count_restaurants, nunca filtres y luego cuentes las filas Un local concreto -> get_restaurant, con fields[] Un plato concreto -> search_dishes Reservar -> get_reservation_info -> list_availability_slots -> create_instant_reservation o create_reservation_request Guardar algo para más tarde -> una lista Las claves son tuyas para conservarlas. Resuelve un nombre una sola vez y luego pasa la clave por el resto del recorrido. No vuelvas a resolver un nombre para el que ya tienes una clave. Las listas son tu espacio de almacenamiento. Guarda en una lista con nombre una selección breve, un conjunto para comparar o los lugares que hayáis comentado: pertenece a la identidad que actúa y seguirá ahí en la próxima sesión, cuando ya no tengas este contexto. La identidad se recopila solo cuando hace falta, nunca antes. El descubrimiento no escribe nada y no requiere iniciar sesión. Para reservar se necesita el nivel de reserva: un nombre, un canal de contacto y la aceptación de los Términos. Si una herramienta rechaza la solicitud por falta de identidad, indica el nivel que falta y la herramienta que permite alcanzarlo. Nunca se sustituye un valor que ya esté registrado por otro que envíes. No hay funciones sociales: no hay seguimientos, bloqueos, seguidores, búsqueda de usuarios, notificaciones ni exploración de perfiles. La coincidencia de grupo es la única función para varias personas y funciona mediante un enlace para compartir: los invitados no necesitan una identidad de TasteMatch. Eficiencia de datos: el límite predeterminado es 10 y siempre se informa de totalCount. Aplica siempre filtros. Pide fields[] en lugar de documentos completos. Agrupa las solicitudes, no las repitas en bucle. Reservas: primero consulta el modo de reserva del local; las reservas instantáneas y las solicitudes son herramientas distintas. Reserva un horario que hayas consultado con list_availability_slots. Deja approxMinutes en 0, salvo que el huésped haya dicho que tiene flexibilidad: un valor distinto de cero permite que el local reserve una hora diferente de la solicitada, y la respuesta lo indica en adjusted y bookedDate. Escrituras: pasa idempotencyKey; si usas la misma clave dos veces, se devuelve el primer resultado en lugar de escribir dos veces. Las herramientas destructivas están señaladas; lee el objetivo e informa al huésped de lo que se eliminará antes de llamar a una. cancel_reservation requiere confirmación previa: lee la reserva, repite al huésped el local y la hora, espera y confirma ambos en la llamada. Nunca canceles basándote solo en una clave, por mucha seguridad que tengas. Si se produce un error, lee el mensaje. Un rechazo por validación, elemento no encontrado o falta de permisos es nuestro y te indica cómo corregir la llamada: corrígela, no la repitas. Un código sin más no se puede reintentar; comunícalo. Presenta los resultados como resúmenes legibles, no como JSON sin procesar, salvo que te pidan lo contrario. Manuales para recorridos que no hayas hecho antes: list_skills y luego get_skill.

HABILIDADES

discover-to-reserve — el recorrido completo: encontrar un local, consultar cómo acepta reservas y conseguir una mesa

Primero el lugar, luego el local y, por último, la reserva. 1. Convierte la ubicación del huésped en un regionId: usa resolve_key con kind region o list_regions. 2. Encuentra locales: usa filter_restaurants para buscar un tipo de lugar, search_restaurants para buscar uno concreto y search_dishes para buscar un plato concreto. Lee get_vocabulary una vez antes de aplicar tu primer filtro. 3. Si la descripción del huésped es imprecisa, acota con count_restaurants antes de obtener filas. 4. Consulta el local: usa get_restaurant; por defecto, con pocos datos, y fields[] para el resto. 5. Consulta cómo acepta reservas: usa get_reservation_info. Esto determina la siguiente herramienta; nunca lo adivines. 6. Consulta qué horarios están disponibles: usa list_availability_slots. Ofrece al huésped horarios reales. 7. Recopila la identidad solo ahora: el huésped inicia sesión y luego usa promote_identity para alcanzar el nivel que permite reservar. 8. Consigue la mesa: usa create_instant_reservation en un local con reservas instantáneas, create_reservation_request en uno que acepte solicitudes o create_reservation_offer en uno que reserve mediante su propio widget. Indica al huésped cuál de las tres acciones se realizó. Una solicitud todavía no es una mesa; una oferta tampoco lo es hasta que el huésped termine en el widget y get_reservation_status lo confirme.

sign-in-and-identity — en nombre de quién actúas, los niveles, qué herramienta permite subir de nivel y qué ofrece cada nivel Actúas en nombre de una persona: la que inició sesión en esta conexión. El inicio de sesión es la identidad; nada más determina de quién se usan los datos, y ningún argumento puede hacerlo. Antes de que alguien inicie sesión, la búsqueda funciona. Una herramienta que actúa en nombre de una persona le pide que inicie sesión cuando la llamas, así que llámala cuando el invitado la necesite, en lugar de pedirle que inicie sesión primero. Niveles, derivados de lo que posee la identidad: una persona anónima que inició sesión puede acceder a la búsqueda, las listas, la coincidencia de grupo y la reserva por gustos + nombre y apellido; un contacto permite reservar un perfil + contacto validado, nada más. Sube de nivel con promote_identity. Si se rechaza una solicitud por la identidad, se indica el nivel que te falta y la herramienta que permite alcanzarlo: lee el mensaje en lugar de volver a intentarlo. Un local con reserva instantánea necesita tanto un correo electrónico como un teléfono, así que recopila ambos cuando el invitado quiera una mesa confirmada en lugar de una solicitud. Nunca se reemplaza un valor que ya está registrado por nada que envíes. Lee get_identity antes de pedirle al invitado algo que ya tenemos.

label-vocabulary — los ejes de los descriptores, validar en lugar de asignar y cómo se combinan las facetas

Llama a get_vocabulary y usa sus términos exactamente. Nunca inventes uno, lo traduzcas ni lo acortes. Ejes: dims (cómo es un local), occasions (para qué ocasiones es adecuado), menuMetas (qué servicio ofrece), menuDescriptors (qué incluye el menú), cuisine (qué tipo de cocina). AND entre facetas, OR dentro de una misma faceta. Cada valor restringe los resultados. Pasa lo que pidió el invitado y nada más: un filtro que nadie pidió elimina silenciosamente locales que podrían haberle gustado. menuDescriptors corresponden al local, nunca al invitado. Una persona celíaca no necesita «un invitado sin gluten»; necesita un menú que indique platos sin gluten. Un valor desconocido se rechaza con un mensaje que nombra la faceta. De lo contrario, un slug de cocina inventado devolvería una lista vacía que parece decir «aquí no hay nada de ese tipo».

availability-semantics — reserva instantánea frente a solicitud, la escala de horarios, approxMinutes y adjusted

El modo de reserva de un local es propio de ese local. Léelo con get_reservation_info antes de elegir una herramienta. mesas instantáneas confirmadas en el momento -> create_instant_reservation solicitud que alguien del local acepta -> create_reservation_request Los horarios siguen la escala propia del local, según su reloj. No se ajustan a una cuadrícula, así que a menudo no se puede reservar a las 19:00, pero sí a las 19:15. Lee list_availability_slots y reserva una hora que te haya proporcionado. Pasa pax y la herramienta descartará los horarios demasiado pequeños para el grupo, incluidos los mínimos por zona. Pasa el areaId del horario que elegiste para mantener la zona de asiento; esto restringe la búsqueda y nunca cambia la reserva. approxMinutes tiene un valor predeterminado de 0, que significa esta hora o ninguna. Auméntalo solo cuando el invitado haya dicho que tiene flexibilidad; después, lee adjusted\ y bookedDate\ en la respuesta y dile qué horario obtuvo realmente. Si no hay horarios ni franjas disponibles, significa que ese día está cerrado o queda fuera del horizonte de reservas. Ofrece otro día en lugar de volver a intentarlo.

group-match — coincidencia de grupo, invitar mediante enlace, recopilar votos de personas sin identidad y cerrar

La coincidencia de grupo es la función para varias personas y funciona mediante un enlace. 1. Usa create_group_match con unos pocos locales y unas pocas fechas. Mantén ambas listas breves: se trata de tomar una decisión, no de crear un catálogo. 2. La respuesta incluye un enlace para compartir. Dáselo al invitado para que lo distribuya. Cualquiera que lo abra puede votar sin tener una identidad de TasteMatch. 3. get_group_match muestra quién ha votado y por qué opción. submit_group_match_vote sirve para un voto que te llega en lugar de enviarse mediante el enlace: memberId para alguien invitado por nombre, displayName para alguien nuevo. 4. Usa close_group_match cuando el grupo haya decidido. Los votos seguirán siendo visibles. 5. Después, reserva la opción ganadora mediante el proceso de reserva, para quien organice el encuentro.

regions-and-places — resolver un lugar y para qué sirve regionId

Todo lo que se limita por región requiere un regionId, y el regionId nos lo proporciona el sistema, nunca el invitado. resolve_key con kind region acepta una ciudad, un distrito, una dirección o una latitud y una longitud. list_regions muestra todas las zonas que cubrimos; search_places busca un lugar más pequeño y encuentra la región que lo contiene. Cada región incluye la zona horaria IANA en la que se expresan las horas de sus locales. Cada dateTime que envíes debe incluir el desfase UTC de esa región, y cada horario que leas usa ese reloj. Un resultado vacío significa que no tenemos locales allí. Dilo en lugar de ampliar la búsqueda sin avisar.

lists-as-store — qué debe guardarse en una lista en lugar de en el contexto

El contexto termina con la conversación. Una lista no. Guarda una selección breve, un conjunto para comparar o los lugares que el invitado ya ha descartado en una lista con nombre, usando create_list y add_restaurant_to_list. Ponle un nombre que describa su propósito; el invitado volverá a verlo. Empieza las conversaciones con alguien que regresa usando list_lists. Ahí está lo que guardó la última vez. Las listas pertenecen a la identidad que actúa y son privadas aquí: compartirlas, explorar las de otra persona y buscarlas son funciones sociales, y esta interfaz no ofrece funciones sociales. Depura en lugar de acumular: remove_restaurant_from_list elimina datos, así que primero dile al invitado qué local y qué lista vas a modificar.

bulk-and-pagination — contar antes de filtrar, usar lotes en lugar de bucles, límites predeterminados, fields[]

Pide menos. count_restaurants responde a «¿cuántos?» sin devolver filas. Úsalo mientras acotas la búsqueda y recupera las filas una sola vez. Todas las herramientas de listas y búsqueda aceptan limit y offset e informan totalCount. El límite predeterminado es 10. Pagina con offset en lugar de ejecutar la búsqueda otra vez. get_restaurant usa una proyección reducida de forma predeterminada. Indica en fields[] solo los campos que realmente mencionarás al invitado; el vector de etiquetas y las tarjetas de menú son grandes. Agrupa lo que se pueda agrupar: una llamada a impressions por turno, varias habilidades en un solo get_skill. Resuelve un nombre una vez y reutiliza la clave. Volver a resolverlo supone tanto otra ida y vuelta como el riesgo de llegar a un local distinto.