Gifts
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.
Giftgift
A gift the user is giving or received, from idea to given. The same operations reach occasions (type 'occasion': a gift list with budget and recipients) and a person's gift profile (type 'profile': sizes, interests, favorite brands, things to avoid).
gifts_findFindthrough vritto_findRead Gifts: search gifts newest first by recipient (personId), occasion, status or direction, one gift by id with its full notes, type 'occasion' for occasions (one by id with its progress), or type 'profile' with personId for a person's gift profile. ALWAYS pass from/to (on the given date, or the occasion date) when the question concerns a period: 'what did I give Mom last year' is personId + from/to.
Note: personId with from/to answers 'what did I give Mom last year'; a person named alone also returns their gift profile.
| Field | Type | Description |
|---|---|---|
| type | one of gift, occasion, profile | 'gift' (default); 'occasion' a gift list for an event; 'profile' a person's sizes, interests, favorite brands and don't-gift list. |
| id | string | Return just this gift (or with type 'occasion', this occasion). |
| giftId | string | Older name for id. |
| occasionId | string | Only gifts for this occasion; with type 'occasion', that occasion. Named alone, also returns the occasion's progress. |
| personId | string | Only gifts for this recipient; with type 'profile', their profile. Named alone, also returns their profile. |
| status | one of idea, planned, purchased, wrapped, given, skipped, planning, done, archived | A gift's pipeline stage (idea, planned, purchased, wrapped, given, skipped), or with type 'occasion' its state (planning, done, archived). |
| direction | one of giving, received | 'giving' (default view) or 'received'. |
| from | string | On or after this date: a gift's given date, an occasion's date. ALWAYS pass with 'to' for a period. |
| to | string | On or before this date. |
| detail | one of summary, full | Row shape: "summary" (default, lean identity/status/labels/price + a notes preview) or "full" (every field incl. long notes). |
| limit | integer | Max rows (default 25 in summary mode). |
Example input
{
"personId": "person_mom",
"from": "2025-01-01",
"to": "2025-12-31"
}gifts_addCreate or Updatethrough vritto_create or vritto_updateAdd a gift (a title; recipients, occasion, status, price and link when the user gives them), an occasion (type 'occasion': a title, date, kind) or a person's gift profile (type 'profile', personId). To change a gift already on file (its status: bought, wrapped, given), use gifts_change. Never invent a price or status.
| Field | Type | Description |
|---|---|---|
| type | one of gift, occasion, profile | 'gift' (default); 'occasion' a gift list for an event; 'profile' a person's sizes, interests, favorite brands and don't-gift list. |
| record* | object | The record. A gift: a title when adding. An occasion: a title when adding. A profile: personId. |
| record.id | string | Existing gift ID to update, from gifts_find. Omit to add. |
| record.title | string | What the gift is, e.g. 'ceramic pour-over'. Required when creating. |
| record.recipientPersonIds | list of string | Who the gift is for, Person IDs from People. Replaces the existing set when sent. |
| record.occasionId | string | Occasion this gift belongs to, from gifts_find type 'occasion'. |
| record.occasion | string | Free-text occasion when there's no occasion record, e.g. 'her 30th'. |
| record.status | one of idea, planned, purchased, wrapped, given, skipped | Pipeline stage (default 'idea'): idea → planned (need to buy) → purchased → wrapped → given; 'skipped' to drop it. Given auto-stamps the given date. |
| record.direction | one of giving, received | 'giving' (default) or 'received' (a gift the user got). |
| record.url | string | Link to buy the gift (http/https). |
| record.priceCents | integer | Price in integer cents (e.g. 4299 for $42.99). Only when the user states it. |
| record.currency | string | ISO 4217 currency code; leave out for the account's currency. |
| record.merchantName | string | Store or brand to buy from. |
| record.quantity | integer | How many (default 1). |
| record.details | string | Notes about the gift. |
| record.type | one of birthday, christmas, holiday, anniversary, wedding, baby_shower, graduation, valentines, mothers_day, fathers_day, party, just_because, other | Type 'occasion': the occasion kind (default 'other'). |
| record.date | string | Type 'occasion': the event date. Omit for an open-ended list. |
| record.budgetCents | integer | Type 'occasion': overall budget in integer cents, only when stated. |
| record.budgetCurrency | string | Type 'occasion': ISO 4217 code; leave out for the account's currency. |
| record.notes | string | Type 'occasion' or 'profile': notes. |
| record.personId | string | Type 'profile': the person this profile is for (its key). |
| record.sizes | object | Clothing/accessory sizes. |
| record.interests | list of string | Interests/hobbies (replaces the stored set). |
| record.favoriteBrands | list of string | Favorite brands (replaces the stored set). |
| record.avoid | list of string | Don't-gift / already-owns / allergies (replaces the stored set). |
| record.annualBudgetCents | integer | Yearly gift budget for this person, in integer cents. |
| record.annualBudgetCurrency | string | ISO 4217 code of the yearly budget; omit for the account's currency. |
Example input
{
"record": {
"title": "Le Creuset dutch oven",
"recipientPersonIds": [
"person_mom"
],
"occasion": "Mom's birthday",
"status": "idea",
"priceCents": 38000,
"currency": "USD"
}
}gifts_changeUpdatethrough vritto_updateChange a gift by record.id: a new status moves it along the pipeline (idea → planned → purchased → wrapped → given, or skipped; purchased and given stamp their date), other sent fields merge. type 'occasion' or 'profile' edits those. Resolve the id with gifts_find first.
Note: interests, favoriteBrands, avoid and recipientPersonIds replace the stored lists; read first and send the full list.
| Field | Type | Description |
|---|---|---|
| type | one of gift, occasion, profile | 'gift' (default); 'occasion' a gift list for an event; 'profile' a person's sizes, interests, favorite brands and don't-gift list. |
| record | object | The record's id (a profile's personId) plus the fields to change. |
| record.id | string | Existing gift ID to update, from gifts_find. Omit to add. |
| record.title | string | What the gift is, e.g. 'ceramic pour-over'. Required when creating. |
| record.recipientPersonIds | list of string | Who the gift is for, Person IDs from People. Replaces the existing set when sent. |
| record.occasionId | string | Occasion this gift belongs to, from gifts_find type 'occasion'. |
| record.occasion | string | Free-text occasion when there's no occasion record, e.g. 'her 30th'. |
| record.status | one of idea, planned, purchased, wrapped, given, skipped | Pipeline stage (default 'idea'): idea → planned (need to buy) → purchased → wrapped → given; 'skipped' to drop it. Given auto-stamps the given date. |
| record.direction | one of giving, received | 'giving' (default) or 'received' (a gift the user got). |
| record.url | string | Link to buy the gift (http/https). |
| record.priceCents | integer | Price in integer cents (e.g. 4299 for $42.99). Only when the user states it. |
| record.currency | string | ISO 4217 currency code; leave out for the account's currency. |
| record.merchantName | string | Store or brand to buy from. |
| record.quantity | integer | How many (default 1). |
| record.details | string | Notes about the gift. |
| record.type | one of birthday, christmas, holiday, anniversary, wedding, baby_shower, graduation, valentines, mothers_day, fathers_day, party, just_because, other | Type 'occasion': the occasion kind (default 'other'). |
| record.date | string | Type 'occasion': the event date. Omit for an open-ended list. |
| record.budgetCents | integer | Type 'occasion': overall budget in integer cents, only when stated. |
| record.budgetCurrency | string | Type 'occasion': ISO 4217 code; leave out for the account's currency. |
| record.notes | string | Type 'occasion' or 'profile': notes. |
| record.personId | string | Type 'profile': the person this profile is for (its key). |
| record.sizes | object | Clothing/accessory sizes. |
| record.interests | list of string | Interests/hobbies (replaces the stored set). |
| record.favoriteBrands | list of string | Favorite brands (replaces the stored set). |
| record.avoid | list of string | Don't-gift / already-owns / allergies (replaces the stored set). |
| record.annualBudgetCents | integer | Yearly gift budget for this person, in integer cents. |
| record.annualBudgetCurrency | string | ISO 4217 code of the yearly budget; omit for the account's currency. |
| giftId | string | Older form (gifts_setGiftStatus): the gift, with status. |
| status | one of idea, planned, purchased, wrapped, given, skipped | Older form, with giftId. |
Example input
{
"record": {
"id": "gift_dutch_oven",
"status": "purchased"
}
}gifts_removeDeletethrough vritto_deletePermanently delete a gift, or (type 'occasion') an occasion, whose gifts are kept with their occasion link cleared. Only for explicit removal requests; resolve the id with gifts_find first.
Note: type 'occasion' deletes an occasion; its gifts are kept.
| Field | Type | Description |
|---|---|---|
| type | one of gift, occasion | 'gift' (default) or 'occasion'. |
| id | string | The gift or occasion to delete. |
| giftId | string | Older name for id (a gift). |
| occasionId | string | Older name for id (an occasion). |