Save, import and edit recipes as interactive cards in ChatGPT and Claude, synced to your iPhone.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Creates a NEW recipe in your library only when the user explicitly asks to save/add it or taps Save in the recipe card. For a newly generated recipe the user has not chosen to keep, use display_recipe instead. Does not update existing recipes — to change a saved recipe use update_recipe. To make cooking-time tweaks use apply_recipe_patches. The server mints the stored import-* or ai-* recipe id; any caller-supplied recipe.id is treated only as source payload and is not used for upsert.
Opaque client retry token. Reuse it only for retries of the same create request; otherwise omit it.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http sous-chef https://mcp.mysouschef.app/mcp
Creates a NEW recipe in your library only when the user explicitly asks to save/add it or taps Save in the recipe card. For a newly generated recipe the user has not chosen to keep, use display_recipe instead. Does not update existing recipes — to change a saved recipe use update_recipe. To make cooking-time tweaks use apply_recipe_patches. The server mints the stored import-* or ai-* recipe id; any caller-supplied recipe.id is treated only as source payload and is not used for upsert.
| Argument | Type | Description |
|---|---|---|
| recipe* | object | |
| sourceUrl | string | |
| sourceKind | string | |
| idempotencyKey | string | Opaque client retry token. Reuse it only for retries of the same create request; otherwise omit it. |
{
"type": "object",
"required": [
"recipe"
],
"properties": {
"recipe": {
"type": "object",
"required": [
"id",
"title",
"meta",
"ingredients",
"steps",
"notes"
],
"properties": {
"id": {
"type": "string"
},
"meta": {
"type": "object",
"properties": {
"meal": {
"type": "string"
},
"course": {
"type": "string"
},
"cuisine": {
"type": "string"
},
"yieldText": {
"type": "string"
},
"cookTimeMin": {
"type": "number"
},
"prepTimeMin": {
"type": "number"
},
"totalTimeMin": {
"type": "number"
}
},
"additionalProperties": false
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"steps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"body": {
"type": "string"
},
"title": {
"type": "string"
},
"section": {
"type": "string"
},
"substeps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"timerMin": {
"type": "number"
},
"timerLabel": {
"type": "string"
}
},
"additionalProperties": false
}
},
"timerMin": {
"type": "number"
},
"ingredientIds": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"title": {
"type": "string"
},
"images": {
"type": "array",
"items": {
"type": "string"
}
},
"summary": {
"type": "string"
},
"subtitle": {
"type": "string"
},
"description": {
"type": "string"
},
"ingredients": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"note": {
"type": "string"
},
"unit": {
"type": "string"
},
"section": {
"type": "string"
},
"quantity": {
"type": "number"
},
"unitSystem": {
"enum": [
"metric",
"imperial",
"count",
"other"
],
"type": "string"
},
"preparation": {
"type": "string"
},
"quantityText": {
"type": "string"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
},
"sourceUrl": {
"type": "string"
},
"sourceKind": {
"enum": [
"manual",
"url",
"text"
],
"type": "string"
},
"idempotencyKey": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"maxLength": 128,
"minLength": 1,
"description": "Opaque client retry token. Reuse it only for retries of the same create request; otherwise omit it."
}
},
"additionalProperties": false
}Validate and apply explicit edits. Pass recipeId for a persisted cooking session, or pass the full recipe payload from display_recipe to edit an unsaved card without persistence. Does NOT modify the saved recipe in your library.
| Argument | Type | Description |
|---|---|---|
| reply | string | |
| recipe | object | |
| patches* | array | |
| recipeId | string | |
| editLabel | string | |
| sessionId | string | |
| measurementSystem | string |
{
"type": "object",
"anyOf": [
{
"required": [
"recipeId"
]
},
{
"required": [
"recipe"
]
}
],
"required": [
"patches"
],
"properties": {
"reply": {
"type": "string",
"minLength": 1
},
"recipe": {
"type": "object",
"required": [
"id",
"title",
"meta",
"ingredients",
"steps",
"notes"
],
"properties": {
"id": {
"type": "string"
},
"meta": {
"type": "object",
"properties": {
"meal": {
"type": "string"
},
"course": {
"type": "string"
},
"cuisine": {
"type": "string"
},
"yieldText": {
"type": "string"
},
"cookTimeMin": {
"type": "number"
},
"prepTimeMin": {
"type": "number"
},
"totalTimeMin": {
"type": "number"
}
},
"additionalProperties": false
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"steps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"body": {
"type": "string"
},
"title": {
"type": "string"
},
"section": {
"type": "string"
},
"substeps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"timerMin": {
"type": "number"
},
"timerLabel": {
"type": "string"
}
},
"additionalProperties": false
}
},
"timerMin": {
"type": "number"
},
"ingredientIds": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"title": {
"type": "string"
},
"images": {
"type": "array",
"items": {
"type": "string"
}
},
"summary": {
"type": "string"
},
"subtitle": {
"type": "string"
},
"description": {
"type": "string"
},
"ingredients": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"note": {
"type": "string"
},
"unit": {
"type": "string"
},
"section": {
"type": "string"
},
"quantity": {
"type": "number"
},
"unitSystem": {
"enum": [
"metric",
"imperial",
"count",
"other"
],
"type": "string"
},
"preparation": {
"type": "string"
},
"quantityText": {
"type": "string"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
},
"patches": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"ingredientId",
"newValue"
],
"properties": {
"type": {
"const": "replace-ingredient"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"newValue": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"note": {
"type": "string"
},
"unit": {
"type": "string"
},
"section": {
"type": "string"
},
"quantity": {
"type": "number"
},
"unitSystem": {
"enum": [
"metric",
"imperial",
"count",
"other"
],
"type": "string"
},
"preparation": {
"type": "string"
},
"quantityText": {
"type": "string"
}
},
"additionalProperties": false
},
"oldValue": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"note": {
"type": "string"
},
"unit": {
"type": "string"
},
"section": {
"type": "string"
},
"quantity": {
"type": "number"
},
"unitSystem": {
"enum": [
"metric",
"imperial",
"count",
"other"
],
"type": "string"
},
"preparation": {
"type": "string"
},
"quantityText": {
"type": "string"
}
},
"additionalProperties": false
},
"requestId": {
"type": "string",
"minLength": 1
},
"ingredientId": {
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"newValue"
],
"properties": {
"type": {
"const": "insert-ingredient"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"newValue": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"note": {
"type": "string"
},
"unit": {
"type": "string"
},
"section": {
"type": "string"
},
"quantity": {
"type": "number"
},
"unitSystem": {
"enum": [
"metric",
"imperial",
"count",
"other"
],
"type": "string"
},
"preparation": {
"type": "string"
},
"quantityText": {
"type": "string"
}
},
"additionalProperties": false
},
"requestId": {
"type": "string",
"minLength": 1
},
"afterIngredientId": {
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"ingredientId"
],
"properties": {
"type": {
"const": "remove-ingredient"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"oldValue": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"note": {
"type": "string"
},
"unit": {
"type": "string"
},
"section": {
"type": "string"
},
"quantity": {
"type": "number"
},
"unitSystem": {
"enum": [
"metric",
"imperial",
"count",
"other"
],
"type": "string"
},
"preparation": {
"type": "string"
},
"quantityText": {
"type": "string"
}
},
"additionalProperties": false
},
"requestId": {
"type": "string",
"minLength": 1
},
"ingredientId": {
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"stepId",
"newValue"
],
"properties": {
"type": {
"const": "replace-step"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"stepId": {
"type": "string"
},
"newValue": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"body": {
"type": "string"
},
"title": {
"type": "string"
},
"section": {
"type": "string"
},
"substeps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"timerMin": {
"type": "number"
},
"timerLabel": {
"type": "string"
}
},
"additionalProperties": false
}
},
"timerMin": {
"type": "number"
},
"ingredientIds": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"oldValue": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"body": {
"type": "string"
},
"title": {
"type": "string"
},
"section": {
"type": "string"
},
"substeps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"timerMin": {
"type": "number"
},
"timerLabel": {
"type": "string"
}
},
"additionalProperties": false
}
},
"timerMin": {
"type": "number"
},
"ingredientIds": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"requestId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"newValue"
],
"properties": {
"type": {
"const": "insert-step"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"newValue": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"body": {
"type": "string"
},
"title": {
"type": "string"
},
"section": {
"type": "string"
},
"substeps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"timerMin": {
"type": "number"
},
"timerLabel": {
"type": "string"
}
},
"additionalProperties": false
}
},
"timerMin": {
"type": "number"
},
"ingredientIds": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"requestId": {
"type": "string",
"minLength": 1
},
"afterStepId": {
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"stepId"
],
"properties": {
"type": {
"const": "remove-step"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"stepId": {
"type": "string"
},
"oldValue": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"body": {
"type": "string"
},
"title": {
"type": "string"
},
"section": {
"type": "string"
},
"substeps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"timerMin": {
"type": "number"
},
"timerLabel": {
"type": "string"
}
},
"additionalProperties": false
}
},
"timerMin": {
"type": "number"
},
"ingredientIds": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"requestId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"field",
"newValue"
],
"properties": {
"type": {
"const": "update-meta"
},
"field": {
"enum": [
"title",
"subtitle",
"description",
"summary",
"cuisine",
"course",
"meal",
"yieldText",
"prepTimeMin",
"cookTimeMin",
"totalTimeMin"
],
"type": "string"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"newValue": {},
"oldValue": {},
"requestId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"newValue"
],
"properties": {
"type": {
"const": "replace-images"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"newValue": {
"type": "array",
"items": {
"type": "string"
}
},
"oldValue": {
"type": "array",
"items": {
"type": "string"
}
},
"requestId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"note"
],
"properties": {
"note": {
"type": "string"
},
"type": {
"const": "add-note"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"requestId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"noteIndex"
],
"properties": {
"type": {
"const": "remove-note"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"oldValue": {
"type": "string"
},
"noteIndex": {
"type": "integer",
"minimum": 0
},
"requestId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
}
]
},
"minItems": 1
},
"recipeId": {
"type": "string",
"minLength": 1
},
"editLabel": {
"type": "string",
"minLength": 1
},
"sessionId": {
"type": "string"
},
"measurementSystem": {
"enum": [
"source",
"metric",
"imperial"
],
"type": "string"
}
},
"additionalProperties": false
}Permanently delete a recipe owned by the authenticated user from their Sous Chef library. This cannot delete public catalog recipes.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
}Presents a complete recipe in Sous Chef's interactive recipe card (servings, ingredients, steps, cooking mode, validated edits, Undo). Prefer this over plain chat formatting whenever you generate, retrieve, or substantially revise a full recipe — including ordinary requests like 'give me a vegan mushroom carbonara' or 'make a quick dinner for two'. Displaying is temporary: it renders the card without saving it or creating a cooking session; saving only happens through add_recipe when the user asks.
| Argument | Type | Description |
|---|---|---|
| recipe* | object |
{
"type": "object",
"required": [
"recipe"
],
"properties": {
"recipe": {
"type": "object",
"required": [
"id",
"title",
"meta",
"ingredients",
"steps",
"notes"
],
"properties": {
"id": {
"type": "string"
},
"meta": {
"type": "object",
"properties": {
"meal": {
"type": "string"
},
"course": {
"type": "string"
},
"cuisine": {
"type": "string"
},
"yieldText": {
"type": "string"
},
"cookTimeMin": {
"type": "number"
},
"prepTimeMin": {
"type": "number"
},
"totalTimeMin": {
"type": "number"
}
},
"additionalProperties": false
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"steps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"body": {
"type": "string"
},
"title": {
"type": "string"
},
"section": {
"type": "string"
},
"substeps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"timerMin": {
"type": "number"
},
"timerLabel": {
"type": "string"
}
},
"additionalProperties": false
}
},
"timerMin": {
"type": "number"
},
"ingredientIds": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"title": {
"type": "string"
},
"images": {
"type": "array",
"items": {
"type": "string"
}
},
"summary": {
"type": "string"
},
"subtitle": {
"type": "string"
},
"description": {
"type": "string"
},
"ingredients": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"note": {
"type": "string"
},
"unit": {
"type": "string"
},
"section": {
"type": "string"
},
"quantity": {
"type": "number"
},
"unitSystem": {
"enum": [
"metric",
"imperial",
"count",
"other"
],
"type": "string"
},
"preparation": {
"type": "string"
},
"quantityText": {
"type": "string"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}Returns the saved canonical recipe from your library or the public catalog. In-progress cooking edits live in sessions and are not returned here.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
}Confirm the Sous Chef MCP server is reachable.
No arguments.
{
"type": "object",
"properties": {}
}List the authenticated user's saved Sous Chef recipes. Use this before editing when the user refers to a recipe by name instead of id.
| Argument | Type | Description |
|---|---|---|
| limit | integer |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1
}
},
"additionalProperties": false
}Drop a patch group by requestId. Pass recipeId/sessionId for persisted edits, or pass the displayed card's baseRecipe and remaining patch history for a pure unsaved-card Undo. Unknown requestIds are idempotent no-ops.
| Argument | Type | Description |
|---|---|---|
| patches | array | |
| recipeId | string | |
| sessionId | string | |
| baseRecipe | object | |
| targetRequestId* | string | |
| measurementSystem | string |
{
"type": "object",
"anyOf": [
{
"required": [
"recipeId"
]
},
{
"required": [
"baseRecipe",
"patches"
]
}
],
"required": [
"targetRequestId"
],
"properties": {
"patches": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"ingredientId",
"newValue"
],
"properties": {
"type": {
"const": "replace-ingredient"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"newValue": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"note": {
"type": "string"
},
"unit": {
"type": "string"
},
"section": {
"type": "string"
},
"quantity": {
"type": "number"
},
"unitSystem": {
"enum": [
"metric",
"imperial",
"count",
"other"
],
"type": "string"
},
"preparation": {
"type": "string"
},
"quantityText": {
"type": "string"
}
},
"additionalProperties": false
},
"oldValue": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"note": {
"type": "string"
},
"unit": {
"type": "string"
},
"section": {
"type": "string"
},
"quantity": {
"type": "number"
},
"unitSystem": {
"enum": [
"metric",
"imperial",
"count",
"other"
],
"type": "string"
},
"preparation": {
"type": "string"
},
"quantityText": {
"type": "string"
}
},
"additionalProperties": false
},
"requestId": {
"type": "string",
"minLength": 1
},
"ingredientId": {
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"newValue"
],
"properties": {
"type": {
"const": "insert-ingredient"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"newValue": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"note": {
"type": "string"
},
"unit": {
"type": "string"
},
"section": {
"type": "string"
},
"quantity": {
"type": "number"
},
"unitSystem": {
"enum": [
"metric",
"imperial",
"count",
"other"
],
"type": "string"
},
"preparation": {
"type": "string"
},
"quantityText": {
"type": "string"
}
},
"additionalProperties": false
},
"requestId": {
"type": "string",
"minLength": 1
},
"afterIngredientId": {
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"ingredientId"
],
"properties": {
"type": {
"const": "remove-ingredient"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"oldValue": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"note": {
"type": "string"
},
"unit": {
"type": "string"
},
"section": {
"type": "string"
},
"quantity": {
"type": "number"
},
"unitSystem": {
"enum": [
"metric",
"imperial",
"count",
"other"
],
"type": "string"
},
"preparation": {
"type": "string"
},
"quantityText": {
"type": "string"
}
},
"additionalProperties": false
},
"requestId": {
"type": "string",
"minLength": 1
},
"ingredientId": {
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"stepId",
"newValue"
],
"properties": {
"type": {
"const": "replace-step"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"stepId": {
"type": "string"
},
"newValue": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"body": {
"type": "string"
},
"title": {
"type": "string"
},
"section": {
"type": "string"
},
"substeps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"timerMin": {
"type": "number"
},
"timerLabel": {
"type": "string"
}
},
"additionalProperties": false
}
},
"timerMin": {
"type": "number"
},
"ingredientIds": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"oldValue": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"body": {
"type": "string"
},
"title": {
"type": "string"
},
"section": {
"type": "string"
},
"substeps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"timerMin": {
"type": "number"
},
"timerLabel": {
"type": "string"
}
},
"additionalProperties": false
}
},
"timerMin": {
"type": "number"
},
"ingredientIds": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"requestId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"newValue"
],
"properties": {
"type": {
"const": "insert-step"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"newValue": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"body": {
"type": "string"
},
"title": {
"type": "string"
},
"section": {
"type": "string"
},
"substeps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"timerMin": {
"type": "number"
},
"timerLabel": {
"type": "string"
}
},
"additionalProperties": false
}
},
"timerMin": {
"type": "number"
},
"ingredientIds": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"requestId": {
"type": "string",
"minLength": 1
},
"afterStepId": {
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"stepId"
],
"properties": {
"type": {
"const": "remove-step"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"stepId": {
"type": "string"
},
"oldValue": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"body": {
"type": "string"
},
"title": {
"type": "string"
},
"section": {
"type": "string"
},
"substeps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"timerMin": {
"type": "number"
},
"timerLabel": {
"type": "string"
}
},
"additionalProperties": false
}
},
"timerMin": {
"type": "number"
},
"ingredientIds": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"requestId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"field",
"newValue"
],
"properties": {
"type": {
"const": "update-meta"
},
"field": {
"enum": [
"title",
"subtitle",
"description",
"summary",
"cuisine",
"course",
"meal",
"yieldText",
"prepTimeMin",
"cookTimeMin",
"totalTimeMin"
],
"type": "string"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"newValue": {},
"oldValue": {},
"requestId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"newValue"
],
"properties": {
"type": {
"const": "replace-images"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"newValue": {
"type": "array",
"items": {
"type": "string"
}
},
"oldValue": {
"type": "array",
"items": {
"type": "string"
}
},
"requestId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"note"
],
"properties": {
"note": {
"type": "string"
},
"type": {
"const": "add-note"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"requestId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"requestId",
"editId",
"reason",
"noteIndex"
],
"properties": {
"type": {
"const": "remove-note"
},
"editId": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"oldValue": {
"type": "string"
},
"noteIndex": {
"type": "integer",
"minimum": 0
},
"requestId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
}
]
},
"minItems": 1
},
"recipeId": {
"type": "string",
"minLength": 1
},
"sessionId": {
"type": "string"
},
"baseRecipe": {
"type": "object",
"required": [
"id",
"title",
"meta",
"ingredients",
"steps",
"notes"
],
"properties": {
"id": {
"type": "string"
},
"meta": {
"type": "object",
"properties": {
"meal": {
"type": "string"
},
"course": {
"type": "string"
},
"cuisine": {
"type": "string"
},
"yieldText": {
"type": "string"
},
"cookTimeMin": {
"type": "number"
},
"prepTimeMin": {
"type": "number"
},
"totalTimeMin": {
"type": "number"
}
},
"additionalProperties": false
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"steps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"body": {
"type": "string"
},
"title": {
"type": "string"
},
"section": {
"type": "string"
},
"substeps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"timerMin": {
"type": "number"
},
"timerLabel": {
"type": "string"
}
},
"additionalProperties": false
}
},
"timerMin": {
"type": "number"
},
"ingredientIds": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"title": {
"type": "string"
},
"images": {
"type": "array",
"items": {
"type": "string"
}
},
"summary": {
"type": "string"
},
"subtitle": {
"type": "string"
},
"description": {
"type": "string"
},
"ingredients": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"note": {
"type": "string"
},
"unit": {
"type": "string"
},
"section": {
"type": "string"
},
"quantity": {
"type": "number"
},
"unitSystem": {
"enum": [
"metric",
"imperial",
"count",
"other"
],
"type": "string"
},
"preparation": {
"type": "string"
},
"quantityText": {
"type": "string"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
},
"targetRequestId": {
"type": "string",
"minLength": 1
},
"measurementSystem": {
"enum": [
"source",
"metric",
"imperial"
],
"type": "string"
}
},
"additionalProperties": false
}Set measurements without ingredient patches. Pass recipeId for saved session state, or pass the full recipe payload from display_recipe to update an unsaved card without persistence.
| Argument | Type | Description |
|---|---|---|
| recipe | object | |
| recipeId | string | |
| sessionId | string | |
| measurementSystem* | string |
{
"type": "object",
"anyOf": [
{
"required": [
"recipeId"
]
},
{
"required": [
"recipe"
]
}
],
"required": [
"measurementSystem"
],
"properties": {
"recipe": {
"type": "object",
"required": [
"id",
"title",
"meta",
"ingredients",
"steps",
"notes"
],
"properties": {
"id": {
"type": "string"
},
"meta": {
"type": "object",
"properties": {
"meal": {
"type": "string"
},
"course": {
"type": "string"
},
"cuisine": {
"type": "string"
},
"yieldText": {
"type": "string"
},
"cookTimeMin": {
"type": "number"
},
"prepTimeMin": {
"type": "number"
},
"totalTimeMin": {
"type": "number"
}
},
"additionalProperties": false
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"steps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"body": {
"type": "string"
},
"title": {
"type": "string"
},
"section": {
"type": "string"
},
"substeps": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"timerMin": {
"type": "number"
},
"timerLabel": {
"type": "string"
}
},
"additionalProperties": false
}
},
"timerMin": {
"type": "number"
},
"ingredientIds": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"title": {
"type": "string"
},
"images": {
"type": "array",
"items": {
"type": "string"
}
},
"summary": {
"type": "string"
},
"subtitle": {
"type": "string"
},
"description": {
"type": "string"
},
"ingredients": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"note": {
"type": "string"
},
"unit": {
"type": "string"
},
"section": {
"type": "string"
},
"quantity": {
"type": "number"
},
"unitSystem": {
"enum": [
"metric",
"imperial",
"count",
"other"
],
"type": "string"
},
"preparation": {
"type": "string"
},
"quantityText": {
"type": "string"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
},
"recipeId": {
"type": "string",
"minLength": 1
},
"sessionId": {
"type": "string"
},
"measurementSystem": {
"enum": [
"source",
"metric",
"imperial"
],
"type": "string"
}
},
"additionalProperties": false
}Creates (or refreshes) a public Sous Chef link for a recipe and returns the URL. Only call when the user explicitly asks to share a recipe. The page is public, anyone with the link can view it, and it is indexed by search engines; the link shows the recipe as it currently looks, including Sous Chef edits, and sharing again updates the same link. Requires a signed-in Sous Chef account.
| Argument | Type | Description |
|---|---|---|
| recipeId* | string |
{
"type": "object",
"required": [
"recipeId"
],
"properties": {
"recipeId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
}Deliberately updates allowed fields on a saved recipe in your library. Supports title, subtitle, summary, description, images, meta, and notes only; images and notes replace the whole array. Does not change ingredients or steps — use apply_recipe_patches for cooking-time edits in a session snapshot.
| Argument | Type | Description |
|---|---|---|
| patch* | object | |
| recipeId* | string |
{
"type": "object",
"required": [
"recipeId",
"patch"
],
"properties": {
"patch": {
"type": "object",
"properties": {
"meta": {
"type": "object",
"properties": {
"meal": {
"type": "string"
},
"course": {
"type": "string"
},
"cuisine": {
"type": "string"
},
"yieldText": {
"type": "string"
},
"cookTimeMin": {
"type": "number"
},
"prepTimeMin": {
"type": "number"
},
"totalTimeMin": {
"type": "number"
}
},
"additionalProperties": false
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"title": {
"type": "string",
"minLength": 1
},
"images": {
"type": "array",
"items": {
"type": "string"
}
},
"summary": {
"type": "string"
},
"subtitle": {
"type": "string"
},
"description": {
"type": "string"
}
},
"minProperties": 1,
"additionalProperties": false
},
"recipeId": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 4, 2026.