Drug¶
Use drug commands for medication lookup, interaction review, target-oriented search, and U.S./EU/WHO regulatory context.
Search drugs¶
Text query:
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:
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¶
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:
Long warning sections are truncated in the card and link to the full DailyMed label.
Shortage section:
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:
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):
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:
approvals remains a legacy U.S.-only section. Use regulatory for the region-aware regulatory view.
PharmacoDB 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.jsonpost_authorisation.jsonreferrals.jsonpsusas.jsondhpcs.jsonshortages.json
Confirm local EMA readiness with full health output:
Force-refresh EMA local data manually:
EMA row meanings:
configured:BIOMCP_EMA_DIRis set and completeconfigured (stale):BIOMCP_EMA_DIRis set and complete, but one or more EMA files are older than the 72-hour refresh windowavailable (default path): the default platform data directory contains a complete EMA batchavailable (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 windownot configured: no EMA batch is installed at the default path yeterror (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.csvwho_api.csvwho_vaccines.csv
Confirm local WHO readiness with full health output:
Force-refresh WHO local data manually:
WHO row meanings:
configured:BIOMCP_WHO_DIRis set and completeconfigured (stale):BIOMCP_WHO_DIRis set and complete, but at least one WHO export is older than the 72-hour refresh windowavailable (default path): the default platform data directory contains a complete WHO root with all three exportsavailable (default path, stale): the default platform data directory contains all three WHO exports, but at least one is older than the 72-hour refresh windownot configured: no complete WHO root is installed at the default path yeterror (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.txtTRADENAME.txtmvx.txt
Confirm local CDC readiness with full health output:
Force-refresh CDC CVX/MVX local data manually:
CDC row meanings:
configured:BIOMCP_CVX_DIRis set and the full CDC bundle is presentconfigured (stale):BIOMCP_CVX_DIRis set and complete, but at least one CDC file is older than the 30-day refresh windowavailable (default path): the default platform data directory contains a complete CDC CVX/MVX bundleavailable (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 windownot configured: no complete CDC CVX/MVX root is installed at the default path yeterror (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.csvddinter_downloads_code_B.csvddinter_downloads_code_D.csvddinter_downloads_code_H.csvddinter_downloads_code_L.csvddinter_downloads_code_P.csvddinter_downloads_code_R.csvddinter_downloads_code_V.csv
Confirm local DDInter readiness with full health output:
Force-refresh DDInter local data manually:
DDInter row meanings:
configured:BIOMCP_DDINTER_DIRis set and the full DDInter bundle is presentconfigured (stale):BIOMCP_DDINTER_DIRis set and complete, but at least one DDInter file is older than the 72-hour refresh windowavailable (default path): the default platform data directory contains a complete DDInter bundleavailable (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 windownot configured: no complete DDInter root is installed at the default path yeterror (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:
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.resultsfor U.S. search rows. - Use
regions.eu.resultsfor EMA rows. - Use
regions.who.resultsfor WHO Prequalification rows. - Omitted
--regionon a plain name/alias search and explicit--region allinclude all three buckets underregions. biomcp --json drug interactions <name>returns one canonical-anchor interaction report with boundedinteractions,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
getbefore 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
regulatorywith--region who|allwhen you need WHO Prequalification context. - Use
regulatory,safety, orshortagewith--region eu|allwhen you need EMA context;emais accepted as an input alias foreu. - Omit
--regiononget drug <name> regulatorywhen you want the default combined U.S. and EU regulatory view. - Pair drug lookups with trial filters for protocol matching workflows.