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

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 and clearly defined purpose: browsing taxonomy tags, searching products, retrieving full product details, and comparing multiple products. There is no functional overlap.

Naming Consistency5/5

All tool names follow a consistent 'off_verb_noun' pattern (e.g., off_browse_taxonomy, off_get_product), making the tool set predictable and easy to navigate.

Tool Count5/5

With 4 tools, the server provides essential product querying and comparison capabilities without unnecessary complexity. The count is well-scoped for a food database MCP.

Completeness5/5

The tool set covers the core workflows for exploring food products: searching, retrieving details, comparing, and resolving taxonomy terms. No obvious gaps exist for a read-only query interface.

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. The taxonomy is embedded — not fetched live — because the OFF taxonomy API is unavailable to anonymous bot clients. Tag IDs use the "en:" prefix convention (e.g. "en:organic", "en:gluten-free", "en:milk"). Always 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). Categories has many entries — always provide a search term when browsing categories.
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
tagsYesMatching tag entries.
facetYesThe facet name that was queried (echoes the input).
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 declare readOnlyHint and idempotentHint; description adds that the taxonomy is embedded (not live) and explains the 'en:' prefix convention. No contradictions or hidden behaviors.

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 (~100 words) and well-structured: starts with core purpose, then usage context, parameter details, and specific instructions. Every sentence adds necessary information.

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 moderate complexity (3 parameters, output schema exists) and rich annotations, the description covers all needed context: purpose, usage, parameter behavior, and output format (tag IDs and display names).

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 value by elaborating on each facet enum value (e.g., 'labels covers certifications'), providing a concrete example for search, and noting that categories require a search term due to size.

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 states it browses and searches the canonical tag vocabulary for filter facets, and explicitly ties its output to use as filter values in off_search_products, clearly distinguishing it from siblings like off_compare_products, off_get_product, and 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 Guidelines5/5

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

Provides explicit when-to-use: for preparing filter values for off_search_products. Includes guidance on always using tag IDs over plain terms, recommending search term for categories, and noting that taxonomy is embedded due to API unavailability.

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. Fetches all products in parallel and 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. All products are fetched in parallel. 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.
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds value by noting parallel fetching, normalized table output, data licensing, and the handling of missing nutrition data.

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 two sentences plus a licensing note, all front-loaded with the main action. Every sentence contributes meaningful information without redundancy.

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?

Given the single parameter, comprehensive annotations, and existing output schema, the description covers the tool's behavior, limitations, and licensing adequately. No major gaps remain.

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?

The schema has 100% coverage with a clear description. The description adds context: 'All products are fetched in parallel' and provides an example, going beyond the schema's details.

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 'Side-by-side nutrition and scoring comparison for 2–10 products by barcode.' It uses a specific verb ('compare') and resource ('food products') and distinguishes itself from siblings like off_get_product (single product) and off_search_products (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 provides explicit use cases like 'which of these cereals is healthiest?' and 'compare these pasta brands workflows.' It covers data handling (missing data preserved, regional caveats) but does not explicitly state when not to use the tool or mention alternatives.

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.
Behavior4/5

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

Annotations already indicate readOnly, openWorld, and idempotent hints. The description adds crucial context: missing fields are due to crowd-sourced gaps (not product absence), computed scores have regional caveats, and data is under ODbL 1.0. This goes beyond annotations to manage expectations.

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 front-loaded with the core action and progressively adds detail. It is informative without being overly verbose, though slightly longer than minimal. Each sentence serves a purpose.

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 complexity (multiple returned fields, crowd-sourced data, computed scores) and the presence of an output schema (not shown but implied), the description covers all necessary context: what is returned, caveats, licensing, and parameter usage. It is sufficiently complete for reliable invocation.

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 coverage is 100%, so baseline is 3. The description adds an example barcode and clarifies the fields parameter reduces payload. It also explains the barcode pattern is a primary key. This adds meaningful context beyond the schema descriptions.

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 packaged food product by barcode from Open Food Facts, listing many specific return fields. It is distinct from sibling tools (browse taxonomy, compare, search) which focus on different operations.

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

Usage Guidelines3/5

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

The description implies use when a barcode is available, but does not explicitly contrast with siblings (e.g., 'Use off_search_products when querying by name'). It provides guidance on interpreting missing fields but no when-not-to-use or alternative recommendations.

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 text query or structured tag filters. 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. Text query and tag filters are mutually exclusive routing paths: when query is provided, a text search is performed and tag filters are ignored; when only tag filters are provided (no query), structured facet filtering is applied. 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. When provided, routes to the text search engine — tag filters (categories_tag, brands_tag, etc.) are ignored in this path. Example: "dark chocolate 70%".
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
pageYesCurrent page number (1-based).
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.
page_countYesProducts returned on this page (mirrors page_size except on the last page). Not the total number of pages.
Behavior4/5

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

Annotations already declare readOnly, openWorld, and idempotent hints. The description adds value by disclosing that data is crowd-sourced, result counts reflect contributed products, and licensing under ODbL 1.0 requiring attribution. Also details the routing behavior for query vs tag filters.

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 concise paragraphs with a front-loaded purpose sentence. Every sentence adds information: usage routing, pagination hints, taxonomy resolution, licensing caveats. No wasted 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 complexity (9 params, conditional routing), schema coverage is 100% and an output schema exists. The description covers routing, pagination, tag resolution, data sourcing caveats, licensing, and references sibling tools for complementary actions. No gaps identified.

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 coverage is 100% with descriptions for all 9 parameters. The description adds context beyond schema by explaining the mutual exclusivity logic between query and tag filters, and emphasizing that tag filter values must be canonical IDs (e.g., 'en:organic') with reference to off_browse_taxonomy.

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 'Search Open Food Facts by text query or structured tag filters', specifying the verb and resource. It distinguishes from sibling tools (off_browse_taxonomy, off_get_product) by describing their roles in the workflow.

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?

Explicitly explains the mutual exclusivity of query and tag filters, when to use each path, and the need for at least one search parameter. Provides guidance on resolving tag IDs via off_browse_taxonomy and pagination via page/page_size. Also recommends off_get_product for full details, indicating when to switch tools.

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.

Resources