Hosted MCP server · #161 most used on Smithery
Guardian
kaimeilabs/guardian-engine
Deterministic recipe verification for AI agents. Catches hallucinated temperatures, missing techniques, wrong ingredients, and impossible cooking steps — then suggests one-click fixes. Covers 161+ dishes across 5 cuisines. Also checks EU allergen compliance (all 14 Annex II groups), verifies dietary claims (vegan, halal, kosher, gluten-free), and flags safety issues. Verify against Guardian's built-in master specs or your own house recipe. Same input → same verdict, every time. No API key required.
- Uses
- 3.2k
- Tools
- 7
- Runs
- Hosted
- Prompts
- 1
- Listed
- 8mo ago
Get started
Add it to your agent
npx -y @smithery/cli@latest install kaimeilabs/guardian-engine --client claudeSwap --client claude for cursor, vscode, windsurf or another client. The CLI asks for any required settings.
claude mcp add --transport http guardian https://server.smithery.ai/kaimeilabs/guardian-engine/mcpA hosted server: nothing to install. Run /mcp in Claude Code to sign in if it asks.
[mcp_servers.guardian]
url = "https://server.smithery.ai/kaimeilabs/guardian-engine/mcp"Add to ~/.codex/config.toml.
{
"mcpServers": {
"guardian": {
"url": "https://server.smithery.ai/kaimeilabs/guardian-engine/mcp"
}
}
}Add to ~/.cursor/mcp.json.
{
"servers": {
"guardian": {
"type": "http",
"url": "https://server.smithery.ai/kaimeilabs/guardian-engine/mcp"
}
}
}Add to .vscode/mcp.json.
gemini mcp add --transport http guardian https://server.smithery.ai/kaimeilabs/guardian-engine/mcpSaved to .gemini/settings.json.
What it can do
7 tools
verify_recipe8 paramsVerify a candidate recipe against a Guardian master recipe. Uses deterministic graph-based verification to check technique, temperature, …
Verify a candidate recipe against a Guardian master recipe. Uses deterministic graph-based verification to check technique, temperature, timing, cooking medium, and required ingredients. **Verdict**: `verdict` is strictly PASSED or FAILED and is policy-driven — any CRITICAL finding fails the recipe; more than 5 WARNINGs also fail. There is no score in the response (ADR-013): gate on `verdict` and explain failures from `findings`. **Field audience**: `issue` is a machine-readable code for program
| Parameter | Type | Description |
|---|---|---|
dish | Alias for dish_name — for backward compatibility with production clients. | |
dish_name | string | Name of the dish to verify against (e.g. 'carbonara', 'rendang', 'roast-chicken', 'confit', 'cheesecake', 'kung-pao', 'fried-chicken', 'brisket', 'wellington', 'cheese-souffle'). Use list_dishes() to |
session_id | Optional session ID to track an agent's improvement loop across multiple attempts. | |
master_json | Optional user-supplied master SOP to verify against (BYO master, ADR-018), as a JSON string or object using the same schema as catalog masters (dish_name, steps[], required_ingredients[]; see get_mast | |
operator_id | Optional audit identifier for the calling operator (letters, digits, hyphens; max 64 chars). Tags the verification in the tamper-evident log and compliance record. Defaults to 'anonymous'. | |
candidate_json | The full candidate recipe as a JSON string or object. Expected schema: {"title": "<string>", "cuisine": "<string>", "serves": <int>, "ingredients": [{"name": "<string>", "quantity": "<string>"}], "ste | |
original_prompt | RECOMMENDED for best results. Include the user's original cooking request. Copy the user's exact message that triggered this recipe (e.g., 'Make me a spicy vegan rendang' or 'Generate a traditional ca | |
response_format | string | Response format: 'json' (default — machine-actionable verdict, findings, and patches) or 'text' (human-readable report). |
fix_recipe6 paramsDeterministically repair a candidate recipe against a Guardian master. Verifies the candidate, applies every machine-actionable correctio…
Deterministically repair a candidate recipe against a Guardian master. Verifies the candidate, applies every machine-actionable correction the symbolic engine produced (missing ingredients, quantities, temperatures, durations, cooking media, ingredient substitutions), then re-verifies the result. No LLM is used — the repair is a deterministic function of the candidate recipe and the master ruleset. Findings that need recipe-authoring judgement — adding a whole cooking phase, rewriting step instr
| Parameter | Type | Description |
|---|---|---|
dish | Alias for dish_name — for backward compatibility with production clients. | |
dish_name | string | Name of the dish to repair against (e.g. 'carbonara', 'rendang', 'roast-chicken'). Use list_dishes() to see all available recipes and their aliases. |
master_json | Optional user-supplied master SOP to repair against (BYO master, ADR-018), same schema as catalog masters. When provided, the catalog is bypassed and dish_name may be omitted; patches (including sugge | |
candidate_json | The full candidate recipe as a JSON string or object — same schema as verify_recipe's candidate_json (title, cuisine, ingredients[], steps[]). | |
original_prompt | Optional. The user's original cooking request, used only for safety-context awareness during verification. Does not change which fixes are applied. | |
response_format | string | Response format: 'json' (default — includes the full fixed_recipe object) or 'text' (human-readable report). |
list_dishes1 paramList all available master dishes with rich metadata. Returns: Dictionary with `schema_version` and a `dishes` list. Each dish includes sl…
List all available master dishes with rich metadata. Returns: Dictionary with `schema_version` and a `dishes` list. Each dish includes slug, title, cuisine, region, aliases, and complexity.
| Parameter | Type | Description |
|---|---|---|
cuisine_filter | string | Optional cuisine to filter by. Case-insensitive exact match against the dish's cuisine field. Valid values: italian | french | spanish | british | thai | chinese | indian | indonesian | japanese | mal |
get_master2 paramsReturn the canonical master recipe for a dish (read-only, no LLM). Enables compare-then-verify agentic loops: fetch the master, diff it a…
Return the canonical master recipe for a dish (read-only, no LLM). Enables compare-then-verify agentic loops: fetch the master, diff it against the user's recipe, then call verify_recipe — instead of verifying blind. Pure knowledge-base lookup, no LLM in the hot path. Master content is transparent by default (ADR-009 / ADR-010): exact temperatures, timings, and EU FIC 1169/2011 allergen codes are returned verbatim, never obfuscated. No score is included (ADR-013) — this is reference data, not a
| Parameter | Type | Description |
|---|---|---|
dish_name | string | Name or alias of the dish to fetch the canonical master recipe for (e.g. 'carbonara', 'spaghetti bolognese', 'angel food cake'). Alias resolution and slug normalisation are applied. Use list_dishes() |
response_format | string | Response format: 'json' (default, structured) or 'text' (human-readable summary). |
check_safety1 paramRun master-independent safety checks on a candidate recipe. Works for ANY recipe — no dish resolution, no master SOP required. Checks pou…
Run master-independent safety checks on a candidate recipe. Works for ANY recipe — no dish resolution, no master SOP required. Checks poultry internal-temperature safety and scans all ingredients for the 14 EU FIC 1169/2011 Annex II allergen groups. The verdict is a deterministic function of (candidate, kb_version_hash) — no LLM involvement. Use this when verify_recipe has no matching master for the dish: the safety layer still applies to every recipe. Returns: Safety envelope: verdict (PASSED/F
| Parameter | Type | Description |
|---|---|---|
candidate_json | string | The full candidate recipe as a JSON string. Checked for poultry internal temperature safety (≥74°C) and EU FIC 1169 allergen presence. |
check_allergens5 paramsCheck ingredients for EU FIC 1169/2011 allergen compliance. Returns a detailed audit trace mapping each ingredient to its EU Annex II all…
Check ingredients for EU FIC 1169/2011 allergen compliance. Returns a detailed audit trace mapping each ingredient to its EU Annex II allergen group with entry numbers and labels. The safety verdict is deterministic — no LLM involvement in the decision. Use check_all_eu_allergens=True for food labelling (detect all allergens). Use restrictions=['dairy', 'gluten'] to check for specific user allergies.
| Parameter | Type | Description |
|---|---|---|
dish_name | Optional dish name for reporting context. | |
ingredients | array | List of ingredient names (freeform or canonical IDs). Examples: ['butter', 'wheat_flour', 'eggs', 'peanut_butter'] |
restrictions | Allergen group IDs to check against user restrictions. Valid IDs: gluten, crustaceans, eggs, fish, peanuts, soy, dairy, tree_nuts, celery, mustard, sesame, sulphites, lupin, molluscs. If None and chec | |
response_format | string | Response format: 'text' (default) or 'json'. Use 'json' for machine-actionable output. |
check_all_eu_allergens | boolean | If True, scans for all 14 EU Annex II allergens regardless of restrictions list. Use this for food labelling (declare all allergens present). |
verify_dietary_claim3 paramsVerify that a recipe satisfies a dietary claim (vegan, halal, gluten-free, ...). Reuses the existing allergen-detection logic plus a cura…
Verify that a recipe satisfies a dietary claim (vegan, halal, gluten-free, ...). Reuses the existing allergen-detection logic plus a curated forbidden-ingredient map (apps/guardian/knowledge/dietary_claims.yaml). Returns a structured verdict with the specific offending ingredients and a short justification — never a vague paraphrase.
| Parameter | Type | Description |
|---|---|---|
claim | string | Dietary claim to verify: vegan | vegetarian | gluten_free | dairy_free | nut_free | halal | kosher. |
candidate_json | string | Recipe JSON string (CandidateRecipe schema). Expected shape: {"title": "...", "ingredients": [{"name": "..."}, ...], "steps": [...]}. Only the ingredient list is required for dietary verification. |
response_format | string | Response format: 'text' (default, human-readable) or 'json' (machine-actionable). |
Ready-made
Prompts
verify_recipe_promptProvides instructions and a template for an AI agent to verify a recipe. Args: dish: The name of the dish to verify (e.g. 'carbonara', 'rendang').