{"openapi":"3.1.0","info":{"title":"Scale API","version":"0.1.0","description":"A recipe scaling, unit conversion, and kitchen-math calculator: recipe scaling by factor or target yield, volume/weight/temperature conversion with gas-mark lookup, ingredient volume-to-weight conversion, pan-area calculation and substitution, and cooking-time-adjustment guidance.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://scale.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/scale/docs"},"termsOfService":"https://connectorbay.com/scale/terms"},"servers":[{"url":"https://scale.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/scale/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/scale_recipe":{"post":{"operationId":"scale_recipe","summary":"Scale a recipe's ingredient amounts by a factor, or to a target yield given the recipe's original","description":"Scale a recipe's ingredient amounts by a factor, or to a target yield given the recipe's original\n    yield -- real proportional arithmetic (scaled_amount = amount x factor). Use for \"scale this recipe to\n    serve 12 instead of 4\", \"make 1.5x this recipe\", \"double this recipe\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ingredients":{"description":"List of ingredients, each {name, amount, unit}, e.g. [{'name': 'flour', 'amount': 2, 'unit': 'cup'}, {'name': 'salt', 'amount': 1, 'unit': 'tsp'}].","items":{"additionalProperties":true,"type":"object"},"title":"Ingredients","type":"array"},"factor":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Multiply every amount by this. Omit if giving target_yield/original_yield instead.","title":"Factor"},"target_yield":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"The yield you want (e.g. 12 servings). Requires original_yield; factor = target_yield / original_yield.","title":"Target Yield"},"original_yield":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"The recipe's current yield as written (e.g. 4 servings).","title":"Original Yield"}},"required":["ingredients"],"title":"scale_recipeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/convert_volume":{"post":{"operationId":"convert_volume","summary":"Convert between US customary volume units (teaspoon, tablespoon, fluid ounce, cup, pint, quart,","description":"Convert between US customary volume units (teaspoon, tablespoon, fluid ounce, cup, pint, quart,\n    gallon) and metric (mL, L), using exact US-customary conversion factors. Use for \"how many tablespoons in\n    2/3 cup\", \"convert 500ml to cups\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"amount":{"description":"Amount to convert.","minimum":0,"title":"Amount","type":"number"},"from_unit":{"description":"tsp | tbsp | fl_oz | cup | pint | quart | gallon | ml | l (plurals and common spellings accepted).","title":"From Unit","type":"string"},"to_unit":{"description":"Same unit set as from_unit.","title":"To Unit","type":"string"}},"required":["amount","from_unit","to_unit"],"title":"convert_volumeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/convert_weight":{"post":{"operationId":"convert_weight","summary":"Convert between avoirdupois weight units (ounce, pound) and metric (gram, kilogram), using exact","description":"Convert between avoirdupois weight units (ounce, pound) and metric (gram, kilogram), using exact\n    conversion factors. Use for \"convert 8oz to grams\", \"how many pounds is 2.5kg\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"amount":{"description":"Amount to convert.","minimum":0,"title":"Amount","type":"number"},"from_unit":{"description":"oz | lb | g | kg (plurals and common spellings accepted).","title":"From Unit","type":"string"},"to_unit":{"description":"Same unit set as from_unit.","title":"To Unit","type":"string"}},"required":["amount","from_unit","to_unit"],"title":"convert_weightArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/convert_temperature":{"post":{"operationId":"convert_temperature","summary":"Convert between Fahrenheit, Celsius, and UK gas mark (using the standard published gas-mark table,","description":"Convert between Fahrenheit, Celsius, and UK gas mark (using the standard published gas-mark table,\n    not a formula), always returning the nearest gas-mark equivalent alongside F and C. Use for \"convert\n    350F to Celsius\", \"what's gas mark 4 in Fahrenheit\", \"convert 180C to gas mark\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"value":{"description":"Temperature value (or gas-mark number, e.g. 4 or 0.5 for 1/2) to convert.","title":"Value","type":"number"},"from_unit":{"description":"f | c | gas_mark","title":"From Unit","type":"string"},"to_unit":{"description":"f | c | gas_mark","title":"To Unit","type":"string"}},"required":["value","from_unit","to_unit"],"title":"convert_temperatureArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/ingredient_volume_to_weight":{"post":{"operationId":"ingredient_volume_to_weight","summary":"Convert a volume measurement of a common baking ingredient to weight (grams and ounces), using that","description":"Convert a volume measurement of a common baking ingredient to weight (grams and ounces), using that\n    specific ingredient's published density (grams per US cup) -- real ingredient-specific conversion, since\n    a cup of flour and a cup of honey weigh very different amounts. Use for \"how many grams is 2 cups of\n    flour\", \"convert 1/2 cup butter to grams\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ingredient":{"description":"A common baking ingredient, e.g. 'all-purpose flour', 'granulated sugar', 'butter', 'honey', 'cocoa powder'.","title":"Ingredient","type":"string"},"volume_amount":{"description":"Volume amount.","minimum":0,"title":"Volume Amount","type":"number"},"volume_unit":{"description":"tsp | tbsp | fl_oz | cup | pint | quart | gallon | ml | l","title":"Volume Unit","type":"string"}},"required":["ingredient","volume_amount","volume_unit"],"title":"ingredient_volume_to_weightArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/pan_area_calculator":{"post":{"operationId":"pan_area_calculator","summary":"Compute a pan's baking-surface area in square inches from real geometry: rectangular (length x","description":"Compute a pan's baking-surface area in square inches from real geometry: rectangular (length x\n    width), square (side^2), round (pi x radius^2), or bundt approximated as an annulus (pi x [outer_radius^2\n    - tube_radius^2]). Use for \"what's the area of a 9x13 pan\", \"area of a 10-inch round cake pan\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shape":{"description":"rectangular | square | round | bundt","title":"Shape","type":"string"},"dimensions":{"additionalProperties":{"type":"number"},"description":"rectangular: {length_in, width_in}. square: {side_in}. round: {diameter_in} (or radius_in). bundt: {outer_diameter_in, tube_diameter_in}.","title":"Dimensions","type":"object"}},"required":["shape","dimensions"],"title":"pan_area_calculatorArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/pan_substitution_guide":{"post":{"operationId":"pan_substitution_guide","summary":"Find equivalent-area pan substitutions for a given pan: computes the original pan's area (via","description":"Find equivalent-area pan substitutions for a given pan: computes the original pan's area (via\n    pan_area_calculator), compares it against a table of common named pan sizes, and -- for a round or\n    square target -- solves the exact dimension that matches the original area precisely. Use for \"I have a\n    9x13 pan but the recipe calls for two 9-inch rounds, will that work\", \"what round pan is equivalent to\n    an 8x8 square\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"original_shape":{"description":"rectangular | square | round | bundt","title":"Original Shape","type":"string"},"original_dimensions":{"additionalProperties":{"type":"number"},"description":"Same dimensions shape as pan_area_calculator expects for original_shape.","title":"Original Dimensions","type":"object"},"target_shape":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Restrict suggestions to this shape (rectangular | square | round | bundt); omit to consider all shapes.","title":"Target Shape"}},"required":["original_shape","original_dimensions"],"title":"pan_substitution_guideArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/cooking_time_adjustment_guide":{"post":{"operationId":"cooking_time_adjustment_guide","summary":"General, hedged guidance on how a pan-size change affects bake time and oven temperature, keyed on","description":"General, hedged guidance on how a pan-size change affects bake time and oven temperature, keyed on\n    the ratio of new pan area to original pan area -- a bigger/shallower pan generally bakes faster, a\n    smaller/deeper pan generally needs more time and sometimes a lower temperature. A starting estimate, not\n    a precise prediction -- always confirm doneness. Use for \"I'm using a bigger pan than the recipe calls\n    for, how should I adjust the bake time\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"area_ratio":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"new_pan_area_sq_in / original_pan_area_sq_in (get both from pan_area_calculator). Omit to see all guidance bands.","title":"Area Ratio"}},"title":"cooking_time_adjustment_guideArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/kitchen_math_glossary":{"post":{"operationId":"kitchen_math_glossary","summary":"Definitions of common kitchen-math terms: yield, scaling factor, mise en place, baker's percentage,","description":"Definitions of common kitchen-math terms: yield, scaling factor, mise en place, baker's percentage,\n    reduction ratio, volume vs. weight measurement, packed vs. unpacked, rounding, pan capacity, doneness,\n    sifting, and room-temperature ingredient prep. Use for \"what does baker's percentage mean\", \"what's a\n    reduction ratio\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific term to look up, e.g. 'yield', 'scaling factor', 'baker's percentage'; omit to list all.","title":"Term"}},"title":"kitchen_math_glossaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}