Stays
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.
Staystay
A hotel, rental, or friend's-place reservation.
stays_findFindthrough vritto_findRead Stays: one stay by id, or stays filtered by view, dates, text, kind or trip (no filter gives headline counts and recent stays). Compact rows unless detail is 'full'. Use for any lodging question.
| Field | Type | Description |
|---|---|---|
| id | string | Return just this stay. |
| view | one of upcoming, past, all | 'upcoming' stays not yet over (soonest first), 'past' finished ones newest first, 'all' (default). |
| from | string | Earliest date, inclusive: stays still running on or after it. |
| to | string | Latest date, inclusive: stays starting on or before it. ALWAYS pass from/to when the question concerns a period. |
| query | string | Text to match: a city, hotel, brand, booking site or confirmation code. |
| kind | one of hotel, rental, hostel, friends_family, other | Only stays of this kind. |
| tripId | string | Only stays tagged to this trip. |
| limit | integer | Rows to return, default 20. |
| detail | one of summary, full | 'summary' (default) compact rows; 'full' every field incl. confirmation codes, arrivalDetails, costs and notes. |
Example input
{
"view": "upcoming"
}stays_addCreate or Updatethrough vritto_create or vritto_updateAdd one lodging reservation: name, checkInDate and checkOutDate, plus what the person said. A booking already on file (same confirmation code, or name and check-in) is updated instead of duplicated. freeCancelUntil must be user-confirmed.
| Field | Type | Description |
|---|---|---|
| record* | object | Stay fields; name + checkInDate + checkOutDate required. |
| record.id | string | Leave out when adding; to change a stay use stays_change. |
| record.source | one of manual, gmail, sahai, bank | Where this came from. Leave unset for a manual entry. |
| record.name | string | Property or place name. Required when creating. |
| record.kind | one of hotel, rental, hostel, friends_family, other | Defaults to 'hotel'. |
| record.brandName | string | Hotel chain/brand; the server resolves a logo. |
| record.address | string | |
| record.checkInDate | string | Required when creating. |
| record.checkOutDate | string | Required when creating. |
| record.checkInTime | string | Local wall time, e.g. '15:00'. |
| record.checkOutTime | string | |
| record.timezone | string | Property's IANA zone when known. |
| record.confirmationCode | string | |
| record.roomNumber | string | Room/unit number, e.g. '1207', often assigned at check-in. |
| record.bookingSource | string | e.g. 'Booking.com', 'Airbnb', 'direct'. |
| record.placeKey | string | Places atlas key of the property when known, links the stay into the Places graph; else omit. |
| record.costAmount | number | Total stay cost. |
| record.costCurrency | string | |
| record.costStatus | one of paid, estimated | Defaults to 'paid'. Set 'estimated' whenever the amount is a quote, guess, or not-yet-charged total, e.g. free-cancellation bookings before checkout or 'it'll be around $600'. |
| record.arrivalDetails | object | Arrival info. Providing this object REPLACES all four fields, read the stay first and send back every value you want kept. |
| record.guestPersonIds | list of string | People IDs of others staying too (resolve via the People module). |
| record.freeCancelUntil | string | Free-cancellation deadline as ISO WITH offset. ALWAYS confirm this with the user before setting, it drives a reminder and must never be silently assumed from a policy text. |
| record.hostPersonId | string | People ID of the host (friends_family only). |
| record.tripId | string | Trip this stay belongs to (resolve via trips_find). |
| record.canceled | boolean | |
| record.notes | string |
Example input
{
"record": {
"name": "Hotel Okura",
"kind": "hotel",
"checkInDate": "2026-11-03",
"checkOutDate": "2026-11-08",
"confirmationCode": "OK-55821",
"costAmount": 1480,
"costCurrency": "USD"
}
}stays_changeUpdatethrough vritto_updateChange one stay by record.id; sent fields merge. A cancelled booking is canceled true (never a removal); after checkout set a 1-5 rating and ratingNote. Resolve the id with stays_find first.
Note: A cancelled booking is canceled true, never a removal. arrivalDetails replaces all four of its fields when sent.
| Field | Type | Description |
|---|---|---|
| record | object | The stay's id plus the fields to change. |
| record.id* | string | Stay ID from a prior stays_find result, never invented. |
| record.name | string | Property or place name. Required when creating. |
| record.kind | one of hotel, rental, hostel, friends_family, other | Defaults to 'hotel'. |
| record.brandName | string | Hotel chain/brand; the server resolves a logo. |
| record.address | string | |
| record.checkInDate | string | Required when creating. |
| record.checkOutDate | string | Required when creating. |
| record.checkInTime | string | Local wall time, e.g. '15:00'. |
| record.checkOutTime | string | |
| record.timezone | string | Property's IANA zone when known. |
| record.confirmationCode | string | |
| record.roomNumber | string | Room/unit number, e.g. '1207', often assigned at check-in. |
| record.bookingSource | string | e.g. 'Booking.com', 'Airbnb', 'direct'. |
| record.placeKey | string | Places atlas key of the property when known, links the stay into the Places graph; else omit. |
| record.costAmount | number | Total stay cost. |
| record.costCurrency | string | |
| record.costStatus | one of paid, estimated | Defaults to 'paid'. Set 'estimated' whenever the amount is a quote, guess, or not-yet-charged total, e.g. free-cancellation bookings before checkout or 'it'll be around $600'. |
| record.arrivalDetails | object | Arrival info. Providing this object REPLACES all four fields, read the stay first and send back every value you want kept. |
| record.guestPersonIds | list of string | People IDs of others staying too (resolve via the People module). |
| record.freeCancelUntil | string | Free-cancellation deadline as ISO WITH offset. ALWAYS confirm this with the user before setting, it drives a reminder and must never be silently assumed from a policy text. |
| record.hostPersonId | string | People ID of the host (friends_family only). |
| record.tripId | string | Trip this stay belongs to (resolve via trips_find). |
| record.canceled | boolean | true when the booking was cancelled (kept, never removed). |
| record.notes | string | |
| record.rating | integer | 1 to 5 after the stay; null clears it. |
| record.ratingNote | string | |
| stayId | string | Older form of a rating: the stay, with rating. |
| rating | integer | Older form, with stayId. |
| ratingNote | string | Older form, with stayId. |
Example input
{
"record": {
"id": "stay_okura",
"canceled": true
}
}stays_removeDeletethrough vritto_deleteRemove (archive) one stay. Only for explicit removals; a cancelled reservation is a stays_change with canceled true. Resolve the id first.
Note: A cancelled booking is a stays_change with canceled true instead.
| Field | Type | Description |
|---|---|---|
| id | string | The stay to remove. |
| stayId | string | Older name for id. |