kaimeilabs avatar

Guardian Engine

kaimeilabs/guardian-api-docs

Guardian Engine is a hosted MCP server that validates AI-generated recipes against curated master SOPs for 51 dishes across European, Asian, American, and African cuisines. It exposes two tools: verify_recipe takes a candidate JSON recipe and returns a deterministic pass/fail verdict with severity-ranked findings (missing ingredients, wrong temperatures, incorrect techniques), and list_dishes returns the available catalog with optional cuisine filtering. The verification output includes an authenticity score, allergen warnings, and culinary justifications for each issue. Reach for this when you're building agents that generate recipes and need to catch hallucinated steps or ingredient substitutions before they ship. No auth required during early access, connects via streamable HTTP to api.kaimeilabs.dev/mcp.

tools
7
transport
HTTP
last updated
Feb 27, 2026

Install

From registry metadata
$ npx add-mcp https://api.kaimeilabs.dev/mcp --name guardian-engine

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http guardian-engine https://api.kaimeilabs.dev/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 7 tools

Verified live against the running server on Nov 6, 2026.

verify_recipeVerify 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 fi...8 params

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 fi...

Parameters* required
candidate_jsonvalue
The full candidate recipe as a JSON string or object. Expected schema: {"title": "<string>", "cuisine": "<string>", "serves": <int>, "ingredients": [{"name": "<string>", "quantity": "<string>"}], "...default:
dishvalue
Alias for dish_name — for backward compatibility with production clients.
dish_namestring
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()...default:
master_jsonvalue
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_m...
operator_idvalue
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'.
original_promptvalue
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...
response_formatstring
Response format: 'json' (default — machine-actionable verdict, findings, and patches) or 'text' (human-readable report).default: json
session_idvalue
Optional session ID to track an agent's improvement loop across multiple attempts.
fix_recipeDeterministically 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-...6 params

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-...

Parameters* required
candidate_jsonvalue
The full candidate recipe as a JSON string or object — same schema as verify_recipe's candidate_json (title, cuisine, ingredients[], steps[]).default:
dishvalue
Alias for dish_name — for backward compatibility with production clients.
dish_namestring
Name of the dish to repair against (e.g. 'carbonara', 'rendang', 'roast-chicken'). Use list_dishes() to see all available recipes and their aliases.default:
master_jsonvalue
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 su...
original_promptvalue
Optional. The user's original cooking request, used only for safety-context awareness during verification. Does not change which fixes are applied.
response_formatstring
Response format: 'json' (default — includes the full fixed_recipe object) or 'text' (human-readable report).default: json
list_dishesList all available master dishes with rich metadata. This is a browse/discovery step, not the verification itself — after picking a dish, call verify_recipe(dish_name=<slug>, candidate_json=<your recipe>) to actually check a candidate against it (or fix_recipe to auto-repair i...1 params

List all available master dishes with rich metadata. This is a browse/discovery step, not the verification itself — after picking a dish, call verify_recipe(dish_name=<slug>, candidate_json=<your recipe>) to actually check a candidate against it (or fix_recipe to auto-repair i...

Parameters* required
cuisine_filterstring
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 |...default:
get_masterReturn 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 c...2 params

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 c...

Parameters* required
dish_namestring
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...default:
response_formatstring
Response format: 'json' (default, structured) or 'text' (human-readable summary).default: json
check_safetyRun 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 determinis...1 params

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 determinis...

Parameters* required
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_allergensCheck 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 — and is pinned by the r...7 params

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 — and is pinned by the r...

Parameters* required
check_all_eu_allergensboolean
If True, scans for all 14 EU Annex II allergens regardless of restrictions list. Use this for food labelling (declare all allergens present).default: false
dish_namevalue
Optional dish name for reporting context.
ingredients*array
List of ingredient names (freeform or canonical IDs). Examples: ['butter', 'wheat_flour', 'eggs', 'peanut_butter']
operator_idvalue
Optional audit identifier for the calling operator (letters, digits, hyphens; max 64 chars). Tags the check in the telemetry log. Defaults to 'anonymous'.
response_formatstring
Response format: 'json' (default) for the machine-actionable payload, or 'text' for a human-readable report.default: json
restrictionsvalue
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 c...
session_idvalue
Optional session identifier so repeated checks are stitched into one trajectory.
verify_dietary_claimVerify 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 ingredi...3 params

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 ingredi...

Parameters* required
candidate_jsonstring
Recipe JSON string (CandidateRecipe schema). Expected shape: {"title": "...", "ingredients": [{"name": "..."}, ...], "steps": [...]}. Only the ingredient list is required for dietary verification.default:
claimstring
Dietary claim to verify: vegan | vegetarian | gluten_free | dairy_free | nut_free | halal | kosher.default:
response_formatstring
Response format: 'text' (default, human-readable) or 'json' (machine-actionable).default: text

Sponsors

Readme

Guardian Engine — API & MCP Integration Guide

A deterministic oracle inside your agent's generate→verify loop. Your LLM authors the recipe; Guardian judges it. Guardian Engine catches hallucinated temperatures, missing techniques, wrong ingredients, and impossible cooking steps before they reach the pan — and returns machine-actionable patches so your agent can fix exactly what's wrong. Recipes are the first vertical — the same deterministic approach generalises to any procedural domain where correctness matters.

Why an oracle instead of another LLM critique? An LLM critique is a sample — it misses differently on every run. Guardian's symbolic engine makes guarantees a generative model structurally cannot:


View the full README on GitHub

Details

Repository
github.com/kaimeilabs/guardian-api-docs
Transport
HTTP
Registry
MCP registry, active
Prompts
1
Tools verified
Nov 6, 2026