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.
gifts_getGiftFindthrough vritto_findGet one gift by ID, including its full notes. Resolve the ID with gifts_queryGifts first.
| Field | Type | Description |
|---|---|---|
| giftId* | string | Gift ID from a prior gifts_queryGifts result, never invented. |
gifts_queryGiftsFindthrough vritto_findList/search gifts, newest first, and resolve gift IDs before a write. Filter by personId (who it's for), occasionId, status, or direction. ALWAYS pass from/to (on the given date) when the question concerns a period, 'what did I give Mom last year' is personId + from/to. Rows are compact summaries (id, title, status, recipients, occasion, price, given date, notes preview); use gifts_getGift for a gift's full notes.
| Field | Type | Description |
|---|---|---|
| personId | string | Only gifts for this recipient. |
| occasionId | string | Only gifts for this occasion. |
| status | one of idea, planned, purchased, wrapped, given, skipped | Only gifts in this pipeline stage. |
| direction | one of giving, received | 'giving' (default view) or 'received'. |
| from | string | Only gifts given on/after this date. ALWAYS pass with 'to' for a period. |
| to | string | Only gifts given on/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 gifts to return (default 25 in summary mode). |
gifts_upsertGiftCreate or Updatethrough vritto_create or vritto_updateCreate or update one gift. Omit record.id to create (title required); include a real record.id from gifts_queryGifts to update, sent fields merge. Example: record { title 'ceramic pour-over', recipientPersonIds ['<mom id>'], occasion 'birthday', status 'idea', priceCents 4200 }. Never invent a price/status the user didn't give.
| Field | Type | Description |
|---|---|---|
| record* | object | Gift fields; provide at least a title when creating. |
| record.id | string | Existing gift ID to update, from gifts_queryGifts. Omit to create. |
| 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_listOccasions. |
| 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 (default USD). |
| record.merchantName | string | Store or brand to buy from. |
| record.quantity | integer | How many (default 1). |
| record.details | string | Notes about the gift. |
Example input
{
"record": {
"title": "Le Creuset dutch oven",
"recipientPersonIds": [
"person_mom"
],
"occasion": "Mom's birthday",
"status": "idea",
"priceCents": 38000,
"currency": "USD"
}
}gifts_setGiftStatusUpdatethrough vritto_updateMove one gift along the pipeline (idea → planned → purchased → wrapped → given, or skipped). 'given'/'purchased' auto-stamp their date. Resolve the ID with gifts_queryGifts first.
| Field | Type | Description |
|---|---|---|
| giftId* | string | Gift ID from a prior gifts_queryGifts result, never invented. |
| status* | one of idea, planned, purchased, wrapped, given, skipped | New pipeline stage. |
Example input
{
"giftId": "gift_dutch_oven",
"status": "purchased"
}gifts_deleteGiftDeletethrough vritto_deletePermanently delete one gift. Only for explicit removal requests. Resolve the ID with gifts_queryGifts first.
| Field | Type | Description |
|---|---|---|
| giftId* | string | Gift ID from a prior gifts_queryGifts result, never invented. |
Gift Occasiongift_occasion
An occasion's gift list, with budget and recipients.
gifts_getOccasionFindthrough vritto_findGet one occasion by ID with its gift progress and budget. Resolve the ID with gifts_listOccasions first.
| Field | Type | Description |
|---|---|---|
| occasionId* | string | Occasion ID from a prior gifts_listOccasions result, never invented. |
gifts_listOccasionsFindthrough vritto_findList occasions (gift lists) with per-occasion gift counts, bought counts, and dates. Use for 'what am I shopping for?' and upcoming occasions; pass from/to on the occasion date for a period. Rows are compact summaries; resolve occasion IDs here before linking gifts.
| Field | Type | Description |
|---|---|---|
| status | one of planning, done, archived | Only occasions in this state. |
| from | string | Only occasions on/after this date. |
| to | string | Only occasions on/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 occasions to return (default 25 in summary mode). |
gifts_upsertOccasionCreate or Updatethrough vritto_create or vritto_updateCreate or update one occasion (a gift list). Omit record.id to create (title required); include a real record.id from gifts_listOccasions to update, sent fields merge. Example: record { title 'Christmas 2026', type 'christmas', date '2026-12-25' }.
| Field | Type | Description |
|---|---|---|
| record* | object | Occasion fields; provide at least a title when creating. |
| record.id | string | Existing occasion ID to update, from gifts_listOccasions. Omit to create. |
| record.title | string | Occasion name, e.g. 'Christmas 2026' or "Emma's 5th birthday". Required when creating. |
| record.type | one of birthday, christmas, holiday, anniversary, wedding, baby_shower, graduation, valentines, mothers_day, fathers_day, party, just_because, other | Occasion type (default 'other'). |
| record.date | string | Event date (YYYY-MM-DD). Omit for an open-ended list. |
| record.recipientPersonIds | list of string | People this occasion is for, Person IDs from People. |
| record.budgetCents | integer | Overall budget in integer cents. Only when the user states it. |
| record.budgetCurrency | string | ISO 4217 code (default USD). |
| record.notes | string | Notes about the occasion. |
Example input
{
"record": {
"title": "Christmas 2026",
"type": "christmas",
"date": "2026-12-25",
"budgetCents": 150000,
"budgetCurrency": "USD"
}
}gifts_deleteOccasionDeletethrough vritto_deletePermanently delete one occasion. Its gifts are kept and their occasion link is cleared. Only for explicit removal requests. Resolve the ID with gifts_listOccasions first.
| Field | Type | Description |
|---|---|---|
| occasionId* | string | Occasion ID from a prior gifts_listOccasions result, never invented. |
Gift Profilegift_profile
A person's sizes, interests, favorite brands, and things to avoid.
gifts_getRecipientProfileFindthrough vritto_findGet a person's gift profile: sizes, interests, favorite brands, and the don't-gift/allergies list, to reason about gift ideas. Returns { profile: null } when none is set.
| Field | Type | Description |
|---|---|---|
| personId* | string | Person ID from People (resolve with people_listPeople), never invented. |
gifts_upsertRecipientProfileUpdatethrough vritto_updateSet a person's gift profile. Arrays (interests, favoriteBrands, avoid) REPLACE the stored set, read with gifts_getRecipientProfile first and resend the full list to add one. Keyed by person; durable across years.
Note: interests, favoriteBrands, and avoid replace the stored lists; read the profile first and send the full list.
| Field | Type | Description |
|---|---|---|
| record* | object | Recipient profile fields. |
| record.personId* | string | Person ID from People (resolve with people_listPeople), never invented. |
| 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.notes | string |