Skip to main content
Glama
smeet666

mcp-marmiton

Scale an ingredient list

scale_ingredients
Read-onlyIdempotent

Rescale French ingredient lists to any serving count using a factor or from/to servings. Handles grams, millilitres, and countable items with appropriate rounding.

Instructions

Rescale a list of ingredient lines to a different number of servings, without contacting any website. Give either 'factor' directly, or 'from_servings' and 'to_servings' and the factor is computed. Works on any French ingredient list, whatever its source, so it also serves a recipe the user pasted in. Quantities in grams or millilitres are multiplied and rounded to readable values; a countable thing lands on a half when half of one can be poured, weighed or cut, as a boîte, a sachet, a feuille de gélatine or a cuillère can, and on a whole one when it cannot, as an oeuf, a jaune or a blanc; approximate measures such as a pinch or a handful have their count multiplied in whole units and stay in their own vocabulary. A line writing an article where a digit would go, as in 'un bouchon de rhum' or 'une pincée de sel', is read as one of that measure. Lines carrying no quantity are returned untouched and flagged. Prefer this over doing the arithmetic yourself.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
factorNoMultiplier to apply. Use this or the from/to pair.
ingredientsYesIngredient lines, for example ['200 g de farine', '3 oeufs', 'sel'].
to_servingsNoHow many servings are wanted.
from_servingsNoHow many servings the list is written for.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
notesYes
factorYes
ingredientsYes
scaled_countYes
rounded_countYesLines whose value rounding moved away from the exact product, not lines that could have been rounded.
unscaled_countYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv2.1.0
    • removedOutput schema / properties / ingredients / items / properties / amount / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / ingredients / items / properties / amount / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / ingredients / items / properties / amountMax / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / ingredients / items / properties / amountMax / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / ingredients / items / properties / unit / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / ingredients / items / properties / unit / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  2. Changed12 schema fields changed
    • addedOutput schema / properties / ingredients / items / properties / amount / anyOf
      Added value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / ingredients / items / properties / amount / type
      Removed value: -[
      -  "number",
      -  "null"
      -]
    • addedOutput schema / properties / ingredients / items / properties / amountMax / anyOf
      Added value: +[
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / ingredients / items / properties / amountMax / type
      Removed value: -[
      -  "number",
      -  "null"
      -]
    • addedOutput schema / properties / ingredients / items / properties / unit / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / ingredients / items / properties / unit / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / rounded_count / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / rounded_count / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / scaled_count / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / scaled_count / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / unscaled_count / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / unscaled_count / minimum
      Added value: +-9007199254740991
  3. Changed3 schema fields changedv1.7.0
    • addedOutput schema / properties / ingredients / items / properties / amountMax
      Added value: +{
      +  "description": "Upper bound when the line gives a range, as in '200 à 300 g', with 'amount' holding the lower one. Null when the line states a single amount.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / ingredients / items / properties / scaling / description
      Previous value: -"'scaled' means the arithmetic came out exact, which a count reaches as readily as a mass: one pinch multiplied by six is six pinches. 'rounded' means the value had to be moved to stay usable, to a whole or half unit or to a step a scale can show. 'unscaled' was left alone, because the line carries no quantity."New value: +"'scaled' means the arithmetic came out exact, which a count reaches as readily as a mass: one pincée multiplied by six is six pincées. 'rounded' means the value had to be moved to stay usable, to a whole or half unit or to a step a scale can show. 'unscaled' was left as published, because nothing on the line is the factor's to multiply: the note says which of the two it is."
    • changedOutput schema / properties / ingredients / items / required
      Previous value: -[
      -  "original",
      -  "text",
      -  "amount",
      -  "unit",
      -  "scaling",
      -  "adjusted"
      -]New value: +[
      +  "original",
      +  "text",
      +  "amount",
      +  "amountMax",
      +  "unit",
      +  "scaling",
      +  "adjusted"
      +]
  4. Changed3 schema fields changedv1.5.0
    • changedOutput schema / properties / ingredients / items / properties / adjusted / description
      Previous value: -"True when rounding moved the value away from the exact product. A line can be 'rounded' and still land exactly, as three eggs doubled land on six."New value: +"True when rounding moved the value away from the exact product, which is what makes a line 'rounded' rather than 'scaled'."
    • changedOutput schema / properties / ingredients / items / properties / note / description
      Previous value: -"Why the line was rounded, clamped or left alone."New value: +"Why the line was rounded, clamped or left alone, including when the measure is approximate and only its count was multiplied."
    • changedOutput schema / properties / ingredients / items / properties / scaling / description
      Previous value: -"'scaled' was multiplied cleanly. 'rounded' was multiplied then rounded to something countable. 'unscaled' was left alone, either because it carries no quantity or because the measure is approximate by nature."New value: +"'scaled' means the arithmetic came out exact, which a count reaches as readily as a mass: one pinch multiplied by six is six pinches. 'rounded' means the value had to be moved to stay usable, to a whole or half unit or to a step a scale can show. 'unscaled' was left alone, because the line carries no quantity."
  5. Changed4 schema fields changedv1.3.0
    • addedOutput schema / properties / ingredients / items / properties / adjusted
      Added value: +{
      +  "description": "True when rounding moved the value away from the exact product. A line can be 'rounded' and still land exactly, as three eggs doubled land on six.",
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / ingredients / items / properties / note / description
      Previous value: -"Why the line was rounded or left alone."New value: +"Why the line was rounded, clamped or left alone."
    • changedOutput schema / properties / ingredients / items / required
      Previous value: -[
      -  "original",
      -  "text",
      -  "amount",
      -  "unit",
      -  "scaling"
      -]New value: +[
      +  "original",
      +  "text",
      +  "amount",
      +  "unit",
      +  "scaling",
      +  "adjusted"
      +]
    • addedOutput schema / properties / rounded_count / description
      Added value: +"Lines whose value rounding moved away from the exact product, not lines that could have been rounded."
  6. First observedv1.0.2

TDQS

A4.7/5.0
Behavior5/5

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

The description goes well beyond annotations, disclosing rounding behavior, handling of countable vs uncountable items, approximate measures, article-as-quantity lines, and untouched lines being flagged. It also states no website contact, which complements the readOnly and idempotent hints without contradicting them.

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 description is front-loaded with the core action and then packs in substantial behavioral detail. It is dense and somewhat long, especially the rounding sentence, but every sentence earns its place and no information is redundant with the schema.

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?

Given the tool's complexity, the description covers input expectations, scaling modes, unit handling, edge cases like no-quantity lines, and the no-network guarantee. The output schema exists, so the lack of return-format detail is acceptable; an agent has what it needs to call the tool correctly.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds meaningful semantics: it explains the factor vs from_servings/to_servings relationship and that the factor is computed when the pair is given. It also clarifies how ingredient line content is interpreted, which the schema alone does not convey.

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 states a specific verb and resource: rescale a list of ingredient lines to a different number of servings. It also distinguishes itself from siblings by saying it works without contacting any website and on any French ingredient list, including a pasted recipe, making its role as a transformation tool versus search/get clear.

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

Usage Guidelines4/5

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

It gives clear context for when to use the tool: any French ingredient list, whatever its source, and explicitly says to prefer it over doing the arithmetic yourself. It does not spell out exclusions or name sibling alternatives directly, but the usage scope is well implied.

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

Deploy Server

Other Tools