<!-- Use our sunscreen law data and Reef Safe Index | Reef Label -->
Source: https://reeflabel.com/developers/

# Use our sunscreen law data and Reef Safe Index

Free and keyless. Connect an AI assistant to check any ingredient list against every reef law we track, or download the data as JSON. Use it with attribution.

-   **13** laws and rules
-   **41** ingredients
-   **988** products

Dataset last reviewed September 23, 2026.

## MCP server

Connect any MCP client to `https://reeflabel.com/mcp`. It is read-only and needs no account, key or sign-in. Your assistant can then check a label, find products legal where you are going, and read the law with its sources.

Server URL

`https://reeflabel.com/mcp`

### Add it to your client

Claude Code

Run once in a terminal.

```
claude mcp add --transport http reef-label https://reeflabel.com/mcp
```

Claude (claude.ai and Desktop)

Settings → Connectors → Add custom connector, then paste the URL. No sign-in is needed.

```
https://reeflabel.com/mcp
```

Cursor

Add to ~/.cursor/mcp.json.

```
{
  "mcpServers": {
    "reef-label": {
      "url": "https://reeflabel.com/mcp"
    }
  }
}
```

VS Code

Add to .vscode/mcp.json.

```
{
  "servers": {
    "reef-label": {
      "type": "http",
      "url": "https://reeflabel.com/mcp"
    }
  }
}
```

Clients that only speak stdio

Bridge the remote server with mcp-remote.

```
{
  "mcpServers": {
    "reef-label": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://reeflabel.com/mcp"
      ]
    }
  }
}
```

### Tools

-   `check_label`: Paste a sunscreen ingredient list (Drug Facts panel or INCI list) and get a verdict for each sunscreen law: allowed, not-allowed, unverified and so on, with the banned ingredients found and the law cited. Omit \`locations\` to check every law tracked.
-   `list_locations`: Every sunscreen law and reef rule tracked, with status, rule type and banned ingredients. Use the slugs with the other tools.
-   `get_law`: Full detail for one location: what is banned, who it applies to, the effective date, exceptions, the law citation and primary sources.
-   `find_products`: Search the product database. Filter by where the product must be legal, brand, category, format, mineral-only and minimum SPF. Returns compact rows; use get\_product for the full ingredient list.
-   `get_product`: One product: full active and inactive ingredient lists, GTINs, source, and its verdict for every location with the ingredients that blocked it.
-   `get_ingredient`: A UV filter or additive: regulatory status, reef evidence, aliases, and the locations that ban it.

### Things to ask

-   “Is a sunscreen with avobenzone, octocrylene and zinc oxide legal on Maui?”
-   “Which face sunscreens are legal in Hawaii, Maui County and Palau?”
-   “Which sunscreen laws ban phenoxyethanol?”
-   “Here is the label from my sunscreen: … Where can I use it?”

### Call it directly

The endpoint speaks JSON-RPC over HTTP POST (MCP Streamable HTTP, stateless), so a plain request works too.

curl

```
curl -s https://reeflabel.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"check_label","arguments":{"label_text":"Active Ingredients: Avobenzone 3%, Zinc Oxide 5%. Inactive Ingredients: Water","locations":["maui-county","palau"]}}}'
```

## JSON files

The same data the pages are built from, as static files. No parameters and no keys: download a file and filter it yourself. Every file carries an `attribution` block, and each product has a verdict for every location.

-   [`/data/index.json`](https://reeflabel.com/data/index.json): Manifest: counts, review date and links to every file.
-   [`/data/locations.json`](https://reeflabel.com/data/locations.json): Every law and rule: status, banned ingredient ids, citation, sources, last verified. (13 locations)
-   [`/data/ingredients.json`](https://reeflabel.com/data/ingredients.json): Every UV filter and additive, with aliases and the locations that ban it. (41 ingredients)
-   [`/data/brands.json`](https://reeflabel.com/data/brands.json): Brands with product counts. (42 brands)
-   [`/data/products.json`](https://reeflabel.com/data/products.json): Every product: ingredients, GTINs and a computed verdict for each location. (988 products)

Schemas are in the [OpenAPI description](https://reeflabel.com/openapi.json). The API catalog is at [/.well-known/api-catalog](https://reeflabel.com/.well-known/api-catalog).

Example: face sunscreens legal under every law

```
curl -s https://reeflabel.com/data/products.json \
  | jq '[.products[] | select(.legalEverywhere and .category == "face") | {name, brand: .brand.name, spf, url}]'
```

## Reading a verdict

-   `allowed`: the ingredient list meets the rule.
-   `not-allowed`: it violates a rule in force. `blockedBy` names the ingredients.
-   `recommended` / `not-recommended`: advisory guidance only, not a law.
-   `no-rule`: repealed or not enforceable.
-   `unverified`: it passes on what we know, but the ingredient data is incomplete. Check `inciVerified`.

Verdicts are computed from published ingredient lists against the enacted text of each rule, never entered by hand. They are reference information, not legal advice. [How verdicts are made](https://reeflabel.com/guide/methodology/).

## Terms of use

Free to use with attribution: name Reef Label and link the page you used, and for a legal claim also cite the primary source on the location page. Keep request rates modest, identify your client with an honest `User-Agent` and cache responses; the files change only when the dataset is reviewed. Full terms in [sections 10 and 11](https://reeflabel.com/terms/#license), and [how to cite us](https://reeflabel.com/guide/cite/).

## For agents and crawlers

-   [/llms.txt](https://reeflabel.com/llms.txt): map of the site for language models.
-   [/auth.md](https://reeflabel.com/auth.md): no authentication is needed.
-   [/.well-known/mcp/server-card.json](https://reeflabel.com/.well-known/mcp/server-card.json): MCP server card.
-   Every page has a Markdown version: send `Accept: text/markdown` or add `index.md` to the URL.

## Questions and higher volume

Need more than the free limits, a field we do not publish, or found a mistake? Email [legal@reeflabel.com](mailto:legal@reeflabel.com).
