Skip To Main Content
All modules

Groceries

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.

Grocery Storegrocery_store

A store the user shops at.

groceries_queryGroceryStoresFindthrough vritto_find

Lists or searches saved grocery stores.

FieldTypeDescription
querystringSearch text.
includeArchivedbooleanInclude archived stores.
groceries_createGroceryStoreCreatethrough vritto_create

Creates a grocery store or outlet the user shops at, optionally with aisle walking order for sorted shopping.

FieldTypeDescription
store*objectGrocery store fields.
store.name*stringStore or outlet name.
store.retailerKeystringRetailer key, e.g. 'target'.
store.addressstringStreet address.
store.placeKeystringPlaces module place key linking this store to a Place, e.g. 'google:<id>' or 'manual:<uuid>'.
store.aisleOrderlist of stringAisle/section names in walking order.
store.notesstringStore notes.
store.tagslist of stringTags (unique, max 30).
store.preferredbooleanPreferred store flag.
store.archivedbooleanArchived flag.
Example input
{
  "store": {
    "name": "Costco",
    "preferred": true
  }
}
groceries_patchGroceryStoreUpdatethrough vritto_update

Updates fields on an existing grocery store.

FieldTypeDescription
storeId*stringStore ID.
patch*objectStore fields to change; omitted fields keep current values.
patch.namestringStore or outlet name.
patch.retailerKeystringRetailer key, e.g. 'target'.
patch.addressstringStreet address.
patch.placeKeystringPlaces module place key linking this store to a Place, e.g. 'google:<id>' or 'manual:<uuid>'.
patch.aisleOrderlist of stringAisle/section names in walking order.
patch.notesstringStore notes.
patch.tagslist of stringTags (unique, max 30).
patch.preferredbooleanPreferred store flag.
patch.archivedbooleanArchived flag.
expectedRevisionintegerOptimistic concurrency guard: expected current revision.
groceries_deleteGroceryStoreDeletethrough vritto_delete

Archives a grocery store (soft delete). Use only for explicit deletions.

FieldTypeDescription
storeId*stringStore ID.
expectedRevisionintegerOptimistic concurrency guard: expected current revision.

Grocery Listgrocery_list

A shopping list, usually for a date and store.

groceries_queryGroceryListsFindthrough vritto_find

Searches grocery lists by text, shopping-date range, store, or status.

FieldTypeDescription
querystringSearch text.
startstringEarliest shopping date.
endstringLatest shopping date.
storeIdstringFilter by store.
statusone of planned, active, shopping, completed, archivedList status.
includeArchivedbooleanInclude archived lists.
limitintegerMax records (default 200).
groceries_createGroceryListCreatethrough vritto_create

Creates a grocery list, usually for a shopping date and store. A reminderAt time schedules a shopping notification.

FieldTypeDescription
list*objectGrocery list fields.
list.title*stringList title.
list.shoppingDatestringPlanned shopping date.
list.storeIdstringGrocery store ID.
list.storeNamestringStore or outlet name.
list.statusone of planned, active, shopping, completed, archivedList status.
list.priorityone of low, normal, high, urgentPriority. Defaults to normal.
list.notesstringList notes.
list.tagslist of stringTags (unique, max 30).
list.reminderAtstringShopping reminder time; schedules a notification.
list.sortRanknumberManual list order.
list.idempotencyKeystringStable dedupe key.
Example input
{
  "list": {
    "title": "Weekend Costco run",
    "shoppingDate": "2026-09-27",
    "storeName": "Costco"
  }
}
groceries_finishGroceryListUpdatethrough vritto_update

Finishes a shopping run: marks every still-needed item on the list bought and completes the list in one transaction. Use for 'done shopping', not per-item status calls.

FieldTypeDescription
listId*stringList ID.
expectedRevisionintegerOptimistic concurrency guard: expected current revision.
groceries_moveGroceryListUpdatethrough vritto_update

Moves a whole grocery list to another shopping date, store, or manual order position.

FieldTypeDescription
listId*stringList ID.
shoppingDatestringNew shopping date.
storeIdstringNew store ID.
storeNamestringNew store name.
sortRanknumberNew manual order rank.
expectedRevisionintegerOptimistic concurrency guard: expected current revision.
groceries_patchGroceryListUpdatethrough vritto_update

Updates fields on an existing grocery list.

FieldTypeDescription
listId*stringList ID.
patch*objectList fields to change; omitted fields keep current values.
patch.titlestringList title.
patch.shoppingDatestringPlanned shopping date.
patch.storeIdstringGrocery store ID.
patch.storeNamestringStore or outlet name.
patch.statusone of planned, active, shopping, completed, archivedList status.
patch.priorityone of low, normal, high, urgentPriority. Defaults to normal.
patch.notesstringList notes.
patch.tagslist of stringTags (unique, max 30).
patch.reminderAtstringShopping reminder time; schedules a notification.
patch.sortRanknumberManual list order.
patch.idempotencyKeystringStable dedupe key.
expectedRevisionintegerOptimistic concurrency guard: expected current revision.
groceries_deleteGroceryListDeletethrough vritto_delete

Archives a grocery list (soft delete). Use only for explicit deletions.

FieldTypeDescription
listId*stringList ID.
expectedRevisionintegerOptimistic concurrency guard: expected current revision.

Grocery Itemgrocery_item

One item on a grocery list.

groceries_queryGroceryItemsFindthrough vritto_find

Searches grocery list items by text, list, store, or status.

FieldTypeDescription
querystringSearch text.
listIdstringFilter by list.
storeIdstringFilter by store.
statusone of needed, bought, skipped, movedItem status.
includeArchivedbooleanInclude archived items.
limitintegerMax records (default 500).
groceries_createGroceryItemCreatethrough vritto_create

Adds an item to a grocery list in a single call. Pass the list by NAME (listName) as the user said it, no lookup needed; send listId only if you already have it.

Note: Pass the list by name (listName) as the user said it; no lookup needed.

FieldTypeDescription
item*objectGrocery item fields.
item.listIdstringUse ONLY when you already know the ID from earlier in this conversation. Never call a query tool just to obtain it, send listName instead.
item.listNamestringThe list as the user names it (e.g. "grocery list", "Costco run"). Matched against existing lists; an ambiguous name comes back as an error asking which one.
item.inventoryItemIdstringLinked inventory item ID.
item.productIdstringProduct cache ID or provider product ID.
item.name*stringItem name.
item.quantitynumberQuantity (default 1).
item.unitstringUnit label.
item.categorystringCategory or department.
item.aislestringStore aisle or section.
item.storeIdstringStore ID.
item.storeNamestringStore name.
item.statusone of needed, bought, skipped, movedItem status.
item.priorityone of low, normal, high, urgentPriority. Defaults to normal.
item.notesstringItem notes.
item.priceEstimatenumberExpected price.
item.barcodestringBarcode.
item.productTypeone of food, beauty, pet_food, household, general, otherProduct type.
item.positionnumberManual item order.
item.reminderAtstringItem reminder time; schedules a notification.
item.sourceobjectOptional cross-module source reference.
item.idempotencyKeystringStable dedupe key; retries with the same key won't duplicate the item.
Example input
{
  "item": {
    "listName": "Costco",
    "name": "Oat milk",
    "quantity": 2,
    "unit": "cartons"
  }
}
groceries_moveGroceryItemsUpdatethrough vritto_update

Moves or reorders one or more items, optionally onto another list or store. Use this (not patch) for cross-list moves.

FieldTypeDescription
itemIds*list of stringItem IDs to move (unique).
targetListIdstringDestination list ID.
targetStoreIdstringDestination store ID.
targetStoreNamestringDestination store name.
targetPositionnumberOrder position for the first moved item.
groceries_patchGroceryItemUpdatethrough vritto_update

Updates fields on an existing grocery list item.

FieldTypeDescription
itemId*stringItem ID.
patch*objectItem fields to change; omitted fields keep current values.
patch.listIdstringUse ONLY when you already know the ID from earlier in this conversation. Never call a query tool just to obtain it, send listName instead.
patch.listNamestringThe list as the user names it (e.g. "grocery list", "Costco run"). Matched against existing lists; an ambiguous name comes back as an error asking which one.
patch.inventoryItemIdstringLinked inventory item ID.
patch.productIdstringProduct cache ID or provider product ID.
patch.namestringItem name.
patch.quantitynumberQuantity (default 1).
patch.unitstringUnit label.
patch.categorystringCategory or department.
patch.aislestringStore aisle or section.
patch.storeIdstringStore ID.
patch.storeNamestringStore name.
patch.statusone of needed, bought, skipped, movedItem status.
patch.priorityone of low, normal, high, urgentPriority. Defaults to normal.
patch.notesstringItem notes.
patch.priceEstimatenumberExpected price.
patch.barcodestringBarcode.
patch.productTypeone of food, beauty, pet_food, household, general, otherProduct type.
patch.positionnumberManual item order.
patch.reminderAtstringItem reminder time; schedules a notification.
patch.sourceobjectOptional cross-module source reference.
patch.idempotencyKeystringStable dedupe key; retries with the same key won't duplicate the item.
expectedRevisionintegerOptimistic concurrency guard: expected current revision.
groceries_setGroceryItemStatusUpdatethrough vritto_update

Sets one item's status, e.g. mark bought while shopping or back to needed.

FieldTypeDescription
itemId*stringItem ID.
status*one of needed, bought, skipped, movedItem status.
expectedRevisionintegerOptimistic concurrency guard: expected current revision.
Example input
{
  "itemId": "gi_oatmilk",
  "status": "bought"
}
groceries_deleteGroceryItemDeletethrough vritto_delete

Archives a grocery list item (soft delete). Use only for explicit deletions.

FieldTypeDescription
itemId*stringItem ID.
expectedRevisionintegerOptimistic concurrency guard: expected current revision.

Pantry Itempantry_item

An item the user has at home, with quantity and expiry.

groceries_queryGroceryInventoryFindthrough vritto_find

Searches inventory by text, storage location, expiry window, or low-stock state.

FieldTypeDescription
querystringSearch text.
storageLocationone of pantry, fridge, freezer, household, otherStorage location.
expiringBeforestringOnly items expiring on or before this date.
lowStockOnlybooleanOnly items at or below their low-stock threshold.
includeArchivedbooleanInclude archived items.
limitintegerMax records (default 500).
groceries_createGroceryInventoryItemCreatethrough vritto_create

Adds a pantry/fridge/freezer inventory item. Expiry dates with reminderLeadDays schedule expiry reminders; thresholds drive restock suggestions.

FieldTypeDescription
item*objectGrocery inventory item fields.
item.productobjectCached provider product snapshot.
item.productIdstringProduct cache ID or provider product ID.
item.name*stringInventory item name.
item.barcodestringBarcode.
item.productTypeone of food, beauty, pet_food, household, general, otherProduct type.
item.categorystringCategory.
item.quantityOnHandnumberCurrent quantity (default 1).
item.unitstringUnit label.
item.storageLocationone of pantry, fridge, freezer, household, otherStorage location.
item.storageDetailstringShelf, bin, or location detail.
item.expiryDatestringExpiry date.
item.openedDatestringDate opened.
item.lowStockThresholdnumberLow stock threshold.
item.targetStockLevelnumberPreferred stock level.
item.reminderLeadDaysintegerDays before expiry to remind (default 3).
item.autoAddToListbooleanWhether to suggest recurring restock.
item.notesstringNotes.
item.tagslist of stringTags (unique, max 30).
item.lastPurchasedAtstringLast purchase date.
Example input
{
  "item": {
    "name": "Basmati rice",
    "quantityOnHand": 2,
    "unit": "kg",
    "storageLocation": "pantry",
    "lowStockThreshold": 1
  }
}
groceries_adjustGroceryInventoryUpdatethrough vritto_update

Adjusts an inventory item's quantity on hand by a signed delta (floored at zero). Use for 'used two eggs' style updates.

FieldTypeDescription
itemId*stringInventory item ID.
delta*numberSigned quantity change, e.g. -2 or 3.
expectedRevisionintegerOptimistic concurrency guard: expected current revision.
Example input
{
  "itemId": "inv_eggs",
  "delta": -2
}
groceries_patchGroceryInventoryItemUpdatethrough vritto_update

Updates fields on an existing inventory item.

FieldTypeDescription
itemId*stringInventory item ID.
patch*objectInventory fields to change; omitted fields keep current values.
patch.productobjectCached provider product snapshot.
patch.productIdstringProduct cache ID or provider product ID.
patch.namestringInventory item name.
patch.barcodestringBarcode.
patch.productTypeone of food, beauty, pet_food, household, general, otherProduct type.
patch.categorystringCategory.
patch.quantityOnHandnumberCurrent quantity (default 1).
patch.unitstringUnit label.
patch.storageLocationone of pantry, fridge, freezer, household, otherStorage location.
patch.storageDetailstringShelf, bin, or location detail.
patch.expiryDatestringExpiry date.
patch.openedDatestringDate opened.
patch.lowStockThresholdnumberLow stock threshold.
patch.targetStockLevelnumberPreferred stock level.
patch.reminderLeadDaysintegerDays before expiry to remind (default 3).
patch.autoAddToListbooleanWhether to suggest recurring restock.
patch.notesstringNotes.
patch.tagslist of stringTags (unique, max 30).
patch.lastPurchasedAtstringLast purchase date.
expectedRevisionintegerOptimistic concurrency guard: expected current revision.
groceries_deleteGroceryInventoryItemDeletethrough vritto_delete

Archives an inventory item (soft delete). Use only for explicit deletions.

FieldTypeDescription
itemId*stringInventory item ID.
expectedRevisionintegerOptimistic concurrency guard: expected current revision.

Grocery Receiptgrocery_receipt

A captured grocery receipt and its lines.

groceries_queryGroceryReceiptsFindthrough vritto_find

Lists captured receipts, newest first, optionally by status.

FieldTypeDescription
statusone of draft, needs_review, applied, failed, archivedReceipt status.
includeArchivedbooleanInclude archived receipts.
limitintegerMax records (default 100).
groceries_createGroceryReceiptCreatethrough vritto_create

Captures a receipt. Provide rawText to auto-parse line items, or explicit lines; parsed receipts land in needs_review for the user to confirm before applying.

FieldTypeDescription
receipt*objectReceipt capture fields.
receipt.storeIdstringStore ID.
receipt.storeNamestringStore name.
receipt.purchasedOnstringPurchase date.
receipt.totalnumberReceipt total.
receipt.currencystringCurrency code (default USD).
receipt.imageAssetIdstringReceipt image asset ID.
receipt.rawTextstringOCR or pasted receipt text; parsed into lines when no lines are given.
receipt.statusone of draft, needs_review, applied, failed, archivedReceipt status.
receipt.lineslist of objectReviewable line items.
receipt.notesstringNotes.
receipt.listIdstringGrocery list to match bought items against on apply.
Example input
{
  "receipt": {
    "storeName": "Trader Joe's",
    "purchasedOn": "2026-09-25",
    "total": 64.37,
    "currency": "USD",
    "rawText": "BANANAS 1.99\nOAT MILK 3.49\nTOTAL 64.37"
  }
}
groceries_applyGroceryReceiptUpdatethrough vritto_update

Applies a reviewed receipt: accepted lines increment or create inventory and mark matching needed list items bought. Only call after the user has confirmed the lines.

FieldTypeDescription
receiptId*stringReceipt ID.
lineslist of objectOverride lines to apply; defaults to the receipt's stored accepted lines.
groceries_patchGroceryReceiptUpdatethrough vritto_update

Corrects a captured receipt (store, date, total, currency, notes, or its lines). Sent lines REPLACE the stored set, so read the receipt first.

Note: Sent lines replace the stored lines.

FieldTypeDescription
receiptId*stringReceipt ID.
patch*objectOnly the fields being corrected.
patch.storeNamestring
patch.purchasedOnstringCalendar date, YYYY-MM-DD.
patch.totalnumber
patch.currencystring
patch.notesstring
patch.lineslist of object
groceries_deleteGroceryReceiptDeletethrough vritto_delete

Archives a receipt so it stops counting toward grocery spend. Use for a duplicate or a receipt that is not the user's.

FieldTypeDescription
receiptId*stringReceipt ID.

Groceries Summarygroceries_summary

The grocery dashboard and restock suggestions; read-only.

groceries_queryGroceryDashboardFindthrough vritto_find

Returns the grocery cockpit: active lists, needed items, low stock, expiring-soon inventory, receipts awaiting review, and counts.

No input.

groceries_suggestGroceryRestocksFindthrough vritto_find

Suggests restocks from inventory that is at or below its low-stock threshold or flagged for recurring restock.

FieldTypeDescription
limitintegerMax suggestions (default 30).

Food Product Catalogfood_catalog

Open Food Facts product reference data.

groceries_searchGroceryProductsLook Upthrough vritto_lookup

Searches the Open Food Facts catalog by name for product metadata.

FieldTypeDescription
query*stringProduct search text.
limitintegerMax results (default 10).

Kept in the Vritto app

  • groceries_analyzeGroceryReceipt: Runs Vritto's own AI; the calling assistant is already an AI.
  • groceries_lookupGroceryProductByBarcode: Background upkeep Vritto already runs on its own.