Pandough Agent API
에이전트에 Farina Prima를 가져오세요BETA
Pandough는 베이킹 엔진을 MCP 서버로 노출합니다. — Farina Prima, 즉 밀가루 퍼스트 방식을 기반으로 구축되었습니다. 밀가루를 먼저 정의한 다음, 거기서 레시피를 도출합니다 (밀가루를 나중에 고려하는 레시피 퍼스트 계산기와는 반대입니다). Claude, ChatGPT 또는 모든 Model Context Protocol 클라이언트를 연결하여 밀가루와 오븐을 검색하고, 정확한 그램량으로 베이킹을 계획하고, 반죽 문제를 해결할 수 있습니다.
엔드포인트
단일 키리스 공개 스트리밍 가능한 HTTP 엔드포인트가 모든 MCP 클라이언트에 서비스를 제공합니다.
https://pandough.app/api/mcpPOST https://pandough.app/api/mcpSSE 스트리밍을 사용하는 HTTP 기반 스테이트리스 JSON-RPC 2.0. 인증 또는 API 키가 필요하지 않습니다.
도구
6개의 도구를 사용할 수 있습니다. `plan_bake`를 제외한 모든 도구는 읽기 전용이며, `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` 브리지를 사용하여 `claude_desktop_config.json`에 Pandough를 추가하세요 (HTTP 엔드포인트를 Claude Desktop의 stdio 전송으로 프록시합니다).
{
"mcpServers": {
"pandough": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://pandough.app/api/mcp"]
}
}
}Claude Desktop을 다시 시작하세요. Pandough 도구는 도구 메뉴에 나타납니다.
ChatGPT 및 HTTP 클라이언트 연결
모든 HTTP MCP 클라이언트 (ChatGPT 사용자 지정 커넥터, 자체 에이전트 런타임 등)를 엔드포인트로 지정하고 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% 수화율로, 밀가루 블렌드 (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`)는 효모량과 타이밍의 주요 결정 요인이므로, 사용자가 이를 알고 있을 때마다 전달하세요. Pandough에서 열기 링크는 `blendInline`을 통한 블렌드를 포함하여 모든 매개변수를 미리 채워주므로, 사용자는 로그인하지 않은 상태에서도 앱에서 계속 편집할 수 있습니다.
속도 제한
공개 엔드포인트는 IP당 최선을 다하는 속도 제한을 적용합니다.
- •30 요청 / 분 (IP당)
- •300 요청 / 시간 (IP당)
제한을 초과하면 `Retry-After` 헤더와 JSON-RPC 오류 (코드 -32029)와 함께 HTTP 429가 반환됩니다. 표시된 시간(초) 후에 백오프하고 다시 시도하세요.