Skip to main content
Glama

Pandough.app

plan_bake

Read-only

Create a bake plan with ingredient calculations. Returns exact ingredient amounts in grams, an auto-sized yeast amount, a fermentation schedule, dough warnings, and a calculator URL the user can open in Pandough with all parameters prefilled. Before calling this, gather the inputs that actually determine a good plan (skip any the user already volunteered): (1) Strongly ask which oven model they use — call search_ovens and pass ovenSlug. If it is unlisted, ask for ovenType plus ovenMaxCelsius. Oven capability materially changes the hydration band and bake feasibility; if the user declines, proceed but say the result is not oven-adapted. (2) Which flour(s) do they have? — call search_flours to resolve a flourSlug (or pass flourBlend for a 2–5 flour cut, e.g. a Pulcinella base with 30% Manitoba); this is what makes hydration and warnings flour-aware. (3) Their room temperature and fridge temperature — pass roomTempCelsius/fridgeTempCelsius; temperature is the dominant driver of yeast amount and timing. (4) How they mix/knead (by hand, stand mixer, no-knead) — plan_bake does not return technique guidance, so pair it with a troubleshoot call for method advice. (5) Do they want a preferment? — pass preferment for a biga, poolish, tiga, cold/long biga, or a natural sourdough starter. The yeast figure accounts for the preferment, and the calculator link opens with the build already set up, so recommending a biga in prose without passing this param hands the user a direct dough. Don't interrogate a user who already gave a full brief.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
localeNoUI locale for the returned calculator link (e.g. 'en', 'pl', 'it'). Defaults to 'en'.
stagesNoThe full main-dough fermentation schedule as ordered stages (1–6), e.g. [{durationHours:1,tempCelsius:22},{durationHours:21,tempCelsius:4},{durationHours:2,tempCelsius:22}] for 1h at room temperature, 21h in the fridge, then a 2h warm-up. Use it when the user describes more than a room leg and a fridge leg, an order other than room then fridge, or a stage at its own temperature. The stages are the whole schedule: nothing is added (include the warm-up after the fridge yourself) and the calculator link opens on exactly these stages. Mutually exclusive with roomTempHours / fridgeTempHours. Room-temperature stages above 14h are clamped with a warning.
bakeTimeNoTarget bake time as an ISO 8601 datetime (e.g. '2026-06-10T18:00:00Z'). Must be in the future.
ovenSlugNoExact oven model slug from search_ovens. Strongly preferred: the engine uses the model's real ceiling and oven class to adapt hydration and bake feasibility. Mutually exclusive with manual ovenType/ovenMaxCelsius.
ovenTypeNoOven class for an unlisted model. Pass together with ovenMaxCelsius; prefer ovenSlug when search_ovens finds the model.
servingsNoNumber of portions/pizzas (1–50, default: 4)
flourSlugNoFlour slug from search_flours (e.g. 'caputo-pizzeria'). For a single flour. Mutually exclusive with flourBlend.
flourBlendNoA weighted flour blend (2–5 flours summing to 100%), e.g. [{flourSlug:'caputo-pizzeria',percent:70},{flourSlug:'manitoba-oro',percent:30}]. Mutually exclusive with flourSlug.
prefermentNoPlan the bake around a preferment (biga, poolish, tiga, sourdough…). The yeast figure returned accounts for it, and the calculator link opens with the build already set up.
recipeSlugYesRecipe type slug. Supported: neapolitan-pizza, classica-pizza, focaccia, artisan-bread, baguette (call list_recipes for the full list). When the user names a style like 'classica', pass that style here — do NOT confuse it with a flour whose name happens to contain the word.
roomTempHoursNoRoom-temperature fermentation hours (0–168). Pass BOTH this and fridgeTempHours to lock the split; naming only a total lets the engine choose. These hours are the bulk before the fridge: when the fridge leg is above 0 the plan adds the recipe's final proof at room temperature after the fridge (a warm-up) on top of them, and says so. Room legs above 14h are clamped with a warning.
ovenMaxCelsiusNoThe real maximum temperature in °C for an unlisted oven (100–600). This is what constrains hydration and bake time.
ovenMinCelsiusNoOptional minimum set temperature in °C for an unlisted oven.
fridgeTempHoursNoCold fermentation hours (0–168). Pass BOTH this and roomTempHours to lock the split. A locked fridge leg above 0 is followed by a warm-up at room temperature (the recipe's final proof), shown as its own schedule line.
roomTempCelsiusNoThe user's real kitchen temperature in °C (2–40). The single biggest driver of yeast amount and timing — ask the user for it.
hydrationPercentNoTarget hydration percentage (40–110)
fridgeTempCelsiusNoThe user's real fridge temperature in °C (0–12). Ask the user for it when a cold ferment is involved.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / properties / fridgeTempHours / description
      Previous value: -"Cold fermentation hours (0–168). Pass BOTH this and roomTempHours to lock the split."New value: +"Cold fermentation hours (0–168). Pass BOTH this and roomTempHours to lock the split. A locked fridge leg above 0 is followed by a warm-up at room temperature (the recipe's final proof), shown as its own schedule line."
    • changedInput schema / properties / preferment / properties / stages / maxItems
      Previous value: -4New value: +6
    • changedInput schema / properties / roomTempHours / description
      Previous value: -"Room-temperature fermentation hours (0–168). Pass BOTH this and fridgeTempHours to lock the split; naming only a total lets the engine choose. Room legs above 14h are clamped with a warning."New value: +"Room-temperature fermentation hours (0–168). Pass BOTH this and fridgeTempHours to lock the split; naming only a total lets the engine choose. These hours are the bulk before the fridge: when the fridge leg is above 0 the plan adds the recipe's final proof at room temperature after the fridge (a warm-up) on top of them, and says so. Room legs above 14h are clamped with a warning."
    • addedInput schema / properties / stages
      Added value: +{
      +  "description": "The full main-dough fermentation schedule as ordered stages (1–6), e.g. [{durationHours:1,tempCelsius:22},{durationHours:21,tempCelsius:4},{durationHours:2,tempCelsius:22}] for 1h at room temperature, 21h in the fridge, then a 2h warm-up. Use it when the user describes more than a room leg and a fridge leg, an order other than room then fridge, or a stage at its own temperature. The stages are the whole schedule: nothing is added (include the warm-up after the fridge yourself) and the calculator link opens on exactly these stages. Mutually exclusive with roomTempHours / fridgeTempHours. Room-temperature stages above 14h are clamped with a warning.",
      +  "items": {
      +    "properties": {
      +      "durationHours": {
      +        "description": "Length of this stage in hours",
      +        "maximum": 168,
      +        "minimum": 0.25,
      +        "type": "number"
      +      },
      +      "tempCelsius": {
      +        "description": "Temperature of this stage in °C (the fridge temperature for a cold stage)",
      +        "maximum": 35,
      +        "minimum": 0,
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "durationHours",
      +      "tempCelsius"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 6,
      +  "minItems": 1,
      +  "type": "array"
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / locale / enum
      Previous value: -[
      -  "en",
      -  "pl",
      -  "de",
      -  "es",
      -  "it",
      -  "nl",
      -  "fr",
      -  "ja",
      -  "ko",
      -  "sv",
      -  "pt",
      -  "hu"
      -]New value: +[
      +  "en",
      +  "pl",
      +  "de",
      +  "es",
      +  "it",
      +  "nl",
      +  "fr",
      +  "ja",
      +  "ko",
      +  "sv",
      +  "pt",
      +  "hu",
      +  "cs"
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / locale / enum
      Previous value: -[
      -  "en",
      -  "pl",
      -  "de",
      -  "es",
      -  "it",
      -  "nl",
      -  "fr",
      -  "ja",
      -  "ko",
      -  "sv",
      -  "pt"
      -]New value: +[
      +  "en",
      +  "pl",
      +  "de",
      +  "es",
      +  "it",
      +  "nl",
      +  "fr",
      +  "ja",
      +  "ko",
      +  "sv",
      +  "pt",
      +  "hu"
      +]
  4. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=true, yet the description goes well beyond that: it explains that room-temperature stages above 14h are clamped with a warning, that preferments alter the returned yeast figure, that the calculator link is prefilled with exactly the supplied stages, and that omitting `preferment` yields a direct dough. It also discloses an important non-capability (no technique guidance) so the agent knows to pair with troubleshoot.

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 purpose and return contract are front-loaded, and the intake checklist is enumerated rather than prose, so it scans well. It is nonetheless long (~400 words) for a description, with some rationale clauses that could be tightened without losing the routing signal.

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 17-parameter tool with nested objects and no output schema, the description carries the needed completeness: it explains the return payload in lieu of an output schema, covers the stages-vs-roomTempHours/fridgeTempHours trade-off, the warm-up auto-insertion, nomenclature gotchas ('classica' vs. a flour name), and the cross-tool workflow. Nothing material is missing for correct invocation.

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 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema: why temperature is 'the dominant driver of yeast amount and timing', that recommending a biga in prose without passing the param hands the user a direct dough, that a 2–5 flour blend is meaningfully different from a single flour, and the mutually-exclusive pairings. The distinction between resolution (ovenSlug via search_ovens) and manual fallback is also clarified.

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?

States a specific verb+resource ('Create a bake plan with ingredient calculations') and then enumerates exactly what is returned: grams, auto-sized yeast, fermentation schedule, dough warnings, and a prefilled calculator URL. An agent immediately knows this is a deterministic planning/calculation tool and can distinguish it from lookup siblings like search_flours or get_flour_details.

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?

Provides explicit pre-call routing with five numbered intake items, naming the alternative tools to call first (search_ovens, search_flours, troubleshoot) and the condition that selects each. It also states when NOT to gather inputs ('Don't interrogate a user who already gave a full brief') and gives a fallback when the user declines the oven question.

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.

Resources