create_shopping_list
ChatGPTUse this when the user wants a shopping list from recipes or a meal plan — combining ingredients from several recipes into one consolidated, aisle-organised grocery list, scaled to their servings. Never shop a manually described menu: persist every change via revise_weekly_menu and use its returned draft ID. Return the source draft and selected recipes so the user can verify the list. Takes a menu draft (menuDraftId) or a set of recipes (recipeIds), merges duplicate ingredients across recipes, and returns a shoppingListId for handoff to an online shop. recipeIds may mix Chop It catalogue recipes and the user's own saved ones. If any id cannot be resolved the tool says so in note — pass that on rather than presenting the list as complete. Items already in the user's pantry are marked inPantry and still listed: having some is not having enough for the week, so point them out rather than dropping them.
delete_recipe
ChatGPTUse this when the user wants a saved recipe gone — a duplicate, a bad import, or something they'll never cook. Deletes it from their Chop It library permanently; this cannot be undone, so name the recipe and get a clear yes from the user before calling it. Works only on the user's own saved recipes. Chop It's own catalogue recipes can't be deleted.
get_my_week
ChatGPTUse this when the user asks what's on their menu, what they're cooking tonight or this week, or wants to change the week they already have planned. Returns the dinners currently set as This Week in their Chop It app, with links to each recipe. Read-only. Use it to answer 'what am I cooking tonight?' without re-planning. Creating a draft or Saved Week does not replace This Week.
get_pantry
ChatGPTUse this when the user asks what they can cook with what they have, wants to use up ingredients before they go off, or wants meals planned around what's already in the fridge and cupboards. Lists the caller's Chop It pantry (name, storage location, quantity, how full, expiry) — for a linked account, the same pantry the app shows. Read it only when stock context is needed for the current request. General dinner inspiration does not need this call; old tool output and remembered stock are not current inventory.
get_recipe
ChatGPTUse this when the user asks how to make a dish, wants to start cooking tonight's dinner, or asks for the full recipe with quantities and steps. Fetches the complete recipe — ingredients and step-by-step method — by recipeId (from search_recipes, create_weekly_menu, or list_saved_recipes). Works for catalogue recipes and the user's own saved recipes. Read-only.
get_shopping_list
ChatGPTRead the latest saved shopping coverage and revision before shopping or changing an older list. Current server state overrides old conversation output. Ticks mean do not buy; recipes and pantry are unchanged.
import_recipe_from_image
ChatGPTUse this when the user wants to digitise a recipe from a photo — importing a cookbook page, a recipe screenshot, or a handwritten family recipe card into their Chop It library. Pass a fetchable http(s) image URL. The server reads the photo, restructures it through Chop It's canonical recipe pipeline, and saves it. If the result is needs_review, show the preview to the user, fix the flagged issues together, and save the corrected version with save_recipe. If the image URL can't be fetched, ask the user to paste the recipe text and use import_recipe_from_url with a caption instead. Limited per conversation.
import_recipe_from_url
ChatGPTUse this when the user wants to save a recipe from TikTok, save an Instagram recipe, or import a recipe from any website link so it isn't lost — turning saved-but-never-cooked links into recipes they can plan and shop. Also accepts pasted caption text when a link can't be fetched. The server extracts the source, restructures it through Chop It's canonical recipe pipeline, and saves it to their library. If the result is needs_review, show the preview to the user, fix the flagged issues together, and save the corrected version with save_recipe. Limited per conversation.
import_shared_week
ChatGPTImport a publicly shared week into the current account. Copies recipe contents into the recipient library and creates a private draft; the source week and This Week are unchanged. Review, then save_week to keep the plan.
list_saved_recipes
ChatGPTUse this when the user asks what recipes they've saved, wants to browse their recipe library, or wants to plan a week from recipes they've already collected. Lists the user's Chop It library — the same recipes the app shows, including everything imported or saved from this chat. Needs a connected Chop It account. Read-only. Returns the most recently updated recipes only: returned is how many came back and total is the whole library. When total is larger than returned, say so and point the user at the app rather than implying the page is everything they have.
list_saved_weeks
ChatGPTList reusable weeks from the current account. Use an exact savedWeekId to open a draft copy or set This Week.
open_saved_week
ChatGPTCreate a private editable draft copy of a saved week. Preserves its dinner order and serving choices; the Saved Week and This Week stay unchanged. Use revise_weekly_menu for one different dinner.
open_shop_handoff
ChatGPTPrepare a shopping review for the latest remaining groceries from a shopping list or menu draft. Creates a time-limited review link tied to the current list revision. The user reviews quantities in Chop it, chooses a retailer and completes checkout on the retailer's site.
preview_shared_week
ChatGPTPreview an intentional public week link without signing in. Returns the shared dinners and cooking details; no account state changes.
save_discovered_recipe
ChatGPTSave a catalogue recipe unchanged into the current account library. Use after discovering or inspecting a recipe; no recipe generation or rewriting is needed. Reuses an existing saved copy.
save_recipe
ChatGPTUse this when the user wants to keep a recipe: one from a cookbook page you've read with vision, one they invented or developed with your help, or corrected output from an import. Saves a fully structured recipe to their Chop It library. Requirements before saving: UK ingredient vocabulary and metric quantities, ingredients grouped into logical sections, a complete method with sensory cues, and a title without marketing words. Call start_recipe FIRST and include its recipeDraftToken here, so the recipe is checked against the brief that was actually issued before it is allowed in. The token is a signed copy of that brief, not a credential: no secret, no access, nothing in it the user cannot see. Read status: "needs_revision" means NOTHING was saved and fixes lists exactly what to change — fix them and call again, including the recipeDraftToken returned with them. Sign-in is required. "saved" means it is permanently in their Chop It account and appUrl opens it.
save_week
ChatGPTSave this exact dinner draft as a reusable Saved Week, preserving slots, locks and servings. This does not replace This Week. Call set_this_week only when the user wants to activate it. Safe to retry the same draft.
search_recipes
ChatGPTUse this when the user wants recipe or dinner ideas: quick dinners under 30 minutes, meals matching a dietary need (vegetarian, vegan, high fibre, healthy), a specific protein or cuisine, or what they can cook with ingredients they already have. Searches Chop It's catalogue of 1,000+ tested recipes and returns cards (title, image, time, tags, protein) with links into the app. Read-only. ALWAYS pass structured filters when the request implies them — 'quick chicken dinners' → filters.protein ['chicken'] + filters.maxTimeMins 30. Filters are hard constraints; the server also parses the query text (protein, time, dietary, dinner intent) as a fallback, and dinner-intent queries exclude sides, dips and starters.
set_this_week
ChatGPTActivate a saved week as an independent working copy, preserving serving choices. Replaces the active week pointer; saved snapshots remain reusable. Use only when the user asks to make this their active week.
share_week
ChatGPTPublish a link to a saved week and its recipe contents. Anyone with the link can preview and import a copy. Only use when the user explicitly asks to share publicly. Never publish private draft IDs as share codes.
start_recipe
ChatGPTCall this FIRST, before writing any recipe you intend to save. It returns the exact structure and standards a recipe must meet to enter the user's Chop It library, pantry context only when explicitly requested for this task, and a recipeDraftToken: a signed copy of this same brief that lets save_recipe confirm the recipe was written to the brief actually issued. That token is not a credential, carries no secret, and grants no access. Writing a recipe without calling this usually means save_recipe sends it back for revision. This tool makes no AI call and saves nothing.
update_pantry
ChatGPTUse this when the user tells you what's in their fridge or cupboards, what they've just bought, or what they've used up — keeping their Chop It pantry current so planning can use ingredients before they go off. Adds items (topping up existing ones) or removes items by name. Use removeItemIds or update with pantryItemId for exact rows; ambiguous names return candidates without changing them. Salt/pepper/oil-style staples are filtered out automatically. For a linked account this edits the same pantry the app shows.
update_recipe
ChatGPTUse this when the user wants to change a recipe they've already saved — fix a quantity, rewrite a step, rename it, scale the servings, or tidy up an import that came out wrong. Only the fields you send are changed; everything else is left alone. IMPORTANT: ingredientSections and steps REPLACE the whole list, so read the recipe with get_recipe first and send the complete corrected version, not just the changed lines. get_recipe marks garnishes and 'to serve' items with optional: true — carry that flag back through, or they land on the user's shopping list. Works only on the user's own saved recipes. Chop It's own catalogue recipes can't be edited — save a copy with save_recipe first.
update_shopping_list
ChatGPTUse for “I already have rice”, ticking or unticking shopping lines, or partial stock. Read the list to obtain stable line IDs and revision, then set excluded or coveredQuantity. This changes only buying requirements, never recipes or pantry inventory. Retry the same desired values safely; refresh after a revision conflict.