Skip to content

DailyMed MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.16.4 · published by io.usefulapi

Search DailyMed drug labels, SPLs, NDCs and packaging.

Changes · 4

12 tools: 4 change things and 8 only read.

Scanned Oct 22, 2026

4 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http dailymed https://dailymed.usefulapi.io/mcp

Findings

Matches of fixed checks, with the text they matched.

4 warn
  • The server marks "dailymed_label_history" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The name "dailymed_label_history" says "label": a word for a change.

    What this check looks for
  • The server marks "dailymed_label_ndcs" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The name "dailymed_label_ndcs" says "label": a word for a change.

    What this check looks for
  • The server marks "dailymed_label_media" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The name "dailymed_label_media" says "label": a word for a change.

    What this check looks for
  • The server marks "dailymed_label_packaging" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The name "dailymed_label_packaging" says "label": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

12 tools

Changes things 4Claude Code: ask
  • dailymed_label_historyList every published version (spl_version + published_date) of a label for a SETID — useful to see how a drug's labeling has changed over time.1 finding

    Why it is in this group

    • The name "dailymed_label_history" says "label": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "dailymed_label_history" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The name "dailymed_label_history" says "label": a word for a change.

      What this check looks for
    Description, as the server wrote it
    List every published version (spl_version + published_date) of a label for a SETID — useful to see how a drug's labeling has changed over time. DailyMed v2: GET /spls/{setid}/history.

    Annotations the server declares

    • title: Get label version history
    • readOnlyHint: true
  • dailymed_label_mediaList media assets (product/packaging images, with mime_type and URL) for a label's current version, for a SETID.1 finding

    Why it is in this group

    • The name "dailymed_label_media" says "label": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "dailymed_label_media" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The name "dailymed_label_media" says "label": a word for a change.

      What this check looks for
    Description, as the server wrote it
    List media assets (product/packaging images, with mime_type and URL) for a label's current version, for a SETID. DailyMed v2: GET /spls/{setid}/media.

    Annotations the server declares

    • title: Get label media (images)
    • readOnlyHint: true
  • dailymed_label_ndcsList the National Drug Codes (package-level NDCs) associated with a label's current version, for a SETID.1 finding

    Why it is in this group

    • The name "dailymed_label_ndcs" says "label": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "dailymed_label_ndcs" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The name "dailymed_label_ndcs" says "label": a word for a change.

      What this check looks for
    Description, as the server wrote it
    List the National Drug Codes (package-level NDCs) associated with a label's current version, for a SETID. DailyMed v2: GET /spls/{setid}/ndcs.

    Annotations the server declares

    • title: Get NDC codes for a label
    • readOnlyHint: true
  • dailymed_label_packagingGet packaging descriptions plus product names and active ingredients (name + strength) for each product in a label, by SETID.1 finding

    Why it is in this group

    • The name "dailymed_label_packaging" says "label": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "dailymed_label_packaging" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The name "dailymed_label_packaging" says "label": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Get packaging descriptions plus product names and active ingredients (name + strength) for each product in a label, by SETID. DailyMed v2: GET /spls/{setid}/packaging.

    Annotations the server declares

    • title: Get label packaging & ingredients
    • readOnlyHint: true
Only reads 8Claude Code: allow
  • dailymed_get_labelFetch the complete Structured Product Label for a SETID as HL7 v3 SPL XML — the full FDA-approved labeling: indications, dosage, warnings, boxed warning, adverse reactions, active/…No findings

    Why it is in this group

    • The name "dailymed_get_label" says "get": a word for reading.
    Description, as the server wrote it
    Fetch the complete Structured Product Label for a SETID as HL7 v3 SPL XML — the full FDA-approved labeling: indications, dosage, warnings, boxed warning, adverse reactions, active/inactive ingredients, etc. NOTE: DailyMed serves the full document only as XML (there is no JSON form), so this returns raw XML text. Use dailymed_search_labels first to find the setid. DailyMed v2: GET /spls/{setid}.xml.

    Annotations the server declares

    • title: Get full SPL label document (XML)
    • readOnlyHint: true
  • dailymed_list_application_numbersList FDA application numbers (NDA/ANDA/BLA) with their marketing category code, across all labels (paginated).No findings

    Why it is in this group

    • The name "dailymed_list_application_numbers" says "list": a word for reading.
    Description, as the server wrote it
    List FDA application numbers (NDA/ANDA/BLA) with their marketing category code, across all labels (paginated). DailyMed v2: GET /applicationnumbers.

    Annotations the server declares

    • title: List FDA application numbers
    • readOnlyHint: true
  • dailymed_list_drug_classesList pharmacologic drug classes linked to labels (code, coding system, type — e.g.No findings

    Why it is in this group

    • The name "dailymed_list_drug_classes" says "list": a word for reading.
    Description, as the server wrote it
    List pharmacologic drug classes linked to labels (code, coding system, type — e.g. EPC Established Pharmacologic Class — and name). DailyMed v2: GET /drugclasses.

    Annotations the server declares

    • title: List drug classes
    • readOnlyHint: true
  • dailymed_list_drug_namesList drug names in DailyMed (name + name_type B=brand/G=generic).No findings

    Why it is in this group

    • The name "dailymed_list_drug_names" says "list": a word for reading.
    Description, as the server wrote it
    List drug names in DailyMed (name + name_type B=brand/G=generic). Pass drug_name to filter by a substring — a fast way to discover exact spellings before searching labels. DailyMed v2: GET /drugnames.

    Annotations the server declares

    • title: List / search drug names
    • readOnlyHint: true
  • dailymed_list_ndcsList National Drug Codes across all labels in DailyMed (paginated; the full set is large).No findings

    Why it is in this group

    • The name "dailymed_list_ndcs" says "list": a word for reading.
    Description, as the server wrote it
    List National Drug Codes across all labels in DailyMed (paginated; the full set is large). DailyMed v2: GET /ndcs.

    Annotations the server declares

    • title: List all NDC codes
    • readOnlyHint: true
  • dailymed_list_rxcuisList product-level RxNorm concept identifiers (rxcui + rxstring + rxtty term type) known to DailyMed (paginated).No findings

    Why it is in this group

    • The name "dailymed_list_rxcuis" says "list": a word for reading.
    Description, as the server wrote it
    List product-level RxNorm concept identifiers (rxcui + rxstring + rxtty term type) known to DailyMed (paginated). DailyMed v2: GET /rxcuis.

    Annotations the server declares

    • title: List product-level RxCUIs
    • readOnlyHint: true
  • dailymed_list_uniisList FDA UNII codes and their active-moiety names (paginated).No findings

    Why it is in this group

    • The name "dailymed_list_uniis" says "list": a word for reading.
    Description, as the server wrote it
    List FDA UNII codes and their active-moiety names (paginated). Use a unii_code to filter labels in dailymed_search_labels. DailyMed v2: GET /uniis.

    Annotations the server declares

    • title: List UNII active moieties
    • readOnlyHint: true
  • dailymed_search_labelsSearch Structured Product Labels (SPLs) — one label per marketed drug product.No findings

    Why it is in this group

    • The name "dailymed_search_labels" says "search": a word for reading.
    Description, as the server wrote it
    Search Structured Product Labels (SPLs) — one label per marketed drug product. Filter by drug name, NDC, RxCUI, UNII, application (NDA/ANDA) number, marketing category, or publish date. Returns setid, title, spl_version and published_date for each match (use the setid with dailymed_get_label and the label_* tools). DailyMed v2: GET /spls.

    Annotations the server declares

    • title: Search FDA drug labels (SPLs)
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or untrusted-input or outbound.

Reads private data0
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write0
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Install

Pinned to version 1.16.4. Values in angle brackets are yours to fill in.

claude mcp add --transport http dailymed https://dailymed.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__dailymed__dailymed_search_labels",
      "mcp__dailymed__dailymed_get_label",
      "mcp__dailymed__dailymed_list_drug_names",
      "mcp__dailymed__dailymed_list_ndcs",
      "mcp__dailymed__dailymed_list_rxcuis",
      "mcp__dailymed__dailymed_list_uniis",
      "mcp__dailymed__dailymed_list_drug_classes",
      "mcp__dailymed__dailymed_list_application_numbers"
    ],
    "ask": [
      "mcp__dailymed__dailymed_label_history",
      "mcp__dailymed__dailymed_label_ndcs",
      "mcp__dailymed__dailymed_label_media",
      "mcp__dailymed__dailymed_label_packaging"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as dailymed. Review it before you use it.