Guardian Engine
Server Details
Deterministic recipe verification engine — validates AI-generated recipes against master SOPs.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- kaimeilabs/guardian-api-docs
- GitHub Stars
- 0
- Server Listing
- guardian-engine
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.5/5 across 6 of 6 tools scored. Lowest: 3.8/5.
Each tool has a clearly distinct purpose: allergen checking, recipe repair, master retrieval, dish listing, dietary claim verification, and recipe verification. No two tools overlap in functionality, and the descriptions clarify any potential confusion.
All tool names follow a consistent verb_noun pattern using lowercase and underscores (e.g., check_allergens, fix_recipe, get_master). This makes the tool set predictable and easy to navigate.
With 6 tools, the set is well-scoped for the domain of recipe verification and mastery. Each tool covers a necessary operation without redundancy or bloat, and the count feels natural for the described purpose.
The tool set covers the core workflows: listing dishes, retrieving master recipes, verifying recipes, checking allergens, verifying dietary claims, and fixing recipes. A minor gap is the lack of a search tool for dishes, but list_dishes returns all dishes with metadata, which is sufficient for most use cases.
Available Tools
7 toolscheck_allergensRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dish_name | No | Optional dish name for reporting context. | |
| ingredients | Yes | List of ingredient names (freeform or canonical IDs). Examples: ['butter', 'wheat_flour', 'eggs', 'peanut_butter'] | |
| restrictions | No | 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 check_all_eu_allergens=True, reports all detected allergens. | |
| response_format | No | Response format: 'text' (default) or 'json'. Use 'json' for machine-actionable output. | text |
| check_all_eu_allergens | No | If True, scans for all 14 EU Annex II allergens regardless of restrictions list. Use this for food labelling (declare all allergens present). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
check_safetyRead-onlyIdempotentInspect
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/FAILED per the zero-critical policy gate), safe flag, issues found, and the pinned kb_version_hash.
| Name | Required | Description | Default |
|---|---|---|---|
| candidate_json | Yes | The full candidate recipe as a JSON string. Checked for poultry internal temperature safety (≥74°C) and EU FIC 1169 allergen presence. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
fix_recipeIdempotentInspect
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 instructions, ingredient-ratio rebalancing — are not
auto-applied; they are returned under patches_skipped. Allergen findings
are never auto-fixed. The response reports the verdict before and after so
the caller can see exactly what was resolved.
Note: verdict_after may still be FAILED when structural changes (e.g.
adding a cooking step, rebalancing ingredient ratios) are needed. These
require recipe-authoring judgement and are returned under patches_skipped.
Callers should NOT assume a fixed recipe will pass verification.
| Name | Required | Description | Default |
|---|---|---|---|
| dish | No | Alias for dish_name — for backward compatibility with production clients. | |
| dish_name | No | 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 | No | 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 suggested_step templates) are built from THIS spec. | |
| candidate_json | No | The full candidate recipe as a JSON string or object — same schema as verify_recipe's candidate_json (title, cuisine, ingredients[], steps[]). | |
| original_prompt | No | Optional. The user's original cooking request, used only for safety-context awareness during verification. Does not change which fixes are applied. | |
| response_format | No | Response format: 'json' (default — includes the full fixed_recipe object) or 'text' (human-readable report). | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
get_masterRead-onlyIdempotentInspect
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 verdict.
Returns ingredients, steps (technique/temperature/timing/medium), and the EU FIC allergens derived from the required ingredients. Unknown dishes return a structured UNKNOWN_DISH error.
| Name | Required | Description | Default |
|---|---|---|---|
| dish_name | No | 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() to browse. | |
| response_format | No | Response format: 'json' (default, structured) or 'text' (human-readable summary). | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
list_dishesRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cuisine_filter | No | 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 | malaysian | korean | mexican | american | moroccan | turkish | levantine. Leave empty to return all available dishes. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
verify_dietary_claimRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| claim | No | Dietary claim to verify: vegan | vegetarian | gluten_free | dairy_free | nut_free | halal | kosher. | |
| candidate_json | No | Recipe JSON string (CandidateRecipe schema). Expected shape: {"title": "...", "ingredients": [{"name": "..."}, ...], "steps": [...]}. Only the ingredient list is required for dietary verification. | |
| response_format | No | Response format: 'text' (default, human-readable) or 'json' (machine-actionable). | text |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
verify_recipeRead-onlyIdempotentInspect
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 programmatic handling — never
show it to end users. Use title and suggested_correction as the user-facing fields.
Returns structured JSON by default (machine-actionable findings and patches); response_format="text" renders a human-readable report. Both formats are transparent (ADR-009 / ADR-018): exact values and ingredient names included.
| Name | Required | Description | Default |
|---|---|---|---|
| dish | No | Alias for dish_name — for backward compatibility with production clients. | |
| dish_name | No | 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 see all available recipes and their aliases. | |
| session_id | No | Optional session ID to track an agent's improvement loop across multiple attempts. | |
| master_json | No | 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_master() for a live example). When provided, the bundled catalog is bypassed — the candidate is checked against YOUR spec — and dish_name may be omitted. The response pins the spec via master_hash (sha256) and master_source='user' so the verdict is replayable. | |
| operator_id | No | 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 | No | The full candidate recipe as a JSON string or object. Expected schema: {"title": "<string>", "cuisine": "<string>", "serves": <int>, "ingredients": [{"name": "<string>", "quantity": "<string>"}], "steps": [{"step_number": <int>, "title": "<string>", "instruction_english": "<string>", "technique": "<string>", "estimated_temperature_c": <number or [min, max]>, "duration_minutes": <number or [min, max]>, "cooking_medium": "<string>"}]} | |
| original_prompt | No | 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 carbonara, but healthier'). WITHOUT this parameter: Guardian returns actionable findings with specific ingredient names and technique details — enough to fix most recipes. WITH this parameter: Guardian additionally activates safety context awareness (e.g., flagging honey for infants, raw egg for pregnant users) and personalised feedback matched to dietary needs and flavour preferences. Include it when the user's context matters for safety or personalisation. | |
| response_format | No | Response format: 'json' (default — machine-actionable verdict, findings, and patches) or 'text' (human-readable report). | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Your Connectors
Sign in to create a connector for this server.