Dietary Supplement Analysis (NIH data) について
健康・薬局エージェント向けのリモートサービスで、サプリメントの組み合わせによるビタミン・ミネラル摂取量を集計し、NIHの基準値や上限と比較します。NIH掲載の相互作用やハーブの安全情報、FDAの回収・有害事象も出典付きで示しますが、医療助言ではありません。
主な機能
- 01製品名・バーコード・NIH IDでラベル検索
- 02ビタミン・ミネラルの1日摂取量を集計
- 03NIHの基準値と上限に照合
- 04薬物相互作用とハーブの安全情報を確認
- 05FDAの回収と有害事象を検索
- 06出典付きの平易な要約を提示
活用シーン
- 01複数サプリメントの栄養素合計を確認
- 02服用中の薬とサプリメントの相互作用を確認
- 03製品追加による摂取量の変化を評価
- 04バーコードからラベルとFDA情報を検索
MCP 対応
MCPクライアントがサプリメント分析や製品検索を呼び出せるリモートMCPサーバーを提供します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://agents.trackmysupplement.com/mcpclaude mcp add --transport http chariot-ventures-dietary-supplement-analysis https://agents.trackmysupplement.com/mcp{"mcpServers":{"chariot-ventures-dietary-supplement-analysis":{"type":"http","url":"https://agents.trackmysupplement.com/mcp"}}}Cursor で開く{"servers":{"chariot-ventures-dietary-supplement-analysis":{"type":"http","url":"https://agents.trackmysupplement.com/mcp"}}}VS Code で開く{"mcpServers":{"chariot-ventures-dietary-supplement-analysis":{"type":"http","url":"https://agents.trackmysupplement.com/mcp"}}}{"mcpServers":{"chariot-ventures-dietary-supplement-analysis":{"serverUrl":"https://agents.trackmysupplement.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
7| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| age | number | いいえ | 年齢(年)。乳児は小数で指定できます:0.25 = 3 か月。0-5 か月と 6-11 か月の値は 1 歳未満に適用されます。 |
| sex | enum | いいえ | male | female |
| diet | enum | いいえ | "typical" は、この年齢と性別における米国の食べ物・飲み物からの平均摂取量(NHANES)を加算し、総摂取量を推定します。with_typical_diet を参照してくださいnone | typical |
| lang | enum | いいえ | "es" を指定すると agent_summary がスペイン語で出力されます(英語のテキストは agent_summary_en に保持されます)。他のフィールドは英語のままですen | es |
| foods | array | いいえ | 任意、最大 30 件:その人が 1 日に食べる食品。例:[{"query":"spinach cooked","amount":1,"unit":"cup"},{"query":"whole milk","grams":488}]。サプリメントの合計に加算され、nutrient_totals[].with_foods に含まれます(USDA SR28、オフライン)。diet "typical" の代わりに使用します。 |
| detail | enum | いいえ | "summary" は回答に必要な内容(agent_summary、フラグが付いた栄養素、suggestions、resolutions、候補の判定)のみを返します。20~40 KB ではなく約 1~3 KB ですsummary | full |
| products | array | はい | 製品は 1~15 件。各項目は次のいずれかです:{"dsld_id"}、{"query"}(サーバー側で解決される製品名)、{"upc"}(バーコード)、またはカスタム製品 {"name","ingredients"}。いずれにも "servings_per_day" を追加できます。 |
| candidates | array | いいえ | 任意、最大 5 件:ユーザーが追加を検討している製品。各製品は組み合わせへの追加として candidate_results[] で評価され、nutrient_totals には含まれません。 |
| conditions | array | いいえ | NIH による用量の解釈に影響する状態:smoker(現在または過去の喫煙、またはアスベスト曝露:ベータカロテン)、kidney_disease(カリウム、マグネシウム、リン)、hemochromatosis(鉄、ビタミン C)、lab_test_soon(ビオチンが臨床検査に干渉)、cancer_treatment(抗酸化物質の用量) |
| life_stage | enum | いいえ | 妊娠または授乳(母乳育児)の基準値。sex が "female" で、年齢が 14~50 歳である必要がありますpregnancy | lactation |
| medications | array | いいえ | 本人が服用している薬剤。一般名または商品名("warfarin"、"Synthroid"、"metformin 500 mg")。NIH ODS ファクトシートに記載された薬物相互作用と照合しますが、網羅的ではありません。記録されることはありません。 |
詳細
栄養補助食品のラベルと栄養素摂取量の分析
「今のサプリメントの摂り方で問題ない?」と聞かれたとき、AI アシスタントはこのサービスを呼び出します。年齢と性別に加えて、製品名、バーコード、NIH ラベル ID など、一般的な呼び方で製品を指定してください。服用中の薬、持病、食事内容も任意で指定できます。各ラベルを NIH Dietary Supplement Label Database で検索し、すべての製品に含まれるビタミンとミネラルの1日分の合計を算出して、NIH の基準摂取量および上限値と比較します。また、NIH のファクトシートに記載された薬物相互作用、NIH が安全性に関する注意を示しているハーブ、FDA のリコールと有害事象報告も提示します。回答はすべて、アシスタントが伝えられる平易な要約(英語またはスペイン語)から始まり、各数値の出典は製品ラベルまたは NIH の情報源までたどれます。
このサービスは、Pocket Network Beta TestNet 上で有料サービス dietary-supplement-analysis として、また無料トライアル付きのリモート MCP サーバーとして稼働します。
| ウェブサイト | agents.trackmysupplement.com:主要なすべてのエージェントクライアント向けの接続ボタン、ライブデモ、料金、ステータスを掲載しています。エージェント向けには、llms.txt、agents.md、status.json を提供しています |
| お試しください | 審査員向け:1分で試す |
| Pocket Network | Beta TestNet 上のサービス ID は dietary-supplement-analysis、リレーエンドポイントは https://pokt-beta.trackmysupplement.com です。Pocket のポータル受け入れルール9項目すべてに合格しており、有料リレーはオンチェーンで決済されています(記録) |
| MCP サーバー | https://agents.trackmysupplement.com/mcp。 公式 MCP Registry および Smithery に掲載されています。mcp/README.md をご覧ください |
| 精度 | 手作業で検証した62件のケースすべてに合格しています(EVAL.md) |
| 稼働中のバージョン | /v1/version。すべてのリリースは CHANGELOG.md に記載されています |
| サプライヤーまたはゲートウェイの運用 | OPERATORS.md:各リリース向けにマルチアーキテクチャ対応イメージを公開しています |
データソースはすべて公開されています。
- ラベル: NIH Dietary Supplement Label Database(DSLD)。API v9 と、NIH の全データダウンロードの週次ミラー(214,782件のラベル)。
- 基準値: Food and Nutrition Board の DRI。 NIH Office of Dietary Supplements のファクトシートで公開されている値を使用します。
- 相互作用とハーブ: NIH ODS および NCCIH のファクトシート。薬の名称は NIH RxNorm を使用して正規化します。
- リコールと有害事象: openFDA。
- 食品: USDA SR28(FoodData Central「SR Legacy」)。米国の一般的な摂取量には What We Eat in America、NHANES 2017–March 2020 を使用します。
このサービスが提供しないもの: 医療上の助言や診断です。ラベルに記載された内容を報告し、合計値を公表されている基準値と比較して、NIH が公開する相互作用や安全性に関する記述を伝えます。相互作用の一覧は網羅的ではありません。また、注意情報がない場合も、安全が確認されたという意味ではなく、報告対象が見つからなかったことを示します。
審査員向け:1分で試す
| サービス ID | dietary-supplement-analysis(Pocket Network Beta TestNet、rpc_type: REST、リレーあたり500コンピュートユニット) |
| リレーエンドポイント(ステーク済みサプライヤー) | https://pokt-beta.trackmysupplement.com。署名付きの Pocket リレーのみ受け付けます。 |
| デモエンドポイント(直接接続、無料トライアル) | https://agents.trackmysupplement.com。リレーレイヤーを介さない同じバックエンドなので、curl を使用できます。クライアントあたり、1分間に最大30件、1日あたり最大100回の呼び出しが可能です(詳細)。上限を超えると、"code":"RATE_LIMITED" と Retry-After ヘッダーを含む 429 を返します。 |
有料のエージェントは Pocket Network 経由でサービスを呼び出します。Beta で dietary-supplement-analysis 用にステークされたアプリケーションを使い、Pocket Network 経由に示すように pocket-ap でリレーします。以下のパスとリクエスト本文はどちらの方法でも同じです。デモエンドポイントではリレー層を省略するため、ステークせずに curl を使えます。 |
各例は、ユーザーが日々の習慣を自然な言葉で説明した後に、アシスタントが呼び出す方法を想定した1回の呼び出しです。jq -r .agent_summary でアシスタントが伝える回答を出力します。各例の下には、実際の回答を簡潔にしたものを示しています。
1. 「74歳で、クマディンを服用しています。Centrum Silver、フィッシュオイル、イチョウを摂っています。」
curl -s https://agents.trackmysupplement.com/v1/stack/analyze -H 'Content-Type: application/json' -d '{
"age": 74, "sex": "female", "detail": "summary", "medications": ["Coumadin"],
"products": [{"query": "Centrum Silver Women 50+"}, {"query": "Nature Made Fish Oil 1200 mg"}, {"query": "Ginkgo Biloba 120 mg"}]}' | jq -r .agent_summary
イチョウ(Nutricost Ginkgo Biloba 120 mg に含有):NCCIH:イチョウは、ワルファリンなどの抗凝固薬を服用している人の出血リスクを高める可能性があります。この組み合わせに含まれるビタミン K とクマディン:ビタミン K はワルファリンの作用を打ち消します。NIH は、深刻で危険を伴う可能性がある相互作用として説明しています。この組み合わせに含まれるビタミン E とクマディン:… この組み合わせに含まれる EPA/DHA とクマディン:高用量のフィッシュオイルは凝固時間を延長し、INR を上昇させる可能性があります … interactions.findings に相互作用の所見があと1件あります。
ブランド名からワルファリンが認識され、NIH のラベルデータベースで3つの製品が名称で見つかり、すべての警告に NIH または NCCIH のファクトシートが引用されています。
2. 「妊娠中です。妊婦用サプリメント、肌のためのビタミン A 25,000 IU、ストレス対策のアシュワガンダを摂っています。」
curl -s https://agents.trackmysupplement.com/v1/stack/analyze -H 'Content-Type: application/json' -d '{
"age": 29, "sex": "female", "life_stage": "pregnancy", "detail": "summary",
"products": [{"query": "Nature Made Prenatal Multi + DHA"}, {"query": "vitamin A 25000 IU"}, {"query": "ashwagandha root extract"}]}' | jq -r .agent_summary
ビタミン A:1日あたり 7500 mcg、UL は 3000 mcg(250%)です … UL は肝障害を防ぐための基準であり、妊娠中に摂取した場合は先天異常も防ぎます(既成ビタミン A のみ)。… ビタミン A 25000 IU を除くと、ビタミン A は 0 mcg になります。アシュワガンダ:… NCCIH:妊娠中および授乳中はアシュワガンダを避けてください。
3. 「62歳です。Centrum Silver、フィッシュオイル、マグネシウム、亜鉛を摂っています。ビタミン D 5000 を追加したほうがよいですか?」 "diet": "typical" の場合、食事からの摂取量も計算に含まれます。
curl -s https://agents.trackmysupplement.com/v1/stack/analyze -H 'Content-Type: application/json' -d '{
"age": 62, "sex": "female", "diet": "typical",
"products": [{"query": "Centrum Silver Women 50+"}, {"query": "Nature Made Ultra Fish Oil 1400"},
{"query": "KAL Magnesium Glycinate 400"}, {"query": "Thompson Zinc 50 mg", "servings_per_day": 1}],
"candidates": [{"query": "vitamin d3 5000 iu"}]}' | jq -r .agent_summary
亜鉛:1日あたり 65 mg、UL は 40 mg(163%)で、その大部分は Thompson Zinc 50 mg に由来します。UL は銅の状態の低下を防ぐための基準です … マグネシウム:1日あたり 500 mg、UL は 350 mg(143%)です … Thompson Zinc 50 mg を除くと、亜鉛は 15 mg(UL の 37.5%)になります。… Vitamin D3 5000 IU を追加すると、ビタミン D は上限を超えます(UL の 150%)。
回答では問題を解決するための変更が1つ提示され、what-if の回答ではユーザーが実際に尋ねた質問に答えます。
4. スペイン語で:「Centrum Silver と Caltrate を飲んでいます。ワルファリンとレボチロキシンを服用しています。」
curl -s https://agents.trackmysupplement.com/v1/stack/analyze -H 'Content-Type: application/json' -d '{
"age": 68, "sex": "female", "lang": "es", "detail": "summary", "medications": ["warfarina", "levotiroxina"],
"products": [{"query": "Centrum Silver Women 50+"}, {"query": "Caltrate 600+D3"}]}' | jq -r .agent_summary
この組み合わせに含まれるビタミン K とワルファリン:ビタミン K はワルファリンの作用を打ち消します … この組み合わせに含まれるカルシウムとレボチロキシン:… 炭酸カルシウムを服用してから4時間以内にレボチロキシンを服用しないでください。この組み合わせに含まれる鉄とレボチロキシン:…
**5. ボトルをスキャンする:**バーコードからラベルが見つかり、同じバーコードで FDA のリコール情報と有害事象報告も見つかります。
curl -s https://agents.trackmysupplement.com/v1/products/lookup -H 'Content-Type: application/json' -d '{"upc":"031604026974"}' | jq -r '.product.brand + " " + .product.name'
curl -s https://agents.trackmysupplement.com/v1/products/fda -H 'Content-Type: application/json' -d '{"upc":"031604026974"}' | jq -r .agent_summary
リコール対象の製品を確認するには、{"query":"Nature Made Vitamin D3 1000 IU"} を試してください。FDA では一致するリコールが4件掲載されています。
**6. エージェント間連携:**利用の多くは、人が入力することなく、より大きなタスクを実行する他のエージェントからのものになると想定されています。たとえば、薬局エージェントが新しい処方箋と登録済みのサプリメントを照合する、ショッピングエージェントが購入手続きの前にカートを確認する、ビジョンエージェントが写真から読み取ったラベルを渡す、コーチングエージェントが週次チェックを行う、服薬レビューエージェントがこのサービスと医薬品間相互作用サービスを組み合わせる、といった使い方です。examples/ には、5つすべてを1つのスクリプト(bash examples/agent-flows.sh)としてまとめた例と、GET /v1/tools からツールを読み込み、モデルに呼び出させる50行のアシスタント(agent_loop.py)があります。
その他の呼び出し:POST /v1/nutrients/reference(1つの栄養素の RDA と UL をオフラインで取得)、POST /v1/products/search(ラベルを検索)、POST /v1/interactions/check(サプリメントの組み合わせを指定せずに薬剤を確認)、およびエージェントフレームワーク向けの GET /v1/tools、GET /v1/guide、GET /openapi.json があります。すべて エンドポイント に記載されています。
Pocket Network 経由(有料リレー)
Beta TestNet で dietary-supplement-analysis 用にステークされたアプリケーションが必要です。Beta faucet からアドレスに資金を追加し、少なくとも 1,000 POKT をステークしてアプリケーションとして登録してください。次に pocket-ap をインストールし、このリポジトリのクライアント設定を使ってリレーします。
export POCKET_APP_PRIVATE_KEY=<your app key, 64 hex> # pocketd keys export <name> --unarmored-hex --unsafe
pocket-ap call --config deploy/beta-stake/pocket-ap.yaml \
--service dietary-supplement-analysis --rpc-type rest \
-X POST --path /v1/stack/analyze \
-d '{"age":34,"sex":"female","products":[{"name":"Custom magnesium","ingredients":[{"name":"magnesium","amount":250,"unit":"mg"}]}]}' -v
オンチェーン記録(Beta TestNet)
| ステップ | Tx ハッシュ | ブロック |
|---|---|---|
| card/card.json のカードを使ってサービスを登録 | BC01B11F…7DD5 | 722359 |
| サプライヤーをステーク、60,000 POKT | 9CBCBAAF…51FA | 722747 |
| テストアプリケーションをステーク、1,100 POKT | 6734D5F4…05EE | 722744 |
| 最初の有料リレーのクレーム(ブロック 722813 で精算) | F3D81B3F…88EB | 722793 |
v0.12.6 で審査員の例 A をリレーしたクレーム。2026-10-11 に所有者の Mac から pocket-ap で送信(精算済み。アプリケーションのステークから 500 compute units を引き落とし) | A9A5B384…3DA5 | 724433 |
詳細とサーバーのセットアップについては、deploy/PHASE4_READINESS.md を参照してください。
Pocket Network にとっての意義
- 何百万人もの人が抱える疑問です。 米国の成人の 60.2% が過去 30 日間に栄養補助食品を摂取し、38.7% が 2 種類以上を摂取しており、60 歳以上の成人の 75.9% が少なくとも 1 種類を摂取しています(CDC NCHS、2021–2023)。健康、薬局、食料品、フィットネス関連のアシスタントは、日々の習慣に問題がないかを尋ねられます。適切に回答するには、各ラベルに記載された正確な量と、その人に適用される NIH の上限値が必要ですが、モデルだけでは把握できません。
- 繰り返し呼び出され、その多くはほかのエージェントから呼び出されます。 呼び出し 1 回が 1 リレー(500 compute units)です。薬局、買い物、コーチング、服薬レビューのエージェントは、新しい処方箋、カート、写真、週次チェックのたびに呼び出します。人が介在する必要はありません(例)。
- Pocket 独自のヘルスサービスを補完します。 Pocket のカタログには医薬品関連サービス(
fda、med-safety、clinical-trials)がありますが、サプリメントを扱うサービスはありません。これらの利用者の多くはサプリメントも摂取しています。処方箋についてこれらのサービスをすでに呼び出しているエージェントは、薬箱にあるそれ以外のものについて、このサービスを呼び出せます。 - 無料トライアルから有料リレーにつながります。 MCP サーバーは公式 MCP Registry、Smithery、mcpservers.org に掲載されています。無料トライアル(接続ごとに 1 日 25 回のチェック)で利用者は試すことができ、上限に達したことを知らせるメッセージは、実際に大量利用するエージェントを Pocket のルートに誘導します。このルートには使用量の計測がありません。
- サプライヤーを増やす準備ができています。 リリースごとにマルチアーキテクチャのイメージを公開しています。OPERATORS.md に従えば、約 5 分でサプライヤーをセットアップできます。また、レスポンスで 5xx を返さないため、ゲートウェイが不正な入力をサプライヤーの障害と誤認することはありません。
- 検証済みです。 リリースごとに 62 件の手作業で検証したケースに合格しており(EVAL.md)、稼働中のサービスは、公開エンドポイントと Pocket ポータルの監査に対して 30 分間隔でテストされています。
エンドポイント
すべての入力は JSON リクエストボディから取得します。エラーを含むすべての応答は JSON オブジェクトです。
| メソッド | パス | 用途 |
|---|---|---|
| GET/HEAD | / | サービスの識別情報 |
| GET | /v1/version | {"service":"dietary-supplement-analysis","version":"0.15.1"} |
| GET | /v1/health | {"status":"ok"} |
| GET | /openapi.json | OpenAPI 3.1 仕様(openapi/openapi.json にもあります) |
| POST | /mcp | リモート MCP サーバー(Streamable HTTP、ステートレス):MCP クライアント向けの同じツール |
| GET | /v1/provenance | コードのバージョン、git コミット、各データソースのエディション |
| GET | /v1/tools | 関数呼び出し用のツール定義(name、description、JSON Schema の input_schema) |
| GET | /v1/guide | エージェント向けの使用ガイド(JSON 内の Markdown、llms.txt と同じテキスト) |
| POST | /v1/stack/analyze | 1 回の呼び出しで、1~15 製品(名称、バーコード、ID、またはカスタム)について、栄養素ごとの合計、フラグ、修正案、what-if 候補を返します |
| POST | /v1/interactions/check | 薬剤または疾患に対する NIH 掲載の栄養素相互作用(スタックは不要):{"medications":["Synthroid"],"nutrients":["calcium"]} |
| POST | /v1/products/search | DSLD の製品を検索:{"query":"vitamin d3 5000","brand":"NOW","limit":5}。ラベルのバージョンは統合されます |
| POST | /v1/products/lookup | バーコードに対応するラベル:{"upc":"031604026974"} |
| POST | /v1/products/fda | 1 製品の FDA リコールおよび有害事象報告(openFDA):{"query":"Nature Made D3 1000 IU"}、{"upc":...}、{"dsld_id":...}、または {"brand":...,"name":...} |
| POST | /v1/products/get | 正規化されたラベル:{"dsld_id":12345} または {"dsld_ids":[...]}(最大 10 件) |
| POST | /v1/nutrients/reference | 1 つの栄養素の RDA/EAR/AI/UL と UL の根拠:{"nutrient":"vitamin d","age":34,"sex":"female"}(オフライン) |
| POST | /v1/tool | MCP 形式のディスパッチャー:{"tool":"stack_analyze","arguments":{...}} |
POST /v1/stack/analyze
{
"age": 34,
"sex": "female",
"products": [
{ "query": "Centrum Silver Women 50+" },
{ "upc": "031604026974", "servings_per_day": 1 },
{ "dsld_id": 67890 },
{ "name": "Homemade magnesium", "ingredients": [ { "name": "magnesium glycinate", "amount": 200, "unit": "mg", "nutrient_basis": "elemental" } ] }
],
"medications": [ "warfarin", "Synthroid 50 mcg" ],
"conditions": [ "smoker" ],
"candidates": [ { "query": "vitamin d3 5000 iu" } ]
}
-
製品(1~15件)は、製品名(
brandを任意で指定したquery)、バーコード(upc)、DSLD ID、または成分を明示したカスタム製品を指定できます。カスタム成分にはform(たとえば"folic acid"や"d-alpha tocopherol")を指定でき、その場合はIUとDFEの換算が適用されます。 -
名前とバーコードはサーバー側で照合されます。名前は、ブランド名と製品名に含まれる単語の割合を基にDSLDの検索結果と照合します。同じ製品のラベルのバージョンは統合され、現在販売中の最新のものが使用されます。
resolutions[]には、一致した項目ごとにconfidence(high:すべての単語が1つの製品に一致、medium:すべての単語が一致したが他の製品にも一致した、または大半の単語が一致、low:60%未満)と最大3件の代替候補が記録されます。特定できない製品は報告(PRODUCT_NOT_RESOLVED)され、対象から除外されます。特定できた製品が1つもない場合に限り、呼び出しは404で失敗します。 -
**
diet: "typical"**を指定すると、年齢と性別に応じた、食品と飲料からの米国の平均的な1日の摂取量(What We Eat in America、NHANES 2017~2020年3月)が加算され、比較結果がwith_typical_dietにも表示されます。食品がULに算入されるのは、そのULが食品を対象としている場合のみです。総摂取量のULではすべての食品、葉酸では食品由来の葉酸、ビタミンAではレチノール、ビタミンEでは添加ビタミンEが対象となり、マグネシウムは対象外です。2歳未満、妊娠中、授乳中には適用されません。 -
medications(最大30件。ユーザーが入力した一般名またはブランド名)は、46の薬剤クラスと照合され、NIH Office of Dietary Supplementsのファクトシートに記載された55件の薬物相互作用と照合されます(data/interactions.json)。リストにない名前は、サービスがアクセスできる場合、NIH RxNorm(RxNav)を使って有効成分名に正規化されます。一致判定は単語全体を対象とし、あいまい一致は行いません。interactions.findings[]には、各相互作用の種類(supplement_changes_drug、drug_lowers_nutrient、drug_raises_nutrient、additive_risk、two_way)、NIHが示す場合は服用タイミングに関する助言、ファクトシート、および対象製品を示すin_stackが含まれます。スタック内の相互作用は先に表示され、agent_summaryの冒頭にも記載されます。このリストは網羅的ではありません(INTERACTIONS_PARTIAL)。薬剤名がログに記録されることはありません。 -
植物成分。 アシュワガンダ、カバ、セントジョーンズワート、イチョウ、緑茶エキス、ウコン/クルクミン、ブラックコホシュ、ガルシニア・カンボジア、紅麹、ゴールデンシール、ベルベリン、ヨヒンベ、エフェドラ、バレリアン、エキナセア、ニンニク、朝鮮人参、ノコギリヤシ、マリアアザミ、甘草根、ビターオレンジ、フェヌグリーク、シナモン、クレアチンなど、NIHが安全性に関する注意喚起を示しているハーブその他の非栄養成分(現在24種)は、NCCIHまたはODSの記述、妊娠に関する記述、およびNIHが摂取量を示している場合はその用量チェック(クレアチンは1日5 g超および25 g、EGCGは1日843 mg、バレリアンは1日600 mg超)とともに
botanicals[]に報告されます。照合はDSLDの成分グループ、または植物部位や製剤を示す語を除いた完全一致名で行われます(「Ashwagandha Root Extract」はアシュワガンダに一致します)。部分文字列による照合は行いません。「ginseng」だけの場合(アメリカ人参かシベリア人参か判別できないため)、「cassia」だけの場合(別の植物属を指す可能性があるため)、およびDGL甘草は照合されません(data/botanicals.json)。medicationsを指定すると、NIHが示す植物成分と薬剤の組み合わせ(セントジョーンズワートと避妊薬、ワルファリンまたはSSRI、イチョウと抗凝固薬、カバまたはバレリアンと鎮静薬、紅麹とスタチン、ゴールデンシールとメトホルミン、ニンニクと抗凝固薬、朝鮮人参またはシナモンと糖尿病治療薬、甘草とコルチコステロイド)が相互作用の検出結果になります。 -
conditions:smoker(現在または過去の喫煙者、またはアスベスト曝露:1日20 mgからのベータカロテン。ベータカロテンとして表示されたビタミンAも算入)、kidney_disease(カリウム、マグネシウム、リン)、hemochromatosis(鉄、ビタミンCは500 mgから)、lab_test_soon(ビオチンは1 mgから甲状腺、トロポニンなどの検査結果に影響)、cancer_treatment(高用量のビタミンCとビタミンE)。 -
foods(最大30件)には、その人が1日に食べる食品を指定します。例:{"query": "spinach cooked", "amount": 1, "unit": "cup"}、{"query": "whole milk", "grams": 488}、{"ndb_number": "11458", "grams": 180}。USDA SR28の8,789品目の食品(FoodData Centralの「SR Legacy」)とオフラインで照合されます。照合では単語全体とUSDAの標準的な分量が使用され、栄養素の合計にあるnutrient_totals[].with_foodsへサプリメントの量と合わせて加算されます。食品からのみ摂取される栄養素はfoods.totalsで確認できます。食品がULに算入されるのは、そのULが食品を対象としている場合のみです。詳細はdietを参照してください。USDAが分析していない食品中の栄養素は、ゼロと仮定せず一覧表示されます。SR28に含まれる値の桁が大きく外れているマンガンのデータ3件は除外され、その旨が報告されます。foodsとdiet: "typical"は併用せず、どちらか一方を指定してください。 -
**
timing**には、スタックに該当するNIHの服用タイミングに関する記述が記載されます。それぞれ対象製品とファクトシートが示されます。対象となるのは、カルシウムを500 mg以下に分けて摂取すること、炭酸カルシウムを食事と一緒に摂取すること、カルシウムサプリメントと鉄サプリメントを分けて摂取すること、25 mg以上の鉄を亜鉛と別に摂取すること、高用量の鉄を食事と一緒に摂取すること、ビタミンDを脂肪を含む食品と一緒に摂取すること、緑茶エキスを食事と一緒に摂取すること、およびスタック内で相互作用する薬剤との服用間隔です。最初の項目はagent_summaryにも表示されます。 -
**
lang: "es"**を指定すると、agent_summaryがスペイン語で出力され、英語のテキストはagent_summary_enに保持されます。概要に表示される可能性があるNIHの文言には、すべてレビュー済みのスペイン語訳があります(data/i18n-es.json)。その他のフィールドは英語のままです。薬剤名は、スペイン語名(warfarina、levotiroxina、omeprazol)またはスペインおよびラテンアメリカのブランド名(Sintrom、Eutirox)で指定でき、アクセント記号の有無は問いません。 -
**
detail: "summary"**を指定すると、エージェントの回答に必要な情報(agent_summary、flaggedに含まれる栄養素、suggestions、resolutions、候補の判定、data_gap_codes、provenance)のみが返されます。通常は20~40 KBではなく、1~3 KBです。 -
候補製品(最大5件)は、ユーザーが検討している製品です。それぞれがスタックに追加する製品として評価され、
candidate_results[]に表示されます。合計には算入されません。 -
servings_per_dayの既定値は、ラベルに記載された1日の最大摂取量です。ラベルに記載がない場合は1です。各既定値はassumptionsに記載されます。 -
ageとsexは任意です。指定しない場合は合計量と重複のみが表示され、基準値との比較は行われません。 -
life_stage("pregnancy"または"lactation"、女性、14~50歳)を指定すると、妊娠中または授乳中の基準値に切り替わります。"pregnant": trueおよび"breastfeeding": trueも使用できます。乳児の場合は、年齢を年単位の小数で指定してください(0.25は3か月)。0~6か月および7~12か月の基準値が適用されます。 レスポンスには、次の順で含まれます:profile、summary、agent_summary、resolutions(名前またはバーコードが指定された場合)、assumptions、suggestions、candidate_results(候補が指定された場合)、botanicals(スタックにNIHシグナルを持つものが含まれる場合)、interactions(薬または疾患が指定された場合)、nutrient_totals、overlaps、unrecognized_ingredients、data_gaps、products、sources、disclaimer。 -
agent_summaryは、以下の数値から決定論的に生成される、エージェントがそのまま伝えられる2~5文の平易な文章です。 -
suggestionsには、ULを超える各栄養素について、単一製品の変更(reduce_servingsまたはremove_product)を最大3件記載します。変更後の量、その変更だけで栄養素がUL以下になるかどうか(resolves)、同時に解消される他のUL超過栄養素、および製品を削除した場合に減少する他の栄養素を示します。これは算術上の情報であり、助言ではありません。 -
candidate_resultsには、各候補のverdict(adds_above_ul、increases_above_ul、adds_near_ul、no_new_flags)、新たなフラグ、および変更前後の合計値を記載します。
各栄養素の合計には次の項目が含まれます:
| フィールド | 意味 |
|---|---|
daily_total | 製品全体の合計。栄養素の標準単位(mcg RAE、mcg DFE、mg、mcg)で表示 |
complete | ラベルの行を一部カウントできなかった場合はfalse(data_gapsを参照)。この場合、合計値は下限値です |
reference | プロファイルに対応するRDA、EAR、AI、UL。ul_scope、ul_note、ul_basis(ULが防ぐ対象。たとえば、亜鉛の場合は「銅の状態の低下」)を含みます |
amount_toward_ul | ULの適用対象となる量。葉酸では葉酸酸のみ、ビタミンAでは既成ビタミンAのみです |
percent_of_ul、percent_of_rda、percent_of_ai | 各基準値に対する割合。ULの対象部分が一部しかわからず、かつULをすでに超えていない場合、percent_of_ulは表示されません |
coverage | これらのサプリメントだけで摂取できるRDA(またはAI)の割合です。参考情報です。通常、食事から多くを摂取するため、充足率が低くても不足を意味しません |
flags | above_ul(UL超過)またはnear_ul(ULの90~100%)。フラグがない場合は、報告事項がないことを示すものであり、スタックに対する評価ではありません |
severity | high(ULの2倍以上)、moderate(UL超過)、low(ULに近い)、またはnull |
contributions | 各製品のラベル記載量、換算後の量、1日あたりの摂取回数、1日あたりの量 |
with_typical_diet | "diet": "typical"の場合、米国の平均的な食品摂取量を加えたfood、estimated_total、amount_toward_ul、percent_of_ul、coverage、flags |
エラー
{ "error": { "code": "INVALID_INPUT", "message": "products: ...", "retryable": false, "field": "products" } }
| コード | ステータス | 発生する場合 |
|---|---|---|
INVALID_INPUT | 400 | 入力形式が不正、または許容範囲外 |
NOT_FOUND | 404 | 不明なDSLD ID、栄養素、または経路 |
UNSUPPORTED | 422 | 14~50歳以外の妊娠または授乳 |
UPSTREAM_UNAVAILABLE | 424 | DSLDに接続できず、キャッシュにもデータがない場合(retryable: true) |
INTERNAL_ERROR | 422 | 予期しないエラー。Pocketゲートウェイは5xxをサプライヤーの障害として扱うため、4xxとして返されます |
データ不足コード
| コード | 意味 |
|---|---|
BLEND_UNQUANTIFIED | 独自ブレンドに各成分が記載されていますが、それぞれの量は示されていません。ブレンドの重量は各成分に配分されません |
QUANTITY_MISSING | 認識された栄養素の項目に量が記載されていません |
UNIT_NOT_CONVERTIBLE | 単位を一意に換算できません。たとえば、形態が不明なビタミン A の IU などです |
COMPOUND_WEIGHT | その量は元素としてのミネラル量ではなく、化合物の重量である可能性があります |
AMBIGUOUS_BASIS | 化合物名を含むカスタム成分に nutrient_basis が指定されていません |
UL_PARTIAL | UL は特定の形態(葉酸、既成ビタミン A)のみに適用され、一部の形態が指定されていません |
PROFILE_MISSING | 年齢と性別が指定されていないため、基準値との比較はできません |
PRODUCT_NOT_RESOLVED | 製品名またはバーコードを DSLD のラベルと照合できなかったため、集計されません |
DATA_SUSPECT | NIH のラベル記録に矛盾があるようですが、量は集計されます。失敗したテストは check に示されます。duplicate_row(EPA が DHA として入力されている場合のように、同じ見出しの下に同じ成分が 2 回記載されている)、nested_exceeds_parent(項目の合計が、それらの合計として記載された量を超えている)、percent_dv_mismatch(印刷された %DV が、現在と 2016 年以前の両方の 1 日摂取基準値に基づく量と矛盾している)、implausible_amount(成人の UL の最高値の 50 倍を超えている。通常は mg と mcg の入力間違い) |
INTERACTIONS_NOT_ASSESSED | medications が指定されていないため、薬との相互作用は確認されていません。サプリメント同士の相互作用は評価されません |
INTERACTIONS_PARTIAL | 薬は確認されましたが、NIH ODS のファクトシートに記載された相互作用のみが対象です。この一覧は網羅的ではありません |
FOOD_NOT_RESOLVED | foods 内の食品が USDA SR28 の食品に一致せず、集計されません |
FOOD_PORTION_UNKNOWN | USDA に、その食品の指定単位に対応する分量がありません。記載されている分量は foods.items[].portions にあります(グラム数を指定してください) |
FDA_UNAVAILABLE | /v1/products/fda のみ:リコールまたは有害事象について openFDA に接続できませんでした。それ以外の回答は有効です |
MEDICATION_NOT_RECOGNIZED | 薬名が NIH のファクトシートの相互作用リスト内のクラスと一致しなかったため(直接一致または RxNorm 経由)、確認は行われていません |
数値の算出方法
精度は、手作業で確認した62件のケースと照合して検証しています。詳細は EVAL.md をご覧ください。
- DSLDラベルの読み取り:
- DSLDでは、ビタミンAが単にmcgまたはmgとして記載されていることがよくあります。ラベルの%DVが900 mcg RAEの1日摂取基準値と一致する場合に限り、mcg RAEとして読み取ります。
- DSLDで単位が省略されている場合(たとえば「6 NP」)、ラベルの%DVがFDAの1日摂取基準値と一致する場合に限り単位を推定します。一致しなければデータの欠落として扱います。
- 栄養素の下位にネストされた行は、その栄養素を形態別に内訳表示しています(葉酸800 mcg DFE=葉酸480 mcg)。これらはULの正確な対象部分を示すものであり、二重に計上することはありません。
- 形態別の割合(「40% as beta-carotene」など)が明記され、合計が100%になる場合は、IU換算を正確に振り分けます。100%に満たない場合、残りは形態不明として扱います。
- ガンマおよびデルタトコフェロール、トコトリエノールはビタミンEとして計上しません。
- 成分と栄養素の照合では、次の順に照合します。DSLDの
ingredientGroup、UNIIコード、完全一致する同義語、いずれか1つの栄養素だけに属する完全一致の形態名です。部分一致やあいまい一致は行わないため、「Vitamin B」が「Vitamin B12」に一致することはありません。それ以外はすべてunrecognized_ingredientsに分類されます。 - 単位換算は、結果が一意に定まる場合に限って行います。
- ビタミンD:1 mcg=40 IU。
- ビタミンE:天然型は1 IUあたり0.67 mg、合成型は1 IUあたり0.45 mgです。形態不明の場合はデータの欠落として扱います。
- ビタミンA:レチノール(1 IUあたり0.3 mcg RAE)またはサプリメント由来のベータカロテン(1 IUあたり0.3 mcg RAE)の場合に限り、IUを換算します。
- 葉酸:葉酸のmcgに1.7を掛けるとmcg DFEになります。
- %DVはラベルの表記どおりに表示し、合計には使用しません。
- ULの適用範囲は栄養素ごとに記録され、応答内で説明されます。
- マグネシウム:サプリメントおよび医薬品のみ。
- 葉酸:葉酸のみ。
- ビタミンA:前形成型のみ。
- ナイアシンおよびビタミンE:サプリメントからの摂取のみ。
- それ以外はすべて総摂取量に対するULです。これらの栄養素について、サプリメントの合計値がUL未満でも、総摂取量がUL未満であることを示すわけではありません。その旨は
assumptionsに記載されます。
- 参照データはdata/source/manual.jsonにあります。scripts/build-nutrients.tsは、このデータと、存在する場合はSuppleTrackerの
global_compoundsエクスポートから、data/nutrients.jsonを生成します。ビルド時には、単位、情報源、年齢範囲、同義語の衝突を検証します。DRIを含む26種類のビタミンおよびミネラルに加え、認識対象ではあるものの参照値がないEPA、DHA、メラトニン、CoQ10、ベータカロテンを収録しています。
ローカルでの実行
npm ci
npm run dev # http://localhost:8080 (live DSLD)
DSLD_FIXTURES_DIR=test/fixtures/dsld npm run dev # offline, synthetic fixture labels 900001-900005
npm run check # data + OpenAPI freshness, lint, typecheck, tests
docker compose up --build # container on 127.0.0.1:8080
| 環境変数 | デフォルト | 用途 |
|---|---|---|
PORT / HOST | 8080 / 0.0.0.0 | リッスンアドレス |
DSLD_API_KEY | なし | api.data.gov キー。X-Api-Key として DSLD に送信されます(NIH の上限が 1 時間あたり 1,000 リクエストから 10,000 リクエストに引き上げられます) |
OPENFDA_API_KEY | なし | openFDA 用の同じ api.data.gov キー |
OPENFDA / RXNORM | オン | off にすると、openFDA または RxNorm への呼び出しが停止します(その場合、医薬品の照合には data/interactions.json にある名前のみが使用されます) |
FREE_TIER_HOSTS | なし | 無料トライアルの利用枠が適用されるホスト名(デモでは agents.trackmysupplement.com を使用します)。Pocket リレーなど、その他のホストからのリクエストは利用状況の計測対象になりません。FREE_TIER_PER_SESSION、FREE_TIER_PER_IP、FREE_TIER_PER_IP_MCP、FREE_TIER_GLOBAL で利用枠を変更できます |
DSLD_BASE_URL | https://api.ods.od.nih.gov/dsld/v9 | DSLD API のベース URL |
DSLD_PREWARM_IDS | なし | 起動時にキャッシュするラベル ID(カンマ区切り) |
DSLD_STORE_PATH | コンテナー内では /data/dsld.sqlite、それ以外では無効 | 永続ラベルストア(SQLite)。取得したラベルはすべて保存されます。NIH に接続できない場合は、ラベル、バーコード、検索結果をこのストアから返します。空にすると無効になります |
DSLD_WARM | 1 | ストアが有効な場合、バックグラウンドジョブが 1 秒あたり約 1 件のリクエストで人気商品を取得し、ストアに保存します(クエリは data/warm-queries.json にあります)。0 にすると無効になります |
DSLD_FIXTURES_DIR | なし | ローカルの label-<id>.json ファイルから DSLD を提供します(開発時のみ。test/fixtures/dsld/real には実際のラベルが 12 件含まれています) |
UPSTREAM_BUDGET_MS | 8000 | 424 を返すまでに、1 つのリクエストが DSLD への応答待ちに費やせる合計時間 |
LOG_LEVEL | info | ログに記録されるのはメソッド、パス、ステータス、所要時間のみで、リクエストボディは記録されません |
制限
- 1 回の analyze 呼び出しにつき最大 15 製品、5 件の候補、get 呼び出しにつき 10 件の ID、検索結果は 10 件までです。
- NIH の DSLD 全件ダウンロード(214,782 件のラベル)がミラーされています。ラベルストアに保存され、NIH が新しいデータを公開するたびに毎週更新されます。ミラー内のラベルとバーコードは NIH に問い合わせずに応答します。名前検索にはライブ API(api.data.gov キーが必要)を使用し、ミラーをフォールバックとして利用します。NIH がレート制限した場合は、10 分間、自動的にミラーへ切り替わります。ミラーのバージョンは
GET /v1/provenanceで確認できます。 - DSLD への呼び出しは同時に最大 4 件まで実行され、それぞれ 6 s の期限と、リクエストごとに 8 s の予算が設定されています。ラベルはメモリ内に 7 日間、検索結果は 24 時間キャッシュされ、ラベルは永続的なラベルストアにも保存されます(30 日後に更新)。DSLD が停止している場合は、古いコピーとラベルストアで応答します。ストアからの検索結果では
"search_source": "local"と表示されます。ライブの DSLD と比較した場合、コールド状態で 15 製品を分析すると 1.5 s、ウォーム状態では 17 ms です。 - Pocket ゲートウェイがエラーシグナルとして扱うテキスト(「timeout」、「block not found」など)は、応答内で
\uエスケープされます。デコードすると同じ文字列になります。 - 生後から 120 歳までの年齢、および妊娠・授乳(14~50 歳)に対応しています。カフェインは FDA のガイダンス(健康な成人は 1 日 400 mg、妊娠中は 200 mg 未満)と照合され、ナトリウムは 2019 Chronic Disease Risk Reduction Intake(2,300 mg)と照合されます。どちらも DRI UL ではなく、その旨は
ul_noteに記載されます。 - 公開デモエンドポイントは無料トライアルです。 クライアントごとに 1 分あたり 30 件のリクエストが許可され、さらに毎日 00:00 UTC にリセットされるクォータがあります。
- MCP 接続ごとに 25 回のツール呼び出し(接続ごとに固有の
Mcp-Session-Idが割り当てられます)、1 分あたり最大 20 回; - IP アドレスごとに REST 呼び出し 100 回;
- IP アドレスごとに MCP 呼び出し 1,000 回(claude.ai などのホスト型クライアントは同じ送信元アドレスを共有します);
- 合計 5,000 回の無料呼び出し。
検出(
GETルート、initialize、tools/list)は無料です。結果の品質が低下することはありません。REST 応答にはX-Free-Tier-Remaining、X-Free-Tier-Limit、X-Free-Tier-Resetヘッダーが含まれ、MCP の結果には同じ情報が_meta.free_tierに含まれます。クォータを超過すると、REST は429 RATE_LIMITEDを返し、MCP はクォータのリセット時刻と有料の Pocket ルートへの切り替え方法を示す、読みやすいツール結果を返します。 - カウンターはソルト付きハッシュで、2 日間保持されます。
- Pocket Network 経由のリレーは課金対象になりません。
- MCP 接続ごとに 25 回のツール呼び出し(接続ごとに固有の
免責事項、利用規約、ライセンス
情報提供のみを目的とするもので、医療上の助言ではありません。 本サービスは、サプリメントのラベルに記載された内容と、その合計値を NIH および FDA が公表する基準値、相互作用、安全性に関する記述と比較した結果を報告します。診断や治療の推奨ではなく、医師や薬剤師に代わるものでもありません。また、あらゆる疾患の診断、治療、治癒、予防を目的とするものではありません。ラベルや公開データには誤りや古い情報が含まれる場合があり、相互作用リストは NIH が挙げているもののみを対象とするため、警告がないからといって安全が保証されるわけではありません。サプリメントや薬の使用を開始、中止、変更する前に、医療専門家に相談してください。緊急時は、米国では 911 または Poison Control(1-800-222-1222)に電話してください。すべての応答には、この内容が disclaimer フィールドと agent_summary の最後の文に含まれており、結果を中継するアプリやエージェントはこれを伝えることに同意するものとします。
ホスト型サービスの利用には、利用規約が適用されます。NIH、FDA、USDA は本サービスを推奨していません。また、ブランド名は製品の識別のみに使用しています。
コードは MIT License に基づいています。DSLD、ODS、NCCIH、RxNorm、openFDA、USDA から提供されるデータは、米国政府の著作物であり、パブリックドメインに属します。data/ にある編集済みの相互作用ファイルおよびハーブファイルには、出典である NIH の情報源が記載されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。