KnownGate

Food verification for people and AI agents: evidence-backed verdicts, with sources and dates.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
92%
Naming quality
95%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,701Tokens (tool definitions)
~3.8 KBTypical response size
Moderate attention impact (1.33% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "verify": {
      "url": "https://mcp.knowngate.com"
    }
  }
}

Remote endpoints

https://mcp.knowngate.comstreamable-http

What it can do

Tool inventory

Tools (4)

๐ŸŸข Read-only๐ŸŸก Write๐Ÿ”ด Deleteโšช Unknown
๐ŸŸขcheck_item(restrictions, subject, thresholds)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "restrictions": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "string",
            "minLength": 1,
            "maxLength": 60
          },
          {
            "type": "object",
            "properties": {
              "key": {
                "type": "string",
                "minLength": 1,
                "maxLength": 60
              },
              "note": {
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "key"
            ]
          }
        ]
      },
      "description": "Household restrictions. FDA-9 keys (\"peanut\", \"sesame\", \"milk\", โ€ฆ) as strings, or { key, note } when a note matters (e.g. { key: \"tree_nut\", note: \"cashew\" }). May be empty when thresholds carry the premise."
    },
    "subject": {
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "upc",
            "product_query",
            "menu_item",
            "ingredients"
          ],
          "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",
          "minLength": 1,
          "maxLength": 4000
        },
        "venue": {
          "description": "Venue name, required for menu_item",
          "type": "string",
          "maxLength": 200
        }
      },
      "required": [
        "kind",
        "value"
      ]
    },
    "thresholds": {
      "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.",
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "nutrient": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40,
            "description": "e.g. \"sugar_g\", \"carbs\", \"sodium_mg\", \"calories\", \"protein\""
          },
          "max": {
            "description": "Upper bound per serving",
            "type": "number",
            "minimum": 0
          },
          "min": {
            "description": "Lower bound per serving",
            "type": "number",
            "minimum": 0
          },
          "unit": {
            "description": "Unit the bound is stated in (\"g\", \"mg\", \"kcal\"). Defaults to the panel unit; exact conversions only.",
            "type": "string",
            "maxLength": 10
          },
          "basis": {
            "description": "Only \"per_serving\" is ruleable in v1",
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "nutrient"
        ]
      }
    }
  },
  "required": [
    "restrictions",
    "subject"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
๐ŸŸขcheck_venue(restrictions, 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.

Input Schema

{
  "type": "object",
  "properties": {
    "restrictions": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "string",
            "minLength": 1,
            "maxLength": 60
          },
          {
            "type": "object",
            "properties": {
              "key": {
                "type": "string",
                "minLength": 1,
                "maxLength": 60
              },
              "note": {
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "key"
            ]
          }
        ]
      },
      "description": "Household restrictions. FDA-9 keys (\"peanut\", \"sesame\", \"milk\", โ€ฆ) as strings, or { key, note } when a note matters (e.g. { key: \"tree_nut\", note: \"cashew\" }). May be empty when thresholds carry the premise."
    },
    "venue": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "location": {
          "description": "City or metro, optional",
          "type": "string",
          "maxLength": 200
        }
      },
      "required": [
        "name"
      ]
    }
  },
  "required": [
    "restrictions",
    "venue"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
๐ŸŸขcheck_plan(restrictions, items, thresholds)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "restrictions": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "string",
            "minLength": 1,
            "maxLength": 60
          },
          {
            "type": "object",
            "properties": {
              "key": {
                "type": "string",
                "minLength": 1,
                "maxLength": 60
              },
              "note": {
                "type": "string",
                "maxLength": 200
              }
            },
            "required": [
              "key"
            ]
          }
        ]
      },
      "description": "Household restrictions. FDA-9 keys (\"peanut\", \"sesame\", \"milk\", โ€ฆ) as strings, or { key, note } when a note matters (e.g. { key: \"tree_nut\", note: \"cashew\" }). May be empty when thresholds carry the premise."
    },
    "items": {
      "minItems": 1,
      "maxItems": 25,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "upc",
              "product_query",
              "menu_item",
              "ingredients"
            ],
            "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",
            "minLength": 1,
            "maxLength": 4000
          },
          "venue": {
            "type": "string",
            "maxLength": 200
          }
        },
        "required": [
          "kind",
          "value"
        ]
      }
    },
    "thresholds": {
      "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.",
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "nutrient": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40,
            "description": "e.g. \"sugar_g\", \"carbs\", \"sodium_mg\", \"calories\", \"protein\""
          },
          "max": {
            "description": "Upper bound per serving",
            "type": "number",
            "minimum": 0
          },
          "min": {
            "description": "Lower bound per serving",
            "type": "number",
            "minimum": 0
          },
          "unit": {
            "description": "Unit the bound is stated in (\"g\", \"mg\", \"kcal\"). Defaults to the panel unit; exact conversions only.",
            "type": "string",
            "maxLength": 10
          },
          "basis": {
            "description": "Only \"per_serving\" is ruleable in v1",
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "nutrient"
        ]
      }
    }
  },
  "required": [
    "restrictions",
    "items"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
โšชregister(agent_name, contact_email)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "agent_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Who is signing up, e.g. your product name"
    },
    "contact_email": {
      "type": "string",
      "maxLength": 254,
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    }
  },
  "required": [
    "agent_name",
    "contact_email"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools
verifiedversion not recorded4 tools