Skip to main content
Glama

openfoodfacts-mcp-server

Server Details

Barcode lookup, nutrition search, and product comparison for 3M+ crowd-sourced food products.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
cyanheads/openfoodfacts-mcp-server
GitHub Stars
1

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.6/5 across 4 of 4 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool has a distinct purpose: taxonomy browsing, product comparison, single product fetch, and product search. No overlap exists between the four tools.

Naming Consistency5/5

All tools use a consistent 'off_' prefix followed by a verb_noun pattern (browse_taxonomy, compare_products, get_product, search_products), making them predictable and easy to understand.

Tool Count5/5

With 4 tools, the server is well-scoped for querying and comparing food products. Each tool serves a clear role without redundancy or unnecessary complexity.

Completeness4/5

The tool set covers core operations: taxonomy lookup, product search, detailed product fetch, and comparison. Missing features like batch statistics or category listings are minor, but the set adequately supports typical agent workflows.

Available Tools

4 tools
off_browse_taxonomyBrowse Food Facts TaxonomyA
Read-onlyIdempotent
Inspect

Browse and search the canonical tag vocabulary for Open Food Facts filter facets. Returns tag IDs and display names for use as filter values in off_search_products. Covers categories, labels/certifications, allergens, additives, countries, NOVA groups, and Nutri-Score grades. Tag IDs use the "en:" prefix convention (e.g. "en:organic", "en:gluten-free", "en:milk"). Use these tag IDs as filter values, not plain English terms.

ParametersJSON Schema
NameRequiredDescriptionDefault
facetYes"categories" covers food categories (en:cheeses, en:breakfast-cereals). "labels" covers certifications (en:organic, en:fair-trade). "allergens" covers declared allergens (en:milk, en:gluten). "additives" covers E-numbers (en:e322). "countries" covers country-of-sale tags (en:france). "nova_groups" and "nutrition_grades" return the complete fixed vocabularies.
limitNoMaximum entries to return (1–100, default 20). The categories facet is broad; a search term narrows it to the relevant tags.
searchNoCase-insensitive substring filter against tag ID or display name. Example: "gluten" returns en:gluten, en:no-gluten. Omit to list all entries for the facet (may be large for categories).

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe limit that was applied.
tagsYesMatching tag entries.
facetYesThe facet name that was queried (echoes the input).
shownNoNumber of tags returned.
truncatedNoTrue when more tags exist beyond the limit.
total_in_facetNoTotal entries in this facet before search filtering. Large for categories.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only and idempotent; description adds conventions like 'en:' prefix and return format without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences front-load purpose and usage, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers facets, tag ID format, and filter usage; lacks mention of pagination or ordering but limit parameter is documented.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all parameters with 100% description; description adds context on tag ID prefix and example values, adding value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool browses and searches taxonomy for Open Food Facts filter facets, distinct from sibling tools like off_search_products.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states returned tag IDs are for use in off_search_products and advises using tag IDs over plain terms, but does not cover when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

off_compare_productsCompare Food Products Side-by-SideA
Read-onlyIdempotent
Inspect

Side-by-side nutrition and scoring comparison for 2–10 products by barcode. Returns a normalized table of energy (kcal/100g), fat, saturated fat, sugars, salt, protein, fiber, Nutri-Score, NOVA group, and Green-Score. Designed for "which of these cereals is healthiest?" or "compare these pasta brands" workflows. Missing nutrition data for any product is preserved as absent — comparisons are not imputed. Scores carry regional formula caveats. Data under ODbL 1.0 — cite Open Food Facts in downstream use.

ParametersJSON Schema
NameRequiredDescriptionDefault
barcodesYes2–10 barcodes to compare, returned as one row each in input order. Example: ["3017620422003", "7622210100146"].

Output Schema

ParametersJSON Schema
NameRequiredDescription
productsYesComparison rows, one per barcode in input order.
not_foundYesBarcodes with no contributor record. Not an error — the product may exist but not yet entered in Open Food Facts.
succeededYesNumber of barcodes that resolved to a found product.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, openWorld, and idempotent. The description adds beyond: missing data preserved as absent (no imputation), scores have regional caveats, and data licensing/citation requirements. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loading purpose with a clear verb+resource, then listing fields and key behaviors. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (multiple fields, regional caveats, licensing), the description, combined with annotations and output schema, is complete. It covers purpose, data fields, missing data handling, caveats, and legal notice.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has one parameter with 100% coverage. Description adds examples and mentions input order, but doesn't add significant meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: side-by-side comparison of 2-10 products by barcode, listing specific nutritional and scoring fields. It provides example use cases and distinguishes from sibling tools that handle single products or search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use (comparing products like 'which cereal is healthiest?') but lacks explicit when-not or alternatives. However, sibling context and clear purpose make usage obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

off_get_productGet Food Product by BarcodeA
Read-onlyIdempotent
Inspect

Fetch a packaged food product by barcode (EAN-13 or UPC) from Open Food Facts. Returns the product name, brand, quantity, ingredients (raw text and parsed list), allergens, additives, computed scores (Nutri-Score a–e, NOVA 1–4, Green-Score), nutrition per 100g and per serving, categories, labels, packaging, origins, image URL, and data completeness. Open Food Facts is a crowd-sourced database — a missing field means "not yet entered by contributors," not that the attribute is absent from the actual product. Computed scores carry regional formula caveats and are indicators, not absolute rankings. Data is under ODbL 1.0 — cite Open Food Facts in downstream use.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoSubset of fields to return. Omitting returns all standard fields. Use to reduce payload when only scores or ingredients are needed.
barcodeYesEAN-13 or UPC barcode (8–14 digits). The primary key for Open Food Facts. Example: "3017620422003" (Nutella FR).

Output Schema

ParametersJSON Schema
NameRequiredDescription
foundYesFalse when the barcode exists in no contributor record (status:0). A false result means no contributor has entered this product yet — not that the product does not exist.
barcodeYesBarcode as returned by the API.
productNoProduct data. Absent when found is false.
requested_fieldsNoThe field subset that was requested, when the caller passed `fields`. Absent means all standard fields were requested. Sections outside this subset are omitted because they were not requested — not because Open Food Facts lacks the data.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that missing fields mean not yet entered (open world), computed scores have regional caveats, and data is under ODbL. This goes beyond the readOnlyHint, openWorldHint, idempotentHint annotations, adding actionable context for the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single coherent paragraph front-loading the action and listing return fields efficiently. While slightly dense, every sentence adds value and there is no repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (many fields, crowd-sourced, computed scores) and the existence of an output schema, the description covers all necessary context: data semantics, attribution requirements, and score interpretation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes both parameters (barcode pattern, fields enum) with coverage at 100%. The description adds minimal extra meaning (e.g., example barcode), but the schema carries the burden, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches a food product by barcode from Open Food Facts, enumerates the returned fields, and distinguishes itself from siblings like off_search_products or off_compare_products by being the primary barcode lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies when to use the tool (fetch by barcode) and provides important caveats about crowd-sourced data and licensing. It does not explicitly mention alternatives like searching by name, but the sibling list implies differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

off_search_productsSearch Food ProductsA
Read-onlyIdempotent
Inspect

Search Open Food Facts by full-text query, structured tag filters, or both at once. Returns a summary list with barcodes, product names, brands, Nutri-Score, NOVA group, and categories — enough for triage and selection, not full label data. Use off_get_product on the returned barcodes for complete details. A text query and tag filters combine: results match the query text and satisfy every filter provided (e.g. query "dark chocolate" with labels_tag "en:organic" and countries_tag "en:france" returns organic chocolate sold in France). Tag filter values must be canonical tag IDs (e.g. "en:organic", "en:gluten-free") — use off_browse_taxonomy to resolve human terms to tag IDs. At least one search parameter is required. Data is crowd-sourced; result count reflects contributed products, not all products in the market. Data under ODbL 1.0 — cite Open Food Facts in downstream use.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-based). Use with page_size to paginate results.
queryNoFull-text search term across product names, brands, and ingredients. Combines with any tag filters — results match this text and satisfy the filters. Example: "dark chocolate 70%".
sort_byNoSort order for searches without a text query. "unique_scans_n" surfaces the most-scanned products; omitting returns results in default order. Searches that include a text query are relevance-ranked and ignore this option.
page_sizeNoResults per page (1–50, default 20). Keep low for initial exploration; increase for comparison workflows.
brands_tagNoBrand slug (lowercased, hyphenated). Example: "nutella", "kelloggs". Fuzzy — partial matches may work.
labels_tagNoCanonical label/certification tag ID. Example: "en:organic", "en:fair-trade", "en:no-gluten". Use off_browse_taxonomy with facet="labels".
nova_groupNoFilter by NOVA food processing class. "1"=unprocessed/minimally processed, "4"=ultra-processed. Products without a NOVA score are excluded.
countries_tagNoCanonical country tag ID. Example: "en:france", "en:united-states". Filters to products sold in that country.
categories_tagNoCanonical category tag ID. Example: "en:breakfast-cereals", "en:cheeses". Use off_browse_taxonomy with facet="categories" to discover valid values.
nutrition_gradeNoFilter by Nutri-Score grade. "a" is highest nutritional quality, "e" is lowest. Products without a score are excluded.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe page_size that was applied.
pageYesCurrent page number (1-based).
shownNoNumber of products returned on this page.
totalYesTotal matching products in the database for this query.
noticeNoGuidance when results are empty — echoes filters and suggests how to broaden.
productsYesMatching products. Use barcodes with off_get_product for full label data.
truncatedNoTrue when more results exist beyond this page.
page_countYesProducts returned on this page (mirrors page_size except on the last page). Not the total number of pages.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond the annotations (readOnlyHint, openWorldHint, idempotentHint). It explains the crowd-sourced nature and that result count reflects contributed products, the AND combination of filters, sort_by behavior (ignored with text query), and the license/attribution requirement. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and concise despite its length. It starts with the core purpose, then details usage, parameter semantics, caveats, and legal info. Every sentence adds useful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (10 parameters, output schema exists), the description covers all necessary aspects: when to use, how to use, parameter behavior, data caveats, licensing, and relationships to siblings. The presence of an output schema reduces the need to describe return values, making the description sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the description still adds substantial value for each parameter: explains how query and tag filters combine, provides examples for query, sort_by, brands_tag, labels_tag, nova_group, countries_tag, categories_tag, and nutrition_grade, clarifies fuzzy matching for brands_tag, and notes sort_by is ignored with text query.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches Open Food Facts by text query, tag filters, or both, and distinguishes it from siblings by mentioning off_get_product for full details and off_browse_taxonomy for resolving tag IDs. It specifies the return summary fields (barcodes, names, brands, Nutri-Score, NOVA, categories) for triage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: when to use this tool (searching and triage), how to combine text and filters with AND logic, the requirement for at least one search parameter, and when to use sibling tools (off_get_product for full details, off_browse_taxonomy for tag ID resolution). It includes an example query.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.