Update Recipes
update_recipesBulk update recipes in Mealie. Modify multiple recipes simultaneously to change details, ingredients, or instructions.
Instructions
Update Many
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| accept-language | No |
update_recipesBulk update recipes in Mealie. Modify multiple recipes simultaneously to change details, ingredients, or instructions.
Update Many
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| accept-language | No |
Changes observed during successful MCP inspections.
v3.28.0Input schema / $defs / RecipeCommentOut-Input / requiredPrevious value: -[
- "recipeId",
- "text",
- "id",
- "createdAt",
- "update_at",
- "userId",
- "user"
-]New value: +[
+ "id",
+ "recipeId",
+ "text",
+ "createdAt",
+ "update_at",
+ "userId",
+ "user"
+]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?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing. For a bulk mutation of recipe records it says nothing about permissions, whether omitted fields are preserved or wiped, partial-failure behavior, or rate limits.
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?
Two words is short but this is under-specification, not conciseness. Nothing is front-loaded because nothing of substance is present.
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?
Given a very large nested input schema, no annotations, and no output schema, the description is completely inadequate. An agent has no basis on which to construct a correct bulk-update call.
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% and the schema is a deeply nested Recipe-Input structure. The description does not mention the required `body` array, the `accept-language` header, or any field semantics, so it adds zero meaning beyond the raw schema.
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?
"Update Many" supplies a verb but no resource, no scope, and no indication of what "many" refers to. It essentially restates the tool name's verb without telling the agent that this bulk-updates recipe records via a body array, and it does not distinguish itself from siblings like update_recipes_by_slug or patch_recipes.
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?
There is no when-to-use guidance at all. With numerous near-neighbors (update_recipes_by_slug, patch_recipes, patch_recipes_by_slug, create_recipes_bulk_actions_*), the agent is given nothing to decide when this bulk update is the right call versus a per-slug update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.