Unofficial MCP server for the ReciPal nutrition-label API — recipes, ingredients, subrecipes, labels, and bulk clone/swap.
Solid foundation with complete schemas and descriptions for all 20 tools. Naming follows verb_noun convention consistently (list_, get_, create_, update_, delete_, clone_, swap_, render_). Descriptions are present and actionable (avg ~120 chars). However, several tools lack parameter-level descriptions, and output schemas are not documented. Error handling is minimal, no recovery guidance or actionable error messages. The open 'fields' object pattern (tools 3, 4, 8, 9, 12, 13) trades specificity for flexibility but reduces LLM clarity about valid attributes. No tool annotations (readOnlyHint, destructiveHint) despite clear risk stratification.
Clone multiple recipes in sequence. Loops strictly sequentially; no parallelism.
Swap an ingredient across multiple recipes in sequence.
Clone a recipe, optionally with a new name.
Create a new recipe. Pass an open fields object; undocumented attributes work without code changes.
Add an ingredient line to a recipe.
Add a subrecipe to a recipe.
Permanently delete a recipe. ReciPal has no undo. Requires RECIPAL_MCP_ALLOW_DELETE=1.
Open 'fields' object pattern lacks parameter-level documentation. Tools 3, 4, 8, 9, 12, 13 accept arbitrary key/value pairs with no schema constraints or enumeration of valid attributes. LLMs cannot infer which fields are valid, required, or what types they accept.
No output schemas documented. Tools return data but LLMs have no formal specification of response structure, field types, or pagination. This forces LLMs to guess at response shape and risks extraction errors.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools are stratified by risk (READ_ONLY, WRITE, DESTRUCTIVE, IRREVERSIBLE) but this metadata is not exposed in the MCP tool definition. Clients cannot distinguish safe from dangerous tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Permanently remove an ingredient line from a recipe. ReciPal has no undo. Requires RECIPAL_MCP_ALLOW_DELETE=1.
Remove a subrecipe from a recipe.
Fetch a single ingredient by ID.
Fetch a single recipe by ID, including all ingredients and subrecipes.
List ingredients in the catalog, optionally filtered by name.
List recipes, optionally filtered by name or tag.
List subrecipes in a recipe.
Make an arbitrary HTTP request to the ReciPal API. Requires RECIPAL_MCP_ENABLE_RAW=1.
Render a nutrition label for a recipe.
Swap all instances of one ingredient for another across a recipe.
Update an existing recipe. Pass only the fields you want to change.
Update an ingredient line in a recipe.
Update a subrecipe in a recipe.
Error handling lacks recovery guidance. No evidence of actionable error messages, categorization (retryable vs user-fixable), or suggestions for next steps. LLMs receive raw API errors with no context for self-correction.
recipal_request tool is a generic HTTP gateway with no constraints. Accepts arbitrary method/path/body. While gated by RECIPAL_MCP_ENABLE_RAW=1, this bypasses all tool-level safety and makes audit/compliance difficult.