FoodChecker
Server Details
Is this food healthy? A 0-100 score from nutrition, additives and processing (Open Food Facts).
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- kjagsadvisors/foodchecker
- GitHub Stars
- 0
- Server Listing
- FoodChecker
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: analyzing user-provided label data, looking up a product in the database, explaining an additive, and finding alternatives. The only minor overlap is that analyze_label and check_food both return a health score, but their input requirements (label text vs. barcode/name) are clearly described and separate them.
All four tools use consistent snake_case with a leading verb (analyze, check, explain, find), making the naming predictable. No mixing of conventions or vague verbs.
Four tools is a well-scoped set for a food health checker, with each tool covering a distinct function (label analysis, product lookup, additive explanation, alternatives). It sits comfortably within the ideal 3-15 range.
The surface covers the core workflows: scoring a food, explaining additives, and finding better alternatives. A minor gap is the lack of a tool to retrieve full nutrition facts or ingredient lists for a database product, but agents can work around this via analyze_label or check_food's reported reasons.
Available Tools
4 toolsanalyze_labelScore a food from its labelARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| brand | No | ||
| category | No | 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 | No | True for beverages (milk and plant drinks included). Values are then per 100 ml. | |
| nutrition | No | The nutrition facts table, copied exactly. | |
| product_name | No | ||
| ingredients_text | No | The full ingredient list exactly as printed. | |
| fruit_veg_percent | No | % of fruit, vegetables and legumes, if the label states it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds value beyond that: it describes the return ('the same 0-100 score and reports any missing data') and discloses that missing data is tolerated rather than fatal, which no structured field conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, purpose front-loaded, then input-fidelity guidance, then return behavior. No filler, though the middle sentence packs several distinct ideas (source of data, fidelity, E-numbers, bracketed words) into one run-on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully states the return (0-100 score plus a missing-data report). For a 7-parameter tool with a nested nutrition object, it covers the key decision points (which inputs, what basis) without being exhaustive; the remaining gap is the lack of interplay guidance between category/is_drink and the nutrition basis.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, so many fields (salt_g, sodium_mg, serving_size, basis) are self-documenting. The description still earns credit by explaining input fidelity requirements ('exactly as printed, including E-numbers and words in brackets') and by clarifying that ingredient list and nutrition facts are alternatives and that per-100 g versus per-serving are both acceptable inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Scores a food from its label') and enumerates the accepted inputs (ingredient list and/or nutrition facts, photo or pasted text). The clause 'including products that aren't in the database' implicitly separates it from a lookup tool like check_food, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: use this when the label is available or the product is not in the database. No explicit routing versus check_food, find_healthier_alternatives or explain_additive, and no statement of when this tool is the wrong choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_foodCheck a food productARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Product name, ideally with the brand, e.g. 'Nutella hazelnut spread'. Used when there is no barcode. | |
| barcode | No | EAN/UPC barcode digits, e.g. 3017620422003. | |
| country | No | Optional country to prefer when searching by name, e.g. 'united-states', 'france', 'united-kingdom'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds real context beyond them: the upstream data source and coverage (Open Food Facts, 3M+ products), the scoring scale and buckets, and the internal reason breakdown (Nutri-Score, additive risk, processing level). It does not discuss miss behaviour or rate limits, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what it does and the data source, then the use case, then the precision tip. Three sentences, no padding. The first sentence is long and could be split, but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by previewing the return value (score bands plus reasoning categories). Combined with annotations that cover the safety and idempotency profile, an agent has everything needed to call this correctly without further lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains all three parameters including the name-with-brand format and barcode example. The description's 'a barcode gives the most precise match' adds a preference ordering the schema does not state, but no other parameter detail is contributed. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (looks up), a concrete resource (packaged food or drink in Open Food Facts, with dataset size), the two lookup keys, and the exact shape of the answer (0-100 score with named reason categories). This is distinguishable at a glance from explain_additive (single additive deep-dive) and find_healthier_alternatives (comparison shopping).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the triggering question type ('whether a product is healthy') and a clear preference rule: a barcode gives the most precise match, so name search is the fallback. It stops short of naming the sibling tools or saying when to prefer them over this one, so it is strong context rather than a full routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_additiveExplain a food additiveARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| additive | Yes | E-number or name, e.g. 'E471' or 'Red 40'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds genuine behavioral context by disclosing the shape of the answer (function, risk level, sources) — valuable since there is no output schema. It stops short of noting data freshness or source recency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action, then the output contents, then the accepted input forms. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with annotations covering the safety profile, the description supplies the remaining need: what the response will contain. Only minor gaps remain (source recency, unknown-additive behavior).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is fully documented there, so the schema carries the load. The description's example formats (E250, sodium nitrite, Red 40, carrageenan) reinforce accepted input styles but add little beyond the schema's own examples. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (explains) and resource (food additive) and spells out exactly what the answer contains: function, risk level, and sources. The resource is distinct from siblings like analyze_label and check_food, though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the phrasing 'by E-number or name', which tells the agent the accepted lookup keys, but there is no explicit when-to-use guidance or routing versus the sibling tools. Adequate but leaves selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_healthier_alternativesFind healthier alternativesBRead-onlyIdempotentInspect
Finds similar products in the same Open Food Facts category that score clearly higher than the given product, best first, each with its score.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| barcode | Yes | Barcode of the product to beat. | |
| country | No | Only suggest products sold in this country, e.g. 'united-states'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context — results are ordered best-first, drawn only from the same category, and each carries its score — but the key decision threshold ('clearly higher') is never quantified, which is a meaningful gap for a ranking tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that gets the core operation out first, then qualifies it with category scope, ranking, and return content. No filler, though the clause stacking makes it slightly dense to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does cover the return shape (alternatives with scores, best first), which is appropriate. However, it omits the 'clearly higher' threshold definition and the semantics of limit, both of which an agent needs to invoke and interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: barcode and country are documented in the schema, while limit has no description anywhere. The description reinforces barcode ('the given product') and implies a capped, ordered result set, but never clarifies what limit controls or the default. It neither compensates for the gap nor adds much beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (finds) and resource (similar products scoring higher), plus the scoping constraint (same Open Food Facts category) and result ordering. It is clear enough that the agent can distinguish it from the safety/additive-oriented siblings, though it does not explicitly contrast itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit statement of when to use this tool versus alternatives, nor any when-not conditions or prerequisites. Usage is only implied by the tool name and the phrase 'given product', leaving the agent to infer the trigger context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
analyze_label - First observed
check_food - First observed
explain_additive - First observed
find_healthier_alternatives
Related MCP Connectors
Look up a packaged food by barcode, search and compare products, and check listed allergens.
Can this person eat this? Allergens, additives and nutrition from a barcode.
Barcode lookup, nutrition search, and product comparison for 3M+ crowd-sourced food products.
USDA FoodData Central nutrient lookup, FDA recall watch, EU FMCG labelling via remote MCP
Related MCP Servers
- AlicenseAqualityCmaintenanceProduct evaluation MCP server for US packaged food. Health scores, ingredient safety, regulatory flags, recall history, corporate ownership.21MIT
- FlicenseBqualityDmaintenanceEnables AI assistants to access food product information, providing nutritional analysis, product comparisons, and recipe suggestions using the Open Food Facts database.21-
- FlicenseBqualityDmaintenanceEnables AI assistants to access food product information from Open Food Facts, including nutritional analysis, product comparisons, recipe suggestions, and allergen checks.21-
- AlicenseNot gradedqualityBmaintenanceEnables querying Open Food Facts product database by barcode, full-text search, category, brand, or country.11 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.