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'.
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. 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.
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. 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"
      +]
  2. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, which aligns with the compute-and-return nature of the tool (no persistence claimed, so no contradiction). The description adds meaningful behavioral context beyond annotations: the fallback behavior when the user declines the oven ('proceed but say the result is not oven-adapted'), clamping with a warning for room legs above 14h, and that the yeast figure accounts for the preferment. This is rich context, though it doesn't cover every edge case.

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 long but structured: a front-loaded purpose/return sentence, followed by a numbered decision list with clear sub-clauses. For a 16-parameter tool with nested objects, the length is justified and every sentence carries actionable guidance. It is dense rather than padded, though a tighter lead-in could trim a few words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (16 params, nested flourBlend and preferment objects, no output schema), the description is thorough: it explains return values (which matters because there is no output schema), fallback behaviors, mutual-exclusion hints, and decision logic. It does not exhaustively document error conditions, but covers what an agent needs to call it correctly.

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. The description adds genuine semantic value beyond the schema by explaining why parameters matter — 'Oven capability materially changes the hydration band and bake feasibility' and 'temperature is the dominant driver of yeast amount and timing' — and clarifying the preferment's effect on the returned yeast figure. This elevates it above the schema-only baseline.

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 opens with a specific verb+resource ('Create a bake plan with ingredient calculations') and enumerates the exact return payload (gram amounts, auto-sized yeast, fermentation schedule, dough warnings, calculator URL). It clearly distinguishes itself from siblings by naming which tools to call instead (search_ovens, search_flours, troubleshoot), so an agent can tell it apart immediately.

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?

The description gives an explicit pre-call protocol: a numbered list of five inputs to gather, each naming the sibling to call (search_ovens, search_flours) and what to pass. It also states exclusions — 'plan_bake does not return technique guidance, so pair it with a troubleshoot call' — and a stopping condition ('Don't interrogate a user who already gave a full brief'). This is explicit when-to-use/when-not-to guidance.

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