Pandough Agent API
Farina PrimaをあなたのAIエージェントにBETA
Pandoughは、製パンエンジンをMCPサーバーとして公開しています。これは、小麦粉を後回しにする従来のレシピ優先の計算機とは異なり、まず小麦粉を定義してからレシピを導き出す「粉ファースト」メソッド(Farina Prima)に基づいています。Claude、ChatGPT、またはその他のModel Context Protocolクライアントを接続して、小麦粉やオーブンの検索、正確なグラム数での製パン計画の作成、生地のトラブルシューティングなどを行えます。
エンドポイント
キー不要の公開Streamable HTTPエンドポイント1つで、すべてのMCPクライアントに対応します:
https://pandough.app/api/mcpPOST https://pandough.app/api/mcpSSEストリーミングを使用した、HTTP上のステートレスなJSON-RPC 2.0。認証やAPIキーは不要です。
ツール
6個のツールが利用可能です。計算を行う `plan_bake`(データの書き込みは行いません)を除き、すべて読み取り専用です。
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.
| 入力 | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | なし | Search term (name, brand, or type). Max 200 chars. |
| tag | string | なし | Filter by tag (e.g. 'pizza', 'bread', 'pastry'). Max 50 chars. |
返り値: 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.
| 入力 | 型 | 必須 | 説明 |
|---|---|---|---|
| slug | string | あり | Flour slug from search_flours (e.g. 'caputo-pizzeria', 'manitoba-oro'). 1–120 chars. |
返り値: 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.
返り値: 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.
| 入力 | 型 | 必須 | 説明 |
|---|---|---|---|
| recipeSlug | string | あり | Recipe 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. |
| flourSlug | string | なし | Flour slug from search_flours (e.g. 'caputo-pizzeria'). Tailors hydration + warnings to the flour. Mutually exclusive with flourBlend. Max 120 chars. |
| flourBlend | array of { flourSlug, percent } | なし | A 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. |
| hydrationPercent | number | なし | Target hydration percentage (40–110). |
| servings | number (integer) | なし | Number of portions/pizzas (1–50, default depends on recipe). |
| roomTempHours | number | なし | Room-temperature fermentation hours (0–168). |
| fridgeTempHours | number | なし | Cold fermentation hours (0–168). |
| roomTempCelsius | number | なし | The user's real kitchen temperature in °C (2–40). The single biggest driver of yeast amount and timing — ask the user for it. |
| fridgeTempCelsius | number | なし | The user's real fridge temperature in °C (0–12). Ask the user when a cold ferment is involved. |
| bakeTime | string (ISO 8601) | なし | Target bake time as an ISO 8601 datetime (e.g. '2026-06-10T18:00:00Z'). Must be in the future. |
| locale | string | なし | UI locale for the returned calculator link (e.g. 'en', 'pl', 'it'). Defaults to 'en'. |
返り値: 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.
| 入力 | 型 | 必須 | 説明 |
|---|---|---|---|
| issue | string | あり | The baking issue or question (e.g. 'sticky dough', 'no oven spring', 'cold proof technique'). 1–300 chars. |
返り値: 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.
| 入力 | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | なし | Search term (oven name, brand). Max 200 chars. |
| type | string | なし | Oven type filter (e.g. 'pizza-oven', 'home-oven', 'outdoor'). Max 50 chars. |
返り値: Up to 10 matching ovens, each with name, brand, slug, type, max temperature, fuel type, and tags.
Claude Desktopの接続 (stdio)
mcp-remoteブリッジ(HTTPエンドポイントをClaude Desktopのstdioトランスポートにプロキシします)を使用して、`claude_desktop_config.json` にPandoughを追加します:
{
"mcpServers": {
"pandough": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://pandough.app/api/mcp"]
}
}
}Claude Desktopを再起動してください。ツールメニューにPandoughのツールが表示されます。
ChatGPTおよびHTTPクライアントの接続
任意のHTTP MCPクライアント(ChatGPTのカスタムコネクター、独自のAIエージェント実行環境など)の接続先をこのエンドポイントに設定し、JSON-RPC 2.0で通信します。利用可能なツールの一覧は以下で取得できます:
POST https://pandough.app/api/mcp
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}例:plan_bake
加水率65%のナポリピッツァ4枚分を、ブレンド粉(Caputo Pizzeria 70% + Manitoba Oro 30%)を使用し、実際のキッチンと冷蔵庫の温度、短時間の常温一次発酵(バルク)、一晩の冷蔵低温発酵、そしてイタリア式計算機リンクを含めて計画する場合:
リクエスト
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"
}
}
}レスポンス例
{
"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"
}
]
}
}イーストの量、スケジュール、および警告は、Pandough計算機を動かしているものと同じエンジンによって計算されます。これらは小麦粉の特性を考慮しています。`flourSlug` または `flourBlend` を渡すことで、推奨される加水率の範囲が調整され、目標加水率がその範囲から外れている場合は警告が表示されます。室温と冷蔵庫の温度(`roomTempCelsius` / `fridgeTempCelsius`)は、イーストの量と発酵時間に最も大きな影響を与えるため、ユーザーが把握している場合は必ず指定してください。「Open in Pandough」リンクには、`blendInline` によるブレンド情報を含むすべてのパラメータがあらかじめ入力されているため、ユーザーはサインアウトした状態でも、アプリ上で編集を続けることができます。
レート制限
公開エンドポイントには、IPごとのベストエフォートなレート制限が適用されます:
- •30 リクエスト / 分(IPごと)
- •300 リクエスト / 時間(IPごと)
制限を超えると、`Retry-After` ヘッダーとJSON-RPCエラー(コード `-32029`)を含むHTTP 429が返されます。指定された秒数が経過した後にリトライしてください。