Generate meal plan and grocery list
generate_meal_planUse this when the user wants a weekly meal plan, a meal planner template filled in, or a grocery list from their meal plan or meal prep. First turn what the user pasted (a plan, recipe, spreadsheet or e-mail) into meals: one entry per day and slot with its name, recipe servings and ingredient lines, one meal per day for lines like "Mon-Fri lunch". Put the original text in plan only when you cannot do that. If you propose the meals, pass them the same way. The tool parses quantities and units, scales servings to the number of people, merges the same ingredient across the week (volume with volume, weight with weight, not volume to weight), groups the list by store section, removes items the user already has, and returns a PDF (week grid plus checklist), CSV and text. Does not give nutrition, calorie or diet advice and does not order groceries.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "generate_meal_plan"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | Fallback when you cannot build meals: the week as the user wrote it. Easiest: a list of meals, e.g. [{"day":"Monday","meal":"Dinner","name":"Chicken stir fry","servings":4,"ingredients":["1 lb chicken thighs","2 cups rice","1/2 onion, diced","salt to taste"]}]. Also accepted: a list of days each with "meals", an object keyed by day and meal, or pasted text (markdown with **Monday** or ### Monday headings and "- Dinner: Tacos (1 lb beef, 8 tortillas)" lines, a markdown or spreadsheet table, or a recipe copied from a website). | |
| meals | No | Preferred. The week as structured meals you build from what the user pasted: one entry per meal and day, e.g. [{"day":"Monday","slot":"Dinner","name":"Tacos","servings":4,"ingredients":["1 lb ground beef","8 corn tortillas"]}]. Expand "Mon-Fri" or "Mon & Wed" into one meal per day. | |
| title | No | Title printed on the PDF, e.g. "Family dinners". Default "Weekly meal plan" or "Grocery list". Longer than 80 characters is shortened. | |
| units | No | How to show merged amounts: "us" (cups, tbsp, oz, lb), "metric" (ml, l, g, kg) or "auto" (default: the system most lines use). Volume is never converted to weight. | |
| people | No | Servings to cook for each meal, e.g. 4 or "4 people". Each meal with a recipe yield (servings) is scaled to this number; meals without a yield are used as written. Default: no scaling. | |
| week_of | No | Optional label for the week, e.g. "Nov 2, 2026". Printed as given; longer than 40 characters is shortened. | |
| page_size | No | PDF paper: "letter" (default) or "a4". | |
| already_have | No | Items already in the kitchen to leave off the list, as a list or comma-separated text, e.g. ["salt", "olive oil", "rice"]. A section name such as "spices" removes that whole section. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| days | Yes | ||
| meals | Yes | ||
| notes | Yes | ||
| title | Yes | ||
| units | Yes | ||
| people | Yes | ||
| sections | Yes | ||
| downloads | Yes | ||
| items_count | Yes | ||
| meals_count | Yes | ||
| unparsed_lines | Yes | ||
| already_have_removed | Yes |