Servidor MCP

Barbaro

io.github.jeffforderer/barbaro
Otros Público y accesible MCP 2025-11-25

Qué hace este 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.
Solo lectura Idempotente
Esquema de entrada
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'properties': {}, 'additionalProperties': False}
search_flours
Search published flour facts
Search published flour facts. Returns public catalog data with source links and credits.
Solo lectura Idempotente
Esquema de entrada
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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}
Modificado
shopping_list
3 de October de 2026 a las 02:50
Modificado
calculate_dough
3 de October de 2026 a las 02:50
Añadido
shopping_list
23 de September de 2026 a las 02:40
Añadido
plan_bake
23 de September de 2026 a las 02:40
Añadido
calculate_balance
23 de September de 2026 a las 02:40
Añadido
calculate_dough
23 de September de 2026 a las 02:40
Añadido
get_flour
23 de September de 2026 a las 02:40
Añadido
search_flours
23 de September de 2026 a las 02:40
Añadido
get_ingredient
23 de September de 2026 a las 02:40
Añadido
search_ingredients
23 de September de 2026 a las 02:40
Añadido
read_menu
23 de September de 2026 a las 02:40
Añadido
get_pizza
23 de September de 2026 a las 02:40
Añadido
search_pizzas
23 de September de 2026 a las 02:40