Skip to content
Als Markdown

Storage & Shopping

TIP

Looking for inspiration on how to use Storage? Check out the Household & Groceries Guide.

Storage helps you keep track of what you have at home — food in the fridge, pantry staples, freezer items, or anything else you want to monitor. You can see what's running low, catch things before they expire, and build a shopping list that automatically updates your inventory once you're back from the store.

What you can track

Each item in your storage can hold:

  • Name — what the item is, e.g. "Olive oil" or "Oat milk 1L"
  • How much — the amount you have, including fractional quantities like half a pack
  • Unit — g, kg, ml, L, tsp, tbsp, cup, oz, lb, pcs, pinch, or bunch
  • Package size — useful when you track multiple containers of the same product
  • Where it lives — Fridge, Freezer, Pantry, or any location name you choose
  • Category — Dairy, Produce, Bakery, and so on
  • Expiry date — so nothing gets forgotten in the back of the shelf
  • Purchase date and barcode — optional, for more detailed tracking
  • Notes — any extra information, including links to related items

Items are grouped by location, so your fridge contents, pantry, and freezer are neatly separated.

Getting started: Create a storage from your dashboard, then invite household members if needed.

Adding items

Tap the + button to add an item. You can:

  • Type it manually — enter the name, quantity, expiry date, and any other details you want
  • Describe it in plain text — type something like "2 bottles of milk, best before March 20" and Mottainai uses AI to extract the details for you
  • Photograph a receipt — take a photo or upload an image and Mottainai will parse the items from it automatically

When you type a name like "Oat milk 1L", Mottainai automatically picks up the unit and package size — you don't need to fill those in separately.

Managing your inventory

Editing an item — tap or click on any item to open it, then change any field and save.

Archiving — when you've used something up, set the quantity to 0. The item moves to the archived view and is greyed out. It's not deleted, so you can search for it and restock it later.

Restocking — when you buy something again, set the quantity back to 1 or higher. The item returns to the active view.

Votes — in a shared household, members can give items a thumbs up or thumbs down. Use this to signal what to buy more of, or what nobody wants anymore.

Open / Split — when you open a package, mark it as opened. If you only open part of your stock (say, one of three bottles), Mottainai creates a separate entry for the opened one and reduces the original count accordingly.

Expiry tracking

Items with an expiry date appear in the Calendar's aggregate view, so you can see upcoming expirations alongside your other events. You'll also receive notifications when items are about to expire — today, tomorrow, or within the coming week.

Shopping list

Every storage has a linked shopping list. Add items you need to buy, then check them off as you shop. When you check off an item:

  • If it's linked to something already in your storage, the stored quantity increases automatically.
  • If it's new, a fresh entry is created in your storage with that quantity.

Unchecking an item reverses the check mark but does not touch your inventory.

To start fresh, use Clear list to remove all items at once.

Adding a whole recipe — from any recipe, you can send all its ingredients directly to your shopping list. You can scale the recipe up or down first, so the quantities are already right for how many people you're cooking for.

AI restock suggestions — Mottainai can look at your inventory history and suggest items you might be running low on.

Sharing

Open the share panel to invite people to your storage. You can share via an invite link, or add someone directly by email.

RoleWhat they can do
OwnerFull control; cannot be removed
AdminManage items and members
MemberAdd and edit items, but not delete
GuestView only

You can also share with an entire contact group at once, so everyone in the group gets access in one step.


For developers

The following sections are for programmatic access via CLI, AI assistants (MCP), or direct API. See MCP setup and CLI docs for how to connect.

CLI

bash
# Storage containers
mo storage list
mo storage create --name "Kitchen"
mo storage get STORAGE_ID
mo storage update STORAGE_ID --name "Main Kitchen"
mo storage delete STORAGE_ID --yes

# Items
mo item list STORAGE_ID
mo item create STORAGE_ID --title "Milk" --quantity 2 --unit L --expiration-date 2026-03-15
mo item update ITEM_ID --quantity 0          # archive
mo item update ITEM_ID --quantity 1          # restock
mo item delete ITEM_ID --yes
mo item open ITEM_ID [--count 1] [--opened-at 2026-03-09]
mo item vote ITEM_ID --up
mo item batch-update STORAGE_ID --ids ID1,ID2 --category "Dairy"
mo item batch-delete STORAGE_ID --ids ID1,ID2 --yes

# Shopping list
mo shopping list SHOPPING_CONTAINER_ID
mo shopping add SHOPPING_CONTAINER_ID --title "Bread" [--quantity 2]
mo shopping update ITEM_ID --title "Sourdough bread"
mo shopping check ITEM_ID
mo shopping uncheck ITEM_ID
mo shopping delete ITEM_ID --yes
mo shopping clear SHOPPING_CONTAINER_ID --yes

# Members and groups
mo storage member list STORAGE_ID
mo storage member add STORAGE_ID --email user@example.com --role member
mo storage member update-role STORAGE_ID USER_ID --role admin
mo storage member remove STORAGE_ID USER_ID --yes
mo storage group list STORAGE_ID
mo storage group link STORAGE_ID --group-id GROUP_ID
mo storage group unlink STORAGE_ID GROUP_ID --yes

# Invite link
mo storage invite-token STORAGE_ID

MCP tools

  • list_storages — list all storage containers
  • create_storage — create a new storage
  • update_storage — update storage name or settings
  • delete_storage — delete a storage
  • list_storage_members — list members of a storage
  • add_storage_member — add a member to a storage
  • remove_storage_member — remove a member from a storage
  • list_storage_items — list items with optional field filtering
  • create_storage_item — add a new item
  • update_storage_item — edit an item, archive, or restock
  • delete_storage_item — delete an item
  • open_storage_item — mark an item as opened (with optional split)
  • vote_storage_item — upvote or downvote an item
  • check_storage_quota — check storage usage against quota limits
  • batch_update_items — apply field changes to up to 50 items at once
  • batch_delete_items — delete up to 50 items at once
  • list_shopping_items — list items on the linked shopping list
  • add_shopping_item — add an item to the shopping list
  • update_shopping_item — edit a shopping item
  • delete_shopping_item — remove a shopping item
  • check_shopping_item — check or uncheck a shopping item (syncs storage)
  • batch_check_shopping_items — check/uncheck up to 50 items
  • clear_shopping_list — delete all items from the shopping list
  • add_recipe_to_shopping — add recipe ingredients to the shopping list
  • list_labels / create_label / update_label / delete_label
  • link_item — bring an existing item into another storage

API endpoints

MethodPathDescription
GET/api/containers/{id}/itemsList storage items
POST/api/containers/{id}/itemsCreate a storage item
PUT/api/items/{itemId}?container={id}Update a storage item
DELETE/api/items/{itemId}?container={id}Delete a storage item
POST/api/items/{itemId}/open?container={id}Open / split an item
POST/api/items/{itemId}/voteVote on an item
POST/api/containers/{id}/batch-itemsBatch update items
POST/api/containers/{id}/batch-deleteBatch delete items
GET/api/containers/{id}/locationsList distinct locations with counts
GET/api/containers/{id}/labelsList labels
POST/api/containers/{id}/labelsCreate a label
GET/api/containers/{id}/membersList members
POST/api/containers/{id}/membersAdd a member
PUT/api/containers/{id}/members/{userId}Change a member's role
DELETE/api/containers/{id}/members/{userId}Remove a member
POST/api/containers/{id}/ai/parseParse text/images into items
POST/api/containers/{id}/ai/suggestGet restock suggestions
GET/api/containers/{shoppingId}/itemsList shopping items
POST/api/containers/{shoppingId}/itemsAdd a shopping item
POST/api/items/{itemId}/checkCheck or uncheck a shopping item
DELETE/api/containers/{shoppingId}/itemsClear the shopping list
POST/api/containers/{shoppingId}/batch-checkBatch check shopping items

See the full API reference at /api/docs.