Build a weekly dinner menu
create_weekly_menuMain entry point for planning dinners. Builds a draft week of dinners from Chop It's catalogue, including broad requests such as 'plan five dinners' with a balanced protein mix adapted to food rules. Each dinner slot gets up to five equal recipe choices and none is selected until the user chooses, in the widget or in chat; a draft with zero selected (status needs_selections) is the normal starting state. Returns the native recipe-selection widget and a menuDraftId that revise_weekly_menu, get_menu_draft, save_week and create_shopping_list accept. Building a draft works without an account. Parameters: brief is the user's own words; each counted protein ('2 chicken, 1 fish') or slotRequirement is one dinner slot; dietary holds whole-week food rules only (one vegetarian dinner is a slot, not dietary); maxTimeMins caps every dinner, while slotRequirements can mix quick and slower dinners; priority is balanced, quick (30-minute cap), healthy or comfort; pantryMode stays off unless the user wants to cook from their pantry (using account stock needs a linked account); includeRecipeIds are pinned as selected dinners. Dietary rules and time limits are hard constraints, and only dinner mains are offered. slotIssues lists any slot with fewer than five matches and the reason: fewer cards means fewer recipes met that slot's rules, not that the catalogue is short.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| brief | Yes | Free-text brief, e.g. 'quick midweek family dinners, no fish'. | |
| dietary | No | ||
| priority | No | quick and speedy are the same criterion: every dinner within 30 minutes of credible total time. healthy uses the documented per-serving nutrition rule; comfort is the curated comfort style. balanced applies no preference. | |
| servings | No | ||
| mixPreset | No | ||
| pantryMode | No | Task only: default ignore for fresh inspiration; use only when explicitly asked to plan from stock; focus prioritises named ingredients. Never changes the diet, foods to avoid or other lasting preferences. | |
| maxTimeMins | No | Global hard cap for EVERY dinner. For quick weeknights plus a slower weekend, use slotRequirements instead. | |
| dinnersCount | No | How many dinners to plan. If omitted, the count named in the brief wins, else 5. | |
| recipeSource | No | Saved means the linked library. Not recently planned excludes recent MCP draft selections; it does not imply never cooked. | |
| configurationId | No | Set by the weekly chooser widget: the chooser this week is built from, so the widget can find it again after a reload. | |
| excludeRecipeIds | No | ||
| focusIngredients | No | Only ingredients explicitly named for using up; do not fill from remembered inventory. | |
| includeRecipeIds | No | Recipe ids to pin into the week. | |
| slotRequirements | No | One entry per dinner, in display order. Use for mixed briefs: quick slots have maxTimeMins, a slower weekend has minTimeMins and special, and a fish slot has protein fish. Empty entries mean a varied normal dinner. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| brief | No | ||
| debug | No | ||
| title | Yes | ||
| appUrl | Yes | ||
| status | Yes | ||
| canUndo | No | ||
| dietary | No | ||
| dinners | Yes | ||
| priority | No | ||
| progress | Yes | ||
| servings | Yes | ||
| diversity | No | ||
| selection | Yes | ||
| navigation | No | ||
| pantryMode | No | ||
| slotIssues | No | ||
| menuDraftId | Yes | ||
| savedWeekId | No | ||
| recipeSource | No | ||
| savedWeekTitle | No | ||
| diversityStatus | No | ||
| savedWeekAppUrl | No | ||
| focusIngredients | No | ||
| selectionWarnings | No | ||
| allowedNextActions | Yes |