pantryos.pressplay-subai.workers.dev
PantryOS is a local-first kitchen inventory and recipe demo powered by WebMCP.
First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com
Answer 5 · Act 9 · Transact 0 · Score: Not yet scored
Tool inspector
add_recipe
Use to save a complete recipe, including one extracted from text or an image attached in the AI conversation. Send one timing form plus structured ingredients and steps; PantryOS recipe photos are added separately in the browser form.
Page: /
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
title |
string | yes | The recipe name. |
description |
string | yes | A concise description of the finished recipe. |
servings |
integer | yes | How many servings the unscaled recipe makes. |
timing |
— | yes | Use either one total time or separate prep and cooking times; PantryOS derives the total for separate times. |
ingredients |
array | yes | The complete ingredient list in recipe order. |
steps |
array | yes | The complete ordered method. |
Raw JSON schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"pattern": "\\S",
"description": "The recipe name."
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"pattern": "\\S",
"description": "A concise description of the finished recipe."
},
"servings": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 24,
"description": "How many servings the unscaled recipe makes."
},
"timing": {
"anyOf": [
{
"type": "object",
"properties": {
"totalMinutes": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 960,
"description": "Total elapsed minutes when separate prep and cooking times are unavailable."
}
},
"required": [
"totalMinutes"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"prepMinutes": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 480,
"description": "Minutes spent preparing ingredients."
},
"cookMinutes": {
"type": "integer",
"minimum": 0,
"maximum": 480,
"description": "Minutes spent cooking the recipe."
}
},
"required": [
"prepMinutes",
"cookMinutes"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"prepMinutes": {
"type": "integer",
"minimum": 0,
"maximum": 480,
"description": "Minutes spent preparing ingredients."
},
"cookMinutes": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 480,
"description": "Minutes spent cooking the recipe."
}
},
"required": [
"prepMinutes",
"cookMinutes"
],
"additionalProperties": false
}
],
"description": "Use either one total time or separate prep and cooking times; PantryOS derives the total for separate times."
},
"ingredients": {
"minItems": 1,
"maxItems": 40,
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"pattern": "\\S",
"description": "The ingredient name as it should appear."
},
"optional": {
"description": "True only when the recipe can be made without this ingredient.",
"type": "boolean"
},
"section": {
"description": "Optional ingredient group, such as Sauce or To finish.",
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "\\S"
},
"quantity": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000,
"description": "The numeric ingredient amount."
},
"displayUnit": {
"type": "string",
"enum": [
"g",
"kg",
"ml",
"l",
"count",
"package",
"serving",
"tsp",
"tbsp",
"cup",
"oz",
"lb"
],
"description": "The unit paired with the ingredient quantity."
}
},
"required": [
"name",
"quantity",
"displayUnit"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"pattern": "\\S",
"description": "The ingredient name as it should appear."
},
"optional": {
"description": "True only when the recipe can be made without this ingredient.",
"type": "boolean"
},
"section": {
"description": "Optional ingredient group, such as Sauce or To finish.",
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "\\S"
}
},
"required": [
"name"
],
"additionalProperties": false
}
]
},
"description": "The complete ingredient list in recipe order."
},
"steps": {
"minItems": 1,
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"instruction": {
"type": "string",
"minLength": 1,
"maxLength": 800,
"pattern": "\\S",
"description": "One complete recipe direction."
},
"section": {
"description": "Optional method group, such as Prepare or Bake.",
"type": "string",
"minLength": 1,
"maxLength": 80,
"pattern": "\\S"
},
"note": {
"description": "A useful cook's note tied to this step.",
"type": "string",
"minLength": 1,
"maxLength": 300,
"pattern": "\\S"
}
},
"required": [
"instruction"
],
"additionalProperties": false
},
"description": "The complete ordered method."
}
},
"required": [
"title",
"description",
"servings",
"timing",
"ingredients",
"steps"
],
"additionalProperties": false
}
Similar websites
econsor.de
German digital agency building portals, e-commerce sites and online marketing, combining strategy, design and AI to grow clients' visibility and customer base.
inkframe-eta.vercel.app
Browser-native Elah video editor for 9:16 and 16:9 exports
agentdesk-demo.vercel.app
Meridian Ops
eworker.ca
E-Worker is business infrastructure powered by AI, with focused apps and connected business work.