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_findLists or searches saved grocery stores.
| Field | Type | Description |
|---|---|---|
| query | string | Search text. |
| includeArchived | boolean | Include archived stores. |
groceries_createGroceryStoreCreatethrough vritto_createCreates a grocery store or outlet the user shops at, optionally with aisle walking order for sorted shopping.
| Field | Type | Description |
|---|---|---|
| store* | object | Grocery store fields. |
| store.name* | string | Store or outlet name. |
| store.retailerKey | string | Retailer key, e.g. 'target'. |
| store.address | string | Street address. |
| store.placeKey | string | Places module place key linking this store to a Place, e.g. 'google:<id>' or 'manual:<uuid>'. |
| store.aisleOrder | list of string | Aisle/section names in walking order. |
| store.notes | string | Store notes. |
| store.tags | list of string | Tags (unique, max 30). |
| store.preferred | boolean | Preferred store flag. |
| store.archived | boolean | Archived flag. |
Example input
{
"store": {
"name": "Costco",
"preferred": true
}
}groceries_patchGroceryStoreUpdatethrough vritto_updateUpdates fields on an existing grocery store.
| Field | Type | Description |
|---|---|---|
| storeId* | string | Store ID. |
| patch* | object | Store fields to change; omitted fields keep current values. |
| patch.name | string | Store or outlet name. |
| patch.retailerKey | string | Retailer key, e.g. 'target'. |
| patch.address | string | Street address. |
| patch.placeKey | string | Places module place key linking this store to a Place, e.g. 'google:<id>' or 'manual:<uuid>'. |
| patch.aisleOrder | list of string | Aisle/section names in walking order. |
| patch.notes | string | Store notes. |
| patch.tags | list of string | Tags (unique, max 30). |
| patch.preferred | boolean | Preferred store flag. |
| patch.archived | boolean | Archived flag. |
| expectedRevision | integer | Optimistic concurrency guard: expected current revision. |
groceries_deleteGroceryStoreDeletethrough vritto_deleteArchives a grocery store (soft delete). Use only for explicit deletions.
| Field | Type | Description |
|---|---|---|
| storeId* | string | Store ID. |
| expectedRevision | integer | Optimistic concurrency guard: expected current revision. |
Grocery Listgrocery_list
A shopping list, usually for a date and store.
groceries_queryGroceryListsFindthrough vritto_findSearches grocery lists by text, shopping-date range, store, or status.
| Field | Type | Description |
|---|---|---|
| query | string | Search text. |
| start | string | Earliest shopping date. |
| end | string | Latest shopping date. |
| storeId | string | Filter by store. |
| status | one of planned, active, shopping, completed, archived | List status. |
| includeArchived | boolean | Include archived lists. |
| limit | integer | Max records (default 200). |
groceries_createGroceryListCreatethrough vritto_createCreates a grocery list, usually for a shopping date and store. A reminderAt time schedules a shopping notification.
| Field | Type | Description |
|---|---|---|
| list* | object | Grocery list fields. |
| list.title* | string | List title. |
| list.shoppingDate | string | Planned shopping date. |
| list.storeId | string | Grocery store ID. |
| list.storeName | string | Store or outlet name. |
| list.status | one of planned, active, shopping, completed, archived | List status. |
| list.priority | one of low, normal, high, urgent | Priority. Defaults to normal. |
| list.notes | string | List notes. |
| list.tags | list of string | Tags (unique, max 30). |
| list.reminderAt | string | Shopping reminder time; schedules a notification. |
| list.sortRank | number | Manual list order. |
| list.idempotencyKey | string | Stable dedupe key. |
Example input
{
"list": {
"title": "Weekend Costco run",
"shoppingDate": "2026-09-27",
"storeName": "Costco"
}
}groceries_finishGroceryListUpdatethrough vritto_updateFinishes 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.
| Field | Type | Description |
|---|---|---|
| listId* | string | List ID. |
| expectedRevision | integer | Optimistic concurrency guard: expected current revision. |
groceries_moveGroceryListUpdatethrough vritto_updateMoves a whole grocery list to another shopping date, store, or manual order position.
| Field | Type | Description |
|---|---|---|
| listId* | string | List ID. |
| shoppingDate | string | New shopping date. |
| storeId | string | New store ID. |
| storeName | string | New store name. |
| sortRank | number | New manual order rank. |
| expectedRevision | integer | Optimistic concurrency guard: expected current revision. |
groceries_patchGroceryListUpdatethrough vritto_updateUpdates fields on an existing grocery list.
| Field | Type | Description |
|---|---|---|
| listId* | string | List ID. |
| patch* | object | List fields to change; omitted fields keep current values. |
| patch.title | string | List title. |
| patch.shoppingDate | string | Planned shopping date. |
| patch.storeId | string | Grocery store ID. |
| patch.storeName | string | Store or outlet name. |
| patch.status | one of planned, active, shopping, completed, archived | List status. |
| patch.priority | one of low, normal, high, urgent | Priority. Defaults to normal. |
| patch.notes | string | List notes. |
| patch.tags | list of string | Tags (unique, max 30). |
| patch.reminderAt | string | Shopping reminder time; schedules a notification. |
| patch.sortRank | number | Manual list order. |
| patch.idempotencyKey | string | Stable dedupe key. |
| expectedRevision | integer | Optimistic concurrency guard: expected current revision. |
groceries_deleteGroceryListDeletethrough vritto_deleteArchives a grocery list (soft delete). Use only for explicit deletions.
| Field | Type | Description |
|---|---|---|
| listId* | string | List ID. |
| expectedRevision | integer | Optimistic concurrency guard: expected current revision. |
Grocery Itemgrocery_item
One item on a grocery list.
groceries_queryGroceryItemsFindthrough vritto_findSearches grocery list items by text, list, store, or status.
| Field | Type | Description |
|---|---|---|
| query | string | Search text. |
| listId | string | Filter by list. |
| storeId | string | Filter by store. |
| status | one of needed, bought, skipped, moved | Item status. |
| includeArchived | boolean | Include archived items. |
| limit | integer | Max records (default 500). |
groceries_createGroceryItemCreatethrough vritto_createAdds 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.
| Field | Type | Description |
|---|---|---|
| item* | object | Grocery item fields. |
| item.listId | string | Use 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.listName | string | The 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.inventoryItemId | string | Linked inventory item ID. |
| item.productId | string | Product cache ID or provider product ID. |
| item.name* | string | Item name. |
| item.quantity | number | Quantity (default 1). |
| item.unit | string | Unit label. |
| item.category | string | Category or department. |
| item.aisle | string | Store aisle or section. |
| item.storeId | string | Store ID. |
| item.storeName | string | Store name. |
| item.status | one of needed, bought, skipped, moved | Item status. |
| item.priority | one of low, normal, high, urgent | Priority. Defaults to normal. |
| item.notes | string | Item notes. |
| item.priceEstimate | number | Expected price. |
| item.barcode | string | Barcode. |
| item.productType | one of food, beauty, pet_food, household, general, other | Product type. |
| item.position | number | Manual item order. |
| item.reminderAt | string | Item reminder time; schedules a notification. |
| item.source | object | Optional cross-module source reference. |
| item.idempotencyKey | string | Stable 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_updateMoves or reorders one or more items, optionally onto another list or store. Use this (not patch) for cross-list moves.
| Field | Type | Description |
|---|---|---|
| itemIds* | list of string | Item IDs to move (unique). |
| targetListId | string | Destination list ID. |
| targetStoreId | string | Destination store ID. |
| targetStoreName | string | Destination store name. |
| targetPosition | number | Order position for the first moved item. |
groceries_patchGroceryItemUpdatethrough vritto_updateUpdates fields on an existing grocery list item.
| Field | Type | Description |
|---|---|---|
| itemId* | string | Item ID. |
| patch* | object | Item fields to change; omitted fields keep current values. |
| patch.listId | string | Use 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.listName | string | The 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.inventoryItemId | string | Linked inventory item ID. |
| patch.productId | string | Product cache ID or provider product ID. |
| patch.name | string | Item name. |
| patch.quantity | number | Quantity (default 1). |
| patch.unit | string | Unit label. |
| patch.category | string | Category or department. |
| patch.aisle | string | Store aisle or section. |
| patch.storeId | string | Store ID. |
| patch.storeName | string | Store name. |
| patch.status | one of needed, bought, skipped, moved | Item status. |
| patch.priority | one of low, normal, high, urgent | Priority. Defaults to normal. |
| patch.notes | string | Item notes. |
| patch.priceEstimate | number | Expected price. |
| patch.barcode | string | Barcode. |
| patch.productType | one of food, beauty, pet_food, household, general, other | Product type. |
| patch.position | number | Manual item order. |
| patch.reminderAt | string | Item reminder time; schedules a notification. |
| patch.source | object | Optional cross-module source reference. |
| patch.idempotencyKey | string | Stable dedupe key; retries with the same key won't duplicate the item. |
| expectedRevision | integer | Optimistic concurrency guard: expected current revision. |
groceries_setGroceryItemStatusUpdatethrough vritto_updateSets one item's status, e.g. mark bought while shopping or back to needed.
| Field | Type | Description |
|---|---|---|
| itemId* | string | Item ID. |
| status* | one of needed, bought, skipped, moved | Item status. |
| expectedRevision | integer | Optimistic concurrency guard: expected current revision. |
Example input
{
"itemId": "gi_oatmilk",
"status": "bought"
}groceries_deleteGroceryItemDeletethrough vritto_deleteArchives a grocery list item (soft delete). Use only for explicit deletions.
| Field | Type | Description |
|---|---|---|
| itemId* | string | Item ID. |
| expectedRevision | integer | Optimistic concurrency guard: expected current revision. |
Pantry Itempantry_item
An item the user has at home, with quantity and expiry.
groceries_queryGroceryInventoryFindthrough vritto_findSearches inventory by text, storage location, expiry window, or low-stock state.
| Field | Type | Description |
|---|---|---|
| query | string | Search text. |
| storageLocation | one of pantry, fridge, freezer, household, other | Storage location. |
| expiringBefore | string | Only items expiring on or before this date. |
| lowStockOnly | boolean | Only items at or below their low-stock threshold. |
| includeArchived | boolean | Include archived items. |
| limit | integer | Max records (default 500). |
groceries_createGroceryInventoryItemCreatethrough vritto_createAdds a pantry/fridge/freezer inventory item. Expiry dates with reminderLeadDays schedule expiry reminders; thresholds drive restock suggestions.
| Field | Type | Description |
|---|---|---|
| item* | object | Grocery inventory item fields. |
| item.product | object | Cached provider product snapshot. |
| item.productId | string | Product cache ID or provider product ID. |
| item.name* | string | Inventory item name. |
| item.barcode | string | Barcode. |
| item.productType | one of food, beauty, pet_food, household, general, other | Product type. |
| item.category | string | Category. |
| item.quantityOnHand | number | Current quantity (default 1). |
| item.unit | string | Unit label. |
| item.storageLocation | one of pantry, fridge, freezer, household, other | Storage location. |
| item.storageDetail | string | Shelf, bin, or location detail. |
| item.expiryDate | string | Expiry date. |
| item.openedDate | string | Date opened. |
| item.lowStockThreshold | number | Low stock threshold. |
| item.targetStockLevel | number | Preferred stock level. |
| item.reminderLeadDays | integer | Days before expiry to remind (default 3). |
| item.autoAddToList | boolean | Whether to suggest recurring restock. |
| item.notes | string | Notes. |
| item.tags | list of string | Tags (unique, max 30). |
| item.lastPurchasedAt | string | Last purchase date. |
Example input
{
"item": {
"name": "Basmati rice",
"quantityOnHand": 2,
"unit": "kg",
"storageLocation": "pantry",
"lowStockThreshold": 1
}
}groceries_adjustGroceryInventoryUpdatethrough vritto_updateAdjusts an inventory item's quantity on hand by a signed delta (floored at zero). Use for 'used two eggs' style updates.
| Field | Type | Description |
|---|---|---|
| itemId* | string | Inventory item ID. |
| delta* | number | Signed quantity change, e.g. -2 or 3. |
| expectedRevision | integer | Optimistic concurrency guard: expected current revision. |
Example input
{
"itemId": "inv_eggs",
"delta": -2
}groceries_patchGroceryInventoryItemUpdatethrough vritto_updateUpdates fields on an existing inventory item.
| Field | Type | Description |
|---|---|---|
| itemId* | string | Inventory item ID. |
| patch* | object | Inventory fields to change; omitted fields keep current values. |
| patch.product | object | Cached provider product snapshot. |
| patch.productId | string | Product cache ID or provider product ID. |
| patch.name | string | Inventory item name. |
| patch.barcode | string | Barcode. |
| patch.productType | one of food, beauty, pet_food, household, general, other | Product type. |
| patch.category | string | Category. |
| patch.quantityOnHand | number | Current quantity (default 1). |
| patch.unit | string | Unit label. |
| patch.storageLocation | one of pantry, fridge, freezer, household, other | Storage location. |
| patch.storageDetail | string | Shelf, bin, or location detail. |
| patch.expiryDate | string | Expiry date. |
| patch.openedDate | string | Date opened. |
| patch.lowStockThreshold | number | Low stock threshold. |
| patch.targetStockLevel | number | Preferred stock level. |
| patch.reminderLeadDays | integer | Days before expiry to remind (default 3). |
| patch.autoAddToList | boolean | Whether to suggest recurring restock. |
| patch.notes | string | Notes. |
| patch.tags | list of string | Tags (unique, max 30). |
| patch.lastPurchasedAt | string | Last purchase date. |
| expectedRevision | integer | Optimistic concurrency guard: expected current revision. |
groceries_deleteGroceryInventoryItemDeletethrough vritto_deleteArchives an inventory item (soft delete). Use only for explicit deletions.
| Field | Type | Description |
|---|---|---|
| itemId* | string | Inventory item ID. |
| expectedRevision | integer | Optimistic concurrency guard: expected current revision. |
Grocery Receiptgrocery_receipt
A captured grocery receipt and its lines.
groceries_queryGroceryReceiptsFindthrough vritto_findLists captured receipts, newest first, optionally by status.
| Field | Type | Description |
|---|---|---|
| status | one of draft, needs_review, applied, failed, archived | Receipt status. |
| includeArchived | boolean | Include archived receipts. |
| limit | integer | Max records (default 100). |
groceries_createGroceryReceiptCreatethrough vritto_createCaptures 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.
| Field | Type | Description |
|---|---|---|
| receipt* | object | Receipt capture fields. |
| receipt.storeId | string | Store ID. |
| receipt.storeName | string | Store name. |
| receipt.purchasedOn | string | Purchase date. |
| receipt.total | number | Receipt total. |
| receipt.currency | string | Currency code (default USD). |
| receipt.imageAssetId | string | Receipt image asset ID. |
| receipt.rawText | string | OCR or pasted receipt text; parsed into lines when no lines are given. |
| receipt.status | one of draft, needs_review, applied, failed, archived | Receipt status. |
| receipt.lines | list of object | Reviewable line items. |
| receipt.notes | string | Notes. |
| receipt.listId | string | Grocery 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_updateApplies 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.
| Field | Type | Description |
|---|---|---|
| receiptId* | string | Receipt ID. |
| lines | list of object | Override lines to apply; defaults to the receipt's stored accepted lines. |
groceries_patchGroceryReceiptUpdatethrough vritto_updateCorrects 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.
| Field | Type | Description |
|---|---|---|
| receiptId* | string | Receipt ID. |
| patch* | object | Only the fields being corrected. |
| patch.storeName | string | |
| patch.purchasedOn | string | Calendar date, YYYY-MM-DD. |
| patch.total | number | |
| patch.currency | string | |
| patch.notes | string | |
| patch.lines | list of object |
groceries_deleteGroceryReceiptDeletethrough vritto_deleteArchives a receipt so it stops counting toward grocery spend. Use for a duplicate or a receipt that is not the user's.
| Field | Type | Description |
|---|---|---|
| receiptId* | string | Receipt ID. |
Groceries Summarygroceries_summary
The grocery dashboard and restock suggestions; read-only.
groceries_queryGroceryDashboardFindthrough vritto_findReturns the grocery cockpit: active lists, needed items, low stock, expiring-soon inventory, receipts awaiting review, and counts.
No input.
groceries_suggestGroceryRestocksFindthrough vritto_findSuggests restocks from inventory that is at or below its low-stock threshold or flagged for recurring restock.
| Field | Type | Description |
|---|---|---|
| limit | integer | Max suggestions (default 30). |
Food Product Catalogfood_catalog
Open Food Facts product reference data.
groceries_searchGroceryProductsLook Upthrough vritto_lookupSearches the Open Food Facts catalog by name for product metadata.
| Field | Type | Description |
|---|---|---|
| query* | string | Product search text. |
| limit | integer | Max 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.