Agent Capability Analysis
The tooluniverse-precision-oncology skill by mims-harvard is an open-source community AI agent skill for Claude Code and other IDE workflows, helping agents execute tasks with better context, repeatability, and domain-specific guidance.
Ideal Agent Persona
Ideal for Medical Research Agents requiring precision oncology treatment recommendations based on molecular profiles and evidence-graded analysis.
Core Value
Empowers agents to provide actionable treatment options for cancer patients using CIViC, ClinVar, OpenTargets, and ClinicalTrials.gov, with prioritized output and structure-based analysis, ensuring clinical focus and report-first approach with evidence-graded recommendations.
↓ Capabilities Granted for tooluniverse-precision-oncology
! Prerequisites & Limits
- Requires access to CIViC, ClinVar, OpenTargets, and ClinicalTrials.gov databases
- Limited to precision oncology treatment recommendations
Browser Sandbox Environment
⚡️ Ready to unleash?
Experience this Agent in a zero-setup browser environment powered by WebContainers. No installation required.
tooluniverse-precision-oncology
Install tooluniverse-precision-oncology, an AI agent skill for AI agent workflows and automation. Works with Claude Code, Cursor, and Windsurf with...
Precision Oncology Treatment Advisor
Provide actionable treatment recommendations for cancer patients based on their molecular profile using CIViC, ClinVar, OpenTargets, ClinicalTrials.gov, and structure-based analysis.
KEY PRINCIPLES:
- Report-first - Create report file FIRST, update progressively
- Evidence-graded - Every recommendation has evidence level
- Actionable output - Prioritized treatment options, not data dumps
- Clinical focus - Answer "what should we do?" not "what exists?"
- English-first queries - Always use English terms in tool calls (mutations, drug names, cancer types), even if the user writes in another language. Only try original-language terms as a fallback. Respond in the user's language
When to Use
Apply when user asks:
- "Patient has [cancer] with [mutation] - what treatments?"
- "What are options for EGFR-mutant lung cancer?"
- "Patient failed [drug], what's next?"
- "Clinical trials for KRAS G12C?"
- "Why isn't [drug] working anymore?"
Phase 0: Tool Verification
CRITICAL: Verify tool parameters before first use.
| Tool | WRONG | CORRECT |
|---|---|---|
civic_get_variant | variant_name | id (numeric) |
civic_get_evidence_item | variant_id | id |
OpenTargets_* | ensemblID | ensemblId (camelCase) |
search_clinical_trials | disease | condition |
Workflow Overview
Input: Cancer type + Molecular profile (mutations, fusions, amplifications)
Phase 1: Profile Validation
├── Validate variant nomenclature
├── Resolve gene identifiers
└── Confirm cancer type (EFO/ICD)
Phase 2: Variant Interpretation
├── CIViC → Evidence for each variant
├── ClinVar → Pathogenicity
├── COSMIC → Somatic mutation frequency
├── GDC/TCGA → Real tumor data
├── DepMap → Target essentiality
├── OncoKB → FDA actionability levels (NEW)
├── cBioPortal → Cross-study mutation data (NEW)
├── Human Protein Atlas → Expression validation (NEW)
├── OpenTargets → Target-disease evidence
└── OUTPUT: Variant significance table + target validation + expression
Phase 2.5: Tumor Expression Context (NEW)
├── CELLxGENE → Cell-type specific expression in tumor
├── ChIPAtlas → Regulatory context
├── Cancer-specific expression patterns
└── OUTPUT: Expression validation
Phase 3: Treatment Options
├── Approved therapies (FDA label)
├── NCCN-recommended (literature)
├── Off-label with evidence
└── OUTPUT: Prioritized treatment list
Phase 3.5: Pathway & Network Analysis (NEW)
├── KEGG/Reactome → Pathway context
├── IntAct → Protein interactions
├── Drug combination rationale
└── OUTPUT: Biological context for combinations
Phase 4: Resistance Analysis (if prior therapy)
├── Known resistance mechanisms
├── Structure-based analysis (NvidiaNIM)
├── Network-based bypass pathways (IntAct)
└── OUTPUT: Resistance explanation + strategies
Phase 5: Clinical Trial Matching
├── Active trials for indication + biomarker
├── Eligibility filtering
└── OUTPUT: Matched trials
Phase 5.5: Literature Evidence (NEW)
├── PubMed → Published evidence
├── BioRxiv/MedRxiv → Recent preprints
├── OpenAlex → Citation analysis
└── OUTPUT: Supporting literature
Phase 6: Report Synthesis
├── Executive summary
├── Treatment recommendations (prioritized)
└── Next steps
Phase 1: Profile Validation
1.1 Resolve Gene Identifiers
python1def resolve_gene(tu, gene_symbol): 2 """Resolve gene to all needed IDs.""" 3 ids = {} 4 5 # Ensembl ID (for OpenTargets) 6 gene_info = tu.tools.MyGene_query_genes(q=gene_symbol, species="human") 7 ids['ensembl'] = gene_info.get('ensembl', {}).get('gene') 8 9 # UniProt (for structure) 10 uniprot = tu.tools.UniProt_search(query=gene_symbol, organism="human") 11 ids['uniprot'] = uniprot[0].get('primaryAccession') if uniprot else None 12 13 # ChEMBL target 14 target = tu.tools.ChEMBL_search_targets(query=gene_symbol, organism="Homo sapiens") 15 ids['chembl_target'] = target[0].get('target_chembl_id') if target else None 16 17 return ids
1.2 Validate Variant Nomenclature
- HGVS protein: p.L858R, p.V600E
- cDNA: c.2573T>G
- Common names: T790M, G12C
Phase 2: Variant Interpretation
2.1 CIViC Evidence Query
python1def get_civic_evidence(tu, gene_symbol, variant_name): 2 """Get CIViC evidence for variant.""" 3 # Search for variant 4 variants = tu.tools.civic_search_variants(query=f"{gene_symbol} {variant_name}") 5 6 evidence_items = [] 7 for var in variants: 8 # Get evidence items for this variant 9 evi = tu.tools.civic_get_variant(id=var['id']) 10 evidence_items.extend(evi.get('evidence_items', [])) 11 12 # Categorize by evidence type 13 return { 14 'predictive': [e for e in evidence_items if e['evidence_type'] == 'Predictive'], 15 'prognostic': [e for e in evidence_items if e['evidence_type'] == 'Prognostic'], 16 'diagnostic': [e for e in evidence_items if e['evidence_type'] == 'Diagnostic'] 17 }
2.2 COSMIC Somatic Mutation Analysis (NEW)
python1def get_cosmic_mutations(tu, gene_symbol, variant_name=None): 2 """Get somatic mutation data from COSMIC database.""" 3 4 # Get all mutations for gene 5 gene_mutations = tu.tools.COSMIC_get_mutations_by_gene( 6 operation="get_by_gene", 7 gene=gene_symbol, 8 max_results=100, 9 genome_build=38 10 ) 11 12 # If specific variant, search for it 13 if variant_name: 14 specific = tu.tools.COSMIC_search_mutations( 15 operation="search", 16 terms=f"{gene_symbol} {variant_name}", 17 max_results=20 18 ) 19 return { 20 'specific_variant': specific.get('results', []), 21 'all_gene_mutations': gene_mutations.get('results', []) 22 } 23 24 return gene_mutations 25 26def get_cosmic_hotspots(tu, gene_symbol): 27 """Identify mutation hotspots in COSMIC.""" 28 mutations = tu.tools.COSMIC_get_mutations_by_gene( 29 operation="get_by_gene", 30 gene=gene_symbol, 31 max_results=500 32 ) 33 34 # Count by position 35 position_counts = Counter(m['MutationAA'] for m in mutations.get('results', [])) 36 hotspots = position_counts.most_common(10) 37 38 return hotspots
Why COSMIC matters:
- Gold standard for somatic cancer mutations
- Provides cancer type distribution (which cancers have this mutation)
- FATHMM pathogenicity prediction for novel variants
- Identifies hotspots vs. rare mutations
2.3 GDC/TCGA Pan-Cancer Analysis (NEW)
Access real patient tumor data from The Cancer Genome Atlas:
python1def get_tcga_mutation_data(tu, gene_symbol, cancer_type=None): 2 """ 3 Get somatic mutations from TCGA via GDC. 4 5 Answers: "How often is this mutation seen in real tumors?" 6 """ 7 8 # Get mutation frequency across all TCGA 9 frequency = tu.tools.GDC_get_mutation_frequency( 10 gene_symbol=gene_symbol 11 ) 12 13 # Get specific mutations 14 mutations = tu.tools.GDC_get_ssm_by_gene( 15 gene_symbol=gene_symbol, 16 project_id=f"TCGA-{cancer_type}" if cancer_type else None, 17 size=50 18 ) 19 20 return { 21 'frequency': frequency.get('data', {}), 22 'mutations': mutations.get('data', {}), 23 'note': 'Real patient tumor data from TCGA' 24 } 25 26def get_tcga_expression_profile(tu, gene_symbol, cancer_type): 27 """Get gene expression data from TCGA.""" 28 29 # Map cancer type to TCGA project 30 project_map = { 31 'lung': 'TCGA-LUAD', 32 'breast': 'TCGA-BRCA', 33 'colorectal': 'TCGA-COAD', 34 'melanoma': 'TCGA-SKCM', 35 'glioblastoma': 'TCGA-GBM' 36 } 37 project_id = project_map.get(cancer_type.lower(), f'TCGA-{cancer_type.upper()}') 38 39 expression = tu.tools.GDC_get_gene_expression( 40 project_id=project_id, 41 size=20 42 ) 43 44 return expression.get('data', {}) 45 46def get_tcga_cnv_status(tu, gene_symbol, cancer_type): 47 """Get copy number status from TCGA.""" 48 49 project_map = { 50 'lung': 'TCGA-LUAD', 51 'breast': 'TCGA-BRCA' 52 } 53 project_id = project_map.get(cancer_type.lower(), f'TCGA-{cancer_type.upper()}') 54 55 cnv = tu.tools.GDC_get_cnv_data( 56 project_id=project_id, 57 gene_symbol=gene_symbol, 58 size=20 59 ) 60 61 return cnv.get('data', {})
GDC Tools Summary:
| Tool | Purpose | Key Parameters |
|---|---|---|
GDC_get_mutation_frequency | Pan-cancer mutation stats | gene_symbol |
GDC_get_ssm_by_gene | Specific mutations | gene_symbol, project_id |
GDC_get_gene_expression | RNA-seq data | project_id |
GDC_get_cnv_data | Copy number | project_id, gene_symbol |
GDC_list_projects | Find TCGA projects | program="TCGA" |
Why TCGA/GDC matters:
- Real patient data - Not cell line or curated, actual tumor sequencing
- Pan-cancer view - Same gene across 33 cancer types
- Multi-omic - Mutations, expression, CNV together
- Clinical correlation - Survival data available
2.4 DepMap Target Validation (NEW)
Assess gene essentiality using CRISPR knockout data from cancer cell lines:
python1def assess_target_essentiality(tu, gene_symbol, cancer_type=None): 2 """ 3 Is this gene essential in cancer cell lines? 4 5 Essential genes have negative dependency scores. 6 Answers: "If we target this gene, will cancer cells die?" 7 """ 8 9 # Get gene dependency data 10 dependencies = tu.tools.DepMap_get_gene_dependencies( 11 gene_symbol=gene_symbol 12 ) 13 14 # Get cell lines for specific cancer type 15 if cancer_type: 16 cell_lines = tu.tools.DepMap_get_cell_lines( 17 cancer_type=cancer_type, 18 page_size=20 19 ) 20 return { 21 'gene': gene_symbol, 22 'dependencies': dependencies.get('data', {}), 23 'cell_lines': cell_lines.get('data', {}), 24 'interpretation': 'Negative scores = gene is essential for cell survival' 25 } 26 27 return dependencies 28 29def get_depmap_drug_sensitivity(tu, drug_name, cancer_type=None): 30 """Get drug sensitivity data from DepMap.""" 31 32 drugs = tu.tools.DepMap_get_drug_response( 33 drug_name=drug_name 34 ) 35 36 return drugs.get('data', {})
DepMap Tools Summary:
| Tool | Purpose | Key Parameters |
|---|---|---|
DepMap_get_gene_dependencies | CRISPR essentiality | gene_symbol |
DepMap_get_cell_lines | Cell line metadata | cancer_type, tissue |
DepMap_search_cell_lines | Search by name | query |
DepMap_get_drug_response | Drug sensitivity | drug_name |
Why DepMap matters for Precision Oncology:
- Target validation - Proves gene is essential for cancer survival
- Cancer selectivity - Essential in cancer but not normal cells?
- Resistance prediction - What other genes become essential when you knockout target?
- Combination rationale - Identify synthetic lethal partners
Example Clinical Application:
markdown1### Target Essentiality Assessment (DepMap) 2 3**KRAS dependency in pancreatic cancer cell lines**: 4| Cell Line | KRAS Effect Score | Interpretation | 5|-----------|-------------------|----------------| 6| PANC-1 | -0.82 | Strongly essential | 7| MIA PaCa-2 | -0.75 | Essential | 8| BxPC-3 | -0.21 | Less dependent (KRAS WT) | 9 10*Interpretation: KRAS-mutant pancreatic cancer lines are highly dependent on KRAS - validates targeting strategy.* 11 12*Source: DepMap via `DepMap_get_gene_dependencies`*
2.5 OncoKB Actionability Assessment (NEW)
OncoKB provides FDA-approved therapeutic actionability annotations:
python1def get_oncokb_annotations(tu, gene_symbol, variant_name, tumor_type=None): 2 """ 3 Get OncoKB actionability annotations. 4 5 OncoKB Level of Evidence: 6 - Level 1: FDA-approved 7 - Level 2: Standard care 8 - Level 3A: Compelling clinical evidence 9 - Level 3B: Standard care in different tumor type 10 - Level 4: Biological evidence 11 - R1/R2: Resistance evidence 12 """ 13 14 # Annotate the specific variant 15 annotation = tu.tools.OncoKB_annotate_variant( 16 operation="annotate_variant", 17 gene=gene_symbol, 18 variant=variant_name, # e.g., "V600E" 19 tumor_type=tumor_type # OncoTree code e.g., "MEL", "LUAD" 20 ) 21 22 result = { 23 'oncogenic': annotation.get('data', {}).get('oncogenic'), 24 'mutation_effect': annotation.get('data', {}).get('mutationEffect'), 25 'highest_sensitive_level': annotation.get('data', {}).get('highestSensitiveLevel'), 26 'treatments': annotation.get('data', {}).get('treatments', []) 27 } 28 29 # Get gene-level info 30 gene_info = tu.tools.OncoKB_get_gene_info( 31 operation="get_gene_info", 32 gene=gene_symbol 33 ) 34 35 result['is_oncogene'] = gene_info.get('data', {}).get('oncogene', False) 36 result['is_tumor_suppressor'] = gene_info.get('data', {}).get('tsg', False) 37 38 return result 39 40def get_oncokb_cnv_annotation(tu, gene_symbol, alteration_type, tumor_type=None): 41 """Get OncoKB annotation for copy number alterations.""" 42 43 annotation = tu.tools.OncoKB_annotate_copy_number( 44 operation="annotate_copy_number", 45 gene=gene_symbol, 46 copy_number_type=alteration_type, # "AMPLIFICATION" or "DELETION" 47 tumor_type=tumor_type 48 ) 49 50 return { 51 'oncogenic': annotation.get('data', {}).get('oncogenic'), 52 'treatments': annotation.get('data', {}).get('treatments', []) 53 }
OncoKB Level Mapping:
| OncoKB Level | Our Tier | Description |
|---|---|---|
| LEVEL_1 | ★★★ | FDA-recognized biomarker |
| LEVEL_2 | ★★★ | Standard care |
| LEVEL_3A | ★★☆ | Compelling clinical evidence |
| LEVEL_3B | ★★☆ | Different tumor type |
| LEVEL_4 | ★☆☆ | Biological evidence |
| LEVEL_R1 | Resistance | FDA-approved resistance marker |
| LEVEL_R2 | Resistance | Compelling resistance evidence |
2.6 cBioPortal Cross-Study Analysis (NEW)
Aggregate mutation data across multiple cancer studies:
python1def get_cbioportal_mutations(tu, gene_symbols, study_id="brca_tcga"): 2 """ 3 Get mutation data from cBioPortal across cancer studies. 4 5 Provides: Mutation types, protein changes, co-mutations. 6 """ 7 8 # Get mutations for genes in study 9 mutations = tu.tools.cBioPortal_get_mutations( 10 study_id=study_id, 11 gene_list=",".join(gene_symbols) # e.g., "EGFR,KRAS" 12 ) 13 14 # Parse results 15 results = [] 16 for mut in mutations or []: 17 results.append({ 18 'gene': mut.get('gene', {}).get('hugoGeneSymbol'), 19 'protein_change': mut.get('proteinChange'), 20 'mutation_type': mut.get('mutationType'), 21 'sample_id': mut.get('sampleId'), 22 'validation_status': mut.get('validationStatus') 23 }) 24 25 return results 26 27def get_cbioportal_cancer_studies(tu, cancer_type=None): 28 """Get available cancer studies from cBioPortal.""" 29 30 studies = tu.tools.cBioPortal_get_cancer_studies(limit=50) 31 32 if cancer_type: 33 studies = [s for s in studies if cancer_type.lower() in s.get('cancerTypeId', '').lower()] 34 35 return studies 36 37def analyze_co_mutations(tu, gene_symbol, study_id): 38 """Find frequently co-mutated genes.""" 39 40 # Get molecular profiles 41 profiles = tu.tools.cBioPortal_get_molecular_profiles(study_id=study_id) 42 43 # Get mutation data 44 mutations = tu.tools.cBioPortal_get_mutations( 45 study_id=study_id, 46 gene_list=gene_symbol 47 ) 48 49 return { 50 'profiles': profiles, 51 'mutations': mutations, 52 'study_id': study_id 53 }
cBioPortal Use Cases:
| Use Case | Tool | Parameters |
|---|---|---|
| Find mutation frequency | cBioPortal_get_mutations | study_id, gene_list |
| List available studies | cBioPortal_get_cancer_studies | limit |
| Get molecular profiles | cBioPortal_get_molecular_profiles | study_id |
| Analyze co-mutations | Multiple tools | Combined analysis |
2.7 Human Protein Atlas Expression (NEW)
Validate target expression in tumor vs normal tissues:
python1def get_hpa_expression(tu, gene_symbol): 2 """ 3 Get protein expression data from Human Protein Atlas. 4 5 Critical for validating: 6 - Target is expressed in tumor tissue 7 - Target has differential tumor vs normal expression 8 """ 9 10 # Search for gene 11 gene_info = tu.tools.HPA_search_genes_by_query(search_query=gene_symbol) 12 13 if not gene_info: 14 return None 15 16 # Get tissue expression data 17 ensembl_id = gene_info[0].get('Ensembl') if gene_info else None 18 19 # Comparative expression in cancer cell lines 20 cell_line_data = tu.tools.HPA_get_comparative_expression_by_gene_and_cellline( 21 gene_name=gene_symbol, 22 cell_line="a549" # Lung cancer cell line 23 ) 24 25 return { 26 'gene_info': gene_info, 27 'cell_line_expression': cell_line_data 28 } 29 30def check_tumor_specific_expression(tu, gene_symbol, cancer_type): 31 """Check if target has tumor-specific expression pattern.""" 32 33 # Map cancer type to cell line 34 cancer_to_cellline = { 35 'lung': 'a549', 36 'breast': 'mcf7', 37 'liver': 'hepg2', 38 'cervical': 'hela', 39 'prostate': 'pc3' 40 } 41 42 cell_line = cancer_to_cellline.get(cancer_type.lower(), 'a549') 43 44 expression = tu.tools.HPA_get_comparative_expression_by_gene_and_cellline( 45 gene_name=gene_symbol, 46 cell_line=cell_line 47 ) 48 49 return expression
HPA Expression Validation Output:
markdown1### Expression Validation (Human Protein Atlas) 2 3| Gene | Tumor Cell Line | Expression | Normal Tissue | Differential | 4|------|-----------------|------------|---------------|--------------| 5| EGFR | A549 (lung) | High | Low-Medium | Tumor-elevated | 6| ALK | H3122 (lung) | High | Not detected | Tumor-specific | 7| HER2 | MCF7 (breast) | Medium | Low | Elevated | 8 9*Source: Human Protein Atlas via `HPA_get_comparative_expression_by_gene_and_cellline`*
2.8 Evidence Level Mapping
| CIViC Level | Our Tier | Meaning |
|---|---|---|
| A | ★★★ | FDA-approved, guideline |
| B | ★★☆ | Clinical evidence |
| C | ★★☆ | Case study |
| D | ★☆☆ | Preclinical |
| E | ☆☆☆ | Inferential |
2.4 Output Table
markdown1## Variant Interpretation 2 3| Variant | Gene | Significance | Evidence Level | Clinical Implication | 4|---------|------|--------------|----------------|---------------------| 5| L858R | EGFR | Oncogenic driver | ★★★ (Level A) | Sensitive to EGFR TKIs | 6| T790M | EGFR | Resistance | ★★★ (Level A) | Resistant to 1st/2nd gen TKIs | 7 8### COSMIC Mutation Frequency 9 10| Gene | Mutation | COSMIC Count | Primary Cancer Types | FATHMM Prediction | 11|------|----------|--------------|---------------------|-------------------| 12| EGFR | L858R | 15,234 | Lung (85%), Colorectal (5%) | Pathogenic | 13| EGFR | T790M | 8,567 | Lung (95%) | Pathogenic | 14| BRAF | V600E | 45,678 | Melanoma (50%), Colorectal (15%) | Pathogenic | 15 16### TCGA/GDC Patient Tumor Data (NEW) 17 18| Gene | TCGA Project | SSM Cases | CNV Amp | CNV Del | % Samples | 19|------|-------------|-----------|---------|---------|-----------| 20| EGFR | TCGA-LUAD | 156 | 89 | 5 | 28% | 21| EGFR | TCGA-GBM | 45 | 312 | 2 | 57% | 22| KRAS | TCGA-PAAD | 134 | 8 | 1 | 92% | 23 24*Source: GDC via `GDC_get_mutation_frequency`, `GDC_get_cnv_data`* 25 26### DepMap Target Essentiality (NEW) 27 28| Gene | Mean Effect (All) | Mean Effect (Cancer Type) | Selectivity | Interpretation | 29|------|-------------------|---------------------------|-------------|----------------| 30| EGFR | -0.15 | -0.45 (lung) | Cancer-selective | Good target | 31| KRAS | -0.82 | -0.91 (pancreatic) | Essential | Hard to target | 32| MYC | -0.95 | -0.93 | Pan-essential | Challenging target | 33 34*Effect score <-0.5 = strongly essential for cell survival* 35*Source: DepMap via `DepMap_get_gene_dependencies`* 36 37*Combined Sources: CIViC, ClinVar, COSMIC, GDC/TCGA, DepMap*
Phase 2.5: Tumor Expression Context (NEW)
2.5.1 Cell-Type Expression in Tumor (CELLxGENE)
python1def get_tumor_expression_context(tu, gene_symbol, cancer_type): 2 """Get cell-type specific expression in tumor microenvironment.""" 3 4 # Get expression in tumor and normal cells 5 expression = tu.tools.CELLxGENE_get_expression_data( 6 gene=gene_symbol, 7 tissue=cancer_type # e.g., "lung", "breast" 8 ) 9 10 # Cell metadata for context 11 cell_metadata = tu.tools.CELLxGENE_get_cell_metadata( 12 gene=gene_symbol 13 ) 14 15 # Identify tumor vs normal expression 16 tumor_expression = [c for c in expression if 'tumor' in c.get('cell_type', '').lower()] 17 normal_expression = [c for c in expression if 'normal' in c.get('cell_type', '').lower()] 18 19 return { 20 'tumor_expression': tumor_expression, 21 'normal_expression': normal_expression, 22 'ratio': calculate_tumor_normal_ratio(tumor_expression, normal_expression) 23 }
Why it matters:
- Confirms target is expressed in tumor cells (not just stroma)
- Identifies potential resistance from tumor heterogeneity
- Supports drug selection based on expression patterns
2.5.2 Output for Report
markdown1## 2.5 Tumor Expression Context 2 3### Target Expression in Tumor Microenvironment (CELLxGENE) 4 5| Gene | Tumor Cells | Normal Cells | Tumor/Normal Ratio | Interpretation | 6|------|-------------|--------------|-------------------|----------------| 7| EGFR | High (TPM=85) | Medium (TPM=25) | 3.4x | Good target | 8| MET | Medium (TPM=35) | Low (TPM=8) | 4.4x | Potential bypass | 9| AXL | High (TPM=120) | Low (TPM=15) | 8.0x | Resistance marker | 10 11### Cell Type Distribution 12 13- **EGFR-high cells**: Tumor epithelial (85%), CAFs (10%), immune (5%) 14- **MET-high cells**: Tumor epithelial (70%), endothelial (20%), immune (10%) 15 16**Clinical Relevance**: EGFR highly expressed in tumor epithelial cells. AXL overexpression in tumor suggests potential resistance mechanism. 17 18*Source: CELLxGENE Census*
Phase 3: Treatment Options
3.1 Approved Therapies
Query order:
OpenTargets_get_associated_drugs_by_target_ensemblId→ Approved drugsDailyMed_search_spls→ FDA label detailsChEMBL_get_drug_mechanisms_of_action_by_chemblId→ Mechanism
3.2 Treatment Prioritization
| Priority | Criteria |
|---|---|
| 1st Line | FDA-approved for indication + biomarker (★★★) |
| 2nd Line | Clinical trial evidence, guideline-recommended (★★☆) |
| 3rd Line | Off-label with mechanistic rationale (★☆☆) |
3.3 Output Format
markdown1## Treatment Recommendations 2 3### First-Line Options 4**1. Osimertinib (Tagrisso)** ★★★ 5- FDA-approved for EGFR T790M+ NSCLC 6- Evidence: AURA3 trial (ORR 71%, mPFS 10.1 mo) 7- Source: FDA label, PMID:27959700 8 9### Second-Line Options 10**2. Combination: Osimertinib + [Agent]** ★★☆ 11- Evidence: Phase 2 data 12- Source: NCT04487080
Phase 3.5: Pathway & Network Analysis (NEW)
3.5.1 Pathway Context (KEGG/Reactome)
python1def get_pathway_context(tu, gene_symbols, cancer_type): 2 """Get pathway context for drug combinations and resistance.""" 3 4 pathway_map = {} 5 for gene in gene_symbols: 6 # KEGG pathways 7 kegg_gene = tu.tools.kegg_find_genes(query=f"hsa:{gene}") 8 if kegg_gene: 9 pathways = tu.tools.kegg_get_gene_info(gene_id=kegg_gene[0]['id']) 10 pathway_map[gene] = pathways.get('pathways', []) 11 12 # Reactome disease score 13 reactome = tu.tools.reactome_disease_target_score( 14 disease=cancer_type, 15 target=gene 16 ) 17 pathway_map[f"{gene}_reactome"] = reactome 18 19 return pathway_map
3.5.2 Protein Interaction Network (IntAct)
python1def get_resistance_network(tu, drug_target, bypass_candidates): 2 """Find protein interactions that may mediate resistance.""" 3 4 # Get interaction network for drug target 5 network = tu.tools.intact_get_interaction_network( 6 gene=drug_target, 7 depth=2 # Include 2nd degree connections 8 ) 9 10 # Find bypass pathway candidates in network 11 bypass_in_network = [ 12 node for node in network['nodes'] 13 if node['gene'] in bypass_candidates 14 ] 15 16 return { 17 'network': network, 18 'bypass_connections': bypass_in_network, 19 'total_interactors': len(network['nodes']) 20 }
3.5.3 Output for Report
markdown1## 3.5 Pathway & Network Analysis 2 3### Signaling Pathway Context (KEGG) 4 5| Pathway | Genes Involved | Relevance | Drug Targets | 6|---------|---------------|-----------|--------------| 7| EGFR signaling (hsa04012) | EGFR, MET, ERBB3 | Primary pathway | Osimertinib, Capmatinib | 8| PI3K-AKT (hsa04151) | PIK3CA, AKT1 | Downstream | Alpelisib | 9| RAS-MAPK (hsa04010) | KRAS, BRAF, MEK | Bypass potential | Sotorasib, Trametinib | 10 11### Drug Combination Rationale 12 13**Biological basis for combinations**: 14- EGFR inhibition → compensatory MET activation (60% of cases) 15- **Rationale for EGFR + MET inhibition**: Block primary and bypass pathways 16- Network shows direct EGFR-MET interaction (IntAct: MI-score 0.75) 17 18### Protein Interaction Network (IntAct) 19 20| Target | Direct Interactors | Key Partners | Relevance | 21|--------|-------------------|--------------|-----------| 22| EGFR | 156 | MET, ERBB2, ERBB3, GRB2 | Bypass pathways | 23| MET | 89 | EGFR, HGF, GAB1 | Resistance mediator | 24 25*Source: KEGG, Reactome, IntAct*
Phase 4: Resistance Analysis
4.1 Known Mechanisms (Literature + CIViC)
python1def analyze_resistance(tu, drug_name, gene_symbol): 2 """Find known resistance mechanisms.""" 3 # CIViC resistance evidence 4 resistance = tu.tools.civic_search_evidence_items( 5 drug=drug_name, 6 evidence_type="Predictive", 7 clinical_significance="Resistance" 8 ) 9 10 # Literature search 11 papers = tu.tools.PubMed_search_articles( 12 query=f'"{drug_name}" AND "{gene_symbol}" AND resistance', 13 limit=20 14 ) 15 16 return {'civic': resistance, 'literature': papers}
4.2 Structure-Based Analysis (NvidiaNIM)
When mutation affects drug binding:
python1def model_resistance_mechanism(tu, gene_ids, mutation, drug_smiles): 2 """Model structural impact of resistance mutation.""" 3 # Get/predict structure 4 structure = tu.tools.NvidiaNIM_alphafold2(sequence=wild_type_sequence) 5 6 # Dock drug to wild-type 7 wt_docking = tu.tools.NvidiaNIM_diffdock( 8 protein=structure['structure'], 9 ligand=drug_smiles, 10 num_poses=5 11 ) 12 13 # Compare binding site changes 14 # Report: "T790M introduces bulky methionine, steric clash with erlotinib"
Phase 5: Clinical Trial Matching
5.1 Search Strategy
python1def find_trials(tu, condition, biomarker, location=None): 2 """Find matching clinical trials.""" 3 # Search with biomarker 4 trials = tu.tools.search_clinical_trials( 5 condition=condition, 6 intervention=biomarker, # e.g., "EGFR" 7 status="Recruiting", 8 pageSize=50 9 ) 10 11 # Get eligibility for top matches 12 nct_ids = [t['nct_id'] for t in trials[:20]] 13 eligibility = tu.tools.get_clinical_trial_eligibility_criteria(nct_ids=nct_ids) 14 15 return trials, eligibility
5.2 Output Format
markdown1## Clinical Trial Options 2 3| NCT ID | Phase | Agent | Biomarker Required | Status | Location | 4|--------|-------|-------|-------------------|--------|----------| 5| NCT04487080 | 2 | Amivantamab + lazertinib | EGFR T790M | Recruiting | US, EU | 6| NCT05388669 | 3 | Patritumab deruxtecan | Prior osimertinib | Recruiting | US | 7 8*Source: ClinicalTrials.gov*
Phase 5.5: Literature Evidence (NEW)
5.5.1 Published Literature (PubMed)
python1def search_treatment_literature(tu, cancer_type, biomarker, drug_name): 2 """Search for treatment evidence in literature.""" 3 4 # Drug + biomarker combination 5 drug_papers = tu.tools.PubMed_search_articles( 6 query=f'"{drug_name}" AND "{biomarker}" AND "{cancer_type}"', 7 limit=20 8 ) 9 10 # Resistance mechanisms 11 resistance_papers = tu.tools.PubMed_search_articles( 12 query=f'"{drug_name}" AND resistance AND mechanism', 13 limit=15 14 ) 15 16 return { 17 'treatment_evidence': drug_papers, 18 'resistance_literature': resistance_papers 19 }
5.5.2 Preprints (BioRxiv/MedRxiv)
python1def search_preprints(tu, cancer_type, biomarker): 2 """Search preprints for cutting-edge findings.""" 3 4 # BioRxiv cancer research 5 biorxiv = tu.tools.BioRxiv_search_preprints( 6 query=f"{cancer_type} {biomarker} treatment", 7 limit=10 8 ) 9 10 # MedRxiv clinical studies 11 medrxiv = tu.tools.MedRxiv_search_preprints( 12 query=f"{cancer_type} {biomarker}", 13 limit=10 14 ) 15 16 return { 17 'biorxiv': biorxiv, 18 'medrxiv': medrxiv 19 }
5.5.3 Citation Analysis (OpenAlex)
python1def analyze_key_papers(tu, key_papers): 2 """Get citation metrics for key evidence papers.""" 3 4 analyzed = [] 5 for paper in key_papers[:10]: 6 work = tu.tools.openalex_search_works( 7 query=paper['title'], 8 limit=1 9 ) 10 if work: 11 analyzed.append({ 12 'title': paper['title'], 13 'citations': work[0].get('cited_by_count', 0), 14 'year': work[0].get('publication_year'), 15 'open_access': work[0].get('is_oa', False) 16 }) 17 18 return analyzed
5.5.4 Output for Report
markdown1## 5.5 Literature Evidence 2 3### Key Clinical Studies 4 5| PMID | Title | Year | Citations | Evidence Type | 6|------|-------|------|-----------|---------------| 7| 27959700 | AURA3: Osimertinib vs chemotherapy... | 2017 | 2,450 | Phase 3 trial | 8| 30867819 | Mechanisms of osimertinib resistance... | 2019 | 680 | Review | 9| 34125020 | Amivantamab + lazertinib Phase 1... | 2021 | 320 | Phase 1 trial | 10 11### Recent Preprints (Not Peer-Reviewed) 12 13| Source | Title | Posted | Key Finding | 14|--------|-------|--------|-------------| 15| MedRxiv | Novel C797S resistance strategy... | 2024-01 | Fourth-gen TKI | 16| BioRxiv | scRNA-seq reveals resistance... | 2024-02 | Cell state switch | 17 18**⚠️ Note**: Preprints have NOT undergone peer review. Interpret with caution. 19 20### Evidence Summary 21 22| Category | Papers Found | High-Impact (>100 citations) | 23|----------|--------------|------------------------------| 24| Treatment efficacy | 25 | 8 | 25| Resistance mechanisms | 18 | 5 | 26| Combinations | 12 | 3 | 27 28*Source: PubMed, BioRxiv, MedRxiv, OpenAlex*
Report Template
File: [PATIENT_ID]_oncology_report.md
markdown1# Precision Oncology Report 2 3**Patient ID**: [ID] | **Date**: [Date] 4 5## Patient Profile 6- **Diagnosis**: [Cancer type, stage] 7- **Molecular Profile**: [Mutations, fusions] 8- **Prior Therapy**: [Previous treatments] 9 10--- 11 12## Executive Summary 13[2-3 sentence summary of key findings and recommendation] 14 15--- 16 17## 1. Variant Interpretation 18[Table with variants, significance, evidence levels] 19 20## 2. Treatment Recommendations 21### First-Line Options 22[Prioritized list with evidence] 23 24### Second-Line Options 25[Alternative approaches] 26 27## 3. Resistance Analysis (if applicable) 28[Mechanism explanation, strategies to overcome] 29 30## 4. Clinical Trial Options 31[Matched trials with eligibility] 32 33## 5. Next Steps 341. [Specific actionable recommendation] 352. [Follow-up testing if needed] 363. [Referral if appropriate] 37 38--- 39 40## Data Sources 41| Source | Query | Data Retrieved | 42|--------|-------|----------------| 43| CIViC | [gene] [variant] | Evidence items | 44| ClinicalTrials.gov | [condition] | Active trials |
Completeness Checklist
Before finalizing report:
- All variants interpreted with evidence levels
- ≥1 first-line recommendation with ★★★ evidence (or explain why none)
- Resistance mechanism addressed (if prior therapy failed)
- ≥3 clinical trials listed (or "no matching trials")
- Executive summary is actionable (says what to DO)
- All recommendations have source citations
Fallback Chains
| Primary | Fallback | Use When |
|---|---|---|
| CIViC variant | OncoKB (literature) | Variant not in CIViC |
| OpenTargets drugs | ChEMBL activities | No approved drugs found |
| ClinicalTrials.gov | WHO ICTRP | US trials insufficient |
| NvidiaNIM_alphafold2 | AlphaFold DB | API unavailable |
Evidence Grading
| Tier | Symbol | Criteria | Example |
|---|---|---|---|
| T1 | ★★★ | FDA-approved, Level A evidence | Osimertinib for T790M |
| T2 | ★★☆ | Phase 2/3 data, Level B | Combination trials |
| T3 | ★☆☆ | Preclinical, Level D | Novel mechanisms |
| T4 | ☆☆☆ | Computational only | Docking predictions |
Tool Reference
See TOOLS_REFERENCE.md for complete tool documentation.
FAQ & Installation Steps
These questions and steps mirror the structured data on this page for better search understanding.
? Frequently Asked Questions
What is tooluniverse-precision-oncology?
Ideal for Medical Research Agents requiring precision oncology treatment recommendations based on molecular profiles and evidence-graded analysis. Provide actionable treatment recommendations for cancer patients based on molecular profile. Interprets tumor mutations, identifies FDA-approved therapies, finds resistance mechanisms, matches clinical trials. Use when oncologist asks about treatment options for specific mutations (EGFR, KRAS, BRAF, etc.), therapy resistance, or clinical trial eligibility.
How do I install tooluniverse-precision-oncology?
Run the command: npx killer-skills add mims-harvard/ToolUniverse/tooluniverse-precision-oncology. It works with Cursor, Windsurf, VS Code, Claude Code, and 19+ other IDEs.
What are the use cases for tooluniverse-precision-oncology?
Key use cases include: Generating personalized treatment plans based on molecular profiles, Analyzing clinical trials data for precision oncology treatment options, Creating evidence-graded reports for cancer treatment recommendations.
Which IDEs are compatible with tooluniverse-precision-oncology?
This skill is compatible with Cursor, Windsurf, VS Code, Trae, Claude Code, OpenClaw, Aider, Codex, OpenCode, Goose, Cline, Roo Code, Kiro, Augment Code, Continue, GitHub Copilot, Sourcegraph Cody, and Amazon Q Developer. Use the Killer-Skills CLI for universal one-command installation.
Are there any limitations for tooluniverse-precision-oncology?
Requires access to CIViC, ClinVar, OpenTargets, and ClinicalTrials.gov databases. Limited to precision oncology treatment recommendations.
↓ How To Install
-
1. Open your terminal
Open the terminal or command line in your project directory.
-
2. Run the install command
Run: npx killer-skills add mims-harvard/ToolUniverse/tooluniverse-precision-oncology. The CLI will automatically detect your IDE or AI agent and configure the skill.
-
3. Start using the skill
The skill is now active. Your AI agent can use tooluniverse-precision-oncology immediately in the current project.