Skip to main content
Glama

Loafy: Sourdough Bread Baking

Bake Planner

plan_sourdough_bake
Read-onlyIdempotent

Loafy's Bake Planner. Plan a sourdough bake backwards from when the bread should come out of the oven: when to feed the starter, mix, shape, proof in the fridge, preheat and bake, and how much starter suits the kitchen's temperature according to The Sourdough Framework. Returns the times and a link to the same plan in the Bake Planner on loafy.ai. The time is the baker's local date and time, such as 2026-10-24T10:00. The amounts of flour, water and starter are calculate_bread_dough; how long bulk fermentation takes at a given dough temperature and starter amount is estimate_bulk_fermentation.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "ready_at": "<ready_at>"
    },
    "name": "plan_sourdough_bake"
  }
}

Input Schema

NameRequiredDescriptionDefault
ready_atYesWhen the bread should come out of the oven, as the baker's local date and time, e.g. "2026-10-24T10:00".
bulk_hoursNoHours of bulk fermentation, if the baker knows their dough. Without it, the book's figure for the kitchen's temperature.
cold_proof_hoursNoHours the shaped loaf proofs in the fridge. The book says 8 to 12.
kitchen_temperature_cNoKitchen temperature in °C, which sets how much starter to use.

Output Schema

NameRequiredDescriptionDefault
urlNoThe same answer, recipe or entry on loafy.ai.
noteNoA remark on the whole result, such as why nothing was found.
toolNoThe tool that answered.
inputNoThe arguments as the tool used them, after any correction.
notesNoWhat was corrected or left out, such as a value outside its range.
stepsNoThe bake, step by step, in order.
starterNo
ready_atNoWhen the bread comes out of the oven.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "description": "A sourdough bake planned backwards from when the bread should be ready.",
      +  "properties": {
      +    "input": {
      +      "description": "The arguments as the tool used them, after any correction.",
      +      "properties": {},
      +      "type": "object"
      +    },
      +    "note": {
      +      "description": "A remark on the whole result, such as why nothing was found.",
      +      "type": "string"
      +    },
      +    "notes": {
      +      "description": "What was corrected or left out, such as a value outside its range.",
      +      "items": {
      +        "description": "A correction or remark.",
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "ready_at": {
      +      "description": "When the bread comes out of the oven.",
      +      "type": "string"
      +    },
      +    "starter": {
      +      "properties": {
      +        "bulk": {
      +          "description": "The bulk fermentation that goes with it.",
      +          "type": "string"
      +        },
      +        "for_kitchen": {
      +          "description": "The kitchen temperature the figures are for.",
      +          "type": "string"
      +        },
      +        "note": {
      +          "description": "How to read the figures.",
      +          "type": "string"
      +        },
      +        "percent_of_flour": {
      +          "description": "Starter as a share of the flour.",
      +          "type": "string"
      +        },
      +        "source": {
      +          "description": "Where in the book they come from.",
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "steps": {
      +      "description": "The bake, step by step, in order.",
      +      "items": {
      +        "properties": {
      +          "at": {
      +            "description": "When.",
      +            "type": "string"
      +          },
      +          "from": {
      +            "description": "From when, for a window.",
      +            "type": "string"
      +          },
      +          "hours": {
      +            "description": "How long it takes.",
      +            "type": "number"
      +          },
      +          "note": {
      +            "description": "What to look for.",
      +            "type": "string"
      +          },
      +          "step": {
      +            "description": "What to do.",
      +            "type": "string"
      +          },
      +          "until": {
      +            "description": "Until when, for a window.",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "tool": {
      +      "description": "The tool that answered.",
      +      "type": "string"
      +    },
      +    "url": {
      +      "description": "The same answer, recipe or entry on loafy.ai.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, so the description's remaining job is to add context — it does, disclosing the planning method (backwards from ready_at, per The Sourdough Framework), the returned artifact, and a link to the web plan. It doesn't discuss edge cases such as infeasible timelines or how out-of-range inputs are handled, which keeps it from 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and scope are front-loaded in the first sentence, and the final sentence is a useful routing pointer rather than filler. Minor redundancy in restating the product name twice ('Loafy's Bake Planner' / 'Bake Planner on loafy.ai').

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?

With an output schema present, annotations covering the safety profile, and full parameter coverage, an agent has everything needed: what it computes, which inputs matter, what comes back, and which siblings cover the adjacent calculations.

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

Parameters3/5

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

Schema coverage is 100%, so all four parameters are already documented, and the description largely restates the ready_at local-time convention already in the schema. It adds a small amount of framing (kitchen temperature driving starter amount) but no new syntax or fallback semantics beyond what the schema states.

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 and resource — 'Plan a sourdough bake backwards from when the bread should come out of the oven' — and enumerates the milestones produced (feed, mix, shape, cold proof, preheat, bake). It explicitly differentiates from siblings by assigning dough amounts to calculate_bread_dough and bulk timing to estimate_bulk_fermentation.

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?

Names both alternatives and the exact condition that selects them: amounts go to calculate_bread_dough, bulk duration at a given dough temperature goes to estimate_bulk_fermentation. An agent knows when this tool is the right one and where to hand off the sub-questions.

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