{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_cg7tyqha62v9","handle":"additive-atlas","url":"https://wellknown.network/agents/additive-atlas","links":{"self":"https://wellknown.network/agents/additive-atlas/record.json","html":"https://wellknown.network/agents/additive-atlas","markdown":"https://wellknown.network/agents/additive-atlas/record.md","api":"https://wellknown.network/api/v1/agents/additive-atlas","status":"https://wellknown.network/api/v1/agents/additive-atlas/status","claim":"https://wellknown.network/agents/additive-atlas/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/additive-atlas/claim.json","badge":"https://wellknown.network/agents/additive-atlas/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/additive-atlas/history","tools":"https://wellknown.network/api/v1/agents/additive-atlas/tools"},"ard":{"identifier":"urn:air:api.additiveatlas.monon.space:server:additive-atlas","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Additive Atlas","summary":"Food additive regulations of Japan, the EU and the US, side by side, with sources (free tier).","description":"Food additive regulations of Japan, the EU and the US, side by side, with sources (free tier).","publisher":{"name":"space.monon","url":null},"homepage":"https://additiveatlas.monon.space","repository":null,"version":"0.1.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.additiveatlas.monon.space/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-30T09:54:06.877305Z","publishedAt":"2026-09-30T09:54:06.877305Z","registryName":"space.monon/additive-atlas"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.translation","name":"Translation","confidence":0.569,"provenance":"derived"}],"categories":["content"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 5h ago.","lastOkAt":"2026-10-10T18:28:12.394Z","lastProbedAt":"2026-10-10T18:28:12.394Z","statusComputedAt":"2026-10-10T18:29:12.461Z","reliability30d":{"probes":30,"successRate":1,"p50Ms":356,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":30,"ok":30,"authBoundaryOk":0,"serviceOk":30,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T18:28:12.394Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":282,"error":null,"detail":{"tools":[{"name":"search_substances","description":"Look up substances by name on one regulatory axis (same as HTTP GET /v1/substances?name=…).\nThe name is normalised (NFKC, whitespace removed, lower-cased) and m"},{"name":"get_substance","description":"One substance with everything its own roster says (same as HTTP GET /v1/substances/{id}): identifiers, category, aliases, translations, the source-ledger row, g"},{"name":"analyze_label","description":"Find 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 re"},{"name":"get_substance_diff","description":"(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 deriv"},{"name":"analyze_label_diff","description":"(Paid; not available through MCP.) Same input as analyze_label, but each detected substance carries the cross-axis derivation.\nThis tool does not return that da"}],"toolCount":5,"toolsHash":"5807eb4fa2756fad797741526f1775c40b67872deb7e68e039ff68c0dddd563d","serverName":"additive-atlas","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T12:28:34.212Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":284,"error":null,"detail":{"tools":[{"name":"search_substances","description":"Look up substances by name on one regulatory axis (same as HTTP GET /v1/substances?name=…).\nThe name is normalised (NFKC, whitespace removed, lower-cased) and m"},{"name":"get_substance","description":"One substance with everything its own roster says (same as HTTP GET /v1/substances/{id}): identifiers, category, aliases, translations, the source-ledger row, g"},{"name":"analyze_label","description":"Find 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 re"},{"name":"get_substance_diff","description":"(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 deriv"},{"name":"analyze_label_diff","description":"(Paid; not available through MCP.) Same input as analyze_label, but each detected substance carries the cross-axis derivation.\nThis tool does not return that da"}],"toolCount":5,"toolsHash":"5807eb4fa2756fad797741526f1775c40b67872deb7e68e039ff68c0dddd563d","serverName":"additive-atlas","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T05:29:01.516Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1317,"error":null,"detail":{"tools":[{"name":"search_substances","description":"Look up substances by name on one regulatory axis (same as HTTP GET /v1/substances?name=…).\nThe name is normalised (NFKC, whitespace removed, lower-cased) and m"},{"name":"get_substance","description":"One substance with everything its own roster says (same as HTTP GET /v1/substances/{id}): identifiers, category, aliases, translations, the source-ledger row, g"},{"name":"analyze_label","description":"Find 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 re"},{"name":"get_substance_diff","description":"(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 deriv"},{"name":"analyze_label_diff","description":"(Paid; not available through MCP.) Same input as analyze_label, but each detected substance carries the cross-axis derivation.\nThis tool does not return that da"}],"toolCount":5,"toolsHash":"5807eb4fa2756fad797741526f1775c40b67872deb7e68e039ff68c0dddd563d","serverName":"additive-atlas","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T23:30:48.232Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":288,"error":null,"detail":{"tools":[{"name":"search_substances","description":"Look up substances by name on one regulatory axis (same as HTTP GET /v1/substances?name=…).\nThe name is normalised (NFKC, whitespace removed, lower-cased) and m"},{"name":"get_substance","description":"One substance with everything its own roster says (same as HTTP GET /v1/substances/{id}): identifiers, category, aliases, translations, the source-ledger row, g"},{"name":"analyze_label","description":"Find 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 re"},{"name":"get_substance_diff","description":"(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 deriv"},{"name":"analyze_label_diff","description":"(Paid; not available through MCP.) Same input as analyze_label, but each detected substance carries the cross-axis derivation.\nThis tool does not return that da"}],"toolCount":5,"toolsHash":"5807eb4fa2756fad797741526f1775c40b67872deb7e68e039ff68c0dddd563d","serverName":"additive-atlas","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T17:28:27.761Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":279,"error":null,"detail":{"tools":[{"name":"search_substances","description":"Look up substances by name on one regulatory axis (same as HTTP GET /v1/substances?name=…).\nThe name is normalised (NFKC, whitespace removed, lower-cased) and m"},{"name":"get_substance","description":"One substance with everything its own roster says (same as HTTP GET /v1/substances/{id}): identifiers, category, aliases, translations, the source-ledger row, g"},{"name":"analyze_label","description":"Find 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 re"},{"name":"get_substance_diff","description":"(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 deriv"},{"name":"analyze_label_diff","description":"(Paid; not available through MCP.) Same input as analyze_label, but each detected substance carries the cross-axis derivation.\nThis tool does not return that da"}],"toolCount":5,"toolsHash":"5807eb4fa2756fad797741526f1775c40b67872deb7e68e039ff68c0dddd563d","serverName":"additive-atlas","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T11:27:55.014Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1279,"error":null,"detail":{"tools":[{"name":"search_substances","description":"Look up substances by name on one regulatory axis (same as HTTP GET /v1/substances?name=…).\nThe name is normalised (NFKC, whitespace removed, lower-cased) and m"},{"name":"get_substance","description":"One substance with everything its own roster says (same as HTTP GET /v1/substances/{id}): identifiers, category, aliases, translations, the source-ledger row, g"},{"name":"analyze_label","description":"Find 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 re"},{"name":"get_substance_diff","description":"(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 deriv"},{"name":"analyze_label_diff","description":"(Paid; not available through MCP.) Same input as analyze_label, but each detected substance carries the cross-axis derivation.\nThis tool does not return that da"}],"toolCount":5,"toolsHash":"5807eb4fa2756fad797741526f1775c40b67872deb7e68e039ff68c0dddd563d","serverName":"additive-atlas","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T05:25:38.354Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":278,"error":null,"detail":{"tools":[{"name":"search_substances","description":"Look up substances by name on one regulatory axis (same as HTTP GET /v1/substances?name=…).\nThe name is normalised (NFKC, whitespace removed, lower-cased) and m"},{"name":"get_substance","description":"One substance with everything its own roster says (same as HTTP GET /v1/substances/{id}): identifiers, category, aliases, translations, the source-ledger row, g"},{"name":"analyze_label","description":"Find 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 re"},{"name":"get_substance_diff","description":"(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 deriv"},{"name":"analyze_label_diff","description":"(Paid; not available through MCP.) Same input as analyze_label, but each detected substance carries the cross-axis derivation.\nThis tool does not return that da"}],"toolCount":5,"toolsHash":"5807eb4fa2756fad797741526f1775c40b67872deb7e68e039ff68c0dddd563d","serverName":"additive-atlas","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T22:24:13.254Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1182,"error":null,"detail":{"tools":[{"name":"search_substances","description":"Look up substances by name on one regulatory axis (same as HTTP GET /v1/substances?name=…).\nThe name is normalised (NFKC, whitespace removed, lower-cased) and m"},{"name":"get_substance","description":"One substance with everything its own roster says (same as HTTP GET /v1/substances/{id}): identifiers, category, aliases, translations, the source-ledger row, g"},{"name":"analyze_label","description":"Find 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 re"},{"name":"get_substance_diff","description":"(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 deriv"},{"name":"analyze_label_diff","description":"(Paid; not available through MCP.) Same input as analyze_label, but each detected substance carries the cross-axis derivation.\nThis tool does not return that da"}],"toolCount":5,"toolsHash":"5807eb4fa2756fad797741526f1775c40b67872deb7e68e039ff68c0dddd563d","serverName":"additive-atlas","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T16:29:14.077Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":292,"error":null,"detail":{"tools":[{"name":"search_substances","description":"Look up substances by name on one regulatory axis (same as HTTP GET /v1/substances?name=…).\nThe name is normalised (NFKC, whitespace removed, lower-cased) and m"},{"name":"get_substance","description":"One substance with everything its own roster says (same as HTTP GET /v1/substances/{id}): identifiers, category, aliases, translations, the source-ledger row, g"},{"name":"analyze_label","description":"Find 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 re"},{"name":"get_substance_diff","description":"(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 deriv"},{"name":"analyze_label_diff","description":"(Paid; not available through MCP.) Same input as analyze_label, but each detected substance carries the cross-axis derivation.\nThis tool does not return that da"}],"toolCount":5,"toolsHash":"5807eb4fa2756fad797741526f1775c40b67872deb7e68e039ff68c0dddd563d","serverName":"additive-atlas","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T10:23:55.536Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":283,"error":null,"detail":{"tools":[{"name":"search_substances","description":"Look up substances by name on one regulatory axis (same as HTTP GET /v1/substances?name=…).\nThe name is normalised (NFKC, whitespace removed, lower-cased) and m"},{"name":"get_substance","description":"One substance with everything its own roster says (same as HTTP GET /v1/substances/{id}): identifiers, category, aliases, translations, the source-ledger row, g"},{"name":"analyze_label","description":"Find 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 re"},{"name":"get_substance_diff","description":"(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 deriv"},{"name":"analyze_label_diff","description":"(Paid; not available through MCP.) Same input as analyze_label, but each detected substance carries the cross-axis derivation.\nThis tool does not return that da"}],"toolCount":5,"toolsHash":"5807eb4fa2756fad797741526f1775c40b67872deb7e68e039ff68c0dddd563d","serverName":"additive-atlas","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"search_substances","description":"Look up substances by name on one regulatory axis (same as HTTP GET /v1/substances?name=…).\nThe name is normalised (NFKC, whitespace removed, lower-cased) and m"},{"name":"get_substance","description":"One substance with everything its own roster says (same as HTTP GET /v1/substances/{id}): identifiers, category, aliases, translations, the source-ledger row, g"},{"name":"analyze_label","description":"Find 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 re"},{"name":"get_substance_diff","description":"(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 deriv"},{"name":"analyze_label_diff","description":"(Paid; not available through MCP.) Same input as analyze_label, but each detected substance carries the cross-axis derivation.\nThis tool does not return that da"}],"package":null,"toolSurface":{"id":"ts_wvkpek45rdz3","endpointId":"ep_ux4uhyuta247","hash":"5807eb4fa2756fad797741526f1775c40b67872deb7e68e039ff68c0dddd563d","toolCount":5,"serverName":"additive-atlas","serverVersion":"0.1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-03T01:26:53.830Z","lastSeenAt":"2026-10-10T18:28:12.392Z","observations":30,"toolNames":["search_substances","get_substance","analyze_label","get_substance_diff","analyze_label_diff"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_ux4uhyuta247","url":"https://api.additiveatlas.monon.space/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-05T03:24:56.831Z","auth":{"observedAt":"2026-10-05T03:24:57.108Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-05T03:24:57.119Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"api.additiveatlas.monon.space","issuer":{"commonName":"WR3","organization":"Google Trust Services"},"validFrom":"2026-09-25T12:23:32.000Z","validTo":"2026-12-24T13:09:41.000Z","daysToExpiry":74,"sanCount":1,"fingerprint256":"AB:E9:D6:94:8E:08:BF:D6:9D:3F:82:B3:42:2F:E2:C6:A5:17:C5:89:B2:44:F9:23:43:6F:8D:43:3A:DD:07:ED"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"space.monon/additive-atlas","url":"https://registry.modelcontextprotocol.io/v0/servers/space.monon%2Fadditive-atlas","firstSeenAt":"2026-10-03T01:22:41.561Z","fetchedAt":"2026-10-08T20:19:11.313Z","normalizedAt":"2026-10-08T20:19:11.313Z"}]},"firstSeenAt":"2026-10-03T01:22:41.561Z","updatedAt":"2026-10-10T18:30:17.168Z"}