skills/tooluniverse-admet-prediction/SKILL.md
Comprehensive ADMET (Absorption, Distribution, Metabolism, Excretion, Toxicity) profiling for drug candidates. Integrates ADMET-AI predictions, SwissADME drug-likeness, PubChemTox experimental toxicity, ChEMBL clinical data, Lipinski rule-of-five, and CYP interaction data. Use for drug-likeness assessment, BBB penetration, bioavailability, hepatotoxicity prediction, ADME/PK profiling, or screening compound libraries before lab testing.
npx skillsauth add mims-harvard/tooluniverse tooluniverse-admet-predictionInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
ADMET reasoning: a drug fails if it can't be absorbed, distributes to wrong tissues, isn't metabolized safely, or isn't excreted. Evaluate each property independently — good absorption doesn't compensate for liver toxicity. The ADME properties determine whether a compound reaches its target at therapeutic concentrations; toxicity determines whether it's safe to do so. Prioritize experimental data (T2) over computational predictions (T3) — ADMETAI predictions are screening tools, not definitive verdicts. When a FAIL is flagged in any toxicity category (hERG, AMES, DILI), treat it as program-limiting until wet-lab data refutes it.
LOOK UP DON'T GUESS: never assume SMILES, CID, or experimental LD50 values — always call PubChem to resolve compound identity before any ADMETAI or PubChemTox call.
Comprehensive pharmacokinetic and toxicity profiling integrating AI-based ADMET predictions, rule-based drug-likeness filters, and experimental benchmarks from curated databases.
Triggers:
Input: Drug name (e.g., "ibuprofen") OR SMILES string (e.g., "CC(C)Cc1ccc(cc1)C(C)C(=O)O")
When analysis requires computation (statistics, data processing, scoring, enrichment), write and run Python code via Bash. Don't describe what you would do — execute it and report actual results. Use ToolUniverse tools to retrieve data, then Python (pandas, scipy, statsmodels, matplotlib) to analyze it.
tooluniverse[ml] - If import fails, skip to SwissADME/PubChemTox fallbackssmiles: list[str] - Always wrap in a list, even for one compoundsmiles: str - Single string, NOT a list (SOAP-style with operation param)cid or compound_name - Use CID when available for reliability| Tier | Label | Source | |------|-------|--------| | T1 | Regulatory/Clinical | FDA labels, ChEMBL max clinical phase | | T2 | Experimental | PubChemTox LD50/LC50, in vitro AMES, animal studies | | T3 | Computational | ADMETAI predictions, SwissADME calculations | | T4 | Annotation | Database cross-references, text-mined |
User Query (drug name or SMILES)
|
+-- PHASE 1: Compound Identity Resolution
| PubChem name->CID->SMILES, or validate input SMILES
|
+-- PHASE 2: Physicochemical & Drug-Likeness
| ADMETAI physicochemical + SwissADME druglikeness -> Lipinski/Veber
|
+-- PHASE 3: ADME Predictions
| BBB, bioavailability, CYP interactions, clearance, solubility
|
+-- PHASE 4: Toxicity Assessment
| ADMETAI tox + PubChemTox experimental + nuclear receptor + stress
|
+-- PHASE 5: Scorecard & Clinical Context
| ChEMBL max phase, aggregate pass/warn/fail, final recommendation
Goal: Obtain SMILES, PubChem CID, and basic identifiers for the query compound.
Steps:
If input is a drug name:
PubChem_get_CID_by_compound_name(name=<drug_name>) to get CIDPubChem_get_compound_properties_by_CID(cid=<CID>) to get SMILES and MWConnectivitySMILES from the response (NOT CanonicalSMILES)If input is a SMILES string:
PubChem_get_CID_by_SMILES(smiles=<SMILES>) to get CIDPubChem_get_compound_properties_by_CID(cid=<CID>) for compound name and MWRecord:
Why this matters: ADMETAI tools require SMILES input. PubChemTox tools work best with CID. Resolving both ensures all downstream tools can be called. PubChem is the authoritative source for SMILES canonicalization.
Fallback: If PubChem has no entry, the user must provide SMILES directly. Cannot proceed without SMILES.
Goal: Evaluate whether the compound has drug-like physicochemical properties.
Steps:
ADMETAI physicochemical (primary):
ADMETAI_predict_physicochemical_properties(smiles=["<SMILES>"])
Returns: MW, logP, TPSA, HBD, HBA, rotatable bonds
SwissADME drug-likeness (complementary):
SwissADME_check_druglikeness(operation="check_druglikeness", smiles="<SMILES>")
SwissADME_calculate_adme(operation="calculate_adme", smiles="<SMILES>")
Returns: Lipinski, Veber, Ghose, Egan, Muegge rule compliance; PAINS alerts; Brenk alerts
ADMETAI solubility:
ADMETAI_predict_solubility_lipophilicity_hydration(smiles=["<SMILES>"])
Returns: Aqueous solubility (LogS), lipophilicity, hydration free energy
Interpret & Score:
| Property | Ideal Range | Why It Matters | |----------|-------------|----------------| | MW | < 500 Da | Larger molecules have poor membrane permeability (Lipinski) | | LogP | -0.4 to 5.6 | Too hydrophobic = poor solubility; too hydrophilic = poor permeability | | HBD | <= 5 | Excess donors reduce membrane crossing (Lipinski) | | HBA | <= 10 | Excess acceptors reduce membrane crossing (Lipinski) | | TPSA | < 140 A^2 | High PSA correlates with poor oral absorption | | Rotatable bonds | <= 10 | Molecular flexibility affects bioavailability (Veber) | | LogS | > -6 | Below -6 = practically insoluble, formulation challenge | | PAINS alerts | 0 | Pan-assay interference compounds give false positives in screens |
Verdict: PASS if Lipinski <= 1 violation and no PAINS alerts; WARN if 2 violations; FAIL if 3+ violations or PAINS+.
Fallback: If ADMETAI import fails (missing tooluniverse[ml]), rely on SwissADME alone. SwissADME provides all Lipinski descriptors independently.
Goal: Predict absorption, distribution, metabolism, and excretion behavior.
Steps:
Blood-brain barrier penetration:
ADMETAI_predict_BBB_penetrance(smiles=["<SMILES>"])
Oral bioavailability:
ADMETAI_predict_bioavailability(smiles=["<SMILES>"])
CYP450 interactions:
ADMETAI_predict_CYP_interactions(smiles=["<SMILES>"])
Clearance and distribution:
ADMETAI_predict_clearance_distribution(smiles=["<SMILES>"])
SwissADME pharmacokinetics (cross-validation):
Key flags: BBB+ for non-CNS drug (WARN: CNS side effects); BBB- for CNS drug (FAIL: won't reach target); F < 20% (WARN: poor oral bioavailability); CYP3A4 inhibitor (WARN: high DDI); CYP2D6 substrate (WARN: pharmacogenomic variability); PPB > 99% (WARN: narrow window); high clearance + low bioavailability (FAIL).
Fallback: If ADMETAI unavailable, SwissADME provides GI absorption, BBB permeation (yes/no), P-gp substrate, and CYP inhibition predictions.
Goal: Evaluate safety liabilities from both predicted and experimental sources.
Steps:
ADMETAI toxicity predictions [T3]:
ADMETAI_predict_toxicity(smiles=["<SMILES>"])
Key endpoints:
Nuclear receptor activity [T3]:
ADMETAI_predict_nuclear_receptor_activity(smiles=["<SMILES>"])
Stress response pathways [T3]:
ADMETAI_predict_stress_response(smiles=["<SMILES>"])
PubChemTox experimental data [T2] (call all in parallel):
PubChemTox_get_toxicity_values(cid=<CID>)
PubChemTox_get_ghs_classification(cid=<CID>)
PubChemTox_get_acute_effects(cid=<CID>)
PubChemTox_get_carcinogen_classification(cid=<CID>)
PubChemTox_get_target_organs(cid=<CID>)
PubChemTox_get_toxicity_summary(cid=<CID>)
Key flags: AMES positive (FAIL: mutagenic); DILI positive (WARN: hepatotox); hERG positive (FAIL: cardiac, often program-killing); ClinTox positive (WARN); LD50 < 50 mg/kg (FAIL: GHS 1-2); LD50 50-300 mg/kg (WARN: GHS 3); NR-ER/AR active (WARN: endocrine disruption); p53 active (WARN: genotoxicity); IARC Group 1/2A (FAIL: known/probable carcinogen).
Fallback: If ADMETAI unavailable, PubChemTox provides experimental toxicity data for known compounds. For novel compounds without PubChem entries, flag as "no experimental toxicity data available -- computational predictions only."
Goal: Aggregate all findings into a structured ADMET scorecard with pass/warn/fail verdicts.
Steps:
ChEMBL clinical status [T1] (if drug has ChEMBL ID):
ChEMBL_get_molecule(chembl_id="<CHEMBL_ID>")
Build the ADMET Scorecard: produce a table with 13 categories (Physicochemical, Solubility, Absorption, Distribution, Metabolism, Excretion, Tox: Mutagenicity/Hepatotoxicity/Cardiotoxicity/Carcinogenicity/Acute, Endocrine, Clinical Tox), each with PASS/WARN/FAIL verdict and key finding. Include compound identity header and overall verdict. Tag each finding with evidence tier [T1-T3].
Interpretation narrative: After the scorecard, provide a 3-5 sentence summary:
Before delivering the final scorecard, verify:
tools
Post-market safety surveillance and recall/adverse-event RETRIEVAL across the full spectrum of FDA-regulated products that are NOT covered by the drug-AE signal skills: medical devices, food / dietary supplements / cosmetics, veterinary drugs, and drug supply (shortages). Orchestrates openFDA endpoints (MAUDE device adverse events + device recalls + 510(k), CAERS food/supplement/ cosmetic adverse events, veterinary adverse events, drug shortages, and cross-product enforcement/recall reports). USE WHEN the user asks: "are there adverse events for [device / pacemaker / infusion pump / insulin pump]", "device recalls for [firm/product]", "supplement / vitamin / cosmetic adverse reactions", "is [drug] in shortage", "what injectables are on shortage", "veterinary / animal adverse events for [drug] in [dog/cat/horse]", "food recall for listeria", "MAUDE report for [device]", "CAERS reactions for [brand]". DO NOT USE for drug adverse-event SIGNAL detection or disproportionality (PRR / ROR / IC) or drug-AE association scoring — that is `tooluniverse-pharmacovigilance` / `tooluniverse-adverse-event-detection`. This skill is multi-product surveillance and retrieval, not drug-AE statistical signal mining.
tools
--- name: tooluniverse-phewas description: Cross-ancestry / cross-biobank phenome-wide association (PheWAS) and replication. Given ONE variant (rsID) or ONE gene, look up every phenotype it associates with across European/UK (UKB-TOPMed), Finnish (FinnGen), Japanese (BioBank Japan), and Taiwanese (TPMI) biobanks, plus exome-wide gene-burden PheWAS (Genebass), then judge whether an association replicates across ancestries or is population-specific. Use whenever the user asks "what else is this va
tools
Dereplicate a putative natural product and assign its chemical taxonomy. Use to answer "is [compound] a known natural product", "what microbe/organism produces [compound]", "what chemical class is [compound]", "dereplicate this metabolite (by formula/exact mass/InChIKey/SMILES)", or "classify this molecule into ChemOnt". Searches NPAtlas for known microbial natural products (producing organism + literature reference), assigns the ChemOnt kingdom→superclass→class→subclass hierarchy via ClassyFire, resolves systematic IUPAC names to structure via OPSIN, and cross-references identity in PubChem. NOT for general drug/compound identity or ADMET (use tooluniverse-chemical-compound-retrieval / tooluniverse-small-molecule-discovery) and NOT for metabolomics pathway/enrichment analysis (use tooluniverse-metabolomics skills).
tools
Genome-ASSEMBLY discovery, QC, and replicon mapping for any organism (bacteria, archaea, fungi, and beyond) using NCBI Datasets. Resolves an organism name or taxid to assemblies, picks the reference/representative or best-quality assembly, pulls assembly QC metrics (total length, contig/scaffold N50, contig count, GC%, assembly level, RefSeq category), enumerates chromosomes and plasmids via per-replicon sequence reports, and compares candidate assemblies on quality. Use for "what genomes are available for [organism]", "assembly stats / N50 / GC content for [GCF_/GCA_ accession]", "how many plasmids does [strain] have", "compare assemblies for [species]", "find the reference genome for [taxon]", "is this assembly Complete Genome or just contigs". NOT for gene-level orthology/synteny (use tooluniverse-comparative-genomics), plant gene structure (use tooluniverse-plant-genomics), de novo assembly from raw reads (no tool exists), or taxonomy-only name/lineage lookups.