additives_tag
filters only on searches with no text query — the text backend does not index additives, so pairing the two is rejected up front rather than returning an empty result set that looks like "no such product"
How to use it
additives_tag is exposed by the Openfoodfacts MCP Server MCP server. Add the server to your MCP client (Claude Desktop, Cursor, Windsurf and others), and the additives_tag tool becomes available to the model automatically. See the full listing for setup details and every tool this server provides.
Install Openfoodfacts MCP Server
docker run --rm -p 3010:3010 openfoodfacts-mcp-serverOther tools in Openfoodfacts MCP Server (9)
list identifies barcodes whose fetch failed, with the per-barcode reason — kept separate from notfound, which claims the opposite. A failed barcode never blocks the rows that resolved
controls results returned (1–100, default 20). There is no offset or page input — the upstream endpoint offers no cursor, so narrow the term instead
list identifies barcodes with no contributor record (partial results are not an error)
and nutritiongrades are closed vocabularies answered offline and returned complete. Their IDs are bare (1–4, a–e), matching what offsearchproducts accepts
Resolve a human term to the canonical tag ID (categories, labels, allergens, additives, countries, NOVA groups, Nutri-Score grades) that offsearchproducts filters on, against the live Open Food Facts taxonomy.
Side-by-side nutrition and scoring comparison for 2–10 products by barcode. Returns a normalized table of energy, macros, salt, Nutri-Score, NOVA, and Green-Score.
Fetch a packaged food product by barcode. Returns name, brand, quantity, ingredients, allergens, additives, Nutri-Score, NOVA group, Green-Score, nutrition per 100g/serving, categories, labels, and data completeness.
Search by text query and/or structured tag filters (category, brand, label, allergen, additive, Nutri-Score grade, NOVA group, country). Returns summary rows with barcodes for follow-up lookups.
is exact on tag-only searches. Text searches stop counting at 10,000 matches, and when that ceiling is hit the response says so with totalislowerbound: true and renders the count as 10000+ — add filters for an exact figure