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.
Mealmeal
One logged meal at a restaurant, with dish ratings. The same operations reach the restaurants on the user's list, visited or want-to-try (type 'restaurant').
dining_findFindthrough vritto_findRead Dining: one record by id, restaurants filtered by status, city, cuisine or text (with meal aggregates), or meals filtered by restaurant, dates or dish text. No filter gives headline counts, top restaurants and recent meals. Use for dining QUESTIONS; never to look up an ID before logging a meal, dining_add resolves a restaurant by name on its own.
Note: No filter returns headline counts, top restaurants and recent meals; type 'restaurant' with status 'want_to_try' and a city reads the want-to-try list.
| Field | Type | Description |
|---|---|---|
| type | one of meal, restaurant | Which records to read; omit for both. |
| id | string | Return just this record. |
| status | one of want_to_try, visited, favorite | Type 'restaurant': only these. |
| city | string | Type 'restaurant': only in this city. |
| cuisine | string | Type 'restaurant': only with this cuisine tag. |
| restaurantId | string | Type 'meal': meals at this restaurant. |
| restaurantName | string | Type 'meal': meals at this restaurant, by name. |
| from | string | Type 'meal': earliest date, inclusive. |
| to | string | Type 'meal': latest date, inclusive. ALWAYS pass from/to when the question concerns a period. |
| query | string | Text to match: a restaurant, cuisine, recommender, dish, occasion or note. |
| limit | integer | Rows to return per type, default 25. |
| detail | one of summary, full | "summary" (default) compact rows; "full" every restaurant and meal with dishes, companions, costs, and notes. |
Example input
{}dining_addCreate or Updatethrough vritto_create or vritto_updateAdd one record in a single call: a meal (pass the restaurant by NAME, restaurantName, as the user said it: it is matched case-insensitively or created, so never look up an ID first; date is the only other requirement; capture every dish named, ratings only when stated), or a restaurant for the list (type 'restaurant': name, city, recommendedBy). A real record.id updates that record instead.
Note: Pass a meal's restaurant by name as the user said it; Vritto finds or creates it.
| Field | Type | Description |
|---|---|---|
| type | one of meal, restaurant | Record type: 'meal' (default) one meal out, with its dishes; 'restaurant' a place on the user's list, visited or want-to-try. |
| record* | object | The record's fields; a meal needs a restaurant (name or id) and a date, a restaurant its name. |
| record.id | string | Leave out to add; a real id updates that record, only the fields you send change. |
| record.name | string | Type 'restaurant': its name. Required for a restaurant. |
| record.cuisines | list of string | Free tags, e.g. ['Sri Lankan']. |
| record.priceLevel | integer | |
| record.status | one of want_to_try, visited, favorite | Type 'restaurant': defaults to want_to_try; the first logged meal flips it to visited. |
| record.recommendedBy | string | Who recommended it + what to order. |
| record.recommendedByPersonId | string | People ID when resolvable. |
| record.city | string | |
| record.country | string | ISO 3166-1 alpha-2 country code, e.g. 'US'. |
| record.address | string | |
| record.website | string | Restaurant website URL. |
| record.phone | string | Phone number. |
| record.placeKey | string | Places module place key, e.g. 'google:<id>' or 'manual:<uuid>'. |
| record.notes | string | |
| record.restaurantId | string | Use 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.restaurantName | string | Restaurant name, when no ID is known. Matches an existing restaurant case-insensitively, or creates one. |
| record.date | string | Defaults should be TODAY when the user says 'just had'. |
| record.mealType | one of breakfast, brunch, lunch, dinner, snack, drinks | |
| record.rating | number | The one meal verdict. |
| record.dishes | list of object | Dish-level ratings are the point, capture each dish the user mentions. |
| record.totalCostAmount | number | |
| record.totalCostCurrency | string | |
| record.companionPersonIds | list of string | People IDs: resolve names first. |
| record.occasion | string | |
| record.tripId | string | Trip link (resolve via trips_find). |
| record.source | one of manual, sahai, gmail, bank | Where 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,
"totalCostAmount": 96,
"totalCostCurrency": "USD",
"dishes": [
{
"name": "Pork adobo",
"rating": 5,
"wouldOrderAgain": true
},
{
"name": "Ube basque cake",
"rating": 4
}
]
}
}dining_changeUpdatethrough vritto_updateChange one meal or restaurant by record.id (set type 'restaurant' for a restaurant); only sent fields change. A meal's dishes are written whole: echo each kept dish's id. Resolve the id with dining_find first, or reuse the id a dining_add just returned.
Note: A meal's dishes are written whole: echo each kept dish's id.
| Field | Type | Description |
|---|---|---|
| type | one of meal, restaurant | Record type: 'meal' (default) one meal out, with its dishes; 'restaurant' a place on the user's list, visited or want-to-try. |
| record* | object | The record's id plus the fields to change. |
| record.id* | string | Record ID from a prior dining_find result, never invented. |
| record.name | string | Type 'restaurant': its name. Required for a restaurant. |
| record.cuisines | list of string | Free tags, e.g. ['Sri Lankan']. |
| record.priceLevel | integer | |
| record.status | one of want_to_try, visited, favorite | Type 'restaurant': defaults to want_to_try; the first logged meal flips it to visited. |
| record.recommendedBy | string | Who recommended it + what to order. |
| record.recommendedByPersonId | string | People ID when resolvable. |
| record.city | string | |
| record.country | string | ISO 3166-1 alpha-2 country code, e.g. 'US'. |
| record.address | string | |
| record.website | string | Restaurant website URL. |
| record.phone | string | Phone number. |
| record.placeKey | string | Places module place key, e.g. 'google:<id>' or 'manual:<uuid>'. |
| record.notes | string | |
| record.restaurantId | string | Use 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.restaurantName | string | Restaurant name, when no ID is known. Matches an existing restaurant case-insensitively, or creates one. |
| record.date | string | Defaults should be TODAY when the user says 'just had'. |
| record.mealType | one of breakfast, brunch, lunch, dinner, snack, drinks | |
| record.rating | number | The one meal verdict. |
| record.dishes | list of object | Dish-level ratings are the point, capture each dish the user mentions. |
| record.totalCostAmount | number | |
| record.totalCostCurrency | string | |
| record.companionPersonIds | list of string | People IDs: resolve names first. |
| record.occasion | string | |
| record.tripId | string | Trip link (resolve via trips_find). |
| record.source | one of manual, sahai, gmail, bank | Where the record came from. Set by the ingestion pipeline; leave unset. |
Example input
{
"record": {
"id": "meal_123",
"rating": 5
}
}dining_removeDeletethrough vritto_deleteRemove (archive) one meal, or one restaurant from the list (its meals keep their history). Only for explicit removals; resolve the id first.
Note: Set type 'restaurant' to remove a restaurant; its meals keep their history.
| Field | Type | Description |
|---|---|---|
| id | string | The record to remove. |
| type | one of meal, restaurant | Record type: 'meal' (default) one meal out, with its dishes; 'restaurant' a place on the user's list, visited or want-to-try. |
| mealId | string | Older name for a meal's id. |
| restaurantId | string | Older name for a restaurant's id. |