protogrid

Search / space.monon/additive-atlas

Additive Atlas

R0· no sign-in

Food additive regulations of Japan, the EU and the US, side by side, with sources (free tier).

v0.1.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality85good
Trust83of 100
Uptime, 30 days100%
Latency p50736 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "additive-atlas": {
      "type": "http",
      "url": "https://api.additiveatlas.monon.space/mcp"
    }
  }
}
claude mcp add --transport http additive-atlas https://api.additiveatlas.monon.space/mcp
[mcp_servers.additive-atlas]
url = "https://api.additiveatlas.monon.space/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "additive-atlas": {
      "type": "remote",
      "url": "https://api.additiveatlas.monon.space/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "additive-atlas": {
      "type": "http",
      "url": "https://api.additiveatlas.monon.space/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=additive-atlas&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vYXBpLmFkZGl0aXZlYXRsYXMubW9ub24uc3BhY2UvbWNwIn0%3D"
}
{
  "servers": {
    "additive-atlas": {
      "type": "http",
      "url": "https://api.additiveatlas.monon.space/mcp"
    }
  }
}
{
  "mcpServers": {
    "additive-atlas": {
      "httpUrl": "https://api.additiveatlas.monon.space/mcp"
    }
  }
}
extensions:
  "additive-atlas":
    enabled: true
    name: "additive-atlas"
    type: streamable_http
    uri: "https://api.additiveatlas.monon.space/mcp"
    timeout: 300

Quality 85 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene86 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations5 of 5 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_substance (destructiveHint, idempotentHint); search_substances (destructiveHint, idempotentHint); analyze_label (destructiveHint, idempotentHint); …
  • pass
    tools.token_costabout 1,374 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changes4 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

5 tools, about 1,374 tokens to load them all · tool set 9c48985a4a4b · tools last changed 2026-10-01 · checked 2026-10-20 14:54 UTC

Tool changes

  • analyze_label_diffchangeddescription
    before

    (Paid; not available through MCP.) Same input as analyze_label, but each detected substance carries the cross-axis derivation. This tool does not return that data: it returns the HTTP endpoint (POST /v1/labels/analyze/diff with the same JSON body, $0.01 USDC per request via x402 on Base) to call instead.

    after · 100% of words in common

    (Paid; not available through MCP.) Same input as analyze_label, but each detected substance carries the cross-axis derivation. This tool does not return that data: it returns the HTTP endpoint (POST /v1/labels/analyze/diff with the same JSON body, 0.01 USDC per request via x402 on Base) to call instead.

  • get_substance_diffchangeddescription
    before

    (Paid; not available through MCP.) For every axis other than the substance's own, what that axis says (with a per-cell source) kept separate from what was derived from it; when nothing can be concluded, a refusal says why and what would settle it. This tool does not return that data: it returns the HTTP endpoint (GET /v1/substances/{id}/diff, $0.01 USDC per request via x402 on Base) to call instead.

    after · 100% of words in common

    (Paid; not available through MCP.) For every axis other than the substance's own, what that axis says (with a per-cell source) kept separate from what was derived from it; when nothing can be concluded, a refusal says why and what would settle it. This tool does not return that data: it returns the HTTP endpoint (GET /v1/substances/{id}/diff, 0.01 USDC per request via x402 on Base) to call instead.

  • analyze_label_diffchangeddescription
    before

    (Paid; not available through MCP.) Same input as analyze_label, but each detected substance carries the cross-axis derivation. This tool does not return that data: it returns the HTTP endpoint (POST /v1/labels/analyze/diff with the same JSON body, x402 payment, in preparation) to call instead.

    after · 78% of words in common

    (Paid; not available through MCP.) Same input as analyze_label, but each detected substance carries the cross-axis derivation. This tool does not return that data: it returns the HTTP endpoint (POST /v1/labels/analyze/diff with the same JSON body, $0.01 USDC per request via x402 on Base) to call instead.

  • get_substance_diffchangeddescription
    before

    (Paid; not available through MCP.) For every axis other than the substance's own, what that axis says (with a per-cell source) kept separate from what was derived from it; when nothing can be concluded, a refusal says why and what would settle it. This tool does not return that data: it returns the HTTP endpoint (GET /v1/substances/{id}/diff, x402 payment, in preparation) to call instead.

    after · 85% of words in common

    (Paid; not available through MCP.) For every axis other than the substance's own, what that axis says (with a per-cell source) kept separate from what was derived from it; when nothing can be concluded, a refusal says why and what would settle it. This tool does not return that data: it returns the HTTP endpoint (GET /v1/substances/{id}/diff, $0.01 USDC per request via x402 on Base) to call instead.

Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 83 / 100

no-repository
provenance55
liveness100
freshness100
hygiene80

+dns-namespace +website +reachable +uptime-100% +updated-20d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://api.additiveatlas.monon.space/mcp streamable-httpnoneyes100%736 ms2025-11-252026-10-20

Tools (5)

analyze_labelread-onlyFind the additives named on a label (same as HTTP POST /v1/labels/analyze). Splits the additive section into tokens and returns, per token, the substances it resolves to (SubstanceSummary: facts on their own axis), plus known interactions between the detected substances. Cutting the additive section out of the label is the caller's job; sending the whole ingredient section is allowed. Matching is exact against the alias vocabulary in scope: a token with matches: [] is unresolved, which (open world) does not distinguish "not an additive" from "an additive not known here". `axis` and `lang` must be one of the accepted pairs: JP+ja, US+en, EU+nl, EU+fr, EU+de, EU+es, EU+pl, EU+el, EU+bg. Not a safety judgement: every record is a draft and needs verification.
analyze_label_diffread-only(Paid; not available through MCP.) Same input as analyze_label, but each detected substance carries the cross-axis derivation. This tool does not return that data: it returns the HTTP endpoint (POST /v1/labels/analyze/diff with the same JSON body, 0.01 USDC per request via x402 on Base) to call instead.
get_substanceread-onlyOne substance with everything its own roster says (same as HTTP GET /v1/substances/{id}): identifiers, category, aliases, translations, the source-ledger row, groups, and — depending on the axis — Japanese use standards, EU/Codex conditions of use, mandatory labelling statements, the roster's definition text or the CFR citation. Facts from the substance's own axis only; nothing here crosses an axis (that is get_substance_diff, paid, HTTP only). Axis-specific keys are present only where the roster has that concept, and an empty list means something (use_standards: [] = no use standard; use_conditions: [] = no permitted food category). Not a safety judgement: every record is a draft and needs verification.
get_substance_diffread-only(Paid; not available through MCP.) For every axis other than the substance's own, what that axis says (with a per-cell source) kept separate from what was derived from it; when nothing can be concluded, a refusal says why and what would settle it. This tool does not return that data: it returns the HTTP endpoint (GET /v1/substances/{id}/diff, 0.01 USDC per request via x402 on Base) to call instead.
search_substancesread-onlyLook up substances by name on one regulatory axis (same as HTTP GET /v1/substances?name=…). The name is normalised (NFKC, whitespace removed, lower-cased) and matched **exactly** against the names and aliases the axis itself uses in that language (E numbers and official names for EU, 品目名 and label terms for JP, CFR names for US) — no partial or fuzzy matching. The official name is an alias of itself. Returns the matching substances (SubstanceSummary: facts from their own roster only) and, per row, what text matched. `axis` and `lang` must be one of the accepted pairs: JP+ja, US+en, EU+nl, EU+fr, EU+de, EU+es, EU+pl, EU+el, EU+bg. Not a safety judgement: every record is a draft and needs verification.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "space.monon/additive-atlas",
  "title": "Additive Atlas",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://api.additiveatlas.monon.space/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.1.0",
  "websiteUrl": "https://additiveatlas.monon.space",
  "description": "Food additive regulations of Japan, the EU and the US, side by side, with sources (free tier)."
}