MCP App Store
by KeenEthics

Overview

Connect your Dillr kitchen to Claude so it knows what's in your pantry, who's eating, and what you've cooked before. Claude can plan meals around real constraints, save recipes to your library, build shopping lists, and update your inventory — all in one conversation. Everything Claude writes syncs instantly to the Dillr app for everyone in your household, so you can plan at your desk and cook from your phone.

Tools

complete_shopping_list

ChatGPT
Done shopping — removes all checked items from the shopping list. The list stays active.

get_guide

ChatGPT
Load a specialist guide for a specific task. Available guides: recipe_creation, library_discovery, kitchen_assistant. Reading a guide before starting a task produces significantly better results. Load "recipe_creation" before writing recipes, "library_discovery" for complex searches.

get_kitchen_context

ChatGPT
Get the user's full kitchen context: inventory, kitchen state (leftovers, equipment), recent cooking history, current and upcoming menus, active shopping lists, occasions, and user memory. Load this early to ground your suggestions in the user's kitchen.

get_menu

ChatGPT
Show the user a saved meal plan. Pass menu_id to present a specific menu's planned meals; omit menu_id to list all menus with their date range and meal count. Call this whenever the user wants to see a menu, even if you already have it from earlier in the conversation — calling the tool is how the menu is presented to them; don't reproduce it as plain text. Refer to a menu by its name (or date range) in your reply — never show the user the menu_id; it's only an identifier for tool calls.

get_recipe

ChatGPT
Show the user a recipe that already exists — a saved library recipe or an inline snapshot — by its link. Call this whenever they want to view, open, or cook one of these, even if you already have its content from earlier in the conversation (calling the tool is how the recipe is presented to them; don't reproduce it as plain text instead). For a NEW recipe you just wrote that isn't saved yet, use present_recipe instead. Returns the recipe as markdown in its original language — do not translate or modify. Accepts three link forms, all emitted verbatim by other tools (search_recipes, get_menu, get_cooking_history, get_kitchen_context): - /recipes/{recipeId} — a saved recipe in the personal library - /menus/{menuId}/recipes/{recipeId} — the inline snapshot inside a menu - /cooking_history/{historyId} — the inline snapshot inside a cooking history entry Copy the link substring from the source tool verbatim — no decomposition needed.

get_recipe_stats

ChatGPT
Frequency stats for your recipe library — how often each ingredient, cuisine, technique, or tag appears across saved recipes. Use this to discover available filter values before calling search_recipes, or to understand cooking patterns.

get_shopping_list

ChatGPT
Get a shopping list. Omit list_id to get the default list.

log_meal

ChatGPT
Append a cooked meal to the user's cooking history. Use after the user says they cooked something, to capture ratings and notes (e.g. substitutions, what to improve, portion adjustments) for future pattern recognition. Optionally link to a saved recipe via its link (from search_recipes). Does not modify the recipe itself — for that, use save_recipe.

open_home

ChatGPT
Open the user's Dillr Home: tonight's meal, this week's menu and their recipe library. Opened by the user from the sidebar; not for use in conversation.

present_recipe

ChatGPT
Show the user a NEW recipe you just wrote or found that is NOT yet saved in their library — you pass the full recipe content here and it is presented as an interactive card with step-by-step cook mode. Call this whenever the user wants to see, show, open, or cook such a recipe (including right after you generate one, and when they just say “show me” or “show it in Dillr”), and prefer it over writing the recipe out as plain text. Presenting only DISPLAYS the recipe — it does NOT save it; saving is a separate, explicit step (the card's Save action / save_recipe) that the user takes when they want to keep it. No account is required to view or cook from the card. For a recipe that already exists in the library, use get_recipe with its link instead.

save_menu

ChatGPT
Create or update a menu for the kitchen. Get the user's go-ahead on the plan before you call this. Saving a menu commits it, and each fenced ``recipe block also adds that recipe to the user's library — so present the full plan first (the meals AND the recipes you're proposing) in your reply, and call save_menu only once the user has approved. Don't propose a plan and save it in the same turn. Two modes: - **content**: Full replace — provide the complete list of meals as markdown. Requires start_date (defaults end_date to start_date + 6 days). - A menu covers at most 7 nights. For a longer plan, save one menu per week, as separate save_menu calls. - **changes**: Edit an existing menu with SEARCH/REPLACE blocks on its markdown. Menu format (one bullet per meal): ` - Monday Dinner [Miso Glazed Tofu](/recipes/abc123) — Family weekday favorite - Double the glaze - Tuesday [Quick Stir Fry](/recipes/xyz789) - Dinner [Spaghetti Carbonara](/recipes/def456) — Pantry meal - [Grandma's pot roast](/recipes/ghi101) - Monday **Morning Pancakes** — Fluffy banana pancakes ` **Every meal should be cookable — give it a real recipe, don't just name it.** For each meal, do one of: 1. **Link** a recipe the user already has — find it with search_recipes and link it by id: [title](/recipes/{id}). 2. **Attach a new recipe** (the default for any new dish you're proposing) — write the meal as a **bold** title and put the FULL recipe in a fenced ``recipe block directly under the meal bullet. Dillr saves it to the library and links it automatically — no separate save_recipe call. Write the actual recipe (ingredients + steps), same markdown as save_recipe — do not just name the dish: ``` - Monday Dinner **Miso Glazed Tofu** — Family favorite `recipe Miso Glazed Tofu Ingredients - 400g firm tofu Instructions - Press the tofu, then sear. ` `` A bare **bold** title with NO recipe block is only for a meal that genuinely has no recipe (leftovers, eating out) — never use it as a shortcut to skip writing a recipe the user will want to cook. Don't save a names-only plan and offer to add recipes later; write them now. - Weekday and slot (Breakfast/Lunch/Dinner) prefixes are optional and case-insensitive. - Linked meals use [title](/recipes/{id}) from search_recipes. Menu-scoped links [title](/menus/{menu_id}/recipes/{id}) are also accepted. - Bare-title meals (no link) require **bold** title: - Monday Morning Pancakes. Linked meals already have bracket delimiters. - Weekday and slot values must be in English (Monday–Sunday, Breakfast/Lunch/Dinner). Titles and descriptions can be any language. - Optional description after — (space, em-dash, space). - Optional indented - …` bullets become the meal's notes. Only call save_menu once the user has approved the plan (see the note above). Refer to the menu by its name (or date range) in your reply — never show the user the menu_id; it's only an identifier for tool calls. SEARCH/REPLACE format: <<<<<<< SEARCH (exact text) ======= (replacement) >>>>>>> REPLACE

save_recipe

ChatGPT
Save a new recipe or edit an existing one. Two modes: - content: Save a new recipe — provide the full recipe as markdown. Only save after the user approves. - changes: Edit an existing recipe — uses SEARCH/REPLACE blocks on the recipe's markdown. Identify the recipe by its link — the same link returned by get_recipe, search_recipes, and get_menu (e.g. /recipes/{id} or /menus/{menu_id}/recipes/{id}). For best results, call get_guide("recipe_creation") before writing a recipe. Recipe format: `` Recipe Title Ingredients Group name: (optional) - ingredient 1 - ingredient 2 Instructions - Step text - Timer: Label (Xs) - Starter: "Question?" - Tip: tip text Details Summary: Brief description Label: Short name Time: 30 minutes Yield: 4 servings Nutrition (optional) - Calories: 450 kcal Tips (optional) - Tip text `` SEARCH/REPLACE format: <<<<<<< SEARCH (exact text) ======= (replacement) >>>>>>> REPLACE

save_shopping_list

ChatGPT
Update the shopping list. Three modes (mutually exclusive): - content: Full replace — provide the complete shopping list as markdown with checkboxes. - changes: Edit existing list with SEARCH/REPLACE blocks on its markdown. - check: Check or uncheck a single item by id (e.g. as it's picked up while shopping). Before building a new list, check get_inventory and get_recipe_stats(type: 'ingredients') — only list what's actually missing. Format: `` **Category** - [ ] Item (qty) → recipe - [x] Checked item ` Group items under Category headers. Write category names in the user's language. Order categories from fresh to shelf-stable. Checkbox format: - [ ] item (qty) → recipe (legacy — for recipe is also accepted) or - [x] item`. SEARCH/REPLACE format: <<<<<<< SEARCH (exact text) ======= (replacement) >>>>>>> REPLACE

search_recipes

ChatGPT
Search the user's recipe library. Returns CSV with a link column — copy a [title](/recipes/{id}) cell verbatim into get_recipe. WHERE clause examples: Equality: {"cuisines":"italian"} Array member: {"tags":{"contains":"vegetarian"}} Any-of: {"tags":{"contains_any":["vegetarian","vegan"]}} Comparison: {"cook_time_minutes":{"lte":30}} AND (implicit): {"cuisines":"italian","cook_time_minutes":{"lte":30}} OR: {"or":[{"cuisines":"italian"},{"cuisines":"mexican"}]} NOT: {"not":{"tags":{"contains":"dessert"}}} Title search: {"title":{"contains":"lasagna"}} Nutrition: {"nutrition_calories":{"lte":400}}, {"nutrition_protein_g":{"gte":30}} Operators: eq, gt, gte, lt, lte (comparison); contains, contains_any, contains_all (arrays); and, or, not (logical). IMPORTANT: All indexed values including titles are normalized to English, lowercase, singular. Use "chicken" not "Chicken", "pancake" not "Pannkakor". get_recipe_stats helps discover available filter values. Omit where entirely to list all recipes. Note: recently saved recipes may take a moment to appear in search results.

update_kitchen

ChatGPT
Save details about the physical kitchen — equipment, layout, location, nearby stores, growing space, anything that affects what and how the user cooks here. This is kitchen-specific: it changes when switching kitchens. For personal preferences and dietary needs, use update_profile. For food inventory, use update_inventory. Two modes: - content: Full replace — provide the complete kitchen description as markdown. - changes: Edit existing kitchen info with SEARCH/REPLACE blocks. SEARCH/REPLACE format: <<<<<<< SEARCH (exact text) ======= (replacement) >>>>>>> REPLACE

update_profile

ChatGPT
Save what you learn about the user — household, dietary restrictions, taste preferences, cooking patterns, routines, goals. This persists across conversations and kitchens. For kitchen-specific info (equipment, location, stores), use update_kitchen. For food inventory, use update_inventory. Two modes: - content: Full replace — provide the complete user profile as markdown with ## kind headers and - fact bullets. - changes: Edit existing profile with SEARCH/REPLACE blocks. Write ## kind headers in the user's language. SEARCH/REPLACE format: <<<<<<< SEARCH (exact text) ======= (replacement) >>>>>>> REPLACE

complete_shopping_list

Claude

delete_recipe

Claude

get_cooking_history

Claude

get_guide

Claude

get_inventory

Claude

get_kitchen_context

Claude

get_menu

Claude

get_occasions

Claude

get_recipe

Claude

get_recipe_stats

Claude

get_shopping_list

Claude

list_kitchens

Claude

log_meal

Claude

save_menu

Claude

save_recipe

Claude

save_shopping_list

Claude

search_recipes

Claude

switch_kitchen

Claude

update_inventory

Claude

update_kitchen

Claude

update_leftovers

Claude

update_occasions

Claude

update_profile

Claude

Similar Apps