Skip to main content
Glama

Loafy: Sourdough Bread Baking

Start a guided journey

start_sourdough_journey
Read-onlyIdempotent

Start one of Loafy's guided journeys and get the link that opens it at the first step. The journey runs on loafy.ai, where each fold, proof and bake is timed for the baker.

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": {
      "slug": "<slug>"
    },
    "name": "start_sourdough_journey"
  }
}

Input Schema

NameRequiredDescriptionDefault
slugYesJourney identifier from list_sourdough_journeys, e.g. "sourdough-bread", or the journey's title.

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.
journeyNo
first_stepNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / slug / description
      Previous value: -"Journey identifier from list_sourdough_journeys, e.g. \"sourdough-bread\"."New value: +"Journey identifier from list_sourdough_journeys, e.g. \"sourdough-bread\", or the journey's title."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "description": "A guided journey and its first step.",
      +  "properties": {
      +    "first_step": {
      +      "properties": {
      +        "id": {
      +          "description": "The step's identifier.",
      +          "type": "string"
      +        },
      +        "timer_minutes": {
      +          "description": "Its timer, when the step has one.",
      +          "type": "integer"
      +        },
      +        "title": {
      +          "description": "Its title.",
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "input": {
      +      "description": "The arguments as the tool used them, after any correction.",
      +      "properties": {},
      +      "type": "object"
      +    },
      +    "journey": {
      +      "properties": {
      +        "description": {
      +          "description": "What it covers.",
      +          "type": "string"
      +        },
      +        "difficulty": {
      +          "description": "How hard it is.",
      +          "type": "string"
      +        },
      +        "duration": {
      +          "description": "How long it takes.",
      +          "type": "string"
      +        },
      +        "slug": {
      +          "description": "The journey's identifier.",
      +          "type": "string"
      +        },
      +        "steps": {
      +          "description": "How many steps it has.",
      +          "type": "integer"
      +        },
      +        "title": {
      +          "description": "Its title.",
      +          "type": "string"
      +        },
      +        "url": {
      +          "description": "The journey on loafy.ai.",
      +          "type": "string"
      +        }
      +      },
      +      "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"
      +}
  2. First observed

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds that the result is a link anchored at the first step and that the journey is time-driven on loafy.ai, which is useful context but not deep behavioral disclosure (no note on what starting actually creates or whether the link expires).

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?

Two short sentences, front-loaded with the action and the returned link. The closing clause about folds, proof and bake being 'timed for the baker' is atmospheric rather than operational, slightly diluting an otherwise tight description.

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?

With an output schema present, the description needn't explain return values, and annotations carry the safety profile, so the essentials are covered. The remaining gap is routing guidance versus the journey-step and journey-list siblings, which an agent must infer.

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% for the single required 'slug' parameter, and the schema itself tells the agent where the slug comes from (list_sourdough_journeys) and gives an example. The description adds nothing about the parameter, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/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 ('Start one of Loafy's guided journeys') and even describes the returned artifact ('the link that opens it at the first step'), so the action is unambiguous. It does not, however, explicitly differentiate itself from sibling get_sourdough_journey_step or list_sourdough_journeys, so it stops short of a 5.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer you call this to begin a journey rather than read a step, but the description never says when to prefer this over get_sourdough_journey_step or plan_sourdough_bake. The prerequisite (obtain a slug from list_sourdough_journeys) appears only in the schema, not the description.

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