MCP-Server

KnownGate

com.knowngate/verify
Gesundheitswesen Öffentlich und erreichbar MCP 2025-11-25

Was dieses MCP kann

Checks foods, meal plans, and venue menus against household dietary restrictions and returns evidence-backed verdicts.

check_item
Rule one food subject against the household premise (restrictions, thresholds, or both). Needs a key (Authorization: Bearer kg_live_…); create a free one with the register tool. Returns one of four verdicts (no_conflict_found, conflict_found, ask_one_question, couldnt_verify) with typed hits, source kind and read date. Unknown counts as no; the word safe is never used.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['restrictions', 'subject'], 'properties': {'subject': {'type': 'object', 'required': ['kind', 'value'], 'properties': {'kind': {'enum': ['upc', 'product_query', 'menu_item', 'ingredients'], 'type': 'string', 'description': 'upc: digits from a barcode · product_query: a product name · menu_item: a dish (needs venue) · ingredients: comma-separated ingredient text'}, 'value': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'venue': {'type': 'string', 'maxLength': 200, 'description': 'Venue name, required for menu_item'}}}, 'thresholds': {'type': 'array', 'items': {'type': 'object', 'required': ['nutrient'], 'properties': {'max': {'type': 'number', 'minimum': 0, 'description': 'Upper bound per serving'}, 'min': {'type': 'number', 'minimum': 0, 'description': 'Lower bound per serving'}, 'unit': {'type': 'string', 'maxLength': 10, 'description': 'Unit the bound is stated in ("g", "mg", "kcal"). Defaults to the panel unit; exact conversions only.'}, 'basis': {'type': 'string', 'maxLength': 20, 'description': 'Only "per_serving" is ruleable in v1'}, 'nutrient': {'type': 'string', 'maxLength': 40, 'minLength': 1, 'description': 'e.g. "sugar_g", "carbs", "sodium_mg", "calories", "protein"'}}}, 'maxItems': 10, 'description': "Numeric premise (beta): per-serving nutrient bounds ruled against the product's typed panel. Unknown values refuse honestly, never zero. An empty array means no numeric limits."}, 'restrictions': {'type': 'array', 'items': {'anyOf': [{'type': 'string', 'maxLength': 60, 'minLength': 1}, {'type': 'object', 'required': ['key'], 'properties': {'key': {'type': 'string', 'maxLength': 60, 'minLength': 1}, 'note': {'type': 'string', 'maxLength': 200}}}]}, 'maxItems': 20, 'description': 'Household restrictions. FDA-9 keys ("peanut", "sesame", "milk", â\x80¦) as strings, or { key, note } when a note matters (e.g. { key: "tree_nut", note: "cashew" }). May be empty when thresholds carry the premise.'}}}
check_plan
Rule a set of items at once: a recipe's ingredients, a basket, several days. Needs a key (Authorization: Bearer kg_live_…); create a free one with the register tool. Up to 25 subjects, one call, one verdict per item plus a summary line. Each item carries its own evidence, source and read date.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['restrictions', 'items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'value'], 'properties': {'kind': {'enum': ['upc', 'product_query', 'menu_item', 'ingredients'], 'type': 'string', 'description': 'upc: digits from a barcode · product_query: a product name · menu_item: a dish (needs venue) · ingredients: comma-separated ingredient text'}, 'value': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'venue': {'type': 'string', 'maxLength': 200}}}, 'maxItems': 25, 'minItems': 1}, 'thresholds': {'type': 'array', 'items': {'type': 'object', 'required': ['nutrient'], 'properties': {'max': {'type': 'number', 'minimum': 0, 'description': 'Upper bound per serving'}, 'min': {'type': 'number', 'minimum': 0, 'description': 'Lower bound per serving'}, 'unit': {'type': 'string', 'maxLength': 10, 'description': 'Unit the bound is stated in ("g", "mg", "kcal"). Defaults to the panel unit; exact conversions only.'}, 'basis': {'type': 'string', 'maxLength': 20, 'description': 'Only "per_serving" is ruleable in v1'}, 'nutrient': {'type': 'string', 'maxLength': 40, 'minLength': 1, 'description': 'e.g. "sugar_g", "carbs", "sodium_mg", "calories", "protein"'}}}, 'maxItems': 10, 'description': "Numeric premise (beta): per-serving nutrient bounds ruled against the product's typed panel. Unknown values refuse honestly, never zero. An empty array means no numeric limits."}, 'restrictions': {'type': 'array', 'items': {'anyOf': [{'type': 'string', 'maxLength': 60, 'minLength': 1}, {'type': 'object', 'required': ['key'], 'properties': {'key': {'type': 'string', 'maxLength': 60, 'minLength': 1}, 'note': {'type': 'string', 'maxLength': 200}}}]}, 'maxItems': 20, 'description': 'Household restrictions. FDA-9 keys ("peanut", "sesame", "milk", â\x80¦) as strings, or { key, note } when a note matters (e.g. { key: "tree_nut", note: "cashew" }). May be empty when thresholds carry the premise.'}}}
check_venue
Rule a whole venue's published chart against the household restrictions in one call. Needs a key (Authorization: Bearer kg_live_…); create a free one with the register tool. Returns per-verdict counts, the most severe items, the operator's cross-contact caveat verbatim, and the chart's source and read date. A venue with no machine-readable chart says so honestly.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['restrictions', 'venue'], 'properties': {'venue': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'location': {'type': 'string', 'maxLength': 200, 'description': 'City or metro, optional'}}}, 'restrictions': {'type': 'array', 'items': {'anyOf': [{'type': 'string', 'maxLength': 60, 'minLength': 1}, {'type': 'object', 'required': ['key'], 'properties': {'key': {'type': 'string', 'maxLength': 60, 'minLength': 1}, 'note': {'type': 'string', 'maxLength': 200}}}]}, 'maxItems': 20, 'description': 'Household restrictions. FDA-9 keys ("peanut", "sesame", "milk", â\x80¦) as strings, or { key, note } when a note matters (e.g. { key: "tree_nut", note: "cashew" }). May be empty when thresholds carry the premise.'}}}
register
Sign yourself up for a developer key without leaving MCP. The email is contact and recovery, not a wall. One key per email, free tier (100 checks a month); the key is in this response and never shown again. Nothing on knowngate.com itself needs a key.
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['agent_name', 'contact_email'], 'properties': {'agent_name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Who is signing up, e.g. your product name'}, 'contact_email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'maxLength': 254}}}
Hinzugefügt
register
17. September 2026 12:35
Hinzugefügt
check_plan
17. September 2026 12:35
Hinzugefügt
check_venue
17. September 2026 12:35
Hinzugefügt
check_item
17. September 2026 12:35