Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,562Letters: 14Defects: 1,336counted just now
teppi

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 yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:667189aabdf815f0d17de29a3252e224b59b2bb075849dd94d915f30c5816ac1 | sha256sum