Skip to main content
Glama

openfoodfacts-mcp-server

Browse Food Facts Taxonomy

off_browse_taxonomy
Read-onlyIdempotent

Resolve a human term to the canonical Open Food Facts tag ID that off_search_products filters on. Covers categories, labels/certifications, allergens, additives, countries, NOVA groups, and Nutri-Score grades. Pass a search term to resolve against the Open Food Facts vocabulary, which holds tens of thousands of tags; omitting it returns only a small reference list for each facet except NOVA groups and Nutri-Score grades, which are complete. Most tag IDs use the "en:" prefix (e.g. "en:organic", "en:gluten-free", "en:milk"); NOVA groups return bare digits "1"-"4" and Nutri-Score grades bare letters "a"-"e". Pass the id through to off_search_products exactly as returned. Category tags are frequently plural ("kombucha" resolves to "en:kombuchas"), so use the returned id rather than constructing one.

Input Schema

TableJSON 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" are closed vocabularies returned complete; the other five are resolved against the Open Food Facts taxonomy.
limitNoMaximum entries to return (1–100, default 20). There is no offset or page input: Open Food Facts returns only the first `limit` matches for a term and offers no cursor, so narrow the search term rather than paging.
searchNoTerm to resolve. Matched case-insensitively as a substring of the tag ID or display name. A single word works best ("hummus", not "hummus dip"). Omit only to see a small reference list — Open Food Facts cannot list the full vocabulary without a term, so an unfiltered call is not a view of the full facet.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
capNoThe limit that was applied.
tagsNoMatching tag entries.
errorNoPresent when the call failed. Absent on success.
facetNoThe facet name that was queried (echoes the input).
shownNoNumber of tags returned.
noticeNoCaveat about the answer — that the listing is a limited reference list rather than the full vocabulary, that Open Food Facts was unreachable, or that nothing matched and why.
truncatedNoTrue when more tags exist beyond the limit.
total_in_facetNoTotal entries in this facet. Present only for nova_groups and nutrition_grades, whose vocabularies are closed and complete. Absent for the other facets: Open Food Facts reports no match total and cannot enumerate them, so no figure would be a real one.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark the tool as read-only, open-world, and idempotent. The description adds substantial behavioral context beyond those: it describes the outcome when search is omitted (a small reference list, except for NOVA and Nutri-Score which are returned complete), the ID format patterns ('en:' prefix vs. bare digits/letters for NOVA and Nutri-Score), and the fact that category tags are often plural. This goes well beyond the annotation hints and informs the agent about the tool's return characteristics and pitfalls.

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 efficient and front-loaded: the first sentence captures the core purpose. Subsequent sentences add specific, non-redundant details—each covers a distinct aspect (facet coverage, ID formats, pluralization, and the search-omission behavior). No sentence is filler; the length is justified by the necessary context. It remains structured enough for an agent to parse quickly.

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?

The description is comprehensive for an agent to call this tool correctly. It explains the purpose, the parameter semantics, the expected output (as input to off_search_products), and the edge cases (pluralization, format differences). It even covers the closed vs. open vocabulary distinction for facets. With schema coverage at 100% and an output schema present, the description fills all the gaps an agent would need for correct invocation and integration with the sibling tool.

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 the baseline is 3. The description adds meaningful value over the schema: it explains the ID format conventions (e.g., 'en:organic', 'en:kombuchas'), the pluralization caveat, and that NOVA groups return digits '1'-'4' while Nutri-Score returns letters 'a'-'e'. It also clarifies that 'limit' is capped and there is no paging, which is already in the schema but reinforced. This enriches parameter understanding beyond the schema alone.

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 opens with a specific verb and resource: 'Resolve a human term to the canonical Open Food Facts tag ID that off_search_products filters on.' This clearly distinguishes it from sibling tools like off_search_products (which filters) and off_get_product (which retrieves a product), by stating its role as a resolver/translator for taxonomy tags. It also enumerates the covered facets, leaving no ambiguity about scope.

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 states when to use: to resolve terms before filtering via off_search_products. It provides conditional guidance: omitting search returns a small reference list, and it warns about the pluralization pitfall ('use the returned id rather than constructing one'). It also tells the agent to pass IDs exactly as returned, guiding the workflow. No alternatives are listed, but the sibling connection is clear, and the conditional behavior of the search parameter is well described.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: taxonomy resolution, product search, product details, and comparative analysis. No overlap or ambiguity exists between them.

Naming Consistency5/5

All tools follow a consistent 'off_verb_noun' pattern with snake_case (browse_taxonomy, compare_products, get_product, search_products). The naming is predictable and immediately conveys the action and target.

Tool Count5/5

With only 4 tools, the server stays well-scoped and avoids redundancy. This is an ideal size for a focused read-only API covering search, fetch, compare, and taxonomy lookup.

Completeness5/5

For a read-only crowd-sourced database, the toolset covers all essential workflows: discovering products (search), retrieving full details (get), comparing alternatives (compare), and resolving filter values (browse_taxonomy). No critical gaps are apparent.