Skip to main content
Glama
recipe-mcp-server

recipe-mcp-server

shopping_list

Combine multiple recipes into one grouped shopping list that separates pantry items you already have from ingredients you still need to buy, scaled to your servings and organized by store section.

Instructions

Combine recipes into one grouped shopping list. Items matched against your pantry move to 'already_have'; the rest are grouped by store section showing the scaled amounts you still need to buy.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "recipe_ids": "<recipe_ids>"
    },
    "name": "shopping_list"
  }
}

Input Schema

NameRequiredDescriptionDefault
pantryNoIngredients you already have, e.g. ['olive oil', 'rice']
servingsNoOptional: {recipe_id: servings} to scale per recipe
recipe_idsYesRecipe ids to combine

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it delivers: it discloses the two output buckets ('already_have' vs. to-buy) and that the to-buy items are grouped by store section with scaled amounts. The gap is whether 'your pantry' refers to the pantry parameter or stored state, and what happens if pantry is omitted.

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

Conciseness4/5

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

Two tight sentences with the core action front-loaded and the output behavior following. No filler, though the closing clause packs pantry matching, grouping, and scaling together densely.

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

Completeness3/5

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

For a 3-parameter tool with a nested servings object, no annotations, and no output schema, the description does well to explain the returned grouping. It leaves open pantry-omission behavior, servings defaults, and how unknown recipe ids are handled, which matters given the nested-object input.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description earns above baseline by explaining what the pantry input actually does (matched items are diverted to 'already_have') and by tying 'scaled amounts' to the servings object. It does not clarify servings defaults or behavior for unlisted recipes.

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 gives a concrete verb and artifact: 'Combine recipes into one grouped shopping list', which is distinct from siblings like list_recipes, get_recipe, and scale_recipe. It stops short of naming those siblings, but the output framing (grouped list vs. single recipe) makes the distinction inferable.

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

Usage Guidelines3/5

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

Usage is implied by the purpose — you call this when you want to shop for multiple recipes at once — but there is no explicit when-to-use/when-not-to-use statement and no mention of scale_recipe as the alternative for single-recipe scaling. An agent can infer the case but gets no routing guidance.

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