Patch Recipes
patch_recipesUpdate multiple Mealie recipes at once by sending an array of recipe objects with the desired changes.
Instructions
Patch Many
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| accept-language | No |
patch_recipesUpdate multiple Mealie recipes at once by sending an array of recipe objects with the desired changes.
Patch Many
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| accept-language | No |
Changes observed during successful MCP inspections.
v3.26.0Input schema / $defs / CreateIngredientFood / properties / substitutionsAdded value: +{
+ "items": {
+ "$ref": "#/$defs/CreateIngredientFoodSubstitution"
+ },
+ "type": "array"
+}Input schema / $defs / CreateIngredientFoodSubstitutionAdded value: +{
+ "properties": {
+ "note": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "substituteFoodId": {
+ "anyOf": [
+ {
+ "format": "uuid",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "type": "object"
+}Input schema / $defs / IngredientFood-Input / properties / substitutionsAdded value: +{
+ "items": {
+ "$ref": "#/$defs/IngredientFoodSubstitution"
+ },
+ "type": "array"
+}Input schema / $defs / IngredientFoodSubstitutionAdded value: +{
+ "properties": {
+ "note": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "substituteFood": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/IngredientFoodSummary"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "substituteFoodId": {
+ "anyOf": [
+ {
+ "format": "uuid",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "type": "object"
+}Input schema / $defs / IngredientFoodSummaryAdded value: +{
+ "description": "A trimmed projection of a food, with nothing on it that can recurse.\n\nSubstitutions reference this rather than the full IngredientFood, which would make\nPydantic walk food -> substitutions -> food forever and generate an equally circular\nTypeScript type.",
+ "properties": {
+ "id": {
+ "format": "uuid",
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "pluralName": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "id",
+ "name"
+ ],
+ "type": "object"
+}Input schema / $defs / NoteReferenceAdded value: +{
+ "properties": {
+ "referenceId": {
+ "anyOf": [
+ {
+ "format": "uuid",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "type": "object"
+}Input schema / $defs / RecipeIngredient-Input / properties / substitutionsAdded value: +{
+ "items": {
+ "$ref": "#/$defs/RecipeIngredientSubstitution"
+ },
+ "type": "array"
+}Input schema / $defs / RecipeIngredientSubstitutionAdded value: +{
+ "properties": {
+ "note": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "substituteFood": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/IngredientFoodSummary"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "substituteFoodId": {
+ "anyOf": [
+ {
+ "format": "uuid",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "type": "object"
+}Input schema / $defs / RecipeNote / properties / referenceIdAdded value: +{
+ "format": "uuid",
+ "type": "string"
+}Input schema / $defs / RecipeStep / properties / noteReferencesAdded value: +{
+ "items": {
+ "$ref": "#/$defs/NoteReference"
+ },
+ "type": "array"
+}v3.25.1Input schema / $defs / RecipeCategory / properties / recipeCountAdded value: +{
+ "type": "integer"
+}Input schema / $defs / RecipeTag / properties / recipeCountAdded value: +{
+ "type": "integer"
+}Input schema / $defs / RecipeTool / properties / recipeCountAdded value: +{
+ "type": "integer"
+}v3.20.1Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. 'Patch Many' vaguely implies a bulk update and therefore mutation, but it doesn't disclose semantics such as partial vs full replacement, whether IDs in the request body identify existing recipes or create new ones, or any side effects. The behavior is barely conveyed beyond the HTTP method in the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this is under-specification rather than efficient conciseness. Every word including the title adds almost no information, and there is no front-loaded statement of what resource is patched or how.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that accepts an array of full Recipe-Input objects, has no annotations, no output schema, and 0% parameter description coverage, this description is far from sufficient. An agent cannot determine the target resource, the bulk semantics, required fields, or how this differs from sibling update endpoints like 'patch_recipes_by_slug' and 'update_recipes'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the parameters and schema definitions, but 'Patch Many' adds no meaning to the body array or accept-language parameter. It doesn't even confirm that the body is a patch payload for recipes; an agent would have to inspect the schema's Recipe-Input definition and infer the semantics. The rich Recipe-Input type is never tied to the operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Patch Many' tells us only that this tool patches multiple things, without naming the resource (recipes) or the verb's effect. The tool name 'patch_recipes' and title 'Patch Recipes' independently hint at updating recipes, but the description itself contributes zero clarity about what the tool does. It doesn't distinguish this bulk patch from the sibling 'update_recipes' or 'patch_recipes_by_slug' at all.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is offered about when to use this bulk patch rather than the many sibling recipe endpoints like 'patch_recipes_by_slug' or 'update_recipes'. The only implied signal is the word 'Many', which weakly suggests a bulk operation. There is no when-to-use or alternative routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.