Is this food healthy? A 0-100 score from nutrition, additives and processing (Open Food Facts).
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Scores a food from its label: the ingredient list and/or the nutrition facts, for example from a photo of the packaging or pasted text, including products that aren't in the database. Most accurate with the ingredient list exactly as printed, including E-numbers and words in brackets. Nutrition values can be per 100 g or per serving (with the serving size). Returns the same 0-100 score and reports any missing data.
Nutri-Score family. Use fat_oil_nuts_seeds for oils, butter, nuts and nut butters; cheese for cheese; red_meat for beef, pork or lamb products.
True for beverages (milk and plant drinks included). Values are then per 100 ml.
The nutrition facts table, copied exactly.
The full ingredient list exactly as printed.
% of fruit, vegetables and legumes, if the label states it.
Scores a food from its label: the ingredient list and/or the nutrition facts, for example from a photo of the packaging or pasted text, including products that aren't in the database. Most accurate with the ingredient list exactly as printed, including E-numbers and words in brackets. Nutrition values can be per 100 g or per serving (with the serving size). Returns the same 0-100 score and reports any missing data.
| Argument | Type | Description |
|---|---|---|
| brand | string | |
| category | string | Nutri-Score family. Use fat_oil_nuts_seeds for oils, butter, nuts and nut butters; cheese for cheese; red_meat for beef, pork or lamb products. |
| is_drink | boolean | True for beverages (milk and plant drinks included). Values are then per 100 ml. |
| nutrition | object | The nutrition facts table, copied exactly. |
| product_name | string | |
| ingredients_text | string | The full ingredient list exactly as printed. |
| fruit_veg_percent | number | % of fruit, vegetables and legumes, if the label states it. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"brand": {
"type": "string"
},
"category": {
"enum": [
"general",
"beverage",
"water",
"cheese",
"fat_oil_nuts_seeds",
"red_meat"
],
"type": "string",
"description": "Nutri-Score family. Use fat_oil_nuts_seeds for oils, butter, nuts and nut butters; cheese for cheese; red_meat for beef, pork or lamb products."
},
"is_drink": {
"type": "boolean",
"description": "True for beverages (milk and plant drinks included). Values are then per 100 ml."
},
"nutrition": {
"type": "object",
"required": [
"basis"
],
"properties": {
"basis": {
"enum": [
"per_100g",
"per_serving"
],
"type": "string",
"description": "What the numbers refer to. EU labels are usually per 100 g/ml; US Nutrition Facts are per serving."
},
"salt_g": {
"type": "number",
"minimum": 0
},
"fiber_g": {
"type": "number",
"minimum": 0
},
"sugars_g": {
"type": "number",
"minimum": 0,
"description": "Total sugars."
},
"energy_kj": {
"type": "number",
"minimum": 0
},
"protein_g": {
"type": "number",
"minimum": 0
},
"sodium_mg": {
"type": "number",
"minimum": 0,
"description": "Sodium in milligrams (US labels). Use salt_g instead if the label shows salt."
},
"total_fat_g": {
"type": "number",
"minimum": 0
},
"trans_fat_g": {
"type": "number",
"minimum": 0
},
"serving_size": {
"type": "number",
"description": "Serving size in g (or ml for drinks). Required when basis is per_serving.",
"exclusiveMinimum": 0
},
"calories_kcal": {
"type": "number",
"minimum": 0
},
"added_sugars_g": {
"type": "number",
"minimum": 0
},
"carbohydrates_g": {
"type": "number",
"minimum": 0
},
"saturated_fat_g": {
"type": "number",
"minimum": 0
}
},
"description": "The nutrition facts table, copied exactly."
},
"product_name": {
"type": "string"
},
"ingredients_text": {
"type": "string",
"description": "The full ingredient list exactly as printed."
},
"fruit_veg_percent": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "% of fruit, vegetables and legumes, if the label states it."
}
}
}Looks up a packaged food or drink in Open Food Facts (3M+ products) by barcode or by name and returns a 0-100 health score (Excellent / Good / Poor / Bad) with the reasons: nutrition (Nutri-Score), additives and their risk level, and how processed it is. For questions such as whether a product is healthy. A barcode gives the most precise match.
| Argument | Type | Description |
|---|---|---|
| query | string | Product name, ideally with the brand, e.g. 'Nutella hazelnut spread'. Used when there is no barcode. |
| barcode | string | EAN/UPC barcode digits, e.g. 3017620422003. |
| country | string | Optional country to prefer when searching by name, e.g. 'united-states', 'france', 'united-kingdom'. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"query": {
"type": "string",
"description": "Product name, ideally with the brand, e.g. 'Nutella hazelnut spread'. Used when there is no barcode."
},
"barcode": {
"type": "string",
"description": "EAN/UPC barcode digits, e.g. 3017620422003."
},
"country": {
"type": "string",
"description": "Optional country to prefer when searching by name, e.g. 'united-states', 'france', 'united-kingdom'."
}
}
}Explains what a food additive is, what it does, and its risk level with sources, by E-number (E250) or name (sodium nitrite, Red 40, carrageenan).
| Argument | Type | Description |
|---|---|---|
| additive* | string | E-number or name, e.g. 'E471' or 'Red 40'. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"additive"
],
"properties": {
"additive": {
"type": "string",
"description": "E-number or name, e.g. 'E471' or 'Red 40'."
}
}
}Finds similar products in the same Open Food Facts category that score clearly higher than the given product, best first, each with its score.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| barcode* | string | Barcode of the product to beat. |
| country | string | Only suggest products sold in this country, e.g. 'united-states'. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"barcode"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 10,
"minimum": 1
},
"barcode": {
"type": "string",
"description": "Barcode of the product to beat."
},
"country": {
"type": "string",
"description": "Only suggest products sold in this country, e.g. 'united-states'."
}
}
}