RecipeScale
Server Details
Scale recipes, convert kitchen units and merge shopping lists. Free.
- Status
- Healthy
- Uptime
- 100.0% over 25 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Server Listing
- Sahadeva
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: unit conversion, recipe scaling, cost calculation, and shopping-list merging. The descriptions explicitly state what each tool should not be used for, making misselection unlikely.
Three tools follow a clear verb_noun pattern (convert_units, merge_shopping_list, scale_recipe), while cost_per_serving is a noun phrase. All use consistent snake_case, so the minor deviation is still readable and predictable.
With 4 tools, the server is tightly scoped to recipe scaling and related kitchen calculations. Each tool earns its place without redundancy or bloat.
The surface covers core workflows: scaling recipes, converting units, costing servings, and merging shopping lists. Minor gaps like nutrition estimation or parsing raw recipe text are absent, but the stated domain is well served.
Available Tools
4 toolsconvert_unitsConvert unitsARead-onlyIdempotentInspect
Convert one cooking amount between units: within volume or weight exactly, or between volume and weight using a built-in density for flour, sugar, brown sugar, butter, water, milk, rice, oats, cocoa or honey. Use for questions like 'how many grams is 2 cups of flour'. Do NOT use to change serving counts (use scale_recipe).
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Unit to convert to, e.g. 'g'; same supported units as from | |
| from | Yes | Unit to convert from, e.g. 'cup'. Supported: tsp, tbsp, cup, fl_oz, ml, l, pint, quart, gallon (volume); g, kg, oz, lb (weight); each (count). Common spellings like 'cups', 'grams', 'tablespoon' also work | |
| value | Yes | Amount to convert, zero or positive, e.g. 2 | |
| ingredient | No | Ingredient name, required only for volume <-> weight; must contain one of flour, sugar, brown sugar, butter, water, milk, rice, oats, cocoa, honey (e.g. 'all-purpose flour') |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | Yes | Canonical target unit, e.g. 'g' |
| from | Yes | Canonical source unit, e.g. 'cup' |
| value | Yes | Amount that was converted |
| method | Yes | 'linear' for same-dimension, 'density' for volume <-> weight |
| result | Yes | Converted amount (4 significant digits) |
| display | Yes | Readable conversion, e.g. '2 cups flour = 250 g (approx.)' |
| density_note | No | Density used (density method only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so safety is covered. The description adds genuinely useful behavioral context beyond that: cross-dimension conversion relies on a built-in density and is limited to a fixed ingredient list. It does not mention edge cases like unsupported ingredients or zero values, keeping it just short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose, an illustrative example, and a routing exclusion. Nothing is wasted and the core capability is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering the safety profile, an output schema handling return values, and full param coverage in the schema, the description provides everything needed to select and invoke correctly. No material gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters, including the ingredient list and supported units. The description restates the ingredient list and density behavior but adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (convert) plus the resource (one cooking amount between units) and the exact scope (within volume/weight, or across via built-in density). It also names the sibling it is not (scale_recipe), so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit positive trigger ('how many grams is 2 cups of flour') and an explicit exclusion with the alternative ('Do NOT use to change serving counts (use scale_recipe)'). The when/when-not/alternative triad is fully covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cost_per_servingCost per servingARead-onlyIdempotentInspect
Total the cost of a recipe's ingredients and work out the cost per serving and per 10 servings. Use when budgeting a dish, pricing meal prep or comparing recipes on cost. Do NOT use to resize the recipe (use scale_recipe first, then price the scaled amounts here).
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No | Currency code for display only, e.g. 'EUR'; default USD | |
| servings | Yes | How many servings the recipe makes, positive, e.g. 4 | |
| ingredients | Yes | Priced ingredients, e.g. [{"item":"chicken","cost":8.5},{"item":"rice","cost":1.2}] |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | Plain-language cost summary |
| currency | Yes | Currency code used in the results (upper case) |
| servings | Yes | Servings the recipe makes |
| total_cost | Yes | Sum of all ingredient costs |
| per_serving | Yes | Cost per serving, rounded to cents |
| per_ten_servings | Yes | Cost for 10 servings, rounded to cents |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is low. The description adds useful behavioral context beyond them: it discloses the two derived outputs (per serving and per 10 servings) and the workflow dependency that scaling must happen beforehand. It does not discuss error behavior or how missing/invalid costs are handled, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose first, then usage contexts, then the exclusion/ordering rule. No filler and the most decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. The description supplies the remaining decision-critical context (when to use, the scaling prerequisite) for a three-parameter tool, leaving nothing an agent needs for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so currency, servings and the ingredients array are already fully documented in the schema. The description adds no syntax, format or default information beyond that, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: totals ingredient costs and derives cost per serving and per 10 servings. It is clearly distinguishable from siblings such as scale_recipe and merge_shopping_list, and even names the relevant sibling by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it (budgeting a dish, pricing meal prep, comparing recipes on cost) and when not to (resizing), naming the alternative 'scale_recipe' plus the correct ordering: scale first, then price the scaled amounts here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_shopping_listMerge shopping listARead-onlyIdempotentInspect
Combine several shopping or ingredient lists into one, summing the same item across lists (volumes and weights converted to a friendly unit) and noting which list each came from. Use when shopping for several recipes or meals at once. Do NOT use to resize one recipe (use scale_recipe) or price it (use cost_per_serving).
| Name | Required | Description | Default |
|---|---|---|---|
| lists | Yes | Shopping lists to merge (at least one item overall), e.g. [{"name":"Pancakes","items":[{"item":"milk","quantity":1,"unit":"cup"}]}] |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | Summary of the merge and its limits |
| merged | Yes | One line per item and unit kind, with summed quantities |
| skipped_no_quantity | Yes | Items given without a quantity, kept as notes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description still adds real behavioral detail beyond the annotations: aggregation of identical items, unit conversion to a 'friendly unit', and provenance attribution. It stops short of describing edge-case handling or output shape, but that is largely schema territory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The core behavior and its limitations are front-loaded, and the negative guidance is packed into a single trailing clause rather than restated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and it covers purpose, aggregation rules, and sibling routing. For a single-parameter, read-only merge tool, nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is only one top-level parameter, so the schema already carries parameter meaning (list names, item/unit/quantity semantics, skipped_no_quantity behavior). The description adds no syntax or format detail beyond the schema, which is the expected baseline of 3 when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('Combine several shopping or ingredient lists into one') and immediately scopes the semantics: same items are summed, volumes/weights converted, and origin list noted. It explicitly distinguishes itself from scale_recipe and cost_per_serving, so an agent can select it without inspecting siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the triggering context ('Use when shopping for several recipes or meals at once') and gives explicit exclusions with the correct alternatives for each ('Do NOT use to resize one recipe (use scale_recipe) or price it (use cost_per_serving)'). Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scale_recipeScale recipeARead-onlyIdempotentInspect
Scale every ingredient in a recipe from one serving count to another (0.1x to 20x), with kitchen-friendly fraction hints; items without a quantity pass through unchanged. Use when cooking for more or fewer people. Do NOT use to change units (use convert_units) or to combine several recipes' ingredients (use merge_shopping_list).
| Name | Required | Description | Default |
|---|---|---|---|
| ingredients | Yes | Recipe ingredients, e.g. [{"item":"flour","quantity":2,"unit":"cup"},{"item":"salt","note":"to taste"}] | |
| to_servings | Yes | Servings wanted, positive; to_servings / from_servings must be 0.1-20, e.g. 10 | |
| from_servings | Yes | Servings the recipe is written for, positive, e.g. 4 |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | Explanation of the scaling applied |
| factor | Yes | Scaling factor to_servings / from_servings (4 significant digits) |
| ingredients | Yes | Scaled ingredients, in input order |
| to_servings | Yes | Servings scaled to |
| from_servings | Yes | Servings the recipe was written for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds real behavioral detail beyond them: the 0.1x–20x scaling envelope, that output includes kitchen-friendly fraction hints, and that items lacking a quantity pass through unchanged. It stops short of describing ordering or rounding precision, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero padding: purpose and bounds first, usage context second, routing exclusions last. Each sentence carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a pure read/transform tool with full annotation coverage, a 100%-documented schema, and an output schema that handles return values, the description supplies everything left: bounds, pass-through behavior, and sibling routing. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's ratio-bound statement (0.1x to 20x) duplicates what the to_servings schema already documents, and it adds no interpretation for the nested ingredient fields (item/note/unit/quantity). Credit-worthy but not additive over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (scale) and resource (every ingredient in a recipe) plus the exact scope (serving count change, 0.1x–20x). It also states the pass-through edge case and names the two siblings it must not be confused with, so an agent can identify it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit positive trigger ("Use when cooking for more or fewer people") and two explicit exclusions with named alternatives: unit changes go to convert_units, ingredient combining goes to merge_shopping_list. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- Changed
convert_units19 fields changed- changed
Input schema / properties / from / descriptionPrevious value: -"Unit to convert from, e.g. cup"New value: +"Unit to convert from, e.g. 'cup'. Supported: tsp, tbsp, cup, fl_oz, ml, l, pint, quart, gallon (volume); g, kg, oz, lb (weight); each (count). Common spellings like 'cups', 'grams', 'tablespoon' also work" - changed
Input schema / properties / ingredient / descriptionPrevious value: -"Ingredient name, needed for volume <-> weight, e.g. flour"New value: +"Ingredient name, required only for volume <-> weight; must contain one of flour, sugar, brown sugar, butter, water, milk, rice, oats, cocoa, honey (e.g. 'all-purpose flour')" - changed
Input schema / properties / to / descriptionPrevious value: -"Unit to convert to, e.g. g"New value: +"Unit to convert to, e.g. 'g'; same supported units as from" - changed
Input schema / properties / value / descriptionPrevious value: -"Amount to convert"New value: +"Amount to convert, zero or positive, e.g. 2" - added
Input schema / properties / value / minimumAdded value: +0 - removed
Output schema / properties / conversionFactorRemoved value: -{ - "description": "The factor used to convert between the units", - "type": "number" -} - removed
Output schema / properties / convertedValueRemoved value: -{ - "description": "The converted amount in the target unit", - "type": "number" -} - added
Output schema / properties / density_noteAdded value: +{ + "description": "Density used (density method only)", + "type": "string" +} - added
Output schema / properties / displayAdded value: +{ + "description": "Readable conversion, e.g. '2 cups flour = 250 g (approx.)'", + "type": "string" +} - removed
Output schema / properties / errorRemoved value: -{ - "description": "Error message if the conversion failed, e.g. unknown unit or ingredient", - "type": "string" -} - added
Output schema / properties / fromAdded value: +{ + "description": "Canonical source unit, e.g. 'cup'", + "type": "string" +} - removed
Output schema / properties / fromUnitRemoved value: -{ - "description": "The unit that was converted from", - "type": "string" -} - removed
Output schema / properties / ingredientRemoved value: -{ - "description": "The ingredient name used for volume-to-weight conversion, if applicable", - "type": "string" -} - added
Output schema / properties / methodAdded value: +{ + "description": "'linear' for same-dimension, 'density' for volume <-> weight", + "enum": [ + "linear", + "density" + ], + "type": "string" +} - added
Output schema / properties / resultAdded value: +{ + "description": "Converted amount (4 significant digits)", + "type": "number" +} - added
Output schema / properties / toAdded value: +{ + "description": "Canonical target unit, e.g. 'g'", + "type": "string" +} - removed
Output schema / properties / toUnitRemoved value: -{ - "description": "The unit that was converted to", - "type": "string" -} - added
Output schema / properties / valueAdded value: +{ + "description": "Amount that was converted", + "type": "number" +} - changed
Output schema / requiredPrevious value: -[ - "convertedValue", - "fromUnit", - "toUnit" -]New value: +[ + "value", + "from", + "to", + "result", + "display", + "method" +]
- Changed
cost_per_serving16 fields changed- changed
Input schema / properties / currency / descriptionPrevious value: -"Currency code for display, default USD"New value: +"Currency code for display only, e.g. 'EUR'; default USD" - changed
Input schema / properties / ingredients / descriptionPrevious value: -"Priced ingredients"New value: +"Priced ingredients, e.g. [{\"item\":\"chicken\",\"cost\":8.5},{\"item\":\"rice\",\"cost\":1.2}]" - changed
Input schema / properties / ingredients / items / properties / cost / descriptionPrevious value: -"Cost of the amount used in the recipe"New value: +"Cost of the amount used in the recipe, 0 or more, in the given currency" - added
Input schema / properties / ingredients / items / properties / cost / minimumAdded value: +0 - added
Input schema / properties / ingredients / minItemsAdded value: +1 - changed
Input schema / properties / servings / descriptionPrevious value: -"How many servings the recipe makes"New value: +"How many servings the recipe makes, positive, e.g. 4" - added
Input schema / properties / servings / exclusiveMinimumAdded value: +0 - removed
Output schema / properties / cost_for_10_servingsRemoved value: -{ - "description": "The cost for 10 servings in the specified currency", - "type": "number" -} - removed
Output schema / properties / cost_per_servingRemoved value: -{ - "description": "The cost per serving in the specified currency", - "type": "number" -} - changed
Output schema / properties / currency / descriptionPrevious value: -"The currency code used for the cost calculations"New value: +"Currency code used in the results (upper case)" - added
Output schema / properties / noteAdded value: +{ + "description": "Plain-language cost summary", + "type": "string" +} - added
Output schema / properties / per_servingAdded value: +{ + "description": "Cost per serving, rounded to cents", + "type": "number" +} - added
Output schema / properties / per_ten_servingsAdded value: +{ + "description": "Cost for 10 servings, rounded to cents", + "type": "number" +} - added
Output schema / properties / servingsAdded value: +{ + "description": "Servings the recipe makes", + "type": "number" +} - added
Output schema / properties / total_costAdded value: +{ + "description": "Sum of all ingredient costs", + "type": "number" +} - changed
Output schema / requiredPrevious value: -[ - "cost_per_serving", - "cost_for_10_servings", - "currency" -]New value: +[ + "currency", + "total_cost", + "servings", + "per_serving", + "per_ten_servings", + "note" +]
- Changed
merge_shopping_list12 fields changed- changed
Input schema / properties / lists / descriptionPrevious value: -"Shopping lists to merge"New value: +"Shopping lists to merge (at least one item overall), e.g. [{\"name\":\"Pancakes\",\"items\":[{\"item\":\"milk\",\"quantity\":1,\"unit\":\"cup\"}]}]" - changed
Input schema / properties / lists / items / properties / items / items / properties / item / descriptionPrevious value: -"Item to buy"New value: +"Item to buy, e.g. 'eggs'" - changed
Input schema / properties / lists / items / properties / items / items / properties / quantity / descriptionPrevious value: -"Amount; omit it for non-numeric items"New value: +"Amount, non-negative; omit for non-numeric items (listed in skipped_no_quantity)" - added
Input schema / properties / lists / items / properties / items / items / properties / quantity / minimumAdded value: +0 - changed
Input schema / properties / lists / items / properties / items / items / properties / unit / descriptionPrevious value: -"Unit such as cup, tbsp or g"New value: +"Unit such as cup, tbsp, g, kg, or a free label like 'can'; omit for plain counts" - changed
Input schema / properties / lists / items / properties / name / descriptionPrevious value: -"e.g. 'Saturday dinner'"New value: +"List label shown in from_lists, e.g. 'Saturday dinner'; default 'list N'" - added
Input schema / properties / lists / minItemsAdded value: +1 - added
Output schema / properties / mergedAdded value: +{ + "description": "One line per item and unit kind, with summed quantities", + "items": { + "properties": { + "display": { + "description": "Readable amount with unit", + "type": "string" + }, + "from_lists": { + "description": "Names of the lists this item came from", + "items": { + "type": "string" + }, + "type": "array" + }, + "item": { + "description": "Item name (first spelling seen)", + "type": "string" + }, + "quantity": { + "description": "Summed quantity (2 decimals)", + "type": "number" + }, + "unit": { + "description": "Display unit, e.g. 'cup', 'g', 'each' or a free label", + "type": "string" + } + }, + "required": [ + "item", + "quantity", + "unit", + "display", + "from_lists" + ], + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / mergedListRemoved value: -{ - "description": "The consolidated shopping list", - "properties": { - "items": { - "description": "List of items with quantities and units", - "items": { - "properties": { - "item": { - "description": "Item to buy", - "type": "string" - }, - "quantity": { - "description": "Total amount of the item", - "type": "number" - }, - "unit": { - "description": "Friendliest kitchen unit for the item", - "type": "string" - } - }, - "required": [ - "item", - "quantity", - "unit" - ], - "type": "object" - }, - "type": "array" - }, - "name": { - "description": "Name of the merged list, e.g. 'Weekly Groceries'", - "type": "string" - }, - "notes": { - "description": "List of items without quantities", - "items": { - "description": "Item to buy", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "items", - "notes" - ], - "type": "object" -} - added
Output schema / properties / noteAdded value: +{ + "description": "Summary of the merge and its limits", + "type": "string" +} - added
Output schema / properties / skipped_no_quantityAdded value: +{ + "description": "Items given without a quantity, kept as notes", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "mergedList" -]New value: +[ + "merged", + "skipped_no_quantity", + "note" +]
- Changed
scale_recipe24 fields changed- changed
Input schema / properties / from_servings / descriptionPrevious value: -"Servings the recipe is written for"New value: +"Servings the recipe is written for, positive, e.g. 4" - added
Input schema / properties / from_servings / exclusiveMinimumAdded value: +0 - changed
Input schema / properties / ingredients / descriptionPrevious value: -"Ingredients with optional quantity and unit"New value: +"Recipe ingredients, e.g. [{\"item\":\"flour\",\"quantity\":2,\"unit\":\"cup\"},{\"item\":\"salt\",\"note\":\"to taste\"}]" - changed
Input schema / properties / ingredients / items / properties / note / descriptionPrevious value: -"Preparation note kept as-is, e.g. 'to taste'"New value: +"Text shown instead of an amount when quantity is omitted, e.g. 'to taste' (default 'as needed')" - changed
Input schema / properties / ingredients / items / properties / quantity / descriptionPrevious value: -"Amount; omit it for items like 'salt to taste'"New value: +"Amount, non-negative; omit for items like 'salt to taste'" - added
Input schema / properties / ingredients / items / properties / quantity / minimumAdded value: +0 - changed
Input schema / properties / ingredients / items / properties / unit / descriptionPrevious value: -"Unit such as cup, tbsp, g or a count label like 'clove'"New value: +"Unit such as cup, tbsp, g, or a free count label like 'clove' or 'egg'" - added
Input schema / properties / ingredients / minItemsAdded value: +1 - changed
Input schema / properties / to_servings / descriptionPrevious value: -"Servings you want"New value: +"Servings wanted, positive; to_servings / from_servings must be 0.1-20, e.g. 10" - added
Input schema / properties / to_servings / exclusiveMinimumAdded value: +0 - added
Output schema / properties / factorAdded value: +{ + "description": "Scaling factor to_servings / from_servings (4 significant digits)", + "type": "number" +} - added
Output schema / properties / from_servingsAdded value: +{ + "description": "Servings the recipe was written for", + "type": "number" +} - changed
Output schema / properties / ingredients / descriptionPrevious value: -"List of scaled ingredients"New value: +"Scaled ingredients, in input order" - removed
Output schema / properties / ingredients / items / properties / noteRemoved value: -{ - "description": "Preparation note kept as-is, e.g. 'to taste'", - "type": "string" -} - added
Output schema / properties / ingredients / items / properties / originalAdded value: +{ + "description": "Original amount as text, or the pass-through note", + "type": "string" +} - removed
Output schema / properties / ingredients / items / properties / quantityRemoved value: -{ - "description": "Scaled amount; omitted for items like 'salt to taste'", - "type": "number" -} - added
Output schema / properties / ingredients / items / properties / scaledAdded value: +{ + "description": "Scaled quantity (2 decimals); null when no quantity was given", + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / ingredients / items / properties / scaled_displayAdded value: +{ + "description": "Scaled amount with unit and fraction hint, e.g. '2 1/2 cups (2.5)'", + "type": "string" +} - added
Output schema / properties / ingredients / items / properties / scaled_flagAdded value: +{ + "description": "true when the ingredient was scaled, false when passed through", + "type": "boolean" +} - removed
Output schema / properties / ingredients / items / properties / unitRemoved value: -{ - "description": "Unit such as cup, tbsp, g or a count label like 'clove'", - "type": "string" -} - changed
Output schema / properties / ingredients / items / requiredPrevious value: -[ - "item" -]New value: +[ + "item", + "original", + "scaled", + "scaled_display", + "scaled_flag" +] - added
Output schema / properties / noteAdded value: +{ + "description": "Explanation of the scaling applied", + "type": "string" +} - added
Output schema / properties / to_servingsAdded value: +{ + "description": "Servings scaled to", + "type": "number" +} - changed
Output schema / requiredPrevious value: -[ - "ingredients" -]New value: +[ + "from_servings", + "to_servings", + "factor", + "ingredients", + "note" +]
4 tool updates
- Changed
convert_units1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "conversionFactor": { + "description": "The factor used to convert between the units", + "type": "number" + }, + "convertedValue": { + "description": "The converted amount in the target unit", + "type": "number" + }, + "error": { + "description": "Error message if the conversion failed, e.g. unknown unit or ingredient", + "type": "string" + }, + "fromUnit": { + "description": "The unit that was converted from", + "type": "string" + }, + "ingredient": { + "description": "The ingredient name used for volume-to-weight conversion, if applicable", + "type": "string" + }, + "toUnit": { + "description": "The unit that was converted to", + "type": "string" + } + }, + "required": [ + "convertedValue", + "fromUnit", + "toUnit" + ], + "type": "object" +}
- Changed
cost_per_serving1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "cost_for_10_servings": { + "description": "The cost for 10 servings in the specified currency", + "type": "number" + }, + "cost_per_serving": { + "description": "The cost per serving in the specified currency", + "type": "number" + }, + "currency": { + "description": "The currency code used for the cost calculations", + "type": "string" + } + }, + "required": [ + "cost_per_serving", + "cost_for_10_servings", + "currency" + ], + "type": "object" +}
- Changed
merge_shopping_list1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "mergedList": { + "description": "The consolidated shopping list", + "properties": { + "items": { + "description": "List of items with quantities and units", + "items": { + "properties": { + "item": { + "description": "Item to buy", + "type": "string" + }, + "quantity": { + "description": "Total amount of the item", + "type": "number" + }, + "unit": { + "description": "Friendliest kitchen unit for the item", + "type": "string" + } + }, + "required": [ + "item", + "quantity", + "unit" + ], + "type": "object" + }, + "type": "array" + }, + "name": { + "description": "Name of the merged list, e.g. 'Weekly Groceries'", + "type": "string" + }, + "notes": { + "description": "List of items without quantities", + "items": { + "description": "Item to buy", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "items", + "notes" + ], + "type": "object" + } + }, + "required": [ + "mergedList" + ], + "type": "object" +}
- Changed
scale_recipe1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "ingredients": { + "description": "List of scaled ingredients", + "items": { + "properties": { + "item": { + "description": "Ingredient name", + "type": "string" + }, + "note": { + "description": "Preparation note kept as-is, e.g. 'to taste'", + "type": "string" + }, + "quantity": { + "description": "Scaled amount; omitted for items like 'salt to taste'", + "type": "number" + }, + "unit": { + "description": "Unit such as cup, tbsp, g or a count label like 'clove'", + "type": "string" + } + }, + "required": [ + "item" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "ingredients" + ], + "type": "object" +}
4 tool updates
- First observed
convert_units - First observed
cost_per_serving - First observed
merge_shopping_list - First observed
scale_recipe
Related MCP Connectors
- Vibe YumOAuthapp.vibeyum
Search, save, and scale family recipes, and manage shopping lists and meal plans.
Ad-free recipes with amounts in every step: search, scale, plan meals, build shopping lists.
Ad-free recipes with amounts in every step: search, scale, plan meals, build shopping lists.
Baking unit conversion (cups/grams/temp/recipe scaling). convert_amount, convert_temperature
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceYour digital kitchen, powered by AI. Track what you have, discover what you can cook, and get guided through every recipe — step by step, timer by timer.MIT
- AlicenseAqualityBmaintenanceSearch and read recipes from the English Wikibooks Cookbook, with tools to rescale ingredient lists to a target number of servings.490 npmMIT
- AlicenseNot gradedqualityCmaintenanceHousehold-aware kitchen brain for AI agents: manage pantry inventory with freshness tracking, shopping lists, recipe collections with cook notes and per-diner ratings, dietary profiles with allergen safety, and kitchen equipment — all through 27 tools with OAuth 2.1 authentication. Includes a free tool for ingredient-based recipe generation without an account (accounts are free!).MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to search recipes, compose nutritionally balanced meals, optimize weekly meal plans based on macro targets for family members, and generate consolidated grocery lists from a personal recipe database.-
Glama MCP Gateway
Add one secure layer between your agents and this server.