Free · no key · CC0 source data

Dutch Allergen Context
what is in it, and where is the source silent?

One API and one MCP tool over two Dutch government sources: the excipients of all 19,421 licensed medicines, and 583 food safety warnings from the Dutch food authority, 172 of which concerned an allergen missing from the label.

The value is not in fetching but in interpretation. The source contains 1,434 chemical excipient names, and a keyword search over those produces dangerous nonsense.

Quick start

# which paracetamol products are free of gluten?
curl "https://allergen-context.tradebrite.nl/v1/allergy?werkzame_stof=paracetamol&profiel=gluten"

# does this specific medicine contain lactose?
curl "https://allergen-context.tradebrite.nl/v1/allergy?medicijn=tetmodis&profiel=lactose"

# was this product recalled?
curl "https://allergen-context.tradebrite.nl/v1/allergy?barcode=8718452375684"

# every recall caused by mustard
curl "https://allergen-context.tradebrite.nl/v1/allergy?terugroep_allergeen=mosterd"

Parameter names are Dutch because the data is Dutch and the field names mirror the source. werkzame_stof is the active substance, medicijn a brand name, profiel the allergy profile, terugroep_allergeen a recall allergen.

Four verdicts, and the difference is the point

VerdictMeaning
NIET_GESCHIKTNot suitable. The allergen is demonstrably among the listed excipients.
ONZEKERUncertain. The source names an excipient without stating its origin. "Starch" without the grain — maize is harmless, wheat contains gluten. "Gelatin" without the animal — bovine, porcine or fish. This affects thousands of medicines. Never present it as safe.
GEEN_AANWIJZINGNo indication. The allergen does not appear among the listed excipients. Says nothing about the active substance and nothing about cross-contamination.
ONBEKENDUnknown. The source lists no excipients at all for this medicine, which happens for 1,362 of the 19,421. Not evidence of absence.

Every verdict ships with veroorzaakt_door: the literal excipient name that triggered it, so a pharmacist can check it and so we remain refutable.

Why a separate layer is needed

False positives. Searching the raw source for "melk" (milk) returns 195 medicines. Four contain milk protein; the other 191 contain lactic acid, a common acid with no relation to dairy. A language model handed the raw data makes exactly this mistake.

Missed matches. Lactose appears under four spellings in the source, soy under twelve, egg under three. Searching one spelling misses the rest.

Silent gaps. For 2,468 medicines the grain behind the starch is not stated, and for 2,346 the origin of the gelatin is not. That is a shortcoming of the source, not a licence to guess — but it must stay visible instead of disappearing into "free from".

Over-warning is a failure too. An earlier version flagged maize starch as possible gluten because the pattern was too loose: 1,129 medicines were wrongly warned about. Anyone who reads "maybe" everywhere starts ignoring it.

Connecting as an MCP server

One tool: get_allergy_context. Streamable HTTP, no authentication.

{
  "mcpServers": {
    "allergen-context": {
      "type": "http",
      "url": "https://allergen-context.tradebrite.nl/mcp"
    }
  }
}

Deliberately one tool rather than ten. An agent has to read the entire tool list before it can ask anything; more tools in one server is not richer, it is more expensive and more confusing.

Sources and licence

SourceContentLicence
CBG Medicines Information Bank19,421 licensed medicines with excipientsCC0
NVWA safety warnings583 notices since 2023, 323 with a barcodeCC0

Both sources are published under the Creative Commons zero declaration; attribution is not required but we give it anyway. Source code is MIT. Answers are free to use.

Data retrieved on 19 August 2026. Rate limit: 10 requests per 10 seconds and 60 per minute per IP address.

Not medical advice

This service reflects what the Dutch medicines authority and food authority publish, and where those sources are silent. It is not medical advice, not a diagnosis and not a replacement for the package leaflet or a pharmacist. Do not build an application on it that advises users to change or stop medication. Tradebrite BV accepts no liability for inaccuracies in the source data or for decisions taken on the basis of it.

Terms and liability

This service is provided free of charge and without any warranty, "as is". Tradebrite BV gives no guarantee as to the accuracy, completeness or timeliness of the data. The data is an automated transformation of public government sources; errors in those sources carry through, and manufacturers change formulations without us seeing it immediately.

To the extent permitted by law, Tradebrite BV excludes all liability for damage arising from the use of this service or from its unavailability, including consequential damage and damage to health. Anyone processing this data in their own application is responsible for how it is presented, and in particular for preserving the distinction between the four verdicts.

The leaflet inside the package always takes precedence. In case of doubt about a medicine, the pharmacist is the right source; they have access to data that is not public.

Found an error? info@tradebrite.nl — we correct it and record the correction date.