# supplemental.pl — EU/PL food law

> EU/PL food law for supplement firms: health claims, novel food, GIS, C.L.A.I.M.S. Not legal advice.

- name: pl.supplemental/foodlaw
- version: 1.1.0
- connection class: R0 (autonomous)
- trust: 82/100 flags: no-repository
- quality: 96/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/pl.supplemental%2Ffoodlaw
- tools: https://api.protogrid.dev/v1/servers/pl.supplemental%2Ffoodlaw/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "foodlaw": {
      "type": "http",
      "url": "https://mcp.supplemental.pl/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 99
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-97% +updated-5d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 96/100 (strong)

### protocol: 100 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- pass `protocol.list_ttl`: tool list is cacheable (ttlMs 3600000)

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 8 of 8 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 1,671 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: 83 (weight 15)

- warn `stability.changes`: 18 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name
- pass `stability.new_links`: no tool change named a new site

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 8, about 1,671 tokens to load them all
- tool set hash: 671e7900f01ea311b9fdd0144ca58796
- tools last changed: 2026-11-09T14:03:28.714Z
- badge: [![protogrid quality](https://protogrid.dev/badge/pl.supplemental/foodlaw.svg)](https://protogrid.dev/servers/pl.supplemental/foodlaw)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-09 `nutrition_calc` changed (inputSchema)
- 2026-11-09 `get_claim_foodlaw` changed (inputSchema)
- 2026-11-09 `search_claims_foodlaw` changed (inputSchema)
- 2026-11-09 `novel_food_status` changed (inputSchema)
- 2026-11-09 `check_health_claim` changed (inputSchema)
- 2026-11-04 `nutrition_calc` changed (description, inputSchema, annotations)
  - before: Deterministic nutrition calculation for a recipe (no AI): energy and nutrients per 100 g, micronutrients with %NRV, candidate nutrition claims (withheld if any ingredient is unresolved), allergens and QUID hints. Ingredient lines with mass or volume, e.g. "mąka pszenna 500 g", "milk 200 ml". Max 20 calculations per user per day (500 for Google network addresses, e.g. Gemini).
  - after: Deterministic nutrition calculation for a recipe (no AI): energy and nutrients per 100 g, micronutrients with %NRV, candidate nutrition claims (withheld if any ingredient is unresolved), allergens and QUID hints. Ingredient lines with mass or volume and the ingredient name in Polish (the food table matches Polish names only; translate other languages first), e.g. "mąka owsiana 500 g", "mleko 200 ml", "miód 50 g". Usage limit: 20 calculations per user per day (500 for shared Google network addresses).
- 2026-11-04 `gis_notification_steps` changed (annotations)
- 2026-11-04 `get_claim_foodlaw` changed (description, annotations)
  - before: Fetch one claim from C.L.A.I.M.S. by its numeric ID (from search_claims_foodlaw). Botanicals are always "on_hold". Free limit: 2000 calls per user per day (10000 for Google network addresses, e.g. Gemini); for more, contact tomaszkrawczyk@supplemental.pl.
  - after: Fetch one claim from C.L.A.I.M.S. by its numeric ID (from search_claims_foodlaw). Botanicals are always "on_hold". Usage limit: 2000 calls per user per day (10000 for shared Google network addresses).
- 2026-11-04 `search_claims_foodlaw` changed (description, annotations)
  - before: Match an ingredient (and optional dose) against Reg. 432/2012 authorised claims and the SANCO/11074/2013 botanical list via C.L.A.I.M.S. (FOODLAW.ai). Botanical claims are always returned as regulatory_status "on_hold" (not authorised). Free limit: 2000 calls per user per day (10000 for Google network addresses, e.g. Gemini); for more, contact tomaszkrawczyk@supplemental.pl.
  - after: Match an ingredient (and optional dose) against Reg. 432/2012 authorised claims and the SANCO/11074/2013 botanical list via C.L.A.I.M.S. (FOODLAW.ai). Botanical claims are always returned as regulatory_status "on_hold" (not authorised). Usage limit: 2000 calls per user per day (10000 for shared Google network addresses).
- 2026-11-04 `novel_food_status` changed (annotations)

Full history: https://api.protogrid.dev/v1/servers/pl.supplemental%2Ffoodlaw/changes

## Remotes

- https://mcp.supplemental.pl/mcp (streamable-http, auth none, reachable true, uptime30d 0.9677419)

## Packages

_none_

## Tools (8)

- `check_health_claim`: Look up a nutrient/substance in the official EU Register of nutrition and health claims (European Commission data, refreshed weekly). Shows whether each claim is Authorised, Non-authorised or Revoked, its conditions of use, the EFSA question and the legal act.
- `get_article`: Return one supplemental.pl knowledge article by URL or slug: summary, headings, a text excerpt, legal references named in it and its PL/EN/DE versions. Pass lang to get another language version.
- `get_claim_foodlaw`: Fetch one claim from C.L.A.I.M.S. by its numeric ID (from search_claims_foodlaw). Botanicals are always "on_hold". Usage limit: 2000 calls per user per day (10000 for shared Google network addresses).
- `gis_notification_steps`: Step-by-step procedure for notifying a food supplement to the Polish Chief Sanitary Inspectorate (GIS, Art. 29–30 of the Food and Nutrition Safety Act), from the supplemental.pl article. A GIS notification is not a novel food authorisation.
- `novel_food_status`: Look up a food or ingredient in the EU Novel Food Catalogue (European Commission data, refreshed weekly): status per part/form (Novel food, Not novel in food, Not novel in food supplements, Authorised novel food, consultation request), with links to Reg. 2015/2283 and the Union list.
- `nutrition_calc`: Deterministic nutrition calculation for a recipe (no AI): energy and nutrients per 100 g, micronutrients with %NRV, candidate nutrition claims (withheld if any ingredient is unresolved), allergens and QUID hints. Ingredient lines with mass or volume and the ingredient name in Polish (the food table matches Polish names only; translate other languages first), e.g. "mąka owsiana 500 g", "mleko 200 ml", "miód 50 g". Usage limit: 20 calculations per user per day (500 for shared Google network addresses).
- `search_articles`: Full-text search of supplemental.pl knowledge articles on EU/PL food law (health claims, novel food, supplements, labelling, CJEU case law) in Polish, English or German. Returns titles, URLs, dates, summaries and language versions.
- `search_claims_foodlaw`: Match an ingredient (and optional dose) against Reg. 432/2012 authorised claims and the SANCO/11074/2013 botanical list via C.L.A.I.M.S. (FOODLAW.ai). Botanical claims are always returned as regulatory_status "on_hold" (not authorised). Usage limit: 2000 calls per user per day (10000 for shared Google network addresses).
