Skip to main content
Glama

Loafy: Sourdough Bread Baking

My Loafy bake journal

list_my_bakes
Read-onlyIdempotent

The baker's own bakes from their Loafy bake journal, newest first: what was baked and when, the recipe figures, rating, problems and notes, each with its id and a link. A new bake is log_bake, a change to one is update_bake with its id. Needs the baker's Loafy account.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "list_my_bakes"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoHow many bakes, newest first.
bake_typeNoOnly bakes of this kind, e.g. sourdough_bread or pizza.

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.
bakesNoNewest first.
inputNoThe arguments as the tool used them, after any correction.
notesNoWhat was corrected or left out, such as a value outside its range.
in_journalNoAll bakes in the journal.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / bakes / items / properties / add_ins
      Added value: +{
      +  "description": "What else went into the dough, in the baker's order.",
      +  "items": {
      +    "properties": {
      +      "grams": {
      +        "description": "Grams, when given.",
      +        "type": "integer"
      +      },
      +      "label": {
      +        "description": "The baker's own add-in in their words.",
      +        "type": "string"
      +      },
      +      "name": {
      +        "description": "One of the list, such as walnuts, or other for the baker's own.",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / bakes / items / properties / ph_readings
      Added value: +{
      +  "description": "What the baker's pH meter read, in the order of the dough's day.",
      +  "items": {
      +    "properties": {
      +      "step": {
      +        "description": "Where it was read, such as starter_ready or end_of_bulk.",
      +        "type": "string"
      +      },
      +      "value": {
      +        "description": "The pH.",
      +        "type": "number"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  3. Changed20 schema fields changed
    • addedOutput schema / properties / bakes / items / properties / autolyse_minutes
      Added value: +{
      +  "description": "Minutes of rest before mixing.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / bakes / items / properties / bake_level
      Added value: +{
      +  "description": "A stove's dial while baking.",
      +  "type": "integer"
      +}
    • changedOutput schema / properties / bakes / items / properties / bake_minutes / description
      Previous value: -"Minutes in the oven."New value: +"Minutes in the oven; with two phases, the first."
    • changedOutput schema / properties / bakes / items / properties / bake_temp_celsius / description
      Previous value: -"Oven temperature, °C."New value: +"Oven temperature, °C; with two phases, the first."
    • addedOutput schema / properties / bakes / items / properties / baking_method
      Added value: +{
      +  "description": "What it was baked in.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / bakes / items / properties / dough_rise_percent
      Added value: +{
      +  "description": "How much the dough grew in bulk, %.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / bakes / items / properties / dry_yeast_percent
      Added value: +{
      +  "description": "Dry yeast as a share.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / bakes / items / properties / fermentolyse
      Added value: +{
      +  "description": "The rest was a fermentolyse, with the starter in.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / bakes / items / properties / flour_amounts
      Added value: +{
      +  "description": "The flours, with their grams.",
      +  "items": {
      +    "properties": {
      +      "grams": {
      +        "description": "Its grams.",
      +        "type": "integer"
      +      },
      +      "name": {
      +        "description": "The flour's kind.",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / bakes / items / properties / flours
      Added value: +{
      +  "description": "The flours used, without grams.",
      +  "items": {
      +    "description": "A flour's kind.",
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / bakes / items / properties / fresh_yeast_percent
      Added value: +{
      +  "description": "Fresh yeast as a share.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / bakes / items / properties / other_bake_type_description
      Added value: +{
      +  "description": "What was baked, when bake_type is other.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / bakes / items / properties / piece_weight_grams
      Added value: +{
      +  "description": "What one piece weighed, in grams.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / bakes / items / properties / pieces
      Added value: +{
      +  "description": "How many pieces the dough made.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / bakes / items / properties / preheat_level
      Added value: +{
      +  "description": "A stove's dial while heating.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / bakes / items / properties / preheat_temp_celsius
      Added value: +{
      +  "description": "Preheat temperature, °C.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / bakes / items / properties / proof_rise_percent
      Added value: +{
      +  "description": "How much more it grew in the proof, %.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / bakes / items / properties / second_bake_minutes
      Added value: +{
      +  "description": "Minutes of the second phase.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / bakes / items / properties / second_bake_temp_celsius
      Added value: +{
      +  "description": "Oven temperature of the second phase, °C.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / bakes / items / properties / stretch_fold_count
      Added value: +{
      +  "description": "Sets of stretch and folds.",
      +  "type": "integer"
      +}
  4. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "description": "The baker's bakes.",
      +  "properties": {
      +    "bakes": {
      +      "description": "Newest first.",
      +      "items": {
      +        "description": "A bake in the baker's journal.",
      +        "properties": {
      +          "bake_minutes": {
      +            "description": "Minutes in the oven.",
      +            "type": "number"
      +          },
      +          "bake_temp_celsius": {
      +            "description": "Oven temperature, °C.",
      +            "type": "number"
      +          },
      +          "bake_type": {
      +            "description": "What was baked.",
      +            "type": "string"
      +          },
      +          "baked_on": {
      +            "description": "The day, YYYY-MM-DD.",
      +            "type": "string"
      +          },
      +          "bulk_hours": {
      +            "description": "Hours of bulk fermentation.",
      +            "type": "number"
      +          },
      +          "bulk_temp_celsius": {
      +            "description": "Temperature during bulk, °C.",
      +            "type": "number"
      +          },
      +          "fridge_proof_hours": {
      +            "description": "Hours in the fridge.",
      +            "type": "number"
      +          },
      +          "hydration_percent": {
      +            "description": "Water as a share of the flour.",
      +            "type": "number"
      +          },
      +          "id": {
      +            "description": "The bake's id, which update_bake takes.",
      +            "type": "string"
      +          },
      +          "next_time_notes": {
      +            "description": "What to try next time.",
      +            "type": "string"
      +          },
      +          "notes": {
      +            "description": "The baker's notes.",
      +            "type": "string"
      +          },
      +          "photos": {
      +            "description": "How many photos it has.",
      +            "type": "integer"
      +          },
      +          "problems": {
      +            "description": "What went wrong.",
      +            "items": {
      +              "description": "A problem, such as flat or dense.",
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "rating": {
      +            "description": "Stars, 1 to 5.",
      +            "type": "integer"
      +          },
      +          "room_temp_proof_hours": {
      +            "description": "Hours of proof at room temperature.",
      +            "type": "number"
      +          },
      +          "salt_percent": {
      +            "description": "Salt as a share.",
      +            "type": "number"
      +          },
      +          "starter": {
      +            "description": "The starter it was made with.",
      +            "type": "string"
      +          },
      +          "starter_percent": {
      +            "description": "Starter as a share.",
      +            "type": "number"
      +          },
      +          "url": {
      +            "description": "The bake on loafy.ai.",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "in_journal": {
      +      "description": "All bakes in the journal.",
      +      "type": "integer"
      +    },
      +    "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"
      +    },
      +    "tool": {
      +      "description": "The tool that answered.",
      +      "type": "string"
      +    },
      +    "url": {
      +      "description": "The same answer, recipe or entry on loafy.ai.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  5. First observed

TDQS

A4.3/5.0
Behavior4/5

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

The annotations already establish that this is a read-only, idempotent, non-destructive, closed-world operation. The description adds useful context beyond that: newest-first ordering, the fields shown for each bake, the presence of ids and links, and the account requirement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The definition is compact and front-loaded: it leads with what the tool returns, then gives related-tool routing and the account prerequisite. Every sentence adds useful information without repetition.

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 simple, well-annotated list tool with a full input schema and an output schema, the description covers the important context: scope, ordering, returned content, account need, and related mutation tools.

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 description coverage is 100%, so both parameters are already well documented. The description supports the ordering context and the kind of records returned, but it does not add meaning beyond the schema for limit or bake_type.

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 names a specific resource — the baker's own bakes from their Loafy bake journal — and states the result ordering and contents. It distinguishes the read/list operation from the sibling mutation tools log_bake and update_bake.

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 clearly routes creation to log_bake and modification to update_bake, and notes the Loafy account prerequisite. It does not explicitly state when not to use this tool, such as when another listing tool would be appropriate, but the context is clear.

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