MCP 서버

Barbaro

io.github.jeffforderer/barbaro
기타 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Provides published pizza, flour, and ingredient lookup, dough and ingredient-balance calculations, bake planning, and shopping-list generation.

calculate_balance
Calculate ingredient balance
Calculate six balance contribution totals and meters for unique published ingredient IDs. Not nutrition or ingredient weights. No persistence.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['ingredientIds'], 'properties': {'ingredientIds': {'type': 'array', 'items': {'type': 'string', 'pattern': '^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$', 'maxLength': 36, 'minLength': 1}, 'maxItems': 40, 'uniqueItems': True}}, 'additionalProperties': False}
calculate_dough
Calculate dough
Calculate a dough formula from explicit gram sizing, percentages and published or custom flours. Returns quantities, warnings, source information and a Dough continuation link. No persistence.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['units', 'sizing', 'hydration', 'flours'], 'properties': {'dmp': {'type': 'number', 'default': 0, 'maximum': 30, 'minimum': 0}, 'oil': {'type': 'number', 'default': 0, 'maximum': 30, 'minimum': 0}, 'pff': {'type': 'number', 'default': 0, 'maximum': 100, 'minimum': 0}, 'ndmp': {'type': 'number', 'default': 0, 'maximum': 30, 'minimum': 0}, 'salt': {'type': 'number', 'default': 0, 'maximum': 10, 'minimum': 0}, 'honey': {'type': 'number', 'default': 0, 'maximum': 30, 'minimum': 0}, 'sugar': {'type': 'number', 'default': 0, 'maximum': 30, 'minimum': 0}, 'units': {'type': 'string', 'const': 'g'}, 'buffer': {'oneOf': [{'type': 'object', 'required': ['mode'], 'properties': {'mode': {'enum': ['off', 'recommended']}}, 'additionalProperties': False}, {'type': 'object', 'required': ['mode', 'grams'], 'properties': {'mode': {'const': 'custom'}, 'grams': {'type': 'number', 'maximum': 10000, 'minimum': 0}}, 'additionalProperties': False}], 'default': {'mode': 'off'}}, 'flours': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'pct', 'bigaPct', 'source'], 'properties': {'id': {'type': 'string', 'pattern': '^(?!blend$|__proto__$|constructor$|prototype$)[A-Za-z0-9][A-Za-z0-9_-]*$', 'maxLength': 64, 'minLength': 1}, 'pct': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'source': {'oneOf': [{'type': 'object', 'required': ['type', 'ref'], 'properties': {'ref': {'type': 'string', 'pattern': '^(?:[a-z0-9]+(?:-[a-z0-9]+)*|[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12})$', 'maxLength': 100, 'minLength': 1}, 'type': {'const': 'catalog'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'name'], 'properties': {'name': {'type': 'string', 'pattern': '\\S', 'maxLength': 100, 'minLength': 1}, 'type': {'const': 'custom'}}, 'additionalProperties': False}]}, 'bigaPct': {'type': 'number', 'maximum': 100, 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 12}, 'sizing': {'oneOf': [{'type': 'object', 'required': ['mode', 'flourGrams'], 'properties': {'mode': {'const': 'flour'}, 'flourGrams': {'type': 'number', 'maximum': 100000, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['mode', 'ballCount', 'ballGrams'], 'properties': {'mode': {'const': 'balls'}, 'ballCount': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'ballGrams': {'type': 'number', 'maximum': 2000, 'minimum': 50}}, 'additionalProperties': False}]}, 'prefIdy': {'type': 'number', 'default': 0, 'maximum': 20, 'minimum': 0, 'description': 'Instant dry yeast mass as a percentage of total flour, not preferment flour. Convert a Dough preferment-page percentage with pagePercent * effectiveBigaFlour / totalFlour, using actual allocated preferment flour from results. Only without an allocation shortfall is pagePercent * pff / 100 equivalent. A zero actual preferment-flour weight makes its stage percentage unavailable. Example with full allocation: 1.60 * 15 / 100 = 0.24, giving 4.8 g at 2000 g total flour.'}, 'prefIsd': {'type': 'number', 'default': 0, 'maximum': 20, 'minimum': 0, 'description': 'Instant sourdough mass as a percentage of total flour, not preferment flour. Convert a Dough preferment-page percentage with pagePercent * effectiveBigaFlour / totalFlour, using actual allocated preferment flour from results. Only without an allocation shortfall is pagePercent * pff / 100 equivalent. A zero actual preferment-flour weight makes its stage percentage unavailable. Example with full allocation: 1.60 * 15 / 100 = 0.24, giving 4.8 g at 2000 g total flour.'}, 'finalIdy': {'type': 'number', 'default': 0, 'maximum': 20, 'minimum': 0, 'description': 'Final-mix instant dry yeast mass as a percentage of total flour. No stage-basis conversion is required.'}, 'finalIsd': {'type': 'number', 'default': 0, 'maximum': 20, 'minimum': 0, 'description': 'Final-mix instant sourdough mass as a percentage of total flour. No stage-basis conversion is required.'}, 'hydration': {'type': 'number', 'maximum': 200, 'minimum': 0}, 'ascorbicAcid': {'type': 'number', 'default': 0, 'maximum': 1, 'minimum': 0}, 'bigaHydration': {'type': 'number', 'default': 50, 'maximum': 200, 'minimum': 0, 'description': 'Preferment water as a percentage of preferment flour.'}, 'nonfatDryMilk': {'type': 'number', 'default': 0, 'maximum': 30, 'minimum': 0}, 'starterPrefPct': {'type': 'number', 'default': 0, 'maximum': 200, 'minimum': 0, 'description': 'Preferment sourdough starter mass (including its flour and water) as a percentage of total flour, not preferment flour. Convert a Dough preferment-page percentage with pagePercent * effectiveBigaFlour / totalFlour, using actual allocated preferment flour from results. Only without an allocation shortfall is pagePercent * pff / 100 equivalent. A zero actual preferment-flour weight makes its stage percentage unavailable. Example with full allocation: 1.60 * 15 / 100 = 0.24, giving 4.8 g at 2000 g total flour.'}, 'reserveWaterPct': {'type': 'number', 'default': 5, 'maximum': 100, 'minimum': 0}, 'starterFinalPct': {'type': 'number', 'default': 0, 'maximum': 200, 'minimum': 0, 'description': 'Final-mix sourdough starter mass (including its flour and water) as a percentage of total flour. No stage-basis conversion is required.'}, 'customAdjustments': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'pct'], 'properties': {'id': {'type': 'string', 'pattern': '^c[0-9a-z]{5}$', 'maxLength': 6, 'minLength': 1}, 'pct': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'name': {'type': 'string', 'pattern': '^\\S(?:[\\s\\S]*\\S)?$', 'maxLength': 40, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 8, 'description': "Optional baker-named final-mix ingredients, up to 8, each a percentage of total flour. They count by weight only: they add to batch weight and ball sizing, never to hydration or flour absorption. Row IDs are c followed by five lowercase letters or digits, unique within the formula. Names are sent trimmed, 1 to 40 characters, unique ignoring case, and may not repeat one of Dough's own ingredient names such as Water, Salt, Oil or Sugar, or contain control, hidden or bidirectional characters or a web address. Any refused row fails the whole request."}, 'starterFlourSource': {'type': 'string', 'default': 'blend', 'maxLength': 64, 'minLength': 1, 'description': 'blend or a supplied flour row ID. Inactive starter normalizes to blend and 100% hydration.'}, 'starterHydrationPct': {'type': 'number', 'default': 100, 'maximum': 200, 'minimum': 40, 'description': 'Starter water as a percentage of starter flour, not total flour or starter mass.'}}, 'description': 'Percentages refer to total flour, except bigaHydration and starterHydrationPct. Flour rows are ratios, including empty/zero blends. Unique row IDs required. Named starter source must be a supplied row. Preferment leavening requires positive pff. No temperature inputs; preparation fixes DDT at 72 F and friction at 15 F. Buffer defaults off and non-off buffer requires balls sizing. Flour mode has no ball target: prepared ballCount/ballWeight are zero, ballsTotal is zero, bufferG is the whole batch and pizzaSize is unavailable. The 100000 g flour bound applies to direct flour inputs, not the balls solver result. Custom ingredients count by weight only and never in hydration.', 'additionalProperties': False}
get_flour
Read a published flour by UUID or slug
Read a published flour by UUID or slug. Returns public catalog data with source links and credits.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'pattern': '^(?:[a-z0-9]+(?:-[a-z0-9]+)*|[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12})$', 'maxLength': 100, 'minLength': 1, 'description': 'Canonical UUID or lowercase slug. UUIDs are case-insensitive; UUID-shaped identifiers resolve only as canonical IDs and cannot be slugs.'}}, 'additionalProperties': False}
get_ingredient
Read a published ingredient by UUID
Read a published ingredient by UUID. Returns public catalog data with source links and credits.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$', 'description': 'Canonical ingredient UUID only, case-insensitive. Ingredient slugs are not globally unique.'}}, 'additionalProperties': False}
get_pizza
Read a published house pizza by UUID or slug
Read a published house pizza by UUID or slug. Returns public catalog data with source links and credits.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'pattern': '^(?:[a-z0-9]+(?:-[a-z0-9]+)*|[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12})$', 'maxLength': 100, 'minLength': 1, 'description': 'Canonical UUID or lowercase slug. UUIDs are case-insensitive; UUID-shaped identifiers resolve only as canonical IDs and cannot be slugs.'}}, 'additionalProperties': False}
plan_bake
Plan a bake
Caller-provided sequential, contiguous stages ending when the first pizza enters the oven. Offset-bearing whole-minute instants must match the IANA zone. No fermentation prediction. Unique stage IDs, positive total duration, minimum <= maximum, available horizon and summed maxima <= 30 days. Windows are marginal, not independently selectable. No persistence.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['timeZone', 'availableFrom', 'bakeStartAt', 'method', 'stages'], 'properties': {'method': {'type': 'string', 'pattern': '\\S', 'maxLength': 100, 'minLength': 1}, 'stages': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'label', 'minMinutes', 'maxMinutes'], 'properties': {'id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9_-]*$', 'maxLength': 64, 'minLength': 1}, 'label': {'type': 'string', 'pattern': '\\S', 'maxLength': 100, 'minLength': 1}, 'maxMinutes': {'type': 'integer', 'maximum': 43200, 'minimum': 0}, 'minMinutes': {'type': 'integer', 'maximum': 43200, 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 16, 'minItems': 1}, 'timeZone': {'type': 'string', 'pattern': '^[A-Za-z_]+(?:/[A-Za-z0-9_+.-]+)*$', 'maxLength': 100, 'minLength': 1}, 'bakeStartAt': {'type': 'string', 'pattern': '^[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}(?::00)?(?:Z|[+-][0-9]{2}:[0-9]{2})$', 'maxLength': 25, 'minLength': 1}, 'availableFrom': {'type': 'string', 'pattern': '^[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}(?::00)?(?:Z|[+-][0-9]{2}:[0-9]{2})$', 'maxLength': 25, 'minLength': 1}}, 'description': 'Caller-provided sequential, contiguous stages ending when the first pizza enters the oven. Offset-bearing whole-minute instants must match the IANA zone. No fermentation prediction. Unique stage IDs, positive total duration, minimum <= maximum, available horizon and summed maxima <= 30 days. Windows are marginal, not independently selectable.', 'additionalProperties': False}
read_menu
Read published menu sections and their pizza IDs
Read published menu sections and their pizza IDs. Returns public catalog data with source links and credits.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {}, 'additionalProperties': False}
search_flours
Search published flour facts
Search published flour facts. Returns public catalog data with source links and credits.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {'q': {'type': 'string', 'default': '', 'maxLength': 120, 'description': 'Literal, case-insensitive name or brand substring. Surrounding whitespace is trimmed.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Decimal integer page size. Leading zeros, signs and fractions are rejected.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 500, 'minimum': 0, 'description': 'Decimal integer result offset. Leading zeros, signs and fractions are rejected.'}}, 'additionalProperties': False}
search_ingredients
Search published ingredient facts
Search published ingredient facts. Returns public catalog data with source links and credits.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {'q': {'type': 'string', 'default': '', 'maxLength': 120, 'description': 'Literal, case-insensitive name substring. Surrounding whitespace is trimmed.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Decimal integer page size. Leading zeros, signs and fractions are rejected.'}, 'course': {'enum': ['Sauce', 'Cheese', 'Toppings', 'Finishes'], 'type': 'string', 'description': 'One exact normalized course. No legacy-station fallback.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 500, 'minimum': 0, 'description': 'Decimal integer result offset. Leading zeros, signs and fractions are rejected.'}}, 'additionalProperties': False}
search_pizzas
Search published house pizzas
Search published house pizzas. Returns public catalog data with source links and credits.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {'q': {'type': 'string', 'default': '', 'maxLength': 120, 'description': 'Literal, case-insensitive substring of published names, descriptions or resolved ingredient names. Surrounding whitespace is trimmed.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Decimal integer page size. Leading zeros, signs and fractions are rejected.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 500, 'minimum': 0, 'description': 'Decimal integer result offset. Leading zeros, signs and fractions are rejected.'}}, 'additionalProperties': False}
shopping_list
Make a shopping list
One to eight uniquely identified, already-sized Dough requests. Optional unique published house pizza references and counts annotate topping needs only; they do not multiply dough. Custom flours and custom ingredients retain batch/row identity and are never merged across batches; a custom ingredient item's id is custom:<batchId>:<rowId>. Ready starter is separate from fresh ingredients. Topping quantities are unknown. No persistence.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['batches'], 'properties': {'pizzas': {'type': 'array', 'items': {'type': 'object', 'required': ['ref', 'count'], 'properties': {'ref': {'type': 'string', 'pattern': '^(?:[a-z0-9]+(?:-[a-z0-9]+)*|[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12})$', 'maxLength': 100, 'minLength': 1}, 'count': {'type': 'integer', 'maximum': 100, 'minimum': 1}}, 'additionalProperties': False}, 'maxItems': 20}, 'batches': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'dough'], 'properties': {'id': {'type': 'string', 'pattern': '^[A-Za-z0-9][A-Za-z0-9_-]*$', 'maxLength': 64, 'minLength': 1}, 'dough': {'type': 'object', 'required': ['units', 'sizing', 'hydration', 'flours'], 'properties': {'dmp': {'type': 'number', 'default': 0, 'maximum': 30, 'minimum': 0}, 'oil': {'type': 'number', 'default': 0, 'maximum': 30, 'minimum': 0}, 'pff': {'type': 'number', 'default': 0, 'maximum': 100, 'minimum': 0}, 'ndmp': {'type': 'number', 'default': 0, 'maximum': 30, 'minimum': 0}, 'salt': {'type': 'number', 'default': 0, 'maximum': 10, 'minimum': 0}, 'honey': {'type': 'number', 'default': 0, 'maximum': 30, 'minimum': 0}, 'sugar': {'type': 'number', 'default': 0, 'maximum': 30, 'minimum': 0}, 'units': {'type': 'string', 'const': 'g'}, 'buffer': {'oneOf': [{'type': 'object', 'required': ['mode'], 'properties': {'mode': {'enum': ['off', 'recommended']}}, 'additionalProperties': False}, {'type': 'object', 'required': ['mode', 'grams'], 'properties': {'mode': {'const': 'custom'}, 'grams': {'type': 'number', 'maximum': 10000, 'minimum': 0}}, 'additionalProperties': False}], 'default': {'mode': 'off'}}, 'flours': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'pct', 'bigaPct', 'source'], 'properties': {'id': {'type': 'string', 'pattern': '^(?!blend$|__proto__$|constructor$|prototype$)[A-Za-z0-9][A-Za-z0-9_-]*$', 'maxLength': 64, 'minLength': 1}, 'pct': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'source': {'oneOf': [{'type': 'object', 'required': ['type', 'ref'], 'properties': {'ref': {'type': 'string', 'pattern': '^(?:[a-z0-9]+(?:-[a-z0-9]+)*|[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12})$', 'maxLength': 100, 'minLength': 1}, 'type': {'const': 'catalog'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'name'], 'properties': {'name': {'type': 'string', 'pattern': '\\S', 'maxLength': 100, 'minLength': 1}, 'type': {'const': 'custom'}}, 'additionalProperties': False}]}, 'bigaPct': {'type': 'number', 'maximum': 100, 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 12}, 'sizing': {'oneOf': [{'type': 'object', 'required': ['mode', 'flourGrams'], 'properties': {'mode': {'const': 'flour'}, 'flourGrams': {'type': 'number', 'maximum': 100000, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['mode', 'ballCount', 'ballGrams'], 'properties': {'mode': {'const': 'balls'}, 'ballCount': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'ballGrams': {'type': 'number', 'maximum': 2000, 'minimum': 50}}, 'additionalProperties': False}]}, 'prefIdy': {'type': 'number', 'default': 0, 'maximum': 20, 'minimum': 0, 'description': 'Instant dry yeast mass as a percentage of total flour, not preferment flour. Convert a Dough preferment-page percentage with pagePercent * effectiveBigaFlour / totalFlour, using actual allocated preferment flour from results. Only without an allocation shortfall is pagePercent * pff / 100 equivalent. A zero actual preferment-flour weight makes its stage percentage unavailable. Example with full allocation: 1.60 * 15 / 100 = 0.24, giving 4.8 g at 2000 g total flour.'}, 'prefIsd': {'type': 'number', 'default': 0, 'maximum': 20, 'minimum': 0, 'description': 'Instant sourdough mass as a percentage of total flour, not preferment flour. Convert a Dough preferment-page percentage with pagePercent * effectiveBigaFlour / totalFlour, using actual allocated preferment flour from results. Only without an allocation shortfall is pagePercent * pff / 100 equivalent. A zero actual preferment-flour weight makes its stage percentage unavailable. Example with full allocation: 1.60 * 15 / 100 = 0.24, giving 4.8 g at 2000 g total flour.'}, 'finalIdy': {'type': 'number', 'default': 0, 'maximum': 20, 'minimum': 0, 'description': 'Final-mix instant dry yeast mass as a percentage of total flour. No stage-basis conversion is required.'}, 'finalIsd': {'type': 'number', 'default': 0, 'maximum': 20, 'minimum': 0, 'description': 'Final-mix instant sourdough mass as a percentage of total flour. No stage-basis conversion is required.'}, 'hydration': {'type': 'number', 'maximum': 200, 'minimum': 0}, 'ascorbicAcid': {'type': 'number', 'default': 0, 'maximum': 1, 'minimum': 0}, 'bigaHydration': {'type': 'number', 'default': 50, 'maximum': 200, 'minimum': 0, 'description': 'Preferment water as a percentage of preferment flour.'}, 'nonfatDryMilk': {'type': 'number', 'default': 0, 'maximum': 30, 'minimum': 0}, 'starterPrefPct': {'type': 'number', 'default': 0, 'maximum': 200, 'minimum': 0, 'description': 'Preferment sourdough starter mass (including its flour and water) as a percentage of total flour, not preferment flour. Convert a Dough preferment-page percentage with pagePercent * effectiveBigaFlour / totalFlour, using actual allocated preferment flour from results. Only without an allocation shortfall is pagePercent * pff / 100 equivalent. A zero actual preferment-flour weight makes its stage percentage unavailable. Example with full allocation: 1.60 * 15 / 100 = 0.24, giving 4.8 g at 2000 g total flour.'}, 'reserveWaterPct': {'type': 'number', 'default': 5, 'maximum': 100, 'minimum': 0}, 'starterFinalPct': {'type': 'number', 'default': 0, 'maximum': 200, 'minimum': 0, 'description': 'Final-mix sourdough starter mass (including its flour and water) as a percentage of total flour. No stage-basis conversion is required.'}, 'customAdjustments': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'pct'], 'properties': {'id': {'type': 'string', 'pattern': '^c[0-9a-z]{5}$', 'maxLength': 6, 'minLength': 1}, 'pct': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'name': {'type': 'string', 'pattern': '^\\S(?:[\\s\\S]*\\S)?$', 'maxLength': 40, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 8, 'description': "Optional baker-named final-mix ingredients, up to 8, each a percentage of total flour. They count by weight only: they add to batch weight and ball sizing, never to hydration or flour absorption. Row IDs are c followed by five lowercase letters or digits, unique within the formula. Names are sent trimmed, 1 to 40 characters, unique ignoring case, and may not repeat one of Dough's own ingredient names such as Water, Salt, Oil or Sugar, or contain control, hidden or bidirectional characters or a web address. Any refused row fails the whole request."}, 'starterFlourSource': {'type': 'string', 'default': 'blend', 'maxLength': 64, 'minLength': 1, 'description': 'blend or a supplied flour row ID. Inactive starter normalizes to blend and 100% hydration.'}, 'starterHydrationPct': {'type': 'number', 'default': 100, 'maximum': 200, 'minimum': 40, 'description': 'Starter water as a percentage of starter flour, not total flour or starter mass.'}}, 'description': 'Percentages refer to total flour, except bigaHydration and starterHydrationPct. Flour rows are ratios, including empty/zero blends. Unique row IDs required. Named starter source must be a supplied row. Preferment leavening requires positive pff. No temperature inputs; preparation fixes DDT at 72 F and friction at 15 F. Buffer defaults off and non-off buffer requires balls sizing. Flour mode has no ball target: prepared ballCount/ballWeight are zero, ballsTotal is zero, bufferG is the whole batch and pizzaSize is unavailable. The 100000 g flour bound applies to direct flour inputs, not the balls solver result. Custom ingredients count by weight only and never in hydration.', 'additionalProperties': False}}, 'additionalProperties': False}, 'maxItems': 8, 'minItems': 1}}, 'description': "One to eight uniquely identified, already-sized Dough requests. Optional unique published house pizza references and counts annotate topping needs only; they do not multiply dough. Custom flours and custom ingredients retain batch/row identity and are never merged across batches; a custom ingredient item's id is custom:<batchId>:<rowId>. Ready starter is separate from fresh ingredients. Topping quantities are unknown.", 'additionalProperties': False}
변경됨
shopping_list
2026년 10월 3일 2:50 AM
변경됨
calculate_dough
2026년 10월 3일 2:50 AM
추가됨
shopping_list
2026년 9월 23일 2:40 AM
추가됨
plan_bake
2026년 9월 23일 2:40 AM
추가됨
calculate_balance
2026년 9월 23일 2:40 AM
추가됨
calculate_dough
2026년 9월 23일 2:40 AM
추가됨
get_flour
2026년 9월 23일 2:40 AM
추가됨
search_flours
2026년 9월 23일 2:40 AM
추가됨
get_ingredient
2026년 9월 23일 2:40 AM
추가됨
search_ingredients
2026년 9월 23일 2:40 AM
추가됨
read_menu
2026년 9월 23일 2:40 AM
추가됨
get_pizza
2026년 9월 23일 2:40 AM
추가됨
search_pizzas
2026년 9월 23일 2:40 AM