{"openapi":"3.1.0","info":{"title":"Kitchen API","version":"0.1.0","description":"Recipes by name/ingredient/category/cuisine, full scaled recipes, what-can-I-cook, weekly meal plans, cocktails and mocktails, substitutions, ingredient facts.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://kitchen.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/kitchen/docs"},"termsOfService":"https://connectorbay.com/kitchen/terms"},"servers":[{"url":"https://kitchen.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/kitchen/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/recipe_search":{"post":{"operationId":"recipe_search","summary":"Find recipes by name, main ingredient, category or cuisine (TheMealDB). Name searches return full recipes;","description":"Find recipes by name, main ingredient, category or cuisine (TheMealDB). Name searches return full recipes;\n    ingredient/category/cuisine searches return a list to pick from (use `recipe` for the full one). Use for \"recipe\n    for X\", \"vegetarian Indian dishes\", \"what can I make with salmon\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Dish name or words in the name.","examples":["tikka masala","lasagne"],"title":"Query"},"ingredient":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Main ingredient.","examples":["chicken breast","salmon"],"title":"Ingredient"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Beef, Chicken, Dessert, Lamb, Miscellaneous, Pasta, Pork, Seafood, Side, Starter, Vegan, Vegetarian, Breakfast, Goat.","examples":["Vegetarian"],"title":"Category"},"cuisine":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Cuisine/area: Italian, Indian, Mexican, Chinese, Thai, Japanese, French, British, American, Moroccan, Greek, Spanish, Turkish, Vietnamese…","examples":["Indian"],"title":"Cuisine"},"max_results":{"default":12,"maximum":50,"minimum":1,"title":"Max Results","type":"integer"}},"title":"recipe_searchArguments","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/recipe":{"post":{"operationId":"recipe","summary":"A full recipe: ingredients with measures (optionally scaled), numbered steps, category, cuisine, tags, image,","description":"A full recipe: ingredients with measures (optionally scaled), numbered steps, category, cuisine, tags, image,\n    video and source link. Use for \"give me the full recipe\", \"double it\", \"halve the ingredients\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"recipe_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Recipe id from a search.","examples":["52772"],"title":"Recipe Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Or a dish name (first match).","examples":["Teriyaki Chicken Casserole"],"title":"Name"},"scale":{"anyOf":[{"exclusiveMinimum":0,"maximum":20,"type":"number"},{"type":"null"}],"default":null,"description":"Multiply all measures by this factor (2 = double, 0.5 = halve).","title":"Scale"}},"title":"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/what_can_i_cook":{"post":{"operationId":"what_can_i_cook","summary":"Recipes that use ALL of the ingredients given (up to four), falling back to any-of when nothing matches all,","description":"Recipes that use ALL of the ingredients given (up to four), falling back to any-of when nothing matches all,\n    with a note saying which. Use for \"what can I make with chicken and spinach\", \"dinner from eggs and potatoes\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ingredients":{"description":"1–4 ingredients you have.","examples":[["chicken","spinach"],["eggs","cheese"]],"items":{"type":"string"},"title":"Ingredients","type":"array"},"max_results":{"default":10,"maximum":30,"minimum":1,"title":"Max Results","type":"integer"}},"required":["ingredients"],"title":"what_can_i_cookArguments","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/meal_plan":{"post":{"operationId":"meal_plan","summary":"A meal plan — one dinner per day — drawn from a cuisine and/or category, the same plan for the same week so it","description":"A meal plan — one dinner per day — drawn from a cuisine and/or category, the same plan for the same week so it\n    can be re-read, with recipe ids to expand. Use for \"plan my dinners this week\", \"seven vegetarian meals\",\n    \"a week of Mexican food\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cuisine":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Cuisine to draw from.","examples":["Italian"],"title":"Cuisine"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Category to draw from (e.g. Vegetarian, Chicken, Seafood).","examples":["Vegetarian"],"title":"Category"},"days":{"default":7,"maximum":14,"minimum":1,"title":"Days","type":"integer"},"week_of":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO date inside the week to plan (default: this week).","title":"Week Of"}},"title":"meal_planArguments","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/random_recipe":{"post":{"operationId":"random_recipe","summary":"A random full recipe, optionally from a category — for \"surprise me\", \"what should I cook tonight\".","description":"A random full recipe, optionally from a category — for \"surprise me\", \"what should I cook tonight\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional category to restrict to.","examples":["Dessert"],"title":"Category"}},"title":"random_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/recipe_lists":{"post":{"operationId":"recipe_lists","summary":"The categories and cuisines the recipe database understands, for building searches and meal plans.","description":"The categories and cuisines the recipe database understands, for building searches and meal plans.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"recipe_listsArguments","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/cocktail":{"post":{"operationId":"cocktail","summary":"Cocktails and mocktails (TheCocktailDB): by name with full ingredients, measures, glass, category, IBA status","description":"Cocktails and mocktails (TheCocktailDB): by name with full ingredients, measures, glass, category, IBA status\n    and method; by base ingredient or non-alcoholic as a list; or a random pick. Use for \"how do I make a margarita\",\n    \"gin cocktails\", \"a mocktail\", \"surprise me with a drink\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Cocktail name.","examples":["margarita","mojito"],"title":"Name"},"ingredient":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Or a base ingredient (gin, vodka, rum, tequila, whiskey…).","examples":["gin"],"title":"Ingredient"},"non_alcoholic":{"default":false,"description":"Only mocktails.","title":"Non Alcoholic","type":"boolean"},"random_pick":{"default":false,"description":"A random cocktail.","title":"Random Pick","type":"boolean"},"max_results":{"default":8,"maximum":25,"minimum":1,"title":"Max Results","type":"integer"}},"title":"cocktailArguments","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/substitute":{"post":{"operationId":"substitute","summary":"What to use instead of an ingredient — ranked substitutes with ratios and caveats for ~100 staples: dairy, eggs,","description":"What to use instead of an ingredient — ranked substitutes with ratios and caveats for ~100 staples: dairy, eggs,\n    flours and leavening, sugars and syrups, oils, sauces, herbs and spices (Indian and East Asian included), proteins,\n    produce and thickeners. Use for \"I'm out of buttermilk\", \"egg-free binder\", \"vegan substitute for paneer\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ingredient":{"description":"The ingredient you are missing.","examples":["buttermilk","eggs","fish sauce"],"title":"Ingredient","type":"string"}},"required":["ingredient"],"title":"substituteArguments","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":{"post":{"operationId":"ingredient","summary":"What an ingredient is: a description from TheMealDB's ingredient index, its type and a photo, plus recipes that","description":"What an ingredient is: a description from TheMealDB's ingredient index, its type and a photo, plus recipes that\n    use it. Use for \"what is asafoetida\", \"what does tahini taste like\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Ingredient name.","examples":["asafoetida","tahini"],"title":"Name","type":"string"}},"required":["name"],"title":"ingredientArguments","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}}}}