Skip to content

Drug

Use drug commands for medication lookup, interaction review, target-oriented search, and U.S./EU/WHO regulatory context.

Search drugs

Text query:

biomcp search drug -q "kinase inhibitor" --limit 5
biomcp search drug Keytruda --limit 5

Regional or comparison search:

biomcp search drug Keytruda --region eu --limit 5
biomcp search drug "influenza vaccine" --region ema --limit 5
biomcp search drug trastuzumab --region who --limit 5
biomcp search drug artesunate --region who --product-type api --limit 5
biomcp search drug BCG --region who --product-type vaccine --limit 5
biomcp search drug Keytruda --region all --limit 5

Target-oriented search:

biomcp search drug --target BRAF --limit 5

Indication-oriented search:

biomcp search drug --indication melanoma --limit 5
biomcp search drug --indication malaria --region who --limit 5

search drug --interactions <drug> is currently unavailable because the public data sources BioMCP uses do not expose partner-indexed interaction rows on the search surface. Use biomcp drug interactions <name> or biomcp get drug <name> interactions for the DDInter-backed interaction workflow instead.

Omitting --region on a plain name/alias search checks U.S., EU, and WHO data. If you omit --region while using structured filters such as --target or --indication, BioMCP stays on the U.S. MyChem path. Explicit --region who filters structured U.S. hits through WHO Prequalification for finished-pharma and API lookups. --product-type <finished_pharma|api|vaccine> is WHO-only and requires explicit --region who. WHO vaccine search is plain name/brand only, so structured WHO filters reject --product-type vaccine, and default WHO search still excludes vaccines unless you request that product type explicitly. Explicit --region eu or --region all with structured filters still errors. ema is accepted as an input alias for the canonical eu region value. When MyChem cannot resolve a vaccine brand name, omitted --region on a plain name search, explicit --region eu|all, and explicit WHO vaccine name/brand search with --product-type vaccine can also use the local CDC CVX/MVX bundle to expand vaccine aliases. That bridge does not change WHO finished-pharma/API matching, does not create a WHO vaccine get drug detail surface, and does not run for pure --region us searches.

EMA name search keeps the requested name as one boundary-delimited phrase; it does not split that phrase or arbitrary chemical synonyms into generic words. Only exact generic names and verified OpenFDA brand names from a MyChem hit that itself exactly identifies the request become EMA aliases. Each EU row reports match_kind, matched_term, and source, so JSON callers can tell whether the row matched the query, a typed provider field, or a bounded CVX description. Markdown combines the same facts in its Match column.

WHO vaccine support in this release is search-only. Use search drug <name> --region who --product-type vaccine for vaccine rows; get drug <name> regulatory --region who|all remains finished-pharma/API only.

Get a drug record

biomcp get drug pembrolizumab

Default output provides concise identity and mechanism context. Approval-bearing JSON includes additive approval_date_raw, approval_date_display, and approval_summary fields, while markdown renders the human-friendly display date in the base card. Default drug output and the targets section keep generic targets from ChEMBL/Open Targets and may add a separate Variant Targets (CIViC): ... line when CIViC surfaces a variant-specific molecular profile such as EGFRvIII.

Request drug sections

Supported sections: label, regulatory, safety, shortage, targets, indications, interactions, civic, approvals, cell_lines, all.

FDA label section, including boxed warnings when OpenFDA provides them:

biomcp get drug vemurafenib label

Long warning sections are truncated in the card and link to the full DailyMed label.

Shortage section:

biomcp get drug carboplatin shortage

Regional regulatory and safety sections:

biomcp get drug trastuzumab regulatory --region who
biomcp get drug Keytruda regulatory --region eu
biomcp get drug Dupixent regulatory --region ema
biomcp get drug trastuzumab regulatory --region all
biomcp get drug Keytruda regulatory --region all
biomcp get drug Ozempic safety --region eu
biomcp get drug Ozempic shortage --region eu

If you omit --region on get drug <name> regulatory, BioMCP checks U.S. and EU regulatory data. Other no-flag get drug shapes keep the default U.S. path unless you pass --region explicitly.

Targets and indications sections:

biomcp get drug pembrolizumab targets
biomcp get drug pembrolizumab indications

get drug <name> targets is a mixed-source workflow:

  • Generic targets come from ChEMBL and Open Targets.
  • Variant-specific target annotations may be added from CIViC.
  • Full CIViC evidence tables remain opt-in via get drug <name> civic.

Interactions (DDInter-backed structured report with additive label text when available):

biomcp get drug warfarin interactions

This section renders up to 25 DDInter-backed partner rows, source-provided severity levels, total/returned counts, and fresh/stale state from the current local bundle. When more rows exist it points to drug interactions for paging. When the bundle has no matching rows, BioMCP says that truthfully and does not claim the drug has no clinical interactions.

CIViC evidence and Drugs@FDA approvals:

biomcp get drug vemurafenib civic
biomcp get drug dabrafenib approvals

approvals remains a legacy U.S.-only section. Use regulatory for the region-aware regulatory view.

PharmacoDB cell lines:

biomcp get drug venetoclax cell_lines

The section counts the experiments PharmacoDB published for the compound in each dataset. Venetoclax has 3608 across CTRPv2, GDSC1, GDSC2, NCI60, and PRISM. PharmacoDB publishes no ChEMBL or DrugBank key on a compound, so the join goes by name and BioMCP keeps the answer only when the name PharmacoDB returns is the name asked for. all leaves this section out, as it does approvals, because the rows behind it are large.

EMA local data setup

EU regional commands read EMA local data from BIOMCP_EMA_DIR first, then the platform data directory (~/.local/share/biomcp/ema on typical Linux systems). On first use, BioMCP auto-downloads the six EMA human-medicines JSON feeds into that root and refreshes stale files after 72 hours. Use biomcp ema sync to force a refresh at any time. --region ema is accepted anywhere BioMCP documents the canonical eu region value.

Manual preseed still works. If you need an offline or pre-populated root, place these files in the target directory:

  • medicines.json
  • post_authorisation.json
  • referrals.json
  • psusas.json
  • dhpcs.json
  • shortages.json

Confirm local EMA readiness with full health output:

biomcp health

Force-refresh EMA local data manually:

biomcp ema sync

EMA row meanings:

  • configured: BIOMCP_EMA_DIR is set and complete
  • configured (stale): BIOMCP_EMA_DIR is set and complete, but one or more EMA files are older than the 72-hour refresh window
  • available (default path): the default platform data directory contains a complete EMA batch
  • available (default path, stale): the default platform data directory contains a complete EMA batch, but one or more EMA files are older than the 72-hour refresh window
  • not configured: no EMA batch is installed at the default path yet
  • error (missing: ...): the EMA directory exists but is missing one or more required files

WHO Prequalification local data setup

WHO regional searches and regulatory commands read the WHO Prequalification exports from BIOMCP_WHO_DIR first, then the platform data directory (~/.local/share/biomcp/who-pq on typical Linux systems). On first use, BioMCP auto-downloads the finished-pharmaceutical-products CSV, the active-pharmaceutical-ingredients CSV, and the vaccine export into that root and refreshes stale files after 72 hours. Use biomcp who sync to force a refresh at any time.

Manual preseed still works. If you need an offline or pre-populated root, place these files in the target directory:

  • who_pq.csv
  • who_api.csv
  • who_vaccines.csv

Confirm local WHO readiness with full health output:

biomcp health

Force-refresh WHO local data manually:

biomcp who sync

WHO row meanings:

  • configured: BIOMCP_WHO_DIR is set and complete
  • configured (stale): BIOMCP_WHO_DIR is set and complete, but at least one WHO export is older than the 72-hour refresh window
  • available (default path): the default platform data directory contains a complete WHO root with all three exports
  • available (default path, stale): the default platform data directory contains all three WHO exports, but at least one is older than the 72-hour refresh window
  • not configured: no complete WHO root is installed at the default path yet
  • error (missing: ...): the WHO directory exists but is missing one of the required files

CDC CVX/MVX local data setup

Default plain-name vaccine searches that include the EU path can use local CDC CVX/MVX data as a vaccine identity bridge when MyChem does not recognize the brand name directly. BioMCP reads BIOMCP_CVX_DIR first, then the platform data directory (~/.local/share/biomcp/cvx on typical Linux systems). On first use, BioMCP auto-downloads cvx.txt, TRADENAME.txt, and mvx.txt into that root and refreshes stale files after 30 days. Use biomcp cvx sync to force a refresh at any time.

The CDC bundle only augments omitted --region plain-name vaccine searches and explicit search drug <name> --region eu|all vaccine searches after MyChem identity resolution misses. It also augments explicit WHO vaccine name/brand searches when you pass --region who --product-type vaccine. It does not inject aliases into WHO finished-pharma/API lookups or get drug, and --region us does not create or read the CVX root.

Manual preseed still works. If you need an offline or pre-populated root, place these files in the target directory:

  • cvx.txt
  • TRADENAME.txt
  • mvx.txt

Confirm local CDC readiness with full health output:

biomcp health

Force-refresh CDC CVX/MVX local data manually:

biomcp cvx sync

CDC row meanings:

  • configured: BIOMCP_CVX_DIR is set and the full CDC bundle is present
  • configured (stale): BIOMCP_CVX_DIR is set and complete, but at least one CDC file is older than the 30-day refresh window
  • available (default path): the default platform data directory contains a complete CDC CVX/MVX bundle
  • available (default path, stale): the default platform data directory contains a complete CDC bundle, but at least one file is older than the 30-day refresh window
  • not configured: no complete CDC CVX/MVX root is installed at the default path yet
  • error (missing: ...): the CDC directory exists but is missing one or more required files

DDInter local data setup

Drug interaction commands read DDInter local data from BIOMCP_DDINTER_DIR first, then the platform data directory (~/.local/share/biomcp/ddinter on typical Linux systems). Reads never download or refresh files, including when the installed bundle is older than 72 hours. Use biomcp ddinter sync for explicit maintenance. It validates all eight downloaded files before replacing the prior complete bundle. DDInter's own terms warn that absence from the database does not prove no interaction exists, so BioMCP keeps empty interaction results scoped to the current local bundle.

Manual preseed still works. If you need an offline or pre-populated root, place these files in the target directory:

  • ddinter_downloads_code_A.csv
  • ddinter_downloads_code_B.csv
  • ddinter_downloads_code_D.csv
  • ddinter_downloads_code_H.csv
  • ddinter_downloads_code_L.csv
  • ddinter_downloads_code_P.csv
  • ddinter_downloads_code_R.csv
  • ddinter_downloads_code_V.csv

Confirm local DDInter readiness with full health output:

biomcp health

Force-refresh DDInter local data manually:

biomcp ddinter sync

DDInter row meanings:

  • configured: BIOMCP_DDINTER_DIR is set and the full DDInter bundle is present
  • configured (stale): BIOMCP_DDINTER_DIR is set and complete, but at least one DDInter file is older than the 72-hour refresh window
  • available (default path): the default platform data directory contains a complete DDInter bundle
  • available (default path, stale): the default platform data directory contains a complete DDInter bundle, but at least one file is older than the 72-hour refresh window
  • not configured: no complete DDInter root is installed at the default path yet
  • error (missing: ...): the DDInter directory exists but is missing one or more required files

Helper commands

PharmacoDB cell line pivot:

biomcp drug cell-lines venetoclax --cell-line CVCL_2119
biomcp drug cell-lines venetoclax --dataset NCI60

One of --cell-line or --dataset is required, and passing both is refused. Without a scope the command fails before any request, because an unscoped compound listing is megabytes of body. Each row names the cell line, its tissue, the experiment ID, and the published AAC, IC50, EC50, Einf, HS, and DSS1. PharmacoDB gives no units and BioMCP interprets no value; an absent metric prints as -.

Interaction pivot:

biomcp drug interactions warfarin
biomcp drug interactions warfarin --limit 25 --offset 25
biomcp --json drug interactions warfarin | jq '{pagination, bundle_freshness}'

drug interactions <name> resolves the anchor drug first, sorts and deduplicates the complete local match set, and returns 25 rows by default. --limit requests above 50 are capped at 50; --offset selects later pages. JSON and Markdown report total and returned counts, effective offset/limit, bundle freshness, and a continuation command when more rows exist. get drug <name> interactions renders the first 25 rows inside the standard drug card and points to the page-able helper when more rows exist. When the current DDInter download bundle has no matching rows, BioMCP says so without turning that source empty into a safety claim.

Trial pivot:

biomcp drug trials pembrolizumab --limit 5
biomcp drug trials daraxonrasib --limit 20
biomcp drug trials daraxonrasib --no-alias-expand --limit 20

On --source ctgov, drug trials <name> inherits the shared trial intervention alias expansion. Expanded results surface Matched Intervention in markdown and matched_intervention_label in JSON when an alternate alias matched first. Use --no-alias-expand to force literal matching.

Safety pivot:

biomcp drug adverse-events pembrolizumab --limit 5

JSON mode

biomcp --json get drug pembrolizumab
biomcp --json drug interactions warfarin | jq '._meta.next_commands'
biomcp --json search drug Keytruda --region eu --limit 3 | jq '.regions.eu.results[0].ema_product_number'
biomcp --json search drug Keytruda --region all --limit 3 | jq '.regions | keys'

search drug --json always returns the same top-level shape: region, regions, and optional _meta.next_commands. Each region bucket keeps the single-region wrapper fields pagination, count, and results. --limit and --offset apply separately to each requested region, so an all-region search can return up to three times the requested limit. Every bucket has its own region-only continuation command. Rows identify whether they matched an exact product name, exact active substance, structured alias, or broader text; that ordering is applied only within the region, never across providers. EU rows additionally include non-null matched_term and source fields. EMA filters and deduplicates the complete bounded local feed before applying each region's offset and limit, so regions.eu.pagination.total and its continuation describe the filtered EU result set rather than raw feed rows.

  • Use regions.us.results for U.S. search rows.
  • Use regions.eu.results for EMA rows.
  • Use regions.who.results for WHO Prequalification rows.
  • Omitted --region on a plain name/alias search and explicit --region all include all three buckets under regions.
  • biomcp --json drug interactions <name> returns one canonical-anchor interaction report with bounded interactions, pagination, bundle_freshness, and the standard _meta.evidence_urls, _meta.section_sources, and helper-specific _meta.next_commands.

Drug cards use the same command-discovery projection in JSON and Markdown. _meta.next_commands is capped at ten entries and orders recovery commands, up to three unloaded sections, a regional all command when useful, and related pivots. The default request treats only targets as loaded; explicit section tokens load exactly those sections, while all uses the current parser expansion. Regional regulatory, safety, shortage, and all commands include the resolved --region; WHO cards omit standalone safety and shortage follow-ups. Markdown renders the surviving commands under More:, All:, and See also:.

Source-section outcomes

JSON and MCP drug records include outcomes for approvals, safety, targets, indications, interactions, civic, and cell_lines. empty credits the providers that completed without evidence, degraded preserves usable evidence when an additive provider fails, and unavailable carries no failed-provider credit. Existing biomedical fields, including the compatible approvals array, remain at their current paths.

Practical tips

  • Start with base get before requesting heavy sections.
  • Use drug interactions <name> when the question is explicitly about interacting drugs for a known medication.
  • Use target filters to narrow crowded drug classes.
  • Use regulatory with --region who|all when you need WHO Prequalification context.
  • Use regulatory, safety, or shortage with --region eu|all when you need EMA context; ema is accepted as an input alias for eu.
  • Omit --region on get drug <name> regulatory when you want the default combined U.S. and EU regulatory view.
  • Pair drug lookups with trial filters for protocol matching workflows.