Tool tree
gradeNot graded
search-recipesAnswer
Search the recipe catalog by free-text query, required tags, and/or a max prep time. By default, results are filtered to only recipes that match the household's currently active dietary preferences.
View tool JSON
{
"name": "search-recipes",
"kind": "answer",
"impl": "imperative",
"description": "Search the recipe catalog by free-text query, required tags, and/or a max prep time. By default, results are filtered to only recipes that match the household's currently active dietary preferences.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Free text to match against recipe name or ingredients."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"enum": [
"vegetarian",
"vegan",
"glutenFree",
"dairyFree",
"nutFree",
"quick",
"budget"
]
},
"description": "Require all of these tags."
},
"maxPrepMinutes": {
"type": "number",
"description": "Only include recipes that take this many minutes or less."
},
"respectDietary": {
"type": "boolean",
"description": "Filter out recipes that conflict with active dietary preferences. Defaults to true."
},
"maxCaloriesPerServing": {
"type": "number",
"description": "Only include recipes at or under this many calories per serving."
},
"minProteinPerServing": {
"type": "number",
"description": "Only include recipes with at least this many grams of protein per serving."
},
"sortBy": {
"type": "string",
"enum": [
"relevance",
"pantryMatch",
"cost",
"prepTime",
"calories",
"expiringSoon"
],
"description": "How to order results. 'pantryMatch' ranks recipes needing the fewest additional ingredients first -- use this to answer \"what can I make with what I already have\". 'expiringSoon' ranks recipes that use the most soon-to-expire pantry items first -- use this to reduce food waste. Defaults to 'relevance'."
}
}
},
"page": "/"
}get-recipeAnswer
Get full details for one recipe, including ingredients and instructions, by its recipe id.
View tool JSON
{
"name": "get-recipe",
"kind": "answer",
"impl": "imperative",
"description": "Get full details for one recipe, including ingredients and instructions, by its recipe id.",
"inputSchema": {
"type": "object",
"properties": {
"recipeId": {
"type": "string",
"description": "The recipe id, e.g. from search-recipes results."
}
},
"required": [
"recipeId"
]
},
"page": "/"
}get-dietary-preferencesAnswer
Get the household's currently active dietary preferences and avoided ingredients.
View tool JSON
{
"name": "get-dietary-preferences",
"kind": "answer",
"impl": "imperative",
"description": "Get the household's currently active dietary preferences and avoided ingredients.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}set-dietary-preferencesAction
Update the household's dietary preferences (vegetarian, vegan, glutenFree, dairyFree, nutFree) and/or the list of ingredients to avoid. Only the fields provided are changed. Affects future recipe searches and blocks conflicting meal-plan additions unless overridden.
View tool JSON
{
"name": "set-dietary-preferences",
"kind": "act",
"impl": "imperative",
"description": "Update the household's dietary preferences (vegetarian, vegan, glutenFree, dairyFree, nutFree) and/or the list of ingredients to avoid. Only the fields provided are changed. Affects future recipe searches and blocks conflicting meal-plan additions unless overridden.",
"inputSchema": {
"type": "object",
"properties": {
"vegetarian": {
"type": "boolean"
},
"vegan": {
"type": "boolean"
},
"glutenFree": {
"type": "boolean"
},
"dairyFree": {
"type": "boolean"
},
"nutFree": {
"type": "boolean"
},
"avoidIngredients": {
"type": "array",
"items": {
"type": "string"
},
"description": "Ingredient names to avoid entirely, e.g. [\"shellfish\"]."
}
}
},
"page": "/"
}get-meal-planAnswer
Get the full Mon-Sun meal plan with recipe names, servings, and an estimated total cost for the week.
View tool JSON
{
"name": "get-meal-plan",
"kind": "answer",
"impl": "imperative",
"description": "Get the full Mon-Sun meal plan with recipe names, servings, and an estimated total cost for the week.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}get-week-nutrition-summaryAnswer
Get per-serving nutrition (calories, protein, carbs, fat) for each planned day plus the weekly total and the average per planned day -- use this to answer "how many calories a day is this plan averaging" or check it hits a protein target.
View tool JSON
{
"name": "get-week-nutrition-summary",
"kind": "answer",
"impl": "imperative",
"description": "Get per-serving nutrition (calories, protein, carbs, fat) for each planned day plus the weekly total and the average per planned day -- use this to answer \"how many calories a day is this plan averaging\" or check it hits a protein target.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}add-recipe-to-planAction
Assign a recipe to a day of the week. Fails with an explanation if the recipe conflicts with active dietary preferences unless force is true. Automatically refreshes the shopping list.
View tool JSON
{
"name": "add-recipe-to-plan",
"kind": "act",
"impl": "imperative",
"description": "Assign a recipe to a day of the week. Fails with an explanation if the recipe conflicts with active dietary preferences unless force is true. Automatically refreshes the shopping list.",
"inputSchema": {
"type": "object",
"properties": {
"day": {
"type": "string",
"enum": [
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat",
"Sun"
],
"description": "Day of the week to plan."
},
"recipeId": {
"type": "string",
"description": "Recipe id to assign, from search-recipes or get-recipe."
},
"servings": {
"type": "number",
"description": "Servings to cook; defaults to the recipe's normal serving size."
},
"force": {
"type": "boolean",
"description": "Set true to add the recipe even if it conflicts with dietary preferences."
}
},
"required": [
"day",
"recipeId"
]
},
"page": "/"
}remove-recipe-from-planAction
Clear whatever recipe is assigned to a given day of the week. Automatically refreshes the shopping list.
View tool JSON
{
"name": "remove-recipe-from-plan",
"kind": "act",
"impl": "imperative",
"description": "Clear whatever recipe is assigned to a given day of the week. Automatically refreshes the shopping list.",
"inputSchema": {
"type": "object",
"properties": {
"day": {
"type": "string",
"enum": [
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat",
"Sun"
]
}
},
"required": [
"day"
]
},
"page": "/"
}plan-weekAction
Automatically fill in the meal plan for multiple days at once under a set of constraints, instead of calling add-recipe-to-plan repeatedly. Always respects active dietary preferences (never overrides them). By default only fills empty days, avoids repeating a recipe already used that week, and -- if a weekly budget is set -- skips a day rather than exceed it. Returns which days were planned and, for any day that couldn't be filled, why.
View tool JSON
{
"name": "plan-week",
"kind": "act",
"impl": "imperative",
"description": "Automatically fill in the meal plan for multiple days at once under a set of constraints, instead of calling add-recipe-to-plan repeatedly. Always respects active dietary preferences (never overrides them). By default only fills empty days, avoids repeating a recipe already used that week, and -- if a weekly budget is set -- skips a day rather than exceed it. Returns which days were planned and, for any day that couldn't be filled, why.",
"inputSchema": {
"type": "object",
"properties": {
"days": {
"type": "array",
"items": {
"type": "string",
"enum": [
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat",
"Sun"
]
},
"description": "Days to plan; defaults to all 7."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"enum": [
"vegetarian",
"vegan",
"glutenFree",
"dairyFree",
"nutFree",
"quick",
"budget"
]
},
"description": "Require all of these tags on every recipe chosen."
},
"maxPrepMinutes": {
"type": "number",
"description": "Only consider recipes that take this many minutes or less."
},
"avoidRepeats": {
"type": "boolean",
"description": "Don't reuse a recipe already planned elsewhere this week. Defaults to true."
},
"onlyEmptyDays": {
"type": "boolean",
"description": "Only fill days with no recipe assigned yet. Defaults to true."
},
"respectBudget": {
"type": "boolean",
"description": "Skip a day rather than exceed the weekly budget, if one is set. Defaults to true."
},
"maxCaloriesPerServing": {
"type": "number",
"description": "Only consider recipes at or under this many calories per serving."
},
"minProteinPerServing": {
"type": "number",
"description": "Only consider recipes with at least this many grams of protein per serving."
},
"prioritizeExpiring": {
"type": "boolean",
"description": "Prefer recipes that use pantry items expiring soon, to reduce food waste. Defaults to false (prefers pantry match generally)."
}
}
},
"page": "/"
}get-budget-statusAnswer
Get the weekly grocery budget (if set), the meal plan's current estimated cost, and how much room is left.
View tool JSON
{
"name": "get-budget-status",
"kind": "answer",
"impl": "imperative",
"description": "Get the weekly grocery budget (if set), the meal plan's current estimated cost, and how much room is left.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}set-weekly-budgetAction
Set (or clear, with amount: null) the household's target weekly grocery budget in dollars.
View tool JSON
{
"name": "set-weekly-budget",
"kind": "act",
"impl": "imperative",
"description": "Set (or clear, with amount: null) the household's target weekly grocery budget in dollars.",
"inputSchema": {
"type": "object",
"properties": {
"amount": {
"type": [
"number",
"null"
],
"description": "Non-negative dollar amount, or null to clear the budget."
}
},
"required": [
"amount"
]
},
"page": "/"
}get-pantryAnswer
List pantry staples the household is tracking and whether each is currently in stock.
View tool JSON
{
"name": "get-pantry",
"kind": "answer",
"impl": "imperative",
"description": "List pantry staples the household is tracking and whether each is currently in stock.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}update-pantry-itemAction
Mark a pantry item as in stock or needed, and/or set when it expires. Items marked 'have' are excluded from the generated shopping list even if a planned recipe calls for them. Fields omitted are left unchanged.
View tool JSON
{
"name": "update-pantry-item",
"kind": "act",
"impl": "imperative",
"description": "Mark a pantry item as in stock or needed, and/or set when it expires. Items marked 'have' are excluded from the generated shopping list even if a planned recipe calls for them. Fields omitted are left unchanged.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Ingredient name, e.g. \"olive oil\"."
},
"have": {
"type": "boolean",
"description": "true if currently stocked at home. Omit to leave unchanged."
},
"expiresOn": {
"type": [
"string",
"null"
],
"description": "ISO date string (e.g. \"2026-09-05\") this item expires on, or null to clear it. Omit to leave unchanged."
}
},
"required": [
"name"
]
},
"page": "/"
}get-expiring-soonAnswer
List pantry items that are on hand and expire within the given number of days (default 3), soonest first -- use this to plan meals that use them up and reduce food waste. A negative daysUntilExpiry means already expired.
View tool JSON
{
"name": "get-expiring-soon",
"kind": "answer",
"impl": "imperative",
"description": "List pantry items that are on hand and expire within the given number of days (default 3), soonest first -- use this to plan meals that use them up and reduce food waste. A negative daysUntilExpiry means already expired.",
"inputSchema": {
"type": "object",
"properties": {
"withinDays": {
"type": "number",
"description": "Expiry window in days. Defaults to 3."
}
}
},
"page": "/"
}get-shopping-listAnswer
Get the current shopping list: ingredients needed for the week's planned recipes, minus what's already in the pantry.
View tool JSON
{
"name": "get-shopping-list",
"kind": "answer",
"impl": "imperative",
"description": "Get the current shopping list: ingredients needed for the week's planned recipes, minus what's already in the pantry.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}regenerate-shopping-listAction
Recompute the shopping list from the current meal plan and pantry state. Usually unnecessary since other tools auto-refresh it, but useful to force a recheck.
View tool JSON
{
"name": "regenerate-shopping-list",
"kind": "act",
"impl": "imperative",
"description": "Recompute the shopping list from the current meal plan and pantry state. Usually unnecessary since other tools auto-refresh it, but useful to force a recheck.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}toggle-shopping-itemAction
Check or uncheck an item on the shopping list, e.g. after it's been bought.
View tool JSON
{
"name": "toggle-shopping-item",
"kind": "act",
"impl": "imperative",
"description": "Check or uncheck an item on the shopping list, e.g. after it's been bought.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"unit": {
"type": "string",
"description": "Optional unit to disambiguate items with the same name."
},
"checked": {
"type": "boolean"
}
},
"required": [
"name",
"checked"
]
},
"page": "/"
}get-recent-activityAnswer
Get a log of recent actions taken on this plan by either the human or an agent, most recent first.
View tool JSON
{
"name": "get-recent-activity",
"kind": "answer",
"impl": "imperative",
"description": "Get a log of recent actions taken on this plan by either the human or an agent, most recent first.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Max entries to return, defaults to 10."
}
}
},
"page": "/"
}undo-last-actionAction
Revert the single most recent state-changing action (by either the human or an agent) -- plan changes, pantry edits, dietary/budget changes, or shopping-list edits. Only one level deep and there is no redo, so check get-recent-activity first if you're unsure what it would undo. Fails if there's nothing to undo.
View tool JSON
{
"name": "undo-last-action",
"kind": "act",
"impl": "imperative",
"description": "Revert the single most recent state-changing action (by either the human or an agent) -- plan changes, pantry edits, dietary/budget changes, or shopping-list edits. Only one level deep and there is no redo, so check get-recent-activity first if you're unsure what it would undo. Fails if there's nothing to undo.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}