Pandough

API Pandough Agent

Intégrez Farina Prima à votre agentBETA

Pandough expose son moteur de panification sous forme de serveur MCP — basé sur Farina Prima, la méthode « la farine d'abord » : définissez d'abord votre farine, puis déduisez-en la recette (à l'inverse des calculateurs basés sur la recette qui traitent la farine comme un détail secondaire). Connectez Claude, ChatGPT ou n'importe quel client Model Context Protocol pour rechercher des farines et des fours, planifier une cuisson avec des grammages précis et diagnostiquer votre pâte.

Point de terminaison

Un unique point de terminaison HTTP Streamable public et sans clé dessert tous les clients MCP :

Point de terminaison MCP
https://pandough.app/api/mcp
POST https://pandough.app/api/mcp

JSON-RPC 2.0 sans état sur HTTP avec streaming SSE. Aucune authentification ni clé API requise.

Outils

6 outils sont disponibles. Ils sont tous en lecture seule, à l'exception de plan_bake, qui effectue un calcul (aucune donnée n'est écrite).

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.

EntréeTypeRequisDescription
querystringnonSearch term (name, brand, or type). Max 200 chars.
tagstringnonFilter by tag (e.g. 'pizza', 'bread', 'pastry'). Max 50 chars.

Retourne : 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.

EntréeTypeRequisDescription
slugstringouiFlour slug from search_flours (e.g. 'caputo-pizzeria', 'manitoba-oro'). 1–120 chars.

Retourne : 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.

Retourne : 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.

EntréeTypeRequisDescription
recipeSlugstringouiRecipe 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.
flourSlugstringnonFlour 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 }nonA 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.
hydrationPercentnumbernonTarget hydration percentage (40–110).
servingsnumber (integer)nonNumber of portions/pizzas (1–50, default depends on recipe).
roomTempHoursnumbernonRoom-temperature fermentation hours (0–168).
fridgeTempHoursnumbernonCold fermentation hours (0–168).
roomTempCelsiusnumbernonThe user's real kitchen temperature in °C (2–40). The single biggest driver of yeast amount and timing — ask the user for it.
fridgeTempCelsiusnumbernonThe user's real fridge temperature in °C (0–12). Ask the user when a cold ferment is involved.
bakeTimestring (ISO 8601)nonTarget bake time as an ISO 8601 datetime (e.g. '2026-06-10T18:00:00Z'). Must be in the future.
localestringnonUI locale for the returned calculator link (e.g. 'en', 'pl', 'it'). Defaults to 'en'.

Retourne : 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.

EntréeTypeRequisDescription
issuestringouiThe baking issue or question (e.g. 'sticky dough', 'no oven spring', 'cold proof technique'). 1–300 chars.

Retourne : 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.

EntréeTypeRequisDescription
querystringnonSearch term (oven name, brand). Max 200 chars.
typestringnonOven type filter (e.g. 'pizza-oven', 'home-oven', 'outdoor'). Max 50 chars.

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

Connecter Claude Desktop (stdio)

Ajoutez Pandough à votre fichier claude_desktop_config.json en utilisant le pont mcp-remote (il sert de proxy entre le point de terminaison HTTP et le transport stdio de Claude Desktop) :

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

Redémarrez Claude Desktop. Les outils Pandough apparaîtront dans le menu des outils.

Connecter ChatGPT et les clients HTTP

Pointez n'importe quel client MCP HTTP (connecteurs personnalisés ChatGPT, votre propre runtime d'agent, etc.) vers le point de terminaison et communiquez en JSON-RPC 2.0. Listez les outils disponibles avec :

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

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

Exemple : plan_bake

Planifiez quatre pizzas napolitaines à 65 % d'hydratation avec un mélange de farines (70 % Caputo Pizzeria + 30 % Manitoba Oro), en indiquant les températures réelles de la cuisine et du réfrigérateur du boulanger, un pointage court à température ambiante, un apprêt au froid d'une nuit, et un lien vers le calculateur italien :

Requête

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"
    }
  }
}

Exemple de réponse

{
  "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"
      }
    ]
  }
}

La quantité de levure, le calendrier et les avertissements sont calculés par le même moteur qui propulse le calculateur Pandough — et ils tiennent compte de la farine : transmettre un flourSlug ou un flourBlend adapte la plage d'hydratation recommandée et affiche un avertissement si votre hydratation cible en sort. Les températures ambiante et du réfrigérateur (roomTempCelsius / fridgeTempCelsius) sont les facteurs déterminants pour la quantité de levure et les temps de fermentation, transmettez-les donc dès que l'utilisateur les connaît. Le lien Ouvrir dans Pandough pré-remplit chaque paramètre — y compris le mélange via blendInline — afin que l'utilisateur puisse continuer l'édition dans l'application, même sans être connecté.

Limites de requêtes

Le point de terminaison public applique une limite de requêtes par IP au mieux :

  • 30 requêtes / minute par IP
  • 300 requêtes / heure par IP

Le dépassement d'une limite renvoie une erreur HTTP 429 avec un en-tête Retry-After et une erreur JSON-RPC (code -32029). Patientez et réessayez après le nombre de secondes indiqué.