Recipe Collections
TIP
Want to know how to use recipes for your weekly dinners or shopping? See the Meal Planning & Cooking Guide.
Keep all your recipes in one place, cook step-by-step without losing your place, and share your favorites with anyone — no account needed. Mottainai can import recipes from any website automatically, so you spend less time typing and more time cooking.
Collections and recipes
Recipes are organized into collections — think of them as folders with a theme, like "Italian", "Weeknight dinners", or "Grandma's classics". Each collection can hold as many recipes as you like, and you can share a whole collection with family or friends.
Each recipe holds:
- A title, description, and cover photo
- Ingredients, organized into named groups (e.g. "For the sauce", "For the dough")
- Step-by-step instructions, each optionally with a timer
- Serving count, prep time, cook time, and cuisine type
- A count of how many times you've cooked it
Adding recipes
There are four ways to add a recipe to a collection:
- Manually — fill in the form yourself: title, ingredients, steps, serving count, and times
- Import from a website — paste any recipe URL and Mottainai extracts the ingredients and steps automatically
- From text — paste or type a recipe description (even from a photo or message) and AI structures it into a proper recipe
- Fork a public recipe — found a recipe someone shared? Copy it into your own collection with one click
Ingredients
Each ingredient has a name, amount, unit, and an optional note (like "diced" or "room temperature"). You can also mark an ingredient as optional.
Supported units: g, kg, ml, L, tsp, tbsp, cup, oz, lb, pcs, pinch, bunch, slice
Scaling
Change the serving count and all ingredient amounts adjust automatically. Cooking for two instead of four? Just set it to 2 and the quantities update throughout the recipe.
Scaling is always temporary — it never changes the saved recipe. The original amounts are always preserved.
Some ingredients can be marked as "don't scale" — useful for things like salt or baking powder that don't scale linearly.
Cook mode
Cook mode turns your recipe into a full-screen, distraction-free cooking guide. One step fills the screen at a time, with large readable text — easy to glance at with messy hands.
If a step has a timer attached (like "simmer for 10 minutes"), it shows right there on the screen. You can move between steps with a tap or with the keyboard.
When you finish the last step, Mottainai marks the recipe as cooked and records the date. Over time you can see how often you've made each dish.
AI editing
You can rewrite any recipe using plain language instructions. Open a recipe, tap "Edit with AI", and type something like:
- "Make it vegan"
- "Halve the ingredients"
- "Add more spice"
- "Replace the cream with coconut milk"
Mottainai shows you a preview of the changes before anything is saved. If the result looks good, confirm — otherwise discard and try a different instruction.
Shopping list
Add all ingredients from a recipe directly to your shopping list. Set the serving count first — the amounts scale before being added, so you always buy exactly what you need.
Sharing
- Publish a recipe to get a public link — anyone can view the full recipe without creating an account
- The link includes a preview image for sharing on social media or messaging apps
- Anyone with the link can copy (fork) the recipe into their own collection
- Revoke the link at any time — the URL stops working immediately
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
# List recipes in a collection
mo recipe list --container COLLECTION_ID
# Get a recipe (with optional scaling)
mo recipe get RECIPE_ID
mo recipe get RECIPE_ID --servings 8
# Create manually
mo recipe create --container COLLECTION_ID --title "Pasta Carbonara" --servings 4
# Import from URL (AI-powered)
mo recipe create --container COLLECTION_ID --from-url "https://example.com/recipe"
# Create from text (AI-powered)
mo recipe create --container COLLECTION_ID --from-text "2 cups flour, 1 egg..."
# Update fields
mo recipe update RECIPE_ID --title "Updated Name" --difficulty easy
# Delete
mo recipe delete RECIPE_ID --yes
# Scale (read-only, does not save)
mo recipe scale RECIPE_ID --servings 6
# Add to shopping list
mo recipe shopping RECIPE_ID --to SHOPPING_ID --servings 4 --exclude-in-stock
# Log a cook
mo recipe cooked RECIPE_ID --note "Perfect"
# AI editing
mo recipe ai-edit RECIPE_ID --instruction "make it vegan" --apply
# AI suggestions based on storage contents
mo recipe suggest COLLECTION_ID [--storage-ids STORAGE_ID]
# Publishing
mo recipe publish RECIPE_ID --allow-fork
mo recipe unpublish RECIPE_ID --yes
# Fork a public recipe
mo recipe fork TOKEN --container COLLECTION_ID
# Export and import
mo recipe export --container COLLECTION_ID --output recipes.json
mo recipe import --container COLLECTION_ID --file recipes.jsonMCP tools
| Tool | Purpose |
|---|---|
list_recipe_collections | List all recipe collections |
create_recipe_collection | Create a new collection |
list_recipes | List recipes in a collection |
get_recipe | Get full recipe details |
create_recipe | Create a recipe manually |
create_recipe_from_url | Import and auto-save from URL |
update_recipe | Partial update of recipe fields |
delete_recipe | Delete a recipe |
edit_recipe_with_ai | Natural language AI edit |
scale_recipe | Scale ingredients to a serving count |
add_recipe_to_shopping | Add ingredients to a shopping list |
log_cooked | Record a cook event |
suggest_recipes | AI recipe suggestions based on inventory |
publish_recipe | Make a recipe public |
unpublish_recipe | Revoke public access |
fork_public_recipe | Copy a public recipe into a collection |
API endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/containers?type=recipe | List recipe collections |
POST | /api/containers | Create recipe collection (type=recipe) |
GET | /api/containers/{id}/items | List recipes (paginated) |
POST | /api/containers/{id}/items | Create recipe manually |
GET | /api/items/{id}?container={id} | Get recipe |
PUT | /api/items/{id} | Update recipe |
DELETE | /api/items/{id} | Delete recipe |
POST | /api/containers/{id}/ai/recipe-import | Import from URL |
POST | /api/containers/{id}/ai/recipe-create | Create from text |
POST | /api/containers/{id}/ai/recipe-edit | AI recipe edit |
POST | /api/containers/{id}/ai/shopping | Add to shopping list |
POST | /api/items/{id}/publish | Publish recipe |
POST | /api/items/{id}/unpublish | Unpublish recipe |
GET | /r/{token} | Public recipe view (no auth) |
POST | /api/recipes/fork | Fork a public recipe |
See the full API reference at /api/docs.