Trips
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.
Triptrip
A trip with destinations, dates, companions, and budget.
trips_queryTripsDashboardFindthrough vritto_findList trips, itinerary activities, packing lists, and packing templates. Rows are compact summaries plus headline counts; pass detail 'full' only when the user needs complete records (notes, budgets, companions, every activity, packing items). Use for any travel question. Do not call this just to fetch an ID for a write.
| Field | Type | Description |
|---|---|---|
| detail | one of summary, full | Response shape: "summary" (default, headline counts + compact trip/activity rows) or "full" (every trip, activity, packing list, and template with all fields incl. notes). |
trips_upsertTripCreate or Updatethrough vritto_create or vritto_updateCreate or update one trip. Omit record.id to create (name required); include a real record.id to update, sent fields merge, but legs replace the whole array when provided. Dates derive from leg dates when omitted.
Note: legs replaces the whole route when sent.
| Field | Type | Description |
|---|---|---|
| record* | object | Trip fields; name required when creating. |
| record.id | string | Existing trip ID to update. Omit to create. |
| record.name | string | Trip name, e.g. 'Singapore + KL, October'. Required when creating. |
| record.status | one of idea, planning, upcoming, active, completed, canceled | Defaults to 'planning'. |
| record.legs | list of object | Ordered destinations. A one-city trip is one leg. |
| record.startDate | string | First day. Derived from leg dates when omitted. |
| record.endDate | string | Last day. Derived from leg dates when omitted. |
| record.companionPersonIds | list of string | People IDs of travel companions (resolve via the People module). |
| record.notes | string | |
| record.budgetAmount | number | Budget envelope; null clears it. |
| record.budgetCurrency | string | ISO currency, default USD. |
| record.tags | list of string | |
| record.pinned | boolean | Pin the trip to the top of the list, only on explicit user ask. |
| record.primaryTimezone | string | Main destination IANA zone, e.g. 'Asia/Tokyo', the trip's default clock when legs don't decide. |
Example input
{
"record": {
"name": "Japan in November",
"status": "upcoming",
"legs": [
{
"label": "Tokyo",
"arrivalDate": "2026-11-03",
"departureDate": "2026-11-08",
"timezone": "Asia/Tokyo"
},
{
"label": "Kyoto",
"arrivalDate": "2026-11-08",
"departureDate": "2026-11-12",
"timezone": "Asia/Tokyo"
}
]
}
}trips_deleteTripDeletethrough vritto_deleteDelete (archive) one trip. Only for explicit removals, a finished trip should be status 'completed', not deleted. Resolve the ID first.
| Field | Type | Description |
|---|---|---|
| tripId* | string | Trip ID from a prior trips_queryTripsDashboard result, never invented. |
Trip Activitytrip_activity
An itinerary item: activity, meal, transit, or note.
trips_upsertActivityCreate or Updatethrough vritto_create or vritto_updateCreate or update one itinerary item (activity, meal, transit, or note) on a trip. Omit record.id to create (tripId + title + startAt required). startAt must carry the destination's UTC offset and timezone its IANA zone.
| Field | Type | Description |
|---|---|---|
| record* | object | Activity fields; tripId + title + startAt required when creating. |
| record.id | string | Existing activity ID to update. Omit to create. |
| record.tripId* | string | Trip ID from a prior trips_queryTripsDashboard result, never invented. |
| record.kind | one of activity, transit, food, note | Defaults to 'activity'. |
| record.transitMode | one of train, car_rental, bus, ferry, rideshare, other | Only meaningful when kind is 'transit'. |
| record.title | string | e.g. 'Dinner at Jumbo Seafood'. Required when creating. |
| record.startAt | string | Start as ISO 8601 WITH the segment's local UTC offset, e.g. '2026-10-05T19:00:00+08:00'. Required when creating. |
| record.endAt | string | |
| record.timezone | string | IANA zone the item happens in, e.g. 'Asia/Singapore'. |
| record.placeKey | string | Places atlas key of the venue when known, links the activity into the Places graph; else omit. |
| record.address | string | |
| record.costAmount | number | |
| record.costCurrency | string | |
| record.bookingRef | string | |
| record.url | string | |
| record.notes | string |
trips_deleteActivityDeletethrough vritto_deleteDelete (archive) one itinerary item. Resolve the ID with trips_queryTripsDashboard first.
| Field | Type | Description |
|---|---|---|
| activityId* | string | Activity ID from a prior dashboard read. |
Packing Listpacking_list
A trip's packing list.
trips_upsertPackingListCreate or Updatethrough vritto_create or vritto_updateCreate or update a trip's packing list: checking items off, adding items, renaming. Send the COMPLETE items array every time; the server replaces the stored list with it.
Note: items replaces the whole list; send every item, not just changes.
| Field | Type | Description |
|---|---|---|
| record* | object | Packing list; tripId required, items is the full array. |
| record.id | string | Existing list ID to update. Omit to create. |
| record.tripId* | string | Trip ID from a prior trips_queryTripsDashboard result, never invented. |
| record.name | string | Defaults to 'Packing'. |
| record.forPersonId | string | People ID when this list is for one specific traveler (per-person packing). |
| record.fromTemplateId | string | Packing template ID (from the dashboard read) to seed items from, applies only when CREATING a list. |
| record.items | list of object | The FULL item array, send every item, not just changes (the server replaces the list). |