Skip to main content
Glama
djwmarcx

Better Mealie MCP

Update Recipes By Slug

update_recipes_by_slug

Update an existing Mealie recipe by its slug with the provided fields. Apply changes to ingredients, instructions, nutrition, or settings in one call.

Instructions

Updates a recipe by existing slug and data.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNo
nameNo
slugNo
tagsNo
imageNo
notesNo
toolsNo
assetsNo
extrasNo
orgURLNo
ratingNo
userIdNo
groupIdNo
commentsNo
cookTimeNo
lastMadeNo
prepTimeNo
settingsNo
createdAtNo
dateAddedNo
nutritionNo
totalTimeNo
update_atNo
slug__pathYes(Path parameter)
dateUpdatedNo
descriptionNo
householdIdNo
performTimeNo
recipeYieldNo
recipeCategoryNo
recipeServingsNo
accept-languageNo
recipeIngredientNo
recipeInstructionsNo
recipeYieldQuantityNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 schema fields changedv3.26.0
    • addedInput schema / $defs / CreateIngredientFood / properties / substitutions
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/CreateIngredientFoodSubstitution"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / $defs / CreateIngredientFoodSubstitution
      Added value: +{
      +  "properties": {
      +    "note": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "substituteFoodId": {
      +      "anyOf": [
      +        {
      +          "format": "uuid",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / $defs / IngredientFood-Input / properties / substitutions
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/IngredientFoodSubstitution"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / $defs / IngredientFoodSubstitution
      Added 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"
      +}
    • addedInput schema / $defs / IngredientFoodSummary
      Added 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"
      +}
    • addedInput schema / $defs / NoteReference
      Added value: +{
      +  "properties": {
      +    "referenceId": {
      +      "anyOf": [
      +        {
      +          "format": "uuid",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / $defs / RecipeIngredient-Input / properties / substitutions
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/RecipeIngredientSubstitution"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / $defs / RecipeIngredientSubstitution
      Added 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"
      +}
    • addedInput schema / $defs / RecipeNote / properties / referenceId
      Added value: +{
      +  "format": "uuid",
      +  "type": "string"
      +}
    • addedInput schema / $defs / RecipeStep / properties / noteReferences
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/NoteReference"
      +  },
      +  "type": "array"
      +}
  2. Changed3 schema fields changedv3.25.1
    • addedInput schema / $defs / RecipeCategory / properties / recipeCount
      Added value: +{
      +  "type": "integer"
      +}
    • addedInput schema / $defs / RecipeTag / properties / recipeCount
      Added value: +{
      +  "type": "integer"
      +}
    • addedInput schema / $defs / RecipeTool / properties / recipeCount
      Added value: +{
      +  "type": "integer"
      +}
  3. First observedv3.20.1

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only conveys that a mutation occurs, which is tautological with the tool name. It does not state whether omitted fields are cleared/reset (full replacement semantics) or preserved, whether nested objects like ingredients and instructions are upserted or replaced wholesale, what permissions are required, or any side effects. For a mutation tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is technically compact, but this is under-specification rather than conciseness. Given a 35-parameter, deeply nested schema with no annotations and no output schema, an 8-word description omits far too much. There is no structure front-loading key facts because there are effectively no facts beyond what the title already states.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a complex mutation tool with 35 parameters, a deeply nested schema (Nutrition, RecipeStep, RecipeIngredient, RecipeSettings, etc.), no annotations, and no output schema. The description does not explain update semantics, behavior for omitted nested collections, whether slug itself can be changed, auth requirements, or what the response contains. The description is severely inadequate for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 3% (just the slug__path path parameter), so the description must compensate for 34 undocumented parameters. It fails to do so: 'data' is the vaguest possible term and conveys nothing about the shape of the payload, required sub-fields, or how the nested Recipe-Input structure maps to the update. The parameter names are self-explanatory, but the description adds no semantic value beyond them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Updates') and resource ('recipe'), and identifies the lookup mechanism ('by existing slug'). This clearly distinguishes it from update_recipes/patch_recipes which operate without a slug. However, it does not differentiate it from patch_recipes_by_slug, which shares the same resource and lookup mechanism, so the purpose is clear but sibling differentiation is incomplete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus the many closely related siblings: patch_recipes_by_slug, update_recipes, patch_recipes, get_recipes_by_slug, delete_recipes_by_slug. An agent must infer from the name alone whether to select a full update (PUT) or a partial update (PATCH), with no explicit exclusions or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools