SKS Nutrition AI
Server Details
FDA GRAS search, US retailer ingredient rules, sugar swaps and FDA Nutrition Facts labels.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- SKS Nutrition AI
TDQS
Scored across 6 tools
Each tool targets a distinct resource and action: label calculation, retailer rule screening, RACC category listing, GRAS notice search, ingredient library lookup, and sweetener substitution math. There is no meaningful overlap—the two 'search_' tools query clearly different corpora (FDA GRAS notices vs. SKS ingredient nutrient library), and descriptions make the boundary explicit.
Five of six tools follow a clean verb_noun snake_case pattern (calculate_, check_, list_, search_). The one deviation, 'sweetener_sugar_replacement', is noun-based rather than verb-based, but it remains readable and unambiguous.
Six tools is well-scoped for a nutrition formulation assistant: each covers a distinct step in the workflow (ingredient sourcing, regulatory checks, serving size, label generation, sweetener reformulation) with no filler. Nothing feels thin or redundant.
The surface covers the core lifecycle from ingredient data to printed label, plus regulatory screening and reformulation math. Minor gaps exist—no way to create or update custom library ingredients, and allergen checking is only implicit within the label tool rather than a standalone operation—but agents can work around these.
Available Tools
6 toolscalculate_nutrition_labelCalculate an FDA Nutrition Facts labelARead-onlyIdempotentInspect
Calculate a US FDA Nutrition Facts label from a formula: FDA rounding (21 CFR 101.9), % Daily Values, RACC-based serving size, servings per container, single vs dual-column format, plus ingredient, allergen and net-quantity statements and nutrient-content claim checks. Ingredient quantities are batch amounts; nutrients are per 100 g of each ingredient. Missing nutrients are treated as 0 and reported back, so the label is only as good as its inputs: it must be verified before printing.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | ||
| ingredients | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuine behavioral context beyond them: missing nutrients are silently treated as 0 and reported back, and the result is explicitly a draft requiring verification before printing. It stops short of describing the shape of the returned label/report, which matters because there is no output schema.
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?
Two dense sentences: the first front-loads what is produced, the second front-loads the input contract and the reliability caveat. Despite the long enumeration, every clause maps to a distinct output component or input rule, and nothing is repeated from the schema or annotations.
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 complex, deeply nested tool with no output schema, the description covers inputs semantics, the zero-fill behavior for missing nutrients, and the verification caveat. Gaps remain around what the returned label payload actually looks like and how the 'auto' format decision is made, but the essentials for correct invocation are present.
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?
The description supplies the single most error-prone semantic that the schema alone leaves ambiguous: ingredient quantities are batch amounts while nutrients are per 100 g of each ingredient. That prevents a category-level mistake an agent could easily make from the raw nested schema, and it complements the inline schema notes on RACC ids, density, and processing loss.
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 opens with a specific verb and resource ('Calculate a US FDA Nutrition Facts label from a formula') and enumerates the concrete outputs: FDA rounding per 21 CFR 101.9, %DVs, RACC-based serving size, servings per container, single vs dual column, ingredient/allergen/net-quantity statements, and nutrient-content claim checks. That scope is unmistakably different from the sibling lookup tools (list_racc_categories, search_label_ingredients), so an agent can select it without opening the schema.
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 input expectations ('from a formula', per-100 g nutrients, batch quantities) and by the closing caution that the label 'must be verified before printing'. However, there is no explicit statement of when to use this versus the sibling lookups (e.g., when RACC data or ingredient label names are unknown and should be fetched first), and no stated prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_retailer_ingredientsCheck ingredients against US retailer private-label rulesARead-onlyIdempotentInspect
Screen food ingredients against the public private-label ingredient rules of 7 US retailers: Trader Joe's (TJ), Whole Foods Market (WFM), Kroger Simple Truth (ST), Walmart (WMT), Sam's Club (SAM), Aldi (ALDI) and Sprouts (SPR). Covers about 54 ingredients and classes (synthetic colors, high-intensity sweeteners, preservatives, emulsifiers, fats, flavors). Statuses: BANNED, BANNED_BY_PRINCIPLE, ALLOWED_NAMED, CONDITIONAL, NOT_LISTED (not the same as approved), UNVERIFIED, CONFIRM_WITH_BUYER. Public lists are not full specifications: always confirm with the buyer.
| Name | Required | Description | Default |
|---|---|---|---|
| retailers | No | Optional subset of retailer codes. Default: all 7. | |
| ingredients | Yes | Ingredient names as on a label, e.g. ['sucralose', 'Red 40', 'sodium benzoate']. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered. The description adds genuinely non-obvious behavioral context: the full status vocabulary, the warning that NOT_LISTED is not approval, and that public lists are incomplete specifications requiring buyer confirmation. It stops short of describing response shape or per-retailer coverage gaps.
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, front-loaded with the action and scope, then the status vocabulary, then the caveat. The retailer/code enumeration is long but earns its place by mapping enum values to names; the status list is similarly load-bearing. Slightly dense, but no filler sentences.
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 carries the burden of explaining return values, and it does so by enumerating all seven statuses and flagging the NOT_LISTED trap. The main residual gap is that it doesn't say whether results are returned per-retailer or per-ingredient, which matters for a multi-retailer screen.
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%, so both parameters are already documented, which sets the baseline at 3. The description does add some value by expanding the retailer codes (TJ = Trader Joe's, WFM = Whole Foods Market, etc.) and by characterizing ingredient granularity via the 54 ingredient/class scope, but it adds nothing about the 60-item cap or batching.
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 opens with a specific verb and resource ('Screen food ingredients against the public private-label ingredient rules') and immediately bounds the scope to 7 named US retailers with their codes. That scope is distinct from siblings like search_label_ingredients or search_gras_notices, so an agent can route without opening the schema.
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 domain framing (screening a formulation against retailer private-label rules) and reinforced by the closing caveat to confirm with the buyer. However, it never states when to choose this over search_label_ingredients or search_gras_notices, and gives no preconditions such as needing a known retailer target.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_racc_categoriesList FDA RACC categoriesARead-onlyIdempotentInspect
List FDA Reference Amounts Customarily Consumed (RACC, 21 CFR 101.12) product categories used for Nutrition Facts serving sizes. Returns each category's id, group, name, reference amount and household measure hint. Optional filter words, e.g. 'cookie', 'carbonated beverage' or 'sauce'.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | Optional words to filter categories. |
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 value by enumerating the return shape (id, group, name, reference amount, household measure hint), which is important since there is no output schema. It does not mention the default page size or truncation behavior, a minor gap.
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 tight sentences: what it is, what it returns, how to filter. Front-loaded and free of filler. The parenthetical citations add precision rather than bloat.
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 two-parameter read-only lookup with no output schema, the description covers identity, purpose, returned fields and filter semantics. The only missing piece an agent might want is pagination/limit behavior, which the schema partially covers via defaults and maximums.
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 50%: 'query' is documented in the schema, and the description adds useful meaning with concrete example terms ('cookie', 'carbonated beverage', 'sauce'), clarifying that filtering is word/substring based rather than exact-id. The 'limit' parameter is left entirely to the schema, so the description does not fully compensate for the coverage gap.
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 (List) and a precisely-defined resource (FDA RACC product categories, 21 CFR 101.12) with its domain purpose (Nutrition Facts serving sizes). It is clearly distinguishable from siblings like calculate_nutrition_label or search_label_ingredients, which are calculators and label-text searches rather than category lookups.
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?
The domain purpose implies when to reach for it (you need a RACC category id or reference amount), and the filter examples hint at the lookup workflow. However, it never explicitly says when to use this versus the sibling nutrition tools, nor does it state prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_gras_noticesSearch FDA GRAS noticesARead-onlyIdempotentInspect
Search the FDA GRAS (Generally Recognized as Safe) Notice inventory by substance, intended use or notifier. Returns GRN number, substance, intended use, basis, notifier, filing/closure dates and FDA's response letter (e.g. 'FDA has no questions'). Useful for checking whether a food ingredient has a GRAS notice before formulating for the US market. A missing notice does not mean an ingredient is not GRAS (self-affirmed GRAS exists), and a notice covers only its stated uses.
| Name | Required | Description | Default |
|---|---|---|---|
| field | No | any | |
| limit | No | ||
| query | Yes | Words to search for, e.g. 'allulose', 'pea protein', 'steviol glycosides'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuine interpretive context beyond annotations: what fields come back (GRN number, basis, notifier, filing/closure dates, FDA response letter) and two critical caveats — absence of a notice does not mean non-GRAS due to self-affirmed GRAS, and a notice covers only its stated uses. Those caveats are the kind of context annotations cannot carry.
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, front-loaded with what the tool searches and followed by return fields then caveats — a logical order with no filler. Slightly dense in the middle sentence, but every clause earns its place.
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 correctly enumerates the returned fields so the agent knows what to expect. Combined with the coverage caveats, an agent has enough to call the tool and interpret results; only the pagination/limit behavior is unaddressed, which is a modest omission for a simple 3-parameter search tool.
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 only 33%, and the description partially compensates by naming the three searchable facets (substance, intended use, notifier) that map to the 'field' enum. However, it says nothing about the 'limit' parameter, its default of 10, or the 25 maximum, and adds no format guidance for 'query' beyond what the schema already documents. Baseline 3 is appropriate given partial schema coverage.
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 (Search) plus the exact resource (FDA GRAS Notice inventory) and names the searchable facets: substance, intended use, notifier. This is clearly distinct from every sibling tool (nutrition labels, retailer ingredients, RACC categories, label ingredients, sweetener replacement), so an agent can route to it without opening the schema.
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?
Gives a concrete use case — checking whether a food ingredient has a GRAS notice before formulating for the US market — which tells the agent when this tool applies. It does not explicitly name an alternative or a when-not-to-use rule, but the domain is narrow enough that no sibling overlaps, so the absence of exclusions is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_label_ingredientsSearch the nutrition ingredient libraryARead-onlyIdempotentInspect
Search the SKS nutrition ingredient library (largely USDA-based) for an ingredient's nutrients per 100 g, label declaration name and allergens. Each result says where its data comes from and which nutrients are missing.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Ingredient, e.g. 'wheat flour', 'cane sugar', 'whole milk powder'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, and non-destructive behavior. The description adds useful context beyond that: the library is largely USDA-based, results include provenance, and missing nutrients are flagged. It does not discuss pagination or limits, but it meaningfully explains result trustworthiness.
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?
Two sentences, front-loaded with the action and resource, then the return content. Every sentence contributes useful information with no wasted wording.
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 simple search tool with no output schema, the description adequately explains the result content and provenance. However, it omits limit semantics and when-to-use guidance relative to siblings, leaving meaningful gaps for an agent selecting and invoking the tool.
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?
The schema describes query with examples, but the description adds no parameter-level detail. The limit parameter, with its default of 5 and maximum of 15, is undocumented in both the description and schema, and schema coverage is only 50%, so the description does not compensate for the gap.
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 and resource: search the SKS nutrition ingredient library for an ingredient. It also specifies the returned content (nutrients per 100 g, label declaration name, allergens), but it does not explicitly differentiate this from siblings such as check_retailer_ingredients or calculate_nutrition_label.
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 purpose: use this when you need ingredient-level nutrient, label-name, or allergen data. However, there is no explicit when-to-use guidance, no exclusions, and no routing to alternatives like the retailer ingredient checker or nutrition-label calculator.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sweetener_sugar_replacementSugar replacement calculatorARead-onlyIdempotentInspect
Calculate how much of a sweetener matches the sweetness of a given amount of sugar (sucrose), the calories saved, and the bulk (grams of solids) lost that must be replaced with fiber, polyol or another bulking agent. Also returns the sweetener's relative sweetness, kcal/g, glycemic index, heat/acid stability and regulatory notes from the SKS Sweetener Atlas.
| Name | Required | Description | Default |
|---|---|---|---|
| sweetener | Yes | Sweetener name, e.g. 'sucralose', 'stevia', 'allulose', 'erythritol', 'monk fruit'. | |
| sugar_grams | Yes | Grams of sugar to replace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorldHint, so safety is covered. The description adds genuine context beyond them: the returned data set (sweetness, kcal/g, glycemic index, heat/acid stability, regulatory notes) and the source ('SKS Sweetener Atlas'), which tells the agent this is a pure computation backed by a fixed reference dataset.
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?
Two sentences, front-loaded with the core computation, then a compact list of auxiliary outputs. Every clause carries distinct information (amount, calories, bulk, then atlas metadata); nothing is repeated from the title or schema.
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 must carry the return-value burden, and it does list the key outputs and the data source. It is slightly incomplete in not specifying units for the bulk-loss figure or how the tool responds to an unrecognized sweetener name, but overall it is sufficient for correct invocation.
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% and both parameters are documented there (sweetener with examples, sugar_grams with bounds). The description only restates 'a given amount of sugar' and 'a sweetener' without adding naming conventions, unit caveats, or behavior for unknown sweeteners, so the baseline of 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?
The description opens with a specific verb and resource: 'Calculate how much of a sweetener matches the sweetness of a given amount of sugar'. It also enumerates the secondary outputs (calories saved, bulk lost, relative sweetness, kcal/g, GI, stability, regulatory notes), which clearly separates this conversion tool from siblings like calculate_nutrition_label or search_gras_notices.
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 only implied by the tool's function — an agent can infer you call it when substituting a sweetener for sugar, but there is no explicit statement of when to use this versus calculate_nutrition_label or check_retailer_ingredients. No prerequisites, limits, or exclusions are given.
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.
1 tool update
- Changed
calculate_nutrition_label1 field changed- changed
Input schema / properties / product / properties / racc_id / descriptionPrevious value: -"RACC category id from list_racc_categories."New value: +"FDA RACC category id, e.g. 'cookies'."
6 tool updates
- First observed
calculate_nutrition_label - First observed
check_retailer_ingredients - First observed
list_racc_categories - First observed
search_gras_notices - First observed
search_label_ingredients - First observed
sweetener_sugar_replacement
Related MCP Connectors
Lab results, FDA recalls and additive rules for US packaged foods, with sources; never a grade.
USDA FoodData Central nutrient lookup, FDA recall watch, EU FMCG labelling via remote MCP
Food additive regulations of Japan, the EU and the US, side by side, with sources (free tier).
Search foods, compare nutrients, and look up the full USDA FoodData Central database.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables checking food additive safety, nutrition profiles, pesticide residues, and ingredient lists with regulatory flags and dietary compatibility. All data is sourced from authoritative bodies like JECFA, EFSA, and FDA.1MIT
- AlicenseAqualityCmaintenanceProduct evaluation MCP server for US packaged food. Health scores, ingredient safety, regulatory flags, recall history, corporate ownership.21MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to calculate recipe and per-serving calories, macros, and FDA-rounded Nutrition Facts values from ingredient lines using USDA FoodData Central data, including scaling recipes and looking up ingredient nutrition.4MIT
- AlicenseBqualityBmaintenanceEnables querying a global food nutrition database of generic and branded products, including search by name, lookup by barcode, and retrieval of resolved nutrient values pinned to a dated snapshot. Coverage spans USDA FoodData Central and Open Food Facts sources, with freshness health checks available.9AGPL 3.0
Glama MCP Gateway
Add one secure layer between your agents and this server.