Food Facts
What this MCP does
Looks up packaged foods by barcode, searches and compares nutrition data, and reports listed allergens and traces.
Tools
Input schema
{'type': 'object', 'required': ['barcode', 'avoid'], 'properties': {'avoid': {'type': 'array', 'items': {'type': 'string', 'maxLength': 40, 'minLength': 2}, 'maxItems': 10, 'minItems': 1, 'description': 'Allergens to look for, such as milk, nuts, peanuts, soy, gluten, eggs, fish, shellfish, sesame'}, 'barcode': {'type': 'string', 'maxLength': 20, 'minLength': 8, 'description': 'EAN or UPC barcode, 8 to 14 digits'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['status', 'barcode', 'attribution', 'notice'], 'properties': {'url': {'type': 'string'}, 'name': {'type': ['string', 'null']}, 'avoid': {'type': 'array', 'items': {'type': 'string'}}, 'brands': {'type': ['string', 'null']}, 'notice': {'type': 'string'}, 'status': {'enum': ['ok', 'not_found', 'invalid_barcode', 'unavailable'], 'type': 'string'}, 'barcode': {'type': 'string'}, 'message': {'type': 'string'}, 'unknown': {'type': 'boolean'}, 'contains': {'type': 'array', 'items': {'type': 'string'}}, 'not_listed': {'type': 'array', 'items': {'type': 'string'}}, 'attribution': {'type': 'string'}, 'may_contain': {'type': 'array', 'items': {'type': 'string'}}, 'unrecognised': {'type': 'array', 'items': {'type': 'string'}}, 'listed_traces': {'type': 'array', 'items': {'type': 'string'}}, 'listed_allergens': {'type': 'array', 'items': {'type': 'string'}}, 'data_quality_note': {'type': 'string'}}}
Input schema
{'type': 'object', 'required': ['barcodes'], 'properties': {'field': {'enum': ['sugars', 'salt', 'kcal'], 'type': 'string', 'description': 'What to rank by, per 100 g: sugars (default), salt or kcal'}, 'barcodes': {'type': 'array', 'items': {'type': 'string', 'maxLength': 20, 'minLength': 8, 'description': 'EAN or UPC barcode, 8 to 14 digits'}, 'maxItems': 5, 'minItems': 1, 'description': 'Barcodes to compare, up to 5'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['status', 'field', 'unit', 'basis', 'order', 'ranked', 'attribution', 'notice'], 'properties': {'unit': {'type': 'string'}, 'basis': {'type': 'string'}, 'field': {'type': 'string'}, 'order': {'type': 'string'}, 'notice': {'type': 'string'}, 'ranked': {'type': 'array', 'items': {'type': 'object', 'required': ['rank', 'code', 'value'], 'properties': {'url': {'type': 'string'}, 'code': {'type': 'string'}, 'name': {'type': ['string', 'null']}, 'rank': {'type': 'integer'}, 'value': {'type': 'number'}, 'brands': {'type': ['string', 'null']}, 'per_100g': {'type': 'object', 'properties': {'fat': {'type': ['number', 'null']}, 'kcal': {'type': ['number', 'null']}, 'carbs': {'type': ['number', 'null']}, 'fibre': {'type': ['number', 'null']}, 'salt_g': {'type': ['number', 'null']}, 'sugars': {'type': ['number', 'null']}, 'protein': {'type': ['number', 'null']}, 'sodium_mg': {'type': ['number', 'null']}, 'saturated_fat': {'type': ['number', 'null']}}}, 'nova_group': {'type': ['integer', 'null']}, 'nutriscore': {'type': ['string', 'null']}}}}, 'status': {'enum': ['ok', 'invalid_barcode', 'unavailable'], 'type': 'string'}, 'invalid': {'type': 'array', 'items': {'type': 'string'}}, 'message': {'type': 'string'}, 'no_data': {'type': 'array', 'items': {'type': 'object', 'required': ['code'], 'properties': {'code': {'type': 'string'}, 'name': {'type': ['string', 'null']}}}}, 'not_found': {'type': 'array', 'items': {'type': 'string'}}, 'attribution': {'type': 'string'}}}
Input schema
{'type': 'object', 'required': ['ticket'], 'properties': {'ticket': {'type': 'string', 'pattern': '^fb_[0-9a-f]{32}$', 'description': 'The ticket id that submit_feedback returned.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['ticket', 'status'], 'properties': {'note': {'type': 'string'}, 'reply': {'type': ['string', 'null']}, 'status': {'enum': ['pending', 'answered'], 'type': 'string'}, 'ticket': {'type': 'string'}}}
Input schema
{'type': 'object', 'properties': {'task': {'type': 'string', 'description': 'Alias for query: task phrase to search.'}, 'query': {'type': 'string', 'description': "Optional task keyword or phrase to search tools (e.g. 'recruiter', 'linkedin', 'feedback', 'broken links', 'jobs'). Omit to list all tools."}, 'keyword': {'type': 'string', 'description': 'Alias for query: keyword to search.'}}, 'additionalProperties': True}
Input schema
{'type': 'object', 'required': ['barcode'], 'properties': {'barcode': {'type': 'string', 'maxLength': 20, 'minLength': 8, 'description': 'EAN or UPC barcode, 8 to 14 digits'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['status', 'barcode', 'attribution', 'notice'], 'properties': {'url': {'type': 'string'}, 'code': {'type': 'string'}, 'name': {'type': ['string', 'null']}, 'brands': {'type': ['string', 'null']}, 'notice': {'type': 'string'}, 'status': {'enum': ['ok', 'not_found', 'invalid_barcode', 'unavailable'], 'type': 'string'}, 'traces': {'type': 'array', 'items': {'type': 'string'}}, 'barcode': {'type': 'string'}, 'message': {'type': 'string'}, 'per_100g': {'type': 'object', 'properties': {'fat': {'type': ['number', 'null']}, 'kcal': {'type': ['number', 'null']}, 'carbs': {'type': ['number', 'null']}, 'fibre': {'type': ['number', 'null']}, 'salt_g': {'type': ['number', 'null']}, 'sugars': {'type': ['number', 'null']}, 'protein': {'type': ['number', 'null']}, 'sodium_mg': {'type': ['number', 'null']}, 'saturated_fat': {'type': ['number', 'null']}}}, 'quantity': {'type': ['string', 'null']}, 'allergens': {'type': 'array', 'items': {'type': 'string'}}, 'nova_group': {'type': ['integer', 'null']}, 'nutriscore': {'type': ['string', 'null']}, 'attribution': {'type': 'string'}, 'ingredients_text': {'type': ['string', 'null']}, 'data_quality_note': {'type': 'string'}}}
Input schema
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 10, 'minimum': 1, 'description': 'How many products to return, up to 10 (default 5)'}, 'query': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'What to look for, such as "oat milk" or a brand and product name'}, 'country': {'type': 'string', 'maxLength': 60, 'minLength': 2, 'description': 'Optional country to limit to, as an English name or two-letter code, such as "France" or "US"'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['status', 'query', 'products', 'attribution', 'notice'], 'properties': {'query': {'type': 'string'}, 'notice': {'type': 'string'}, 'status': {'enum': ['ok', 'unavailable'], 'type': 'string'}, 'message': {'type': 'string'}, 'products': {'type': 'array', 'items': {'type': 'object', 'required': ['code'], 'properties': {'code': {'type': 'string'}, 'name': {'type': ['string', 'null']}, 'brands': {'type': ['string', 'null']}, 'nutriscore': {'type': ['string', 'null']}}}}, 'attribution': {'type': 'string'}}}
Input schema
{'type': 'object', 'required': ['kind', 'message'], 'properties': {'kind': {'enum': ['need_tool', 'need_data', 'bug', 'other'], 'type': 'string', 'description': 'need_tool: a tool you want. need_data: data a tool lacks. bug: something broke. other: anything else about the tools.'}, 'tool': {'type': 'string', 'pattern': '^[A-Za-z0-9_.:-]{1,64}$', 'description': 'Optional: the name of the tool this is about, for example find_tariff_codes.'}, 'message': {'type': 'string', 'maxLength': 1000, 'minLength': 10, 'description': 'What you need or what broke, in plain words, at most 1000 characters. Links, email addresses and phone numbers are removed. Never include secrets or personal details.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['ticket', 'status'], 'properties': {'note': {'type': 'string'}, 'reply': {'type': ['string', 'null']}, 'status': {'enum': ['pending', 'answered'], 'type': 'string'}, 'ticket': {'type': 'string'}}}
Recent tool changes
Similar MCP servers
Clink Forge
Provides pay-per-call access to attested government datasets, primarily CDC and HHS health data plus EPA air-quality observations.
Medicare Coverage
Provides structured Medicare coverage documents, policy timelines, utilization, enrollment, supplier, and payment-related data fr…
Openfda
Provides access to FDA drug, labeling, approval, adverse-event, recall, shortage, warning-letter, and enforcement data for biomed…
Fda Drug Competition
Analyzes FDA Orange Book drug applications, patents, exclusivities, generic competition, and loss-of-exclusivity timelines.
Cms Open Payments
Searches and analyzes CMS Open Payments data on payments from pharmaceutical and device companies to physicians, hospitals, and o…
Fda Devices
Searches FDA medical-device regulatory datasets covering 510(k)s, PMAs, classifications, registrations, recalls, UDI records, and…
Clinicaltables
Searches NIH clinical vocabularies and registries for conditions, diseases, drugs, procedures, ICD codes, LOINC codes, and health…
Pharma Intel
Combines clinical trial, FDA, PubMed, drug identification, safety, pipeline, sales, patent, and pharmaceutical sponsor data for d…