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.
| Role | What they can do |
|---|---|
| Owner | Full control; cannot be removed |
| Admin | Manage items and members |
| Member | Add and edit items, but not delete |
| Guest | View 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
# 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_IDMCP tools
list_storages— list all storage containerscreate_storage— create a new storageupdate_storage— update storage name or settingsdelete_storage— delete a storagelist_storage_members— list members of a storageadd_storage_member— add a member to a storageremove_storage_member— remove a member from a storagelist_storage_items— list items with optional field filteringcreate_storage_item— add a new itemupdate_storage_item— edit an item, archive, or restockdelete_storage_item— delete an itemopen_storage_item— mark an item as opened (with optional split)vote_storage_item— upvote or downvote an itemcheck_storage_quota— check storage usage against quota limitsbatch_update_items— apply field changes to up to 50 items at oncebatch_delete_items— delete up to 50 items at oncelist_shopping_items— list items on the linked shopping listadd_shopping_item— add an item to the shopping listupdate_shopping_item— edit a shopping itemdelete_shopping_item— remove a shopping itemcheck_shopping_item— check or uncheck a shopping item (syncs storage)batch_check_shopping_items— check/uncheck up to 50 itemsclear_shopping_list— delete all items from the shopping listadd_recipe_to_shopping— add recipe ingredients to the shopping listlist_labels/create_label/update_label/delete_labellink_item— bring an existing item into another storage
API endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/containers/{id}/items | List storage items |
POST | /api/containers/{id}/items | Create 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}/vote | Vote on an item |
POST | /api/containers/{id}/batch-items | Batch update items |
POST | /api/containers/{id}/batch-delete | Batch delete items |
GET | /api/containers/{id}/locations | List distinct locations with counts |
GET | /api/containers/{id}/labels | List labels |
POST | /api/containers/{id}/labels | Create a label |
GET | /api/containers/{id}/members | List members |
POST | /api/containers/{id}/members | Add 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/parse | Parse text/images into items |
POST | /api/containers/{id}/ai/suggest | Get restock suggestions |
GET | /api/containers/{shoppingId}/items | List shopping items |
POST | /api/containers/{shoppingId}/items | Add a shopping item |
POST | /api/items/{itemId}/check | Check or uncheck a shopping item |
DELETE | /api/containers/{shoppingId}/items | Clear the shopping list |
POST | /api/containers/{shoppingId}/batch-check | Batch check shopping items |
See the full API reference at /api/docs.