Koskamo

Sous Chef MCP

A remote MCP server that allows AI assistants like ChatGPT, Claude, and Cursor to display, edit, save, and manage recipe cards. It supports step-by-step cooking guidance, ingredient validation, unit switching, and library management, syncing with the Sous Chef iPhone app.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Sous Chef MCP logo, by Sous ChefVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by Sous Chef
You need:OAuth sign-in through Auth0Account and workspace policies decide who can add a custom MCP server
MCP endpoint (Streamable HTTP)
https://mcp.mysouschef.app/mcp
Vendor documentation

What its tools do

11 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

11 of 11 have a description · 11 of 11 declare behavior hints · 0 of 10 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to mysouschef.app ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Display recipes as interactive cards in chat
  • Validate and apply edits to ingredients and steps
  • Save recipes to a private library
  • List and manage saved recipes

Source and maintenance

Vendor evidenceRegistry 1.0.0
Maintenance checked

Protocol and capabilities

Server
Sous Chef 0.2.0
MCP protocol negotiated in check
2025-11-25
Tools
11 advertised
Resources
1 advertised
Resource templates
3 advertised
Prompts
7 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "prompts": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Sous Chef presents recipes as interactive cards. Whenever the conversation produces a complete recipe — newly generated, retrieved, or substantially revised — call display_recipe to present it instead of formatting the recipe as plain chat text, even when the user did not mention Sous Chef. Displaying never saves anything; only call add_recipe when the user explicitly asks to save.

Tools

11 advertised

health_check — Health Check
Advertised by the server during the last successful anonymous check.
Advertised read-only

Confirm the Sous Chef MCP server is reachable.

health_check input schema
{
  "type": "object",
  "properties": {}
}
health_check output schema
{
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "required": [
        "ok",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "ok": {
          "type": "boolean"
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "ok",
        "code",
        "message",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "ok": {
          "type": "boolean",
          "const": false
        },
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    }
  ]
}
health_check annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_my_recipes — List My Recipes
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

list_my_recipes input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 100,
      "minimum": 1
    }
  },
  "additionalProperties": false
}
list_my_recipes output schema
{
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "required": [
        "recipes",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "recipes": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "id",
              "title",
              "summary"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "summary": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "ok",
        "code",
        "message",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "ok": {
          "type": "boolean",
          "const": false
        },
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    }
  ]
}
list_my_recipes annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
display_recipe — Display Recipe
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

display_recipe input schema
{
  "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
}
display_recipe output schema
{
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "required": [
        "recipe",
        "saved",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "saved": {
          "type": "boolean",
          "const": false
        },
        "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
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "ok",
        "code",
        "message",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "ok": {
          "type": "boolean",
          "const": false
        },
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    }
  ]
}
display_recipe annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_recipe — Get Recipe
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns the saved canonical recipe from your library or the public catalog. In-progress cooking edits live in sessions and are not returned here.

get_recipe input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    }
  },
  "additionalProperties": false
}
get_recipe output schema
{
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "required": [
        "recipe",
        "saved",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "saved": {
          "type": "boolean"
        },
        "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
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "ok",
        "code",
        "message",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "ok": {
          "type": "boolean",
          "const": false
        },
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    }
  ]
}
get_recipe annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
add_recipe — Add Recipe
Advertised by the server during the last successful anonymous check.

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.

add_recipe input schema
{
  "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
}
add_recipe output schema
{
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "required": [
        "recipeId",
        "recipe",
        "requestId",
        "targetIds"
      ],
      "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"
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "deprecation": {
          "type": "object",
          "required": [
            "message",
            "replacement"
          ],
          "properties": {
            "message": {
              "type": "string"
            },
            "replacement": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "idempotencyKey": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "ok",
        "code",
        "message",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "ok": {
          "type": "boolean",
          "const": false
        },
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    }
  ]
}
add_recipe annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
update_recipe — Update Recipe
Advertised by the server during the last successful anonymous check.
Advertised destructive

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.

update_recipe input schema
{
  "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
}
update_recipe output schema
{
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "required": [
        "recipeId",
        "recipe",
        "requestId",
        "targetIds"
      ],
      "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"
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "ok",
        "code",
        "message",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "ok": {
          "type": "boolean",
          "const": false
        },
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    }
  ]
}
update_recipe annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
apply_recipe_patches — Apply Recipe Patches
Advertised by the server during the last successful anonymous check.
Advertised destructive

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.

apply_recipe_patches input schema
{
  "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
}
apply_recipe_patches output schema
{
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "required": [
        "reply",
        "editLabel",
        "patches",
        "recipeId",
        "baseRecipe",
        "remainingPatches",
        "snapshot",
        "saved",
        "measurementSystem",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "reply": {
          "type": "string"
        },
        "saved": {
          "type": "boolean"
        },
        "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
              }
            ]
          }
        },
        "recipeId": {
          "type": "string"
        },
        "snapshot": {
          "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
        },
        "editLabel": {
          "type": "string"
        },
        "requestId": {
          "type": "string"
        },
        "sessionId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "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
        },
        "remainingPatches": {
          "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
              }
            ]
          }
        },
        "measurementSystem": {
          "enum": [
            "source",
            "metric",
            "imperial"
          ],
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "ok",
        "code",
        "message",
        "errors",
        "patches",
        "recipeId",
        "baseRecipe",
        "remainingPatches",
        "snapshot",
        "saved",
        "measurementSystem",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "ok": {
          "type": "boolean",
          "const": false
        },
        "code": {
          "type": "string",
          "const": "invalid_patches"
        },
        "saved": {
          "type": "boolean"
        },
        "errors": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "message": {
          "type": "string"
        },
        "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
              }
            ]
          }
        },
        "recipeId": {
          "type": "string"
        },
        "snapshot": {
          "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
        },
        "requestId": {
          "type": "string"
        },
        "sessionId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "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
        },
        "remainingPatches": {
          "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
              }
            ]
          }
        },
        "measurementSystem": {
          "enum": [
            "source",
            "metric",
            "imperial"
          ],
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "ok",
        "code",
        "message",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "ok": {
          "type": "boolean",
          "const": false
        },
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    }
  ]
}
apply_recipe_patches annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
revert_recipe_edit — Revert Recipe Edit
Advertised by the server during the last successful anonymous check.
Advertised destructive

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.

revert_recipe_edit input schema
{
  "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
}
revert_recipe_edit output schema
{
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "required": [
        "recipeId",
        "snapshot",
        "reverted",
        "revertedPatches",
        "remainingPatches",
        "saved",
        "measurementSystem",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "saved": {
          "type": "boolean"
        },
        "recipeId": {
          "type": "string"
        },
        "reverted": {
          "type": "boolean"
        },
        "snapshot": {
          "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
        },
        "requestId": {
          "type": "string"
        },
        "sessionId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "revertedPatches": {
          "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
              }
            ]
          }
        },
        "remainingPatches": {
          "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
              }
            ]
          }
        },
        "measurementSystem": {
          "enum": [
            "source",
            "metric",
            "imperial"
          ],
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "ok",
        "code",
        "message",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "ok": {
          "type": "boolean",
          "const": false
        },
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    }
  ]
}
revert_recipe_edit annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
set_measurement_system — Set Measurement System
Advertised by the server during the last successful anonymous check.
Advertised destructive

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.

set_measurement_system input schema
{
  "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
}
set_measurement_system output schema
{
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "required": [
        "recipeId",
        "measurementSystem",
        "snapshot",
        "saved",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "saved": {
          "type": "boolean"
        },
        "recipeId": {
          "type": "string"
        },
        "snapshot": {
          "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
        },
        "requestId": {
          "type": "string"
        },
        "sessionId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "measurementSystem": {
          "enum": [
            "source",
            "metric",
            "imperial"
          ],
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "ok",
        "code",
        "message",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "ok": {
          "type": "boolean",
          "const": false
        },
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    }
  ]
}
set_measurement_system annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
delete_recipe — Delete Recipe
Advertised by the server during the last successful anonymous check.
Advertised destructive

Permanently delete a recipe owned by the authenticated user from their Sous Chef library. This cannot delete public catalog recipes.

delete_recipe input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    }
  },
  "additionalProperties": false
}
delete_recipe output schema
{
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "required": [
        "deleted",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "deleted": {
          "type": "boolean"
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "ok",
        "code",
        "message",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "ok": {
          "type": "boolean",
          "const": false
        },
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    }
  ]
}
delete_recipe annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
share_recipe — Share Recipe
Advertised by the server during the last successful anonymous check.
Open-world

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.

share_recipe input schema
{
  "type": "object",
  "required": [
    "recipeId"
  ],
  "properties": {
    "recipeId": {
      "type": "string",
      "minLength": 1
    }
  },
  "additionalProperties": false
}
share_recipe output schema
{
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "required": [
        "url",
        "title",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "url": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    {
      "type": "object",
      "required": [
        "ok",
        "code",
        "message",
        "requestId",
        "targetIds"
      ],
      "properties": {
        "ok": {
          "type": "boolean",
          "const": false
        },
        "code": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "requestId": {
          "type": "string"
        },
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    }
  ]
}
share_recipe annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

7 advertised

import_recipe_from_url — Import Recipe From URL

Advertised by the server during the last successful anonymous check.

Import a recipe URL into the authenticated user's Sous Chef library.

url
No description (required)
import_recipe_from_text — Import Recipe From Text

Advertised by the server during the last successful anonymous check.

Import pasted recipe text into the authenticated user's Sous Chef library.

text
No description (required)
edit_recipe — Edit Recipe

Advertised by the server during the last successful anonymous check.

Ask Sous Chef to edit a recipe by id.

recipeId
No description (required)
instruction
No description (required)
make_recipe_vegetarian — Make Recipe Vegetarian

Advertised by the server during the last successful anonymous check.

Prompt Sous Chef to make a recipe vegetarian.

recipeId
No description (required)
scale_recipe — Scale Recipe

Advertised by the server during the last successful anonymous check.

Prompt Sous Chef to scale a recipe to a target serving count.

recipeId
No description (required)
servings
No description (required)
simplify_recipe — Simplify Recipe

Advertised by the server during the last successful anonymous check.

Prompt Sous Chef to simplify a recipe.

recipeId
No description (required)
convert_recipe_units — Convert Recipe Units

Advertised by the server during the last successful anonymous check.

Prompt Sous Chef to convert a recipe to metric or imperial measurements.

recipeId
No description (required)
system
No description (required)

Resources

1 advertised

recipe-card-widget — Sous Chef Recipe Card

Advertised by the server during the last successful anonymous check.

Compact Sous Chef recipe card with save, validated edit Undo, measurement controls, and cooking mode.

recipe-card-widget URI
ui://sous-chef/recipe-card.html

MIME type: text/html;profile=mcp-app

recipe — Sous Chef Recipe

Advertised by the server during the last successful anonymous check.

Full accessible Sous Chef recipe by public or user recipe id.

recipe URI template
cochef://recipes/{id}

MIME type: application/json

session — Sous Chef Recipe Session

Advertised by the server during the last successful anonymous check.

Full recipe session snapshot owned by the authenticated user.

session URI template
cochef://sessions/{id}

MIME type: application/json

recipe-session — Sous Chef Active Recipe Session

Advertised by the server during the last successful anonymous check.

Active session snapshot for an accessible recipe and the authenticated user.

recipe-session URI template
cochef://recipes/{id}/session

MIME type: application/json

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
466 ms
95th percentile latency
466 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 466 ms · metadata changed · 11 tool(s), 1 resource(s), 3 resource template(s), 7 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http sous-chef-mcp https://mcp.mysouschef.app/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add sous-chef-mcp --url https://mcp.mysouschef.app/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable sous-chef-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "sous-chef-mcp": {
      "url": "https://mcp.mysouschef.app/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "sous-chef-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.mysouschef.app/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start sous-chef-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "sous-chef-mcp": {
      "type": "http",
      "url": "https://mcp.mysouschef.app/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http sous-chef-mcp https://mcp.mysouschef.app/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://mcp.mysouschef.app/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "sous-chef-mcp": {
      "serverUrl": "https://mcp.mysouschef.app/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Sous Chef MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Sous Chef MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing