Server definition
- Hash
- sha256:667189aabdf815f0d17de29a3252e224b59b2bb075849dd94d915f30c5816ac1
- What it is
- What a remote MCP server returned when asked what it offers: 4 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"restrictions": {
"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": {
"anyOf": [
{
"maxLength": 60,
"minLength": 1,
"type": "string"
},
{
"properties": {
"key": {
"maxLength": 60,
"minLength": 1,
"type": "string"
},
"note": {
"maxLength": 200,
"type": "string"
}
},
"required": [
"key"
],
"type": "object"
}
]
},
"maxItems": 20,
"type": "array"
},
"subject": {
"properties": {
"kind": {
"description": "upc: digits from a barcode · product_query: a product name · menu_item: a dish (needs venue) · ingredients: comma-separated ingredient text",
"enum": [
"upc",
"product_query",
"menu_item",
"ingredients"
],
"type": "string"
},
"value": {
"maxLength": 4000,
"minLength": 1,
"type": "string"
},
"venue": {
"description": "Venue name, required for menu_item",
"maxLength": 200,
"type": "string"
}
},
"required": [
"kind",
"value"
],
"type": "object"
},
"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.",
"items": {
"properties": {
"basis": {
"description": "Only \"per_serving\" is ruleable in v1",
"maxLength": 20,
"type": "string"
},
"max": {
"description": "Upper bound per serving",
"minimum": 0,
"type": "number"
},
"min": {
"description": "Lower bound per serving",
"minimum": 0,
"type": "number"
},
"nutrient": {
"description": "e.g. \"sugar_g\", \"carbs\", \"sodium_mg\", \"calories\", \"protein\"",
"maxLength": 40,
"minLength": 1,
"type": "string"
},
"unit": {
"description": "Unit the bound is stated in (\"g\", \"mg\", \"kcal\"). Defaults to the panel unit; exact conversions only.",
"maxLength": 10,
"type": "string"
}
},
"required": [
"nutrient"
],
"type": "object"
},
"maxItems": 10,
"type": "array"
}
},
"required": [
"restrictions",
"subject"
],
"type": "object"
},
"name": "check_item",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"items": {
"items": {
"properties": {
"kind": {
"description": "upc: digits from a barcode · product_query: a product name · menu_item: a dish (needs venue) · ingredients: comma-separated ingredient text",
"enum": [
"upc",
"product_query",
"menu_item",
"ingredients"
],
"type": "string"
},
"value": {
"maxLength": 4000,
"minLength": 1,
"type": "string"
},
"venue": {
"maxLength": 200,
"type": "string"
}
},
"required": [
"kind",
"value"
],
"type": "object"
},
"maxItems": 25,
"minItems": 1,
"type": "array"
},
"restrictions": {
"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": {
"anyOf": [
{
"maxLength": 60,
"minLength": 1,
"type": "string"
},
{
"properties": {
"key": {
"maxLength": 60,
"minLength": 1,
"type": "string"
},
"note": {
"maxLength": 200,
"type": "string"
}
},
"required": [
"key"
],
"type": "object"
}
]
},
"maxItems": 20,
"type": "array"
},
"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.",
"items": {
"properties": {
"basis": {
"description": "Only \"per_serving\" is ruleable in v1",
"maxLength": 20,
"type": "string"
},
"max": {
"description": "Upper bound per serving",
"minimum": 0,
"type": "number"
},
"min": {
"description": "Lower bound per serving",
"minimum": 0,
"type": "number"
},
"nutrient": {
"description": "e.g. \"sugar_g\", \"carbs\", \"sodium_mg\", \"calories\", \"protein\"",
"maxLength": 40,
"minLength": 1,
"type": "string"
},
"unit": {
"description": "Unit the bound is stated in (\"g\", \"mg\", \"kcal\"). Defaults to the panel unit; exact conversions only.",
"maxLength": 10,
"type": "string"
}
},
"required": [
"nutrient"
],
"type": "object"
},
"maxItems": 10,
"type": "array"
}
},
"required": [
"restrictions",
"items"
],
"type": "object"
},
"name": "check_plan",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"restrictions": {
"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": {
"anyOf": [
{
"maxLength": 60,
"minLength": 1,
"type": "string"
},
{
"properties": {
"key": {
"maxLength": 60,
"minLength": 1,
"type": "string"
},
"note": {
"maxLength": 200,
"type": "string"
}
},
"required": [
"key"
],
"type": "object"
}
]
},
"maxItems": 20,
"type": "array"
},
"venue": {
"properties": {
"location": {
"description": "City or metro, optional",
"maxLength": 200,
"type": "string"
},
"name": {
"maxLength": 200,
"minLength": 1,
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
}
},
"required": [
"restrictions",
"venue"
],
"type": "object"
},
"name": "check_venue",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"agent_name": {
"description": "Who is signing up, e.g. your product name",
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"contact_email": {
"format": "email",
"maxLength": 254,
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
}
},
"required": [
"agent_name",
"contact_email"
],
"type": "object"
},
"name": "register",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:667189aabdf815f0d17de29a3252e224b59b2bb075849dd94d915f30c5816ac1 | sha256sum