KnownGate
Food verification for people and AI agents: evidence-backed verdicts, with sources and dates.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"verify": {
"url": "https://mcp.knowngate.com"
}
}
}远程端点
https://mcp.knowngate.comstreamable-http它能做什么
工具清单
工具(4)
🟢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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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.
输入模式
{
"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"
}社区
证据