OpenClaw-Medical-Skills tooluniverse-drug-repurposing
Identify drug repurposing candidates using ToolUniverse for target-based, compound-based, and disease-driven strategies. Searches existing drugs for new therapeutic indications by analyzing targets, bioactivity, safety profiles, and literature evidence. Use when exploring drug repurposing opportunities, finding new indications for approved drugs, or when users mention drug repositioning, off-label uses, or therapeutic alternatives.
git clone https://github.com/FreedomIntelligence/OpenClaw-Medical-Skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/FreedomIntelligence/OpenClaw-Medical-Skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/tooluniverse-drug-repurposing" ~/.claude/skills/freedomintelligence-openclaw-medical-skills-tooluniverse-drug-repurposing && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/FreedomIntelligence/OpenClaw-Medical-Skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/tooluniverse-drug-repurposing" ~/.openclaw/skills/freedomintelligence-openclaw-medical-skills-tooluniverse-drug-repurposing && rm -rf "$T"
skills/tooluniverse-drug-repurposing/SKILL.mdDrug Repurposing with ToolUniverse
Systematically identify and evaluate drug repurposing candidates using multiple computational strategies.
IMPORTANT: Always use English terms in tool calls (drug names, disease names, target names), even if the user writes in another language. Only try original-language terms as a fallback if English returns no results. Respond in the user's language.
Core Strategies
1. Target-Based Repurposing
Start with disease targets → Find drugs that modulate those targets
2. Compound-Based Repurposing
Start with approved drugs → Find new disease indications
3. Disease-Driven Repurposing
Start with disease → Find targets → Match to existing drugs
Quick Start
from tooluniverse import ToolUniverse tu = ToolUniverse(use_cache=True) tu.load_tools() # Example: Find repurposing candidates for a disease disease_name = "rheumatoid arthritis" # Step 1: Get disease information disease_info = tu.tools.OpenTargets_get_disease_id_description_by_name( diseaseName=disease_name ) # Step 2: Get associated targets disease_id = disease_info['data']['id'] targets = tu.tools.OpenTargets_get_associated_targets_by_disease_efoId( efoId=disease_id, limit=10 ) # Step 3: Find drugs for each target for target in targets['data'][:5]: drugs = tu.tools.DGIdb_get_drug_gene_interactions( gene_name=target['gene_symbol'] ) # Evaluate each drug candidate...
Complete Workflow
Phase 1: Disease & Target Analysis
# 1.1 Get disease information disease_info = tu.tools.OpenTargets_get_disease_id_description_by_name( diseaseName="[disease_name]" ) # 1.2 Find associated targets targets = tu.tools.OpenTargets_get_associated_targets_by_disease_efoId( efoId=disease_info['data']['id'], limit=20 ) # 1.3 Get target details for top candidates target_details = [] for target in targets['data'][:10]: details = tu.tools.UniProt_get_entry_by_accession( accession=target['uniprot_id'] ) target_details.append(details)
Phase 2: Drug Discovery
# 2.1 Find drugs targeting disease-associated targets drug_candidates = [] for target in targets['data'][:10]: # Search DrugBank drugbank_results = tu.tools.drugbank_get_drug_name_and_description_by_target_name( target_name=target['gene_symbol'] ) # Search DGIdb dgidb_results = tu.tools.DGIdb_get_drug_gene_interactions( gene_name=target['gene_symbol'] ) # Search ChEMBL chembl_results = tu.tools.ChEMBL_search_drugs( query=target['gene_symbol'], limit=10 ) drug_candidates.extend([drugbank_results, dgidb_results, chembl_results]) # 2.2 Get drug details for drug_name in unique_drugs: # Get DrugBank info drug_info = tu.tools.drugbank_get_drug_basic_info_by_drug_name_or_id( drug_name_or_drugbank_id=drug_name ) # Get current indications indications = tu.tools.drugbank_get_indications_by_drug_name_or_drugbank_id( drug_name_or_drugbank_id=drug_name ) # Get pharmacology pharmacology = tu.tools.drugbank_get_pharmacology_by_drug_name_or_drugbank_id( drug_name_or_drugbank_id=drug_name )
Phase 3: Safety & Feasibility Assessment
# 3.1 Check FDA safety data for drug in top_candidates: # Get warnings and precautions warnings = tu.tools.FDA_get_warnings_and_cautions_by_drug_name( drug_name=drug['name'] ) # Get adverse event reports adverse_events = tu.tools.FAERS_search_reports_by_drug_and_reaction( drug_name=drug['name'], limit=100 ) # Get drug interactions interactions = tu.tools.drugbank_get_drug_interactions_by_drug_name_or_id( drug_name_or_id=drug['name'] ) # 3.2 Assess ADMET properties (for novel formulations) for drug in top_candidates: if 'smiles' in drug: admet = tu.tools.ADMETAI_predict_admet( smiles=drug['smiles'], use_cache=True )
Phase 4: Literature Evidence
# 4.1 Search for existing evidence for drug in top_candidates: # PubMed search query = f"{drug['name']} AND {disease_name}" pubmed_results = tu.tools.PubMed_search_articles( query=query, max_results=50 ) # Europe PMC search pmc_results = tu.tools.EuropePMC_search_articles( query=query, limit=50 ) # Clinical trials trials = tu.tools.ClinicalTrials_search( condition=disease_name, intervention=drug['name'] )
Phase 5: Scoring & Ranking
Create a scoring function to rank candidates:
def score_repurposing_candidate(drug, target_score, safety_data, literature_count): """Score drug repurposing candidate (0-100).""" score = 0 # Target association strength (0-40 points) score += min(target_score * 40, 40) # Safety profile (0-30 points) if drug['approval_status'] == 'approved': score += 20 elif drug['approval_status'] == 'clinical': score += 10 if not safety_data.get('black_box_warning'): score += 10 # Literature evidence (0-20 points) score += min(literature_count / 5 * 20, 20) # Drug-likeness (0-10 points) if drug.get('bioavailability') == 'high': score += 10 return score # Score all candidates scored_candidates = [] for drug in drug_candidates: score = score_repurposing_candidate( drug=drug, target_score=drug['target_association_score'], safety_data=drug['safety_profile'], literature_count=drug['supporting_papers'] ) drug['repurposing_score'] = score scored_candidates.append(drug) # Sort by score ranked_candidates = sorted( scored_candidates, key=lambda x: x['repurposing_score'], reverse=True )
Alternative Strategies
Strategy A: Mechanism-Based Repurposing
# Find drugs with similar mechanism of action known_drug = "metformin" # Get mechanism moa = tu.tools.drugbank_get_drug_desc_pharmacology_by_moa( mechanism_of_action="[moa_term]" ) # Get similar drugs similar = tu.tools.ChEMBL_search_similar_molecules( query=known_drug, similarity_threshold=70 )
Strategy B: Network-Based Repurposing
# Use pathway analysis pathways = tu.tools.drugbank_get_pathways_reactions_by_drug_or_id( drug_name_or_drugbank_id="[drug_name]" ) # Find drugs affecting same pathways pathway_drugs = tu.tools.drugbank_get_drug_name_and_description_by_pathway_name( pathway_name=pathways['data'][0]['pathway_name'] )
Strategy C: Phenotype-Based Repurposing
# Search by indication/phenotype indication_drugs = tu.tools.drugbank_get_drug_name_and_description_by_indication( indication="[related_indication]" ) # Analyze adverse events as therapeutic effects # Example: minoxidil (hypertension) → hair growth adverse_as_therapeutic = tu.tools.FAERS_search_reports_by_drug_and_reaction( drug_name="[drug_name]", limit=1000 )
Key ToolUniverse Tools
Disease & Target Tools:
- Disease lookupOpenTargets_get_disease_id_description_by_name
- Disease targetsOpenTargets_get_associated_targets_by_disease_efoId
- Protein detailsUniProt_get_entry_by_accession
Drug Discovery Tools:
- Drugs by targetdrugbank_get_drug_name_and_description_by_target_name
- Drugs by indicationdrugbank_get_drug_name_and_description_by_indication
- Drug-gene interactionsDGIdb_get_drug_gene_interactions
- Drug searchChEMBL_search_drugs
- Mechanism of actionChEMBL_get_drug_mechanisms
Drug Information Tools:
- Basic drug infodrugbank_get_drug_basic_info_by_drug_name_or_id
- Approved indicationsdrugbank_get_indications_by_drug_name_or_drugbank_id
- Pharmacologydrugbank_get_pharmacology_by_drug_name_or_drugbank_id
- Drug targetsdrugbank_get_targets_by_drug_name_or_drugbank_id
Safety Assessment Tools:
- FDA warningsFDA_get_warnings_and_cautions_by_drug_name
- Adverse eventsFAERS_search_reports_by_drug_and_reaction
- Serious outcomesFAERS_count_death_related_by_drug
- Interactionsdrugbank_get_drug_interactions_by_drug_name_or_id
Property Prediction Tools:
- ADMET propertiesADMETAI_predict_admet
- Toxicity predictionADMETAI_predict_toxicity
Literature Tools:
- PubMed searchPubMed_search_articles
- Europe PMC searchEuropePMC_search_articles
- Clinical trialsClinicalTrials_search
Output Format
Present results as ranked candidates:
## Drug Repurposing Analysis: [Disease Name] ### Top 10 Repurposing Candidates #### 1. [Drug Name] (Score: 87/100) **Current Indications**: [list approved uses] **Proposed Indication**: [new disease/condition] **Repurposing Rationale**: Targets [gene/protein] with high association to disease **Evidence Summary**: - Target association score: 0.85 - Approval status: FDA approved (safer profile) - Literature support: 23 papers, 4 clinical trials - Safety profile: No black box warnings **Mechanism**: [Brief mechanism description] **Next Steps**: - Phase II trial feasibility assessment - Patient population identification - Dosing optimization study **Key Papers**: 1. Smith et al. 2024 - Clinical efficacy in similar condition 2. Jones et al. 2023 - Mechanism validation --- #### 2. [Drug Name] (Score: 79/100) [Similar structure...] ### Supporting Analysis **Target Network**: [visualization or description] **Pathway Overlap**: [affected pathways] **Safety Considerations**: [major concerns] **Development Timeline**: [estimated phases]
Scoring Criteria
Target Association (0-40 points):
- Strong genetic evidence: 40
- Moderate association: 25
- Pathway-level evidence: 15
- Weak/predicted: 5
Safety Profile (0-30 points):
- FDA approved: 20
- Phase III: 15
- Phase II: 10
- Phase I: 5
- No black box warning: +10
- Known serious AE: -10
Literature Evidence (0-20 points):
- Clinical trials: 5 points each (max 15)
- Preclinical studies: 1 point each (max 10)
- Case reports: 0.5 points each (max 5)
Drug Properties (0-10 points):
- High bioavailability: 5
- Good BBB penetration (if CNS): 5
- Low toxicity predictions: 5
Best Practices
- Start Broad: Query multiple databases (DrugBank, ChEMBL, DGIdb)
- Validate Targets: Confirm target-disease associations in OpenTargets
- Check Safety First: Prioritize approved drugs with known safety profiles
- Literature Mining: Always search for existing clinical/preclinical evidence
- Use Caching: Enable
for expensive predictionsuse_cache=True - Batch Operations: Use
for parallel queriestu.run_batch() - Consider Mechanism: Evaluate biological plausibility
- Patent Landscape: Check if indication is already protected
- Market Analysis: Consider unmet medical need and commercial viability
- Regulatory Path: FDA approved drugs have faster repurposing path
Common Patterns
Pattern 1: Rapid Screening
# Quick screening of 100+ drugs against disease targets targets = get_disease_targets(disease_id)[:10] all_drugs = [] for target in targets: drugs = tu.tools.DGIdb_get_drug_gene_interactions( gene_name=target['gene_symbol'] ) all_drugs.extend(drugs) # Filter to FDA approved only approved_drugs = [d for d in all_drugs if d.get('approved')]
Pattern 2: Deep Dive Single Drug
# Comprehensive analysis of one drug candidate drug_name = "metformin" # Get everything info = tu.tools.drugbank_get_drug_basic_info_by_drug_name_or_id(drug_name_or_drugbank_id=drug_name) targets = tu.tools.drugbank_get_targets_by_drug_name_or_drugbank_id(drug_name_or_drugbank_id=drug_name) indications = tu.tools.drugbank_get_indications_by_drug_name_or_drugbank_id(drug_name_or_drugbank_id=drug_name) pharmacology = tu.tools.drugbank_get_pharmacology_by_drug_name_or_drugbank_id(drug_name_or_drugbank_id=drug_name) interactions = tu.tools.drugbank_get_drug_interactions_by_drug_name_or_id(drug_name_or_id=drug_name) warnings = tu.tools.FDA_get_warnings_and_cautions_by_drug_name(drug_name=drug_name) papers = tu.tools.PubMed_search_articles(query=f"{drug_name} AND [new_disease]", max_results=100)
Pattern 3: Comparative Analysis
# Compare multiple candidates side-by-side candidates = ["drug_a", "drug_b", "drug_c"] comparison = [] for drug in candidates: data = { 'name': drug, 'info': tu.tools.drugbank_get_drug_basic_info_by_drug_name_or_id(drug_name_or_drugbank_id=drug), 'safety': tu.tools.FDA_get_warnings_and_cautions_by_drug_name(drug_name=drug), 'evidence': tu.tools.PubMed_search_articles(query=drug, max_results=10) } comparison.append(data)
Troubleshooting
"Disease not found":
- Try disease synonyms or EFO ID lookup
- Use broader disease categories
"No drugs found for target":
- Check target name/symbol (HUGO nomenclature)
- Expand to pathway-level drugs
- Consider similar targets (protein family)
"Insufficient literature evidence":
- Search for drug class rather than specific drug
- Check preclinical/animal studies
- Look for mechanism papers
"Safety data unavailable":
- Drug may not be FDA approved in US
- Check EMA or other regulatory databases
- Review clinical trial safety data
Example Use Cases
Use Case 1: Find repurposing candidates for rare disease
# Rare disease often lack approved drugs # Strategy: Find drugs targeting same pathways as related common diseases rare_disease = "Niemann-Pick disease" related_disease = "Alzheimer's disease" # Similar pathology # Get pathways affected in related disease targets = tu.tools.OpenTargets_get_associated_targets_by_disease_efoId( efoId=related_disease_id ) # Find drugs for those targets # Evaluate for rare disease applicability
Use Case 2: Repurpose based on adverse effects
# Adverse effect in one context = therapeutic in another # Example: Thalidomide (teratogenic) → cancer treatment drug = "drug_name" adverse_events = tu.tools.FAERS_search_reports_by_drug_and_reaction( drug_name=drug, limit=1000 ) # Analyze if adverse effects beneficial in other contexts # Example: weight loss AE → obesity treatment potential
Use Case 3: Combination therapy discovery
# Find drugs that complement existing therapy primary_drug = "existing_therapy" disease = "disease_name" # Get targets not covered by primary drug disease_targets = tu.tools.OpenTargets_get_associated_targets_by_disease_efoId( efoId=disease_id ) primary_targets = tu.tools.drugbank_get_targets_by_drug_name_or_drugbank_id( drug_name_or_drugbank_id=primary_drug ) # Find drugs for uncovered targets uncovered_targets = [t for t in disease_targets if t not in primary_targets]
Advanced Techniques
Technique 1: Polypharmacology-Based Repurposing
# Find drugs with multi-target activity matching disease network # Get disease network targets = tu.tools.OpenTargets_get_associated_targets_by_disease_efoId( efoId=disease_id, limit=50 ) # For each drug, count how many disease targets it hits for drug in candidate_drugs: drug_targets = tu.tools.drugbank_get_targets_by_drug_name_or_drugbank_id( drug_name_or_drugbank_id=drug ) overlap = len(set(drug_targets) & set(disease_targets)) if overlap >= 3: # Multi-target match print(f"{drug}: hits {overlap} disease targets")
Technique 2: Structure-Based Repurposing
# Find structurally similar approved drugs known_active = "known_active_compound" # Get structure cid = tu.tools.PubChem_get_CID_by_compound_name( compound_name=known_active ) # Find similar similar = tu.tools.PubChem_search_compounds_by_similarity( cid=cid['data']['cid'], threshold=85 ) # Check which are approved drugs for compound in similar['data']: drug_info = tu.tools.PubChem_get_drug_label_info_by_CID( cid=compound['cid'] )
Technique 3: AI-Powered Candidate Selection
# Use ML predictions to filter candidates candidates_with_smiles = get_candidates_with_structures() # Predict ADMET for all admet_results = [] for drug in candidates_with_smiles: admet = tu.tools.ADMETAI_predict_admet( smiles=drug['smiles'], use_cache=True ) admet_results.append({ 'drug': drug['name'], 'admet': admet, 'pass': evaluate_admet_criteria(admet) }) # Keep only drugs passing ADMET criteria viable_candidates = [r for r in admet_results if r['pass']]
Resources
For comprehensive disease analysis, see disease-intelligence-gatherer skill.
For compound property analysis, see chemical-compound-retrieval skill.
For detailed ToolUniverse SDK usage, see tooluniverse-sdk skill.