For developers and AI agents

Developer notes

HelloGem is a read-only MCP server that explains one cosmetic ingredient at a time: what it is, what it does and who says so. A result gives the ingredient’s identity, one list of attributed statements, related terms and the sources behind them.

Endpoint
https://api.hellogem.ai/mcp
Protocol
Model Context Protocol over Streamable HTTP, stateless, JSON responses.
Authentication
None. Both tools are read-only.
In ChatGPT
Published by Omnishades Worldwide LTD as version 0.1.0. People install it from HelloGem in ChatGPT; the endpoint above is for your own MCP clients and agents.
Data
One immutable release, described in the release manifest. Every result names the release it came from.

The two tools

search_ingredients

Finds an ingredient by an exact listed INCI, common or chemical name. Inputs: query, one name of 1–200 characters, and an optional limit of 1–10 matches (default 5). When exactly one ingredient matches, ingredient_details holds its full explanation, so no second call is needed.

get_ingredient

Returns the same explanation for one ingredient_id (pattern ing_…): an ID you already have, or one chosen from several matches.

The tool and field descriptions only say what the tools do and return. How to present a result, summarized under Answering well, is in the server’s MCP instructions.

Example: “glycerin”

// tools/call  search_ingredients  {"query": "glycerin"}
{
  "total_candidates": 1,
  "ambiguous": false,
  "ingredient_details": {
    "ingredient": { "preferred_display_name": "GLYCERIN", "status": "provisional", … },
    "names": [ { "raw_name": "Glycerine", … }, … ],
    "explanation": [
      { "kind": "chemical_role", "text": "solvent",
        "status": "accepted", "derivation": "direct_source",
        "evidence": [ { "source_name": "ChEBI", "source_kind": "chemistry_reference",
                       "source_url": "https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:17754", … } ], … },
      { "kind": "description", "text": "Glycerin (sometimes called glycerol) is a naturally occurring alcohol compound found in all animal, plant, and human tissues, including the skin and blood.",
        "status": "source_claim", "derivation": "source_description",
        "evidence": [ { "source_name": "NIVEA", "source_kind": "skincare_brand", … } ], … },
      { "kind": "description", "text": "Helps skin retain moisture", "status": "source_claim",
        "evidence": [ { "source_name": "Paula's Choice", "source_ingredient_name": "Glycerin", … } ], … },
      { "kind": "source_label", "text": "moisturizer/humectant", "status": "source_claim",
        "evidence": [ { "source_name": "INKEEDecoder", "source_kind": "editorial_website", … } ], … },
      …
    ],
    "related_terms": [ { "name": "Glycerine", "same_ingredient": true, … } ],
    "sources": [ { "source_name": "NIVEA", "source_capture_date": "…", … }, … ],
    …
  },
  "request_id": "…",
  "feedback_url": "https://api.hellogem.ai/feedback?request_id=…"
}

Abridged from a real result. “…” marks omitted fields and items.

A definition says what an ingredient is. CosIng’s definitions are quoted whole and stay source claims; the same database’s cosmetic functions are accepted facts:

// search_ingredients  {"query": "NONAPEPTIDE-9"}
{ "kind": "cosmetic_function", "text": "skin conditioning", "status": "accepted",
  "evidence": [ { "source_name": "CosIng", "source_kind": "regulatory_database", … } ], … },
{ "kind": "definition", "text": "Nonapeptide-9 is a synthetic peptide consisting of alanine, arginine, glutamic acid, isoleucine, and leucine",
  "status": "source_claim",
  "evidence": [ { "source_name": "CosIng",
                 "source_url": "https://ec.europa.eu/growth/tools-databases/cosing/details/86502", … } ], … }

Reading a result

explanation
One list of statements to write a single answer from, covering what the ingredient is and what it does: accepted reference facts first, then what each source says, in that source’s order.
status
accepted: a cosmetic function from CosIng, a chemical role from ChEBI, or a role HelloGem inferred from a cosmetic function. source_claim: a source’s own words, quoted briefly. A source claim is never an accepted fact.
kind
cosmetic_function and chemical_role are accepted facts. definition is a source’s short definition of what the ingredient is, such as its origin or composition; it isn’t an effect. description is a source’s own explanation of what the ingredient is or does. source_label is a short label a source uses, such as “Humectant”. COSMILE Europe bases its labels on CosIng: attribute them to COSMILE, and don’t present them as CosIng statements or as agreement with CosIng. product_use names product types a source says contain the ingredient; it isn’t an effect either.
derivation
For accepted facts: direct_source, derived_from_cosmetic_function (inferred by HelloGem from a CosIng function) or direct_and_derived. Source claims are always source_description.
evidence
Who said it and where: the source’s name and kind, and its link. For source claims, source_ingredient_name is the name on the source’s page; when it differs from the identity name, attribute by that page name.
names · related_terms
names are accepted names of this ingredient. related_terms are terms a source lists alongside it; same_ingredient is true only when the term is also an accepted name here. False doesn’t prove it’s a different ingredient.
sources
Every source behind the result. For quoted pages: items available, items withheld from this response, article excerpts, reference_count (the source’s bibliography, not research HelloGem has reviewed), whether the page was matched through another accepted name (alias_matched) and source_capture_date, when HelloGem read the page, not when the source wrote or reviewed it. Reference-fact rows leave these null.
facts_truncated · source_items_omitted · source_articles_excerpted
Accepted facts are capped at 64. Source items beyond each page’s quotation limit are counted, not dropped silently; the full page is at its link.
coverage
Internal availability flags. Don’t turn them into prose.

Answering well

How sources are quoted

From each source page, HelloGem publishes at most 25 words in total, across up to 8 intact items: bullets, labels, related terms or one complete short sentence. A CosIng definition is published only whole, when it defines the ingredient by its own name in 25 words or fewer. Whole articles are never reproduced, items are never cut mid-sentence, and safety or concentration statements are left out. HelloGem holds no license from these sources, and none of them endorses HelloGem; their pages remain their own. See sources and attribution.

Errors and limits

A tool error comes back as an error result with a plain message, plus request_id, feedback_url and whether a retry may help.

CodeMeaning
invalid_inputThe name, ID or limit isn’t valid.
not_foundThat ID isn’t in this release. Search the name again.
snapshot_unavailableIngredient data was briefly unavailable. Retrying may help.
rate_limitedHTTP 429. Wait for Retry-After.
persistence_unavailableHTTP 503. The result couldn’t be saved, so it wasn’t returned. Retry shortly.

Matching is exact: no spelling correction and no fuzzy search. Send one ingredient name per call, not a full ingredient list. Requests are rate-limited across all callers.

Feedback

Each saved result has a request_id and a feedback_url; show the link to people as “Report an issue”. A report sent through it is stored with a copy of the exact request and response, not ChatGPT’s full wording. If the issue concerns that wording, paste it into the report. If a result couldn’t be saved, a report is still accepted and marked as unlinked. Feedback is an HTTP page, not a third tool. Requests, results and feedback are kept privately and expire after 365 days; see the privacy policy.

Data and sources

Release hellogem-a5089734f27e9f9a serves 185,719 ingredient identities, all currently provisional; records without an accepted name are kept but not served. Each figure below counts ingredients, and they overlap:

COSMILE Europe and CosIng were captured only in part, so these are release figures, not completeness claims. Each quoted page records when HelloGem read it, and the release manifest gives each quoted source’s capture range. Preparing a release doesn’t refresh the sources.

Machine-readable pointers