Skip to main content
Glama

Chop it: meal planning, recipes, pantry and shopping

Change one dinner or its servings

revise_weekly_menu

Changes a menu draft and returns the updated draft with a new menuDraftId; unrelated dinners, locks, dietary rules and pantry choice are kept. Operations: select one offered choice for a slot (slotId + replacementRecipeId, which also locks it); select several offered recipes together across interchangeable slots (choices); five new choices for one slot (slotId + reroll: true); top up every slot listed in slotIssues in one call (refillShortSlots: true, no slotId); change a slot's protein, timing or health aim (slotRequirement or replacementBrief); change servings for one slot, or for the whole week without slotId; change pantry ranking (pantryMode, focusIngredients); lock or unlock a dinner (locked); undo the last change (undoLastChange). An explicit chooseForMe request can select a matching candidate for one slot; ordinary replacement requests leave that slot unselected. Nothing is selected implicitly, and changes described only in chat leave the draft as it was. The returned menuDraftId is the one to save or shop. A stale-edit error includes the current draft and changeApplied=false; the returned state supports review and a retry of only the unapplied change using its current menuDraftId. Exact slot IDs and labels come from get_menu_draft. Choosing and changing dinners works before sign-in; saving or shopping the result needs a linked account.

Input Schema

NameRequiredDescriptionDefault
slotNoExact slot label to change; never rebuild unrelated dinners.
lockedNoKeep this dinner through future changes. Unlock explicitly before replacing.
rerollNoFive new candidates for the target unresolved slot only. Preserve all constraints and unrelated slots; exclude its previously shown recipes where possible.
slotIdNoStable slot ID, preferred over the legacy slot label.
choicesNoAdd and keep recipes together in interchangeable unlocked slots. Supply one distinct offered recipe per slot. This is one atomic draft revision; never combine with other edits.
servingsNoChange the selected slot, or all slots when slot is omitted.
pantryModeNoRefresh unselected dinners using this task-only pantry choice, preserving all selected slots, servings and dietary restrictions.
chooseForMeNoSelect one matching candidate for this slot only when the user explicitly asks you to choose. May accompany replacementBrief or reroll. Never saves or activates the week.
menuDraftIdYes
undoLastChangeNoUndo the latest draft edit as a new revision. Does not change Saved Weeks, This Week or previous shopping lists.
slotRequirementNoReplace this slot’s structure only. Other dinners stay unchanged.
focusIngredientsNo
refillShortSlotsNoOne repair for the whole draft: top up every unselected slot that has fewer than five candidates (see slotIssues), keeping its existing cards, every full slot and every selection. No slotId. Use this instead of rerolling short slots one by one; do not call it when slotIssues is empty.
replacementBriefNoWhat to change about this dinner, e.g. vegetarian or something new. Existing exclusions remain enforced.
replacementRecipeIdNoSelect an exact offered alternative for this slot. Must belong to this draft's options; cannot duplicate another chosen dinner.

Output Schema

NameRequiredDescriptionDefault
noteNo
briefNo
debugNo
titleYes
appUrlYes
statusYes
canUndoNo
dietaryNo
dinnersYes
priorityNo
progressYes
servingsYes
diversityNo
selectionYes
navigationNo
pantryModeNo
slotIssuesNo
menuDraftIdYes
savedWeekIdNo
recipeSourceNo
savedWeekTitleNo
diversityStatusNo
savedWeekAppUrlNo
focusIngredientsNo
selectionWarningsNo
allowedNextActionsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false), the description discloses non-obvious traits: every edit creates a new menuDraftId revision, unrelated dinners/locks/dietary rules/pantry choice are preserved, stale-edit errors return the current draft with changeApplied=false and support a partial retry, and undoLastChange does not touch Saved Weeks or prior shopping lists. None of this contradicts the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The outcome and return value are front-loaded, and nearly every clause carries distinct operational information. The mid-section is a dense run-on enumeration of operations that would scan faster as a list, but there is little filler to cut.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter mutation tool with nested objects and an output schema, the description covers the remaining gaps an agent needs: revision semantics, preservation guarantees, error/retry behavior, auth gating and ID sourcing. Return-value details are left to the output schema, which is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is high (87%), so the baseline is 3, but the description adds real meaning: it maps parameter combinations to intents (slotId + replacementRecipeId also locks; reroll needs slotId; refillShortSlots takes no slotId; servings without a slot applies to the whole week; pantryMode/focusIngredients re-rank pantry) and warns that choices is atomic and must not be combined with other edits. A few parameters, such as focusIngredients and slotRequirement sub-fields, are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Changes a menu draft and returns the updated draft with a new menuDraftId') and enumerates every supported operation (choice selection, reroll, refill, requirement change, servings, pantry, lock, undo). That makes it clearly distinguishable from siblings like create_weekly_menu, prepare_weekly_menu, save_menu and get_menu_draft, which it also references for slot IDs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit routing rules: use refillShortSlots 'instead of rerolling short slots one by one' and only when slotIssues is non-empty; chooseForMe only on an explicit user request; chat-only changes leave the draft untouched. It also states the prerequisite boundary (choosing works before sign-in; saving/shopping needs a linked account) and points to get_menu_draft for exact IDs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Directories

Listed in ChatGPT · Chop it

Last observed

Resources