Pandough

Pandough Agent API

Breng Farina Prima naar je agentBETA

Pandough stelt zijn bakkersengine beschikbaar als een MCP-server — gebouwd op Farina Prima, de bloem-eerst-methode: definieer eerst je bloem en leid daar het recept van af (het tegenovergestelde van recept-eerst-calculators die bloem als een bijzaak behandelen). Koppel Claude, ChatGPT of een andere Model Context Protocol-client om bloemsoorten en ovens te zoeken, een baksessie te plannen met exacte grammen en deegproblemen op te lossen.

Endpoint

Eén sleutelloos, openbaar Streamable HTTP-endpoint bedient elke MCP-client:

MCP-endpoint
https://pandough.app/api/mcp
POST https://pandough.app/api/mcp

Stateless JSON-RPC 2.0 over HTTP met SSE-streaming. Geen authenticatie of API-sleutel vereist.

Tools

Er zijn 6 tools beschikbaar. Alle tools zijn alleen-lezen, behalve `plan_bake`, die een berekening uitvoert (er worden geen gegevens opgeslagen).

search_flours

Search the Pandough flour database. Returns flour names, protein %, W strength, hydration ranges, and types. Use this to help users find the right flour for their bake.

InvoerTypeVereistOmschrijving
querystringneeSearch term (name, brand, or type). Max 200 chars.
tagstringneeFilter by tag (e.g. 'pizza', 'bread', 'pastry'). Max 50 chars.

Retourneert: Up to 10 matching flours, each with name, brand, slug, protein %, W strength, type, and hydration range.

get_flour_details

Get detailed information about a specific flour by its slug. Returns full profile including protein, W strength, hydration curve, maturation profiles, and description.

InvoerTypeVereistOmschrijving
slugstringjaFlour slug from search_flours (e.g. 'caputo-pizzeria', 'manitoba-oro'). 1–120 chars.

Retourneert: A single flour profile: name, brand, type, protein %, W strength, hydration range, tags, and description.

list_recipes

List the dough recipe styles plan_bake supports. Call this when a user names a style (Neapolitan, classica, focaccia, bread, baguette) so you pass the correct recipeSlug instead of guessing — and so you never confuse a style word like 'classica' with a flour whose name contains it.

Retourneert: Every supported recipe style: slug, name, dough type, default hydration range, and a typical bulk → cold → final-proof schedule.

plan_bake

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) 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. (2) Their room temperature and fridge temperature — pass roomTempCelsius/fridgeTempCelsius; temperature is the dominant driver of yeast amount and timing. (3) 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. Don't interrogate a user who already gave a full brief.

InvoerTypeVereistOmschrijving
recipeSlugstringjaRecipe type slug. Supported: neapolitan-pizza, classica-pizza, focaccia, artisan-bread, baguette (call list_recipes for the canonical list). Pass the user's style here — don't substitute a flour whose name contains the style word. 1–120 chars.
flourSlugstringneeFlour slug from search_flours (e.g. 'caputo-pizzeria'). Tailors hydration + warnings to the flour. Mutually exclusive with flourBlend. Max 120 chars.
flourBlendarray of { flourSlug, percent }neeA weighted blend of 2–5 flours summing to 100%, e.g. [{flourSlug:'caputo-pizzeria',percent:70},{flourSlug:'manitoba-oro',percent:30}]. Properties are weight-averaged into a virtual flour. Mutually exclusive with flourSlug.
hydrationPercentnumberneeTarget hydration percentage (40–110).
servingsnumber (integer)neeNumber of portions/pizzas (1–50, default depends on recipe).
roomTempHoursnumberneeRoom-temperature fermentation hours (0–168).
fridgeTempHoursnumberneeCold fermentation hours (0–168).
roomTempCelsiusnumberneeThe user's real kitchen temperature in °C (2–40). The single biggest driver of yeast amount and timing — ask the user for it.
fridgeTempCelsiusnumberneeThe user's real fridge temperature in °C (0–12). Ask the user when a cold ferment is involved.
bakeTimestring (ISO 8601)neeTarget bake time as an ISO 8601 datetime (e.g. '2026-06-10T18:00:00Z'). Must be in the future.
localestringneeUI locale for the returned calculator link (e.g. 'en', 'pl', 'it'). Defaults to 'en'.

Retourneert: Total dough weight, auto-sized yeast (grams + baker's %), per-ingredient amounts (grams + %), a warm/cold/final-proof schedule, dough warnings, and an 'Open in Pandough' calculator link with every parameter prefilled.

troubleshoot

Search the Pandough baking knowledge base for troubleshooting advice, technique guides, and flour science. Returns curated expert content about common baking issues.

InvoerTypeVereistOmschrijving
issuestringjaThe baking issue or question (e.g. 'sticky dough', 'no oven spring', 'cold proof technique'). 1–300 chars.

Retourneert: Up to 3 curated knowledge-base articles, each with a title, category, and full body content.

search_ovens

Search the Pandough oven database. Returns oven specs (max temperature, type, fuel) plus recommended bake settings — top/deck heat, bake time, and deck material — computed for a Neapolitan pizza by the same heat engine the site uses.

InvoerTypeVereistOmschrijving
querystringneeSearch term (oven name, brand). Max 200 chars.
typestringneeOven type filter (e.g. 'pizza-oven', 'home-oven', 'outdoor'). Max 50 chars.

Retourneert: Up to 10 matching ovens, each with name, brand, slug, type, max temperature, fuel type, and tags.

Claude Desktop koppelen (stdio)

Voeg Pandough toe aan je `claude_desktop_config.json` met behulp van de `mcp-remote`-bridge (deze stuurt het HTTP-endpoint door naar het stdio-transport van Claude Desktop):

{
  "mcpServers": {
    "pandough": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://pandough.app/api/mcp"]
    }
  }
}

Herstart Claude Desktop. De Pandough-tools verschijnen in het tools-menu.

ChatGPT & HTTP-clients koppelen

Verwijs elke HTTP MCP-client (zoals aangepaste ChatGPT-connectors of je eigen agent-runtime) naar het endpoint en communiceer via JSON-RPC 2.0. Vraag de beschikbare tools op met:

POST https://pandough.app/api/mcp
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list",
  "params": {}
}

Voorbeeld: plan_bake

Plan vier Napolitaanse pizza's met een hydratatie van 65% op basis van een bloemmengsel (70% Caputo Pizzeria + 30% Manitoba Oro), rekening houdend met de werkelijke keuken- en koelkasttemperatuur van de bakker, een korte warme bulkrijs, een koude rijs van een nacht in de koelkast, en een Italiaanse calculatorlink:

Verzoek

POST https://pandough.app/api/mcp
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "plan_bake",
    "arguments": {
      "recipeSlug": "neapolitan-pizza",
      "flourBlend": [
        { "flourSlug": "caputo-pizzeria", "percent": 70 },
        { "flourSlug": "manitoba-oro", "percent": 30 }
      ],
      "hydrationPercent": 65,
      "servings": 4,
      "roomTempCelsius": 22,
      "fridgeTempCelsius": 4,
      "roomTempHours": 4,
      "fridgeTempHours": 20,
      "locale": "it"
    }
  }
}

Voorbeeld van respons

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "# Bake Plan\n\n**Total dough:** 1120g\n**Yeast:** 0.4g (0.06%) instant-dry\n\n## Ingredients\n  Pizzeria-ORO: 671g (100%)\n  Water: 436g (65%)\n  Salt: 19g (2.8%)\n  Yeast: 0.4g (0.06%)\n\n## Schedule\n  Warm bulk fermentation: 4h at 22°C\n  Cold fermentation (fridge): 20h at 4°C\n  Final proof: 2h at 22°C\n\n## Warnings\n  - 65% hydration is above Pizzeria-ORO's recommended range (57–64%) — expect a slack, hard-to-handle dough.\n\n## Open in Pandough\nOpen this calculator link to continue editing the bake:\nhttps://pandough.app/it/calculator?recipe=neapolitan-pizza&n=4&w=280&h=65&rt=4&ft=20&y=0.06&blendInline=caputo-pizzeria:70,manitoba-oro:30&source=mcp&aid=1a2b3c4d"
      }
    ]
  }
}

De hoeveelheid gist, het schema en de waarschuwingen worden berekend door dezelfde engine die de Pandough-calculator aandrijft — en ze houden rekening met de gebruikte bloem: door een `flourSlug` of `flourBlend` mee te geven, wordt de aanbevolen hydratatiemarge aangepast en verschijnt er een waarschuwing als je doelhydratatie daarbuiten valt. De kamer- en koelkasttemperatuur (`roomTempCelsius` / `fridgeTempCelsius`) zijn de belangrijkste factoren voor de hoeveelheid gist en de timing, dus geef deze altijd mee als de gebruiker ze weet. De link 'Openen in Pandough' vult alle parameters vooraf in — inclusief de blend via `blendInline` — zodat de gebruiker kan blijven bewerken in de app, zelfs zonder ingelogd te zijn.

Limieten (rate limits)

Het openbare endpoint hanteert een best-effort limiet per IP-adres:

  • 30 verzoeken / minuut per IP
  • 300 verzoeken / uur per IP

Bij het overschrijden van een limiet wordt HTTP 429 geretourneerd met een `Retry-After`-header en een JSON-RPC-fout (code -32029). Wacht even en probeer het opnieuw na het aangegeven aantal seconden.