Skip to main content
Glama

ReciPal MCP by usefulapi

Create ingredient

recipal_create_ingredient
Destructive

WRITE: create a custom ingredient (private to your account) with its nutrition facts. For a food ingredient give nutrition_unit and nutrition_quantity (the serving the nutrients are entered for, e.g. 1 cup; for units beyond gram/oz/lb/kg add them in measures first) and all required nutrients. food and non_food cannot be changed later. Non-food items: set food=false and non_food to labor, packaging, safety, other_hourly or other_fixed. POST /ingredients.

Input Schema

NameRequiredDescriptionDefault
foodNotrue (default) for a food ingredient; false for a non-food item.
nameYesIngredient name (unique unless private).
brandNoBrand name, mainly to verify data.
sourceNoData source: URL, supplier or recipe id.
measuresNoCustom units, e.g. [{quantity:1, unit:'cup', equivalent_quantity:240, equivalent_unit:'gram'}].
non_foodNoRequired when food=false.
allergensNoAllergens by name, e.g. {"Milk": true, "Almond": true, "other-shellfish": "Oyster"}. Standard names: Wheat, Peanuts, Soy, Sesame, Mustard, Sulfites, Milk (Goat milk, Sheep milk), Egg (Duck egg, Quail egg), Fish (Tuna, Cod, Salmon, Bass), Shellfish (Crab, Lobster, Shrimp), tree nuts (Almond, Cashew, Hazelnut, Macadamia nut, Pecan, Pine nut, Pistachio, Walnut ...), Gluten (Barley, Oats, Rye, Triticale). other-milk/-egg/-fish/-shellfish/-treenut take a free-text source. An empty object {} clears all allergens.
nutrientsNoNutrition facts (food ingredients only). Amounts per serving (nutrition_quantity x nutrition_unit): calories; grams for protein, fat, fat_saturated, fat_trans, carbohydrate, fiber, uncounted_fiber, sugar, added_sugar, sugar_alcohol, fat_monounsaturated, fat_polyunsaturated, omega_3, omega_6, water, ash; milligrams for cholesterol, sodium, calcium, iron, potassium, vitamin_c, vitamin_e, thiamin, riboflavin, niacin, vitamin_b6, pantothenic_acid, phosphorus, magnesium, zinc, copper, manganese, chloride, choline; micrograms for vitamin_k, folate, vitamin_b12, biotin, iodine, selenium, chromium, molybdenum; IU for vitamin_d_IU and vitamin_a_IU. Required for a food ingredient: calories, protein, fat, fat_saturated, fat_trans, cholesterol, carbohydrate, fiber, sugar, added_sugar, sodium, calcium, iron, vitamin_a_IU, vitamin_c.
nutrition_unitNoRequired for food and safety ingredients. Food: the unit the nutrients are entered in (gram, oz, lb, kg, "100 grams", a unit from measures, or a volume unit such as cup once measures includes a volume). Safety: deg_f, deg_c, ph, brix, aw, seconds, minutes, hours, psi, ppm, percent, pass_fail or each.
ingredient_listNoIngredient list text as it appears on a label, e.g. "Curlies (Milk, Sugar)".
nutrition_quantityNoRequired for food ingredients: quantity of nutrition_unit the nutrients are for, e.g. 0.5 for 0.5 cup.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly=false, destructive=true, and idempotent=false, so the safety profile is covered structurally. The description adds genuinely non-obvious behavior: the record is private to the account, and food/non_food are immutable after creation — a constraint an agent could not infer from annotations or schema. It does not mention rate limits, auth scopes, or whether a partial failure rolls back.

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?

Front-loads the operation type and core purpose in the first clause, then layers food vs non-food branching and the immutability warning. The single dense paragraph is slightly run-on across the food/non-food split, which would read better as two sentences, but no sentence is filler.

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

Completeness4/5

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

For an 11-parameter tool with nested objects, 1 required field, and no output schema, the description covers the branches and order-of-operations an agent needs. The one real gap is that it never says what comes back on success (presumably the created ingredient id), which matters for a create call the agent will likely chain into create_ingredient_cost.

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 description coverage is 100%, so the baseline is 3; the description earns an upgrade by adding cross-parameter semantics the schema cannot express — that measures must be populated before a custom volume unit can be used in nutrition_unit, and that nutrients are entered per nutrition_quantity x nutrition_unit. It stops short of 5 because the lengthy nutrient list itself is left entirely to the schema.

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

Purpose5/5

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

States a specific verb and resource ("create a custom ingredient") plus a distinguishing scope ("private to your account"), which separates it from recipal_create_ingredient_cost, recipal_add_recipe_ingredient, and recipal_update_ingredient. The leading "WRITE:" marker makes the operation class immediately obvious.

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

Usage Guidelines4/5

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

Gives concrete conditional guidance: food ingredients need nutrition_unit/nutrition_quantity and required nutrients, while non-food items need food=false plus one of five non_food enum values. It also states a prerequisite ("for units beyond gram/oz/lb/kg add them in measures first"). It falls short of 5 because it never names a sibling to use instead, e.g. update_ingredient for modifications or create_ingredient_cost for costing.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.