Skip To Main Content
All modules

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_find

Get one gift by ID, including its full notes. Resolve the ID with gifts_queryGifts first.

FieldTypeDescription
giftId*stringGift ID from a prior gifts_queryGifts result, never invented.
gifts_queryGiftsFindthrough vritto_find

List/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.

FieldTypeDescription
personIdstringOnly gifts for this recipient.
occasionIdstringOnly gifts for this occasion.
statusone of idea, planned, purchased, wrapped, given, skippedOnly gifts in this pipeline stage.
directionone of giving, received'giving' (default view) or 'received'.
fromstringOnly gifts given on/after this date. ALWAYS pass with 'to' for a period.
tostringOnly gifts given on/before this date.
detailone of summary, fullRow shape: "summary" (default, lean identity/status/labels/price + a notes preview) or "full" (every field incl. long notes).
limitintegerMax gifts to return (default 25 in summary mode).
gifts_upsertGiftCreate or Updatethrough vritto_create or vritto_update

Create 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.

FieldTypeDescription
record*objectGift fields; provide at least a title when creating.
record.idstringExisting gift ID to update, from gifts_queryGifts. Omit to create.
record.titlestringWhat the gift is, e.g. 'ceramic pour-over'. Required when creating.
record.recipientPersonIdslist of stringWho the gift is for, Person IDs from People. Replaces the existing set when sent.
record.occasionIdstringOccasion this gift belongs to, from gifts_listOccasions.
record.occasionstringFree-text occasion when there's no occasion record, e.g. 'her 30th'.
record.statusone of idea, planned, purchased, wrapped, given, skippedPipeline stage (default 'idea'): idea → planned (need to buy) → purchased → wrapped → given; 'skipped' to drop it. Given auto-stamps the given date.
record.directionone of giving, received'giving' (default) or 'received' (a gift the user got).
record.urlstringLink to buy the gift (http/https).
record.priceCentsintegerPrice in integer cents (e.g. 4299 for $42.99). Only when the user states it.
record.currencystringISO 4217 currency code (default USD).
record.merchantNamestringStore or brand to buy from.
record.quantityintegerHow many (default 1).
record.detailsstringNotes 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_update

Move 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.

FieldTypeDescription
giftId*stringGift ID from a prior gifts_queryGifts result, never invented.
status*one of idea, planned, purchased, wrapped, given, skippedNew pipeline stage.
Example input
{
  "giftId": "gift_dutch_oven",
  "status": "purchased"
}
gifts_deleteGiftDeletethrough vritto_delete

Permanently delete one gift. Only for explicit removal requests. Resolve the ID with gifts_queryGifts first.

FieldTypeDescription
giftId*stringGift ID from a prior gifts_queryGifts result, never invented.

Gift Occasiongift_occasion

An occasion's gift list, with budget and recipients.

gifts_getOccasionFindthrough vritto_find

Get one occasion by ID with its gift progress and budget. Resolve the ID with gifts_listOccasions first.

FieldTypeDescription
occasionId*stringOccasion ID from a prior gifts_listOccasions result, never invented.
gifts_listOccasionsFindthrough vritto_find

List 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.

FieldTypeDescription
statusone of planning, done, archivedOnly occasions in this state.
fromstringOnly occasions on/after this date.
tostringOnly occasions on/before this date.
detailone of summary, fullRow shape: "summary" (default, lean identity/status/labels/price + a notes preview) or "full" (every field incl. long notes).
limitintegerMax occasions to return (default 25 in summary mode).
gifts_upsertOccasionCreate or Updatethrough vritto_create or vritto_update

Create 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' }.

FieldTypeDescription
record*objectOccasion fields; provide at least a title when creating.
record.idstringExisting occasion ID to update, from gifts_listOccasions. Omit to create.
record.titlestringOccasion name, e.g. 'Christmas 2026' or "Emma's 5th birthday". Required when creating.
record.typeone of birthday, christmas, holiday, anniversary, wedding, baby_shower, graduation, valentines, mothers_day, fathers_day, party, just_because, otherOccasion type (default 'other').
record.datestringEvent date (YYYY-MM-DD). Omit for an open-ended list.
record.recipientPersonIdslist of stringPeople this occasion is for, Person IDs from People.
record.budgetCentsintegerOverall budget in integer cents. Only when the user states it.
record.budgetCurrencystringISO 4217 code (default USD).
record.notesstringNotes about the occasion.
Example input
{
  "record": {
    "title": "Christmas 2026",
    "type": "christmas",
    "date": "2026-12-25",
    "budgetCents": 150000,
    "budgetCurrency": "USD"
  }
}
gifts_deleteOccasionDeletethrough vritto_delete

Permanently 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.

FieldTypeDescription
occasionId*stringOccasion 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_find

Get 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.

FieldTypeDescription
personId*stringPerson ID from People (resolve with people_listPeople), never invented.
gifts_upsertRecipientProfileUpdatethrough vritto_update

Set 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.

FieldTypeDescription
record*objectRecipient profile fields.
record.personId*stringPerson ID from People (resolve with people_listPeople), never invented.
record.sizesobjectClothing/accessory sizes.
record.interestslist of stringInterests/hobbies (replaces the stored set).
record.favoriteBrandslist of stringFavorite brands (replaces the stored set).
record.avoidlist of stringDon't-gift / already-owns / allergies (replaces the stored set).
record.annualBudgetCentsintegerYearly gift budget for this person, in integer cents.
record.notesstring