Skip To Main Content
All modules

Dining

Fields marked * are required. Updates keep every field they are not given. An AI app can ask vritto_describe for the same details, filtered to what its connection may use.

Restaurantrestaurant

A restaurant on the user's list, visited or want-to-try.

dining_queryDiningFindthrough vritto_find

List restaurants (with status, cuisines, city, and meal aggregates) and meals. Rows are compact summaries plus headline counts, top restaurants and recent meals; pass detail 'full' only when the user needs dish-level details, companions, costs, or notes. Use for dining QUESTIONS. Do not call this to look up an ID before logging a meal: dining_logMeal resolves a restaurant by name on its own.

FieldTypeDescription
detailone of summary, fullResponse shape: "summary" (default, headline counts + top restaurants + recent meals) or "full" (every restaurant and meal with dishes, companions, costs, and notes).
dining_upsertRestaurantCreate or Updatethrough vritto_create or vritto_update

Add or update a restaurant, the 'add to my list' verb. Omit record.id to create (name required); include a real record.id to update, sent fields merge.

FieldTypeDescription
record*objectRestaurant fields; name required when creating.
record.idstringExisting restaurant ID to update. Omit to create.
record.namestringRequired when creating.
record.cuisineslist of stringFree tags, e.g. ['Sri Lankan'].
record.priceLevelinteger
record.statusone of want_to_try, visited, favoriteDefaults to want_to_try; first logged meal auto-flips to visited.
record.recommendedBystringWho recommended it + what to order.
record.recommendedByPersonIdstringPeople ID when resolvable.
record.citystring
record.countrystringISO 3166-1 alpha-2 country code, e.g. 'US'.
record.addressstring
record.websitestringRestaurant website URL.
record.phonestringPhone number.
record.placeKeystringPlaces module place key, e.g. 'google:<id>' or 'manual:<uuid>'.
record.notesstring
Example input
{
  "record": {
    "name": "Kasama",
    "cuisines": [
      "Filipino"
    ],
    "status": "want_to_try",
    "city": "Chicago",
    "recommendedBy": "Priya"
  }
}
dining_deleteRestaurantDeletethrough vritto_delete

Delete (archive) one restaurant from the list. Meals keep their history. Only for explicit removals; resolve the ID first.

FieldTypeDescription
restaurantId*stringRestaurant ID from a prior dining_queryDining result, never invented.

Mealmeal

One logged meal at a restaurant, with dish ratings.

dining_logMealCreate or Updatethrough vritto_create or vritto_update

Log or update one meal in a single call. Pass the restaurant by NAME (restaurantName) exactly as the user said it, an existing restaurant is matched case-insensitively, or a new one is created, so you never need to look up an ID first. Only date is otherwise required. Capture every dish the user names, with ratings only when stated.

Note: Pass the restaurant by name as the user said it; Vritto finds or creates it.

FieldTypeDescription
record*objectMeal fields; restaurantId + date required when creating.
record.idstringExisting meal ID to update. Omit to create.
record.restaurantIdstringUse ONLY when you already know the ID from earlier in this conversation. Never call a query tool just to obtain it, send restaurantName instead.
record.restaurantNamestringRestaurant name, when no ID is known. Matches an existing restaurant case-insensitively, or creates one.
record.datestringDefaults should be TODAY when the user says 'just had'.
record.mealTypeone of breakfast, brunch, lunch, dinner, snack, drinks
record.ratingnumberThe one meal verdict.
record.disheslist of objectDish-level ratings are the point, capture each dish the user mentions.
record.totalCostAmountnumber
record.totalCostCurrencystring
record.companionPersonIdslist of stringPeople IDs: resolve names first.
record.occasionstring
record.tripIdstringTrip link (resolve via trips_queryTripsDashboard).
record.notesstring
record.sourceone of manual, sahai, gmail, bankWhere the record came from. Set by the ingestion pipeline; leave unset.
Example input
{
  "record": {
    "restaurantName": "Kasama",
    "date": "2026-09-25",
    "mealType": "dinner",
    "rating": 4.5,
    "dishes": [
      {
        "name": "Pork adobo",
        "rating": 5,
        "wouldOrderAgain": true
      },
      {
        "name": "Ube basque cake",
        "rating": 4
      }
    ]
  }
}
dining_deleteMealDeletethrough vritto_delete

Delete (archive) one logged meal. Only for explicit removals; resolve the ID first.

FieldTypeDescription
mealId*stringMeal ID from dining_queryDining.