Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Map environmental and industrial chemicals to adverse outcome pathways (AOPs) — molecular initiating event to organ-level toxicity. Uses AOPWiki, GHS classification, IARC carcinogen status, and LD50 data. Use for environmental/industrial chemical risk assessment, regulatory-grade hazard characterization, and AOP stressor mapping. Distinct from drug-safety analysis (use tooluniverse-pharmacovigilance for drugs).
.claude/skills/tooluniverse-adverse-outcome-pathway/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | — | — |
| case-15 | ✗→✓ | ▲ Improved | — | — |
| case-04 | ✗→✓ | ▲ Improved | — | — |
| case-13 | ✗→✓ | ▲ Improved | — | — |
| case-18 | ✗→✓ | ▲ Improved | — | — |
Distinct from drug safety (see tooluniverse-toxicology): this skill targets environmental and industrial chemicals where the focus is AOP stressor mapping, GHS classification, LD50 hazard quantification, and IARC carcinogen status — not FAERS signals or FDA drug labels.
Apply when researcher asks about:
Do NOT use for FDA-approved drugs with FAERS data — use tooluniverse-toxicology instead.
| Tool | Purpose | Key Params | |------|---------|-----------| | AOPWiki_list_aops | Discover AOPs by keyword | keyword (organ, effect, or target name) | | AOPWiki_get_aop | Full AOP details: MIE, key events, stressors | aop_id (int) | | PubChemTox_get_toxicity_summary | Narrative toxicity overview | cid (PubChem CID) | | PubChemTox_get_ghs_classification | GHS hazard category + pictograms | cid | | PubChemTox_get_carcinogen_classification | IARC/NTP/EPA carcinogen status | cid | | PubChemTox_get_toxicity_values | LD50/LC50 by route and species | cid | | PubChemTox_get_acute_effects | Signs and symptoms of acute exposure | cid | | CTD_get_chemical_gene_interactions | Chemical-gene molecular interactions | input_terms (name or MeSH ID) | | CTD_get_chemical_diseases | Chemical-disease associations | input_terms | | PubChem_get_CID_by_compound_name | Resolve compound name to PubChem CID | name |
Resolve chemical name to PubChem CID before all PubChemTox calls.
PubChem_get_CID_by_compound_name(name="benzo[a]pyrene")
-> cid: 9153 (use for all PubChemTox calls)Note: CTD tools accept the chemical name directly (input_terms param) — no CID needed.
Find relevant AOPs by searching organ targets and mechanism keywords.
AOPWiki_list_aops(keyword="lung") # organ-level
AOPWiki_list_aops(keyword="DNA damage") # mechanism-level
AOPWiki_list_aops(keyword="AhR") # receptor-levelSelect 2-4 candidate AOPs from results, then retrieve full details:
AOPWiki_get_aop(aop_id=58) # returns MIE, key events, stressors, biological plausibilityKey fields in AOPWiki_get_aop response:
stressors: list of chemicals that trigger this AOP (check if query compound is listed)molecular_initiating_event: the first molecular perturbationkey_events: ordered chain of biological eventsadverse_outcome: apical regulatory endpointRun all four hazard queries in parallel using the resolved CID:
PubChemTox_get_ghs_classification(cid=9153) # GHS category + pictogram
PubChemTox_get_carcinogen_classification(cid=9153) # IARC Group 1/2A/2B/3
PubChemTox_get_toxicity_values(cid=9153) # LD50 by route/species
PubChemTox_get_acute_effects(cid=9153) # signs/symptomsNote: PubChemTox_get_target_organs sometimes returns no data — treat as optional.
Map chemical to gene targets and disease associations:
CTD_get_chemical_gene_interactions(input_terms="benzo[a]pyrene")
CTD_get_chemical_diseases(input_terms="benzo[a]pyrene")Cross-reference CTD gene targets with AOP key event genes from Phase 2.
| Tool | Required | Optional | Notes | |------|---------|---------|-------| | AOPWiki_list_aops | keyword | — | Use organ ("liver"), effect ("apoptosis"), or receptor ("PPARalpha") | | AOPWiki_get_aop | aop_id | — | Integer ID from list_aops output | | PubChemTox_get_toxicity_summary | cid | — | PubChem CID integer | | PubChemTox_get_ghs_classification | cid | — | Returns pictogram_labels e.g. "Health Hazard" | | PubChemTox_get_carcinogen_classification | cid | — | IARC Group in classifications[].classification | | PubChemTox_get_toxicity_values | cid | — | Values like "LD50 Rat oral 2400 mg/kg" | | PubChemTox_get_acute_effects | cid | — | Sometimes sparse; not all compounds have data | | CTD_get_chemical_gene_interactions | input_terms | — | Accepts name or MeSH ID (e.g., "D001564") | | CTD_get_chemical_diseases | input_terms | — | Filter DirectEvidence = "marker/mechanism" for curated | | PubChem_get_CID_by_compound_name | name | — | Returns CID + SMILES; required before PubChemTox calls |
python# Pattern: Confirm compound is a stressor in a specific AOP aop = AOPWiki_get_aop(aop_id=58) stressors = [s["name"] for s in aop["data"]["stressors"]] # Check if query chemical appears in stressors list # Pattern: Extract curated CTD disease associations only diseases = CTD_get_chemical_diseases(input_terms="rotenone") curated = [d for d in diseases["data"] if d.get("DirectEvidence")] # Pattern: GHS carcinogen check carcinogen = PubChemTox_get_carcinogen_classification(cid=9153) iarc = [c for c in carcinogen["data"]["classifications"] if "IARC" in c.get("source", "")]
| Grade | Criteria | Example | |-------|----------|---------| | Strong | AOP in OECD-endorsed status, compound listed as stressor, CTD + AOPWiki concordant | AOP 58 (AhR → liver tumor) endorsed, benzoa]pyrene confirmed stressor | | Moderate | AOP under review or well-documented, compound class match but not individually listed | AOP links PPARalpha activation to liver effects; query compound is a fibrate analog | | Weak | AOP in development, compound not listed but shares MIE target via CTD gene overlap | CTD shows gene target overlap with AOP key event genes, but no direct stressor listing | | Insufficient | No AOP found, no CTD gene-disease link, hazard data sparse | Novel compound with no toxicological database entries |
| Primary | Fallback | When | |---------|---------|------| | AOPWiki_list_aops with specific keyword | Broader organ term | No results | | PubChemTox_get_target_organs | PubChemTox_get_toxicity_summary | Returns empty | | CTD_get_chemical_diseases | CTD_get_gene_diseases + gene from CTD interactions | Compound name not recognized |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 15 counted toward the lift figure. The other 7 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +23 percentage points is the difference between those two pass rates over the 15 comparable cases. 4 cases got worse with the skill loaded, and they are included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.