[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DAXHZH8AKP4CFEBF7M0EEC":3,"skill-same:01M6DAXHZH8AKP4CFEBF7M0EEC":54},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":29,"linkOnly":30,"markdownContent":31,"markdownBody":32,"frontMatter":33,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":14,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":39,"install":40,"resources":53},"01M6DAXHZH8AKP4CFEBF7M0EEC","tooluniverse-small-molecule-discovery",null,"Find, characterize, and source small molecules for chemical biology and drug discovery. Covers compound identification (PubChem, ChEMBL), structure search, binding affinity data, ADMET\u002Fdrug-likeness prediction, and commercial availability (eMolecules, Enamine). Use when asked to find compounds, assess drug-likeness, search by structure, retrieve binding affinities, or source chemicals.","Prekzursil\u002Fagent-skills-toolchain","Prekzursil","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F54636077?v=4","01M6DACZ1PCQHD99SCR1YXG28B","Andrei Mihai Visalon","01M6DACZ670WZF535V3WYYSS4Z",0,"MIT","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Flibrary\u002Fskills\u002Ftooluniverse-small-molecule-discovery\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28],"discovery","tooluniverse small molecule discovery","search","data","find","commercial","use","compound","structure","chemical","2026-11-10 10:12:30",false,"---\nname: tooluniverse-small-molecule-discovery\ndescription: >\n  Find, characterize, and source small molecules for chemical biology and drug\n  discovery. Covers compound identification (PubChem, ChEMBL), structure search,\n  binding affinity data, ADMET\u002Fdrug-likeness prediction, and commercial availability\n  (eMolecules, Enamine). Use when asked to find compounds, assess drug-likeness,\n  search by structure, retrieve binding affinities, or source chemicals.\n---\n\n# Small Molecule Discovery Skill\n\nSystematic small molecule identification, characterization, and sourcing using PubChem, ChEMBL, BindingDB, ADMET-AI, SwissADME, eMolecules, and Enamine. Covers the full pipeline from compound name to structure, activity, ADMET properties, and commercial procurement.\n\n## Domain Reasoning\n\nDrug-likeness is not a binary property. Lipinski's Rule of 5 was derived from orally administered, passively absorbed drugs and has many well-known exceptions: natural products, macrocycles, PROTACs, and many approved drugs violate one or more rules. The relevant question is not \"does this pass Ro5?\" but \"does this compound's physicochemical profile match the requirements of the target, the intended route of administration, and the therapeutic context?\" Focus on the specific requirements, not rigid rules.\n\n## LOOK UP DON'T GUESS\n\n- Compound identity (CID, ChEMBL ID, SMILES): call `PubChem_get_CID_by_compound_name` and `ChEMBL_search_molecules`; do not assume IDs from memory.\n- ADMET properties: run `SwissADME_calculate_adme` or `ADMETAI_predict_*` on the actual SMILES; do not estimate logP, TPSA, or bioavailability.\n- Binding affinities against a target: query `ChEMBL_search_activities` or `BindingDB_get_ligands_by_uniprot`; never cite IC50 values from memory.\n- Commercial availability: check `eMolecules_search` or `Enamine_search_catalog`; do not assume availability.\n\n---\n\n**KEY PRINCIPLES**:\n1. **Resolve identity first** - Always get CID and ChEMBL ID before research\n2. **SMILES required for property prediction** - Extract canonical SMILES from PubChem early\n3. **English names in tools** - Use IUPAC or common English names; avoid abbreviations in tool calls\n4. **BindingDB is often unavailable** - Fall back to ChEMBL activities when BindingDB times out\n5. **eMolecules\u002FEnamine return URLs** - These tools generate search URLs, not direct data; note this to user\n\n---\n\n## COMPUTE, DON'T DESCRIBE\nWhen 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.\n\n## When to Use\n\n- \"Find information about compound X\"\n- \"What is the drug-likeness of this SMILES?\"\n- \"Show binding affinities for EGFR inhibitors\"\n- \"Search for compounds similar to imatinib\"\n- \"Is this compound commercially available?\"\n- \"What are the ADMET properties of this molecule?\"\n- \"Find ChEMBL activities for target Y\"\n- \"Predict targets for this small molecule\"\n\n---\n\n## Key Tools\n\n| Tool | Purpose | Key Params |\n|------|---------|-----------|\n| `PubChem_get_CID_by_compound_name` | Name to CID lookup | `compound_name` |\n| `PubChem_get_CID_by_SMILES` | SMILES to CID lookup | `smiles` |\n| `PubChem_get_compound_properties_by_CID` | MW, formula, SMILES, InChIKey | `cid`, `properties` |\n| `PubChem_search_compounds_by_similarity` | Find structurally similar compounds | `smiles`, `threshold` (0-100) |\n| `PubChem_search_compounds_by_substructure` | Substructure search | `smiles` |\n| `PubChem_get_compound_synonyms_by_CID` | All names\u002Fsynonyms | `cid` |\n| `ChEMBL_search_molecules` | Search ChEMBL by name or ID | `query` |\n| `ChEMBL_get_molecule` | Full ChEMBL molecule record | `chembl_id` |\n| `ChEMBL_search_similar_molecules` | Similarity search in ChEMBL | `query` (SMILES or ChEMBL ID) |\n| `ChEMBL_search_activities` | Binding affinities and assay data | `molecule_chembl_id`, `target_chembl_id`, `pchembl_value__gte` |\n| `ChEMBL_get_drug_mechanisms` | MOA for approved drugs | `drug_chembl_id` or `drug_name` |\n| `ChEMBL_search_targets` | Find targets by name | `query`, `organism` |\n| `ChEMBL_get_target_activities` | All ligands for a target | `target_chembl_id` |\n| `SwissADME_calculate_adme` | Physicochemical + ADMET properties | `operation=\"calculate_adme\"`, `smiles` |\n| `SwissADME_check_druglikeness` | Lipinski, Veber, Egan rules | `operation=\"check_druglikeness\"`, `smiles` |\n| `ADMETAI_predict_physicochemical_properties` | MW, logP, TPSA, HBD\u002FHBA | `smiles` (list) |\n| `ADMETAI_predict_bioavailability` | Oral bioavailability prediction | `smiles` (list) |\n| `ADMETAI_predict_BBB_penetrance` | Blood-brain barrier permeability | `smiles` (list) |\n| `ADMETAI_predict_toxicity` | hERG, DILI, mutagenicity | `smiles` (list) |\n| `ADMETAI_predict_CYP_interactions` | CYP450 inhibition\u002Fsubstrate | `smiles` (list) |\n| `SwissTargetPrediction_predict` | Predict protein targets for compound | `operation=\"predict\"`, `smiles` |\n| `eMolecules_search` | Find commercially available compounds | `query` (name or keyword) |\n| `eMolecules_search_smiles` | Structure-based commercial search | `smiles` |\n| `eMolecules_get_vendors` | Find vendors for a specific compound | `compound_id` |\n| `Enamine_search_catalog` | Search Enamine screening library | `query` |\n| `Enamine_search_smiles` | Search Enamine by structure | `smiles` |\n| `Enamine_get_libraries` | List Enamine compound libraries | (none required) |\n\n---\n\n## Workflow\n\n### Phase 1: Compound Identification\n\n```\n# Step 1: Name -> CID (PubChem canonical identity)\nPubChem_get_CID_by_compound_name(compound_name=\"imatinib\")\n# -> CID: 5291\n\n# Step 2: Get SMILES and properties (needed for all downstream tools)\nPubChem_get_compound_properties_by_CID(\n    cid=\"5291\",\n    properties=\"MolecularFormula,MolecularWeight,CanonicalSMILES,InChIKey,IUPACName\"\n)\n# -> canonical SMILES, InChIKey (global identifier)\n\n# Step 3: Get ChEMBL ID (for activity data)\nChEMBL_search_molecules(query=\"imatinib\")\n# -> ChEMBL ID (e.g., \"CHEMBL941\")\n\n# Step 4: Get all synonyms (brand names, INN, etc.)\nPubChem_get_compound_synonyms_by_CID(cid=\"5291\")\n```\n\n**ID resolution priority**:\n1. Start with PubChem CID (most universal)\n2. Get ChEMBL ID (for bioactivity data)\n3. Use canonical SMILES for structure-based searches and ADMET\n\n### Phase 2: Structure-Based Search\n\n**Similarity search** (find analogs):\n```\nPubChem_search_compounds_by_similarity(\n    smiles=\"CANONICAL_SMILES\",\n    threshold=85   # Tanimoto threshold 0-100; 85 = highly similar\n)\n# Returns: list of CIDs of similar compounds\n\nChEMBL_search_similar_molecules(query=\"CHEMBL941\")  # Or SMILES\n# Returns: ChEMBL entries sorted by similarity\n```\n\n**Substructure search** (find compounds containing a scaffold):\n```\nPubChem_search_compounds_by_substructure(smiles=\"SCAFFOLD_SMILES\")\n# Returns: CIDs of compounds containing the scaffold\n```\n\n### Phase 3: Bioactivity and Binding Affinity\n\n**Get all activities for a compound** (across all targets):\n```\nChEMBL_search_activities(\n    molecule_chembl_id=\"CHEMBL941\",\n    pchembl_value__gte=6,   # pIC50\u002FKi >= 6 = IC50\u002FKi \u003C= 1 µM\n    limit=50\n)\n# Returns: assay_type, target_name, pchembl_value, units\n```\n\n**Get all ligands for a target**:\n```\n# First find target ChEMBL ID\nChEMBL_search_targets(query=\"EGFR\", organism=\"Homo sapiens\")\n# -> target_chembl_id, e.g., \"CHEMBL203\"\n\nChEMBL_get_target_activities(\n    target_chembl_id=\"CHEMBL203\"\n)\n# Returns: all compounds with binding data against this target\n```\n\n**BindingDB** (when available — often times out):\n```\nBindingDB_get_ligands_by_uniprot(uniprot_id=\"P00533\")  # EGFR\n# Returns: Ki, IC50, Kd data with literature references\n# Note: BindingDB REST API is frequently unavailable; fall back to ChEMBL\n```\n\n**pChEMBL Value interpretation**:\n| pChEMBL | IC50 \u002F Ki | Affinity |\n|---------|-----------|---------|\n| >= 9 | \u003C= 1 nM | Very potent |\n| >= 7 | \u003C= 100 nM | Potent |\n| >= 6 | \u003C= 1 µM | Moderate |\n| >= 5 | \u003C= 10 µM | Weak |\n| \u003C 5 | > 10 µM | Inactive |\n\n### Phase 4: Drug-likeness and ADMET\n\n**SwissADME** (comprehensive, requires SMILES string — not list):\n```\nSwissADME_calculate_adme(\n    operation=\"calculate_adme\",\n    smiles=\"CANONICAL_SMILES\"\n)\n# Returns: physicochemical, lipophilicity, water solubility, pharmacokinetics,\n#          drug-likeness scores (Lipinski, Veber, Egan, Muegge), PAINS alerts\n\nSwissADME_check_druglikeness(\n    operation=\"check_druglikeness\",\n    smiles=\"CANONICAL_SMILES\"\n)\n# Returns: Lipinski\u002FVeber\u002FEgan pass\u002Ffail + lead-likeness\n```\n\n**ADMET-AI** (ML-based, requires SMILES as list — install tooluniverse[ml]):\n```\nADMETAI_predict_physicochemical_properties(smiles=[\"CANONICAL_SMILES\"])\nADMETAI_predict_bioavailability(smiles=[\"CANONICAL_SMILES\"])\nADMETAI_predict_BBB_penetrance(smiles=[\"CANONICAL_SMILES\"])\nADMETAI_predict_toxicity(smiles=[\"CANONICAL_SMILES\"])\nADMETAI_predict_CYP_interactions(smiles=[\"CANONICAL_SMILES\"])\n```\n\n**Note**: ADMET-AI requires `pip install tooluniverse[ml]`. If unavailable, use SwissADME as fallback.\n\n**Key drug-likeness rules**:\n- **Lipinski Ro5**: MW \u003C= 500, logP \u003C= 5, HBD \u003C= 5, HBA \u003C= 10 (oral drugs)\n- **Veber**: TPSA \u003C= 140 Å², rotatable bonds \u003C= 10 (oral bioavailability)\n- **Lead-like**: MW \u003C= 350, logP \u003C= 3, HBD \u003C= 3, HBA \u003C= 6 (fragment\u002Flead)\n\n### Phase 5: Target Prediction\n\nWhen you have a novel compound and want to predict targets:\n```\nSwissTargetPrediction_predict(\n    operation=\"predict\",\n    smiles=\"CANONICAL_SMILES\"\n)\n# Returns: predicted protein targets with probability scores\n# Note: SwissTargetPrediction uses structure-similarity to known drug-target pairs\n# May time out for complex molecules\n```\n\n### Phase 6: Commercial Availability\n\n**eMolecules** (aggregates 200+ suppliers — returns search URL, not direct data):\n```\neMolecules_search(query=\"compound_name\")\n# -> Returns search_url to visit on eMolecules.com\n\neMolecules_search_smiles(smiles=\"CANONICAL_SMILES\")\n# -> Returns URL for exact\u002Fsimilar structure search\n```\n\n**Enamine** (37B+ make-on-demand compounds — returns URL when API unavailable):\n```\nEnamine_search_catalog(query=\"compound_name\")\n# -> If API available: returns catalog entries with catalog_id, price\n# -> If API unavailable: returns search_url for manual search\n\nEnamine_search_smiles(smiles=\"CANONICAL_SMILES\")\n# -> Exact or similarity structure search\n\nEnamine_get_libraries()\n# -> Lists available Enamine screening collections\n```\n\n**Note**: eMolecules and Enamine APIs frequently return search URLs rather than live data. Present these to the user as \"search here\" links.\n\n---\n\n## Tool Parameter Reference\n\n| Tool | Required Params | Notes |\n|------|----------------|-------|\n| `PubChem_get_CID_by_compound_name` | `compound_name` | Returns list of CIDs; take first or most relevant |\n| `PubChem_get_CID_by_SMILES` | `smiles` | Use canonical SMILES |\n| `PubChem_get_compound_properties_by_CID` | `cid`, `properties` | `cid` as string; `properties` comma-separated |\n| `PubChem_search_compounds_by_similarity` | `smiles` | `threshold` (int 0-100, default 90) |\n| `PubChem_search_compounds_by_substructure` | `smiles` | Returns CIDs matching scaffold |\n| `ChEMBL_search_molecules` | `query` | Name, ChEMBL ID, or InChIKey |\n| `ChEMBL_get_molecule` | `chembl_id` | Full format: \"CHEMBL941\" not \"941\" |\n| `ChEMBL_search_similar_molecules` | `query` | SMILES or ChEMBL ID |\n| `ChEMBL_search_activities` | `molecule_chembl_id` OR `target_chembl_id` | Use `pchembl_value__gte=6` to filter potent |\n| `ChEMBL_get_drug_mechanisms` | `drug_chembl_id` or `drug_name` | For approved drugs only |\n| `ChEMBL_search_targets` | `query` | Add `organism=\"Homo sapiens\"` to filter human |\n| `ChEMBL_get_target_activities` | `target_chembl_id` | Returns all ligands for target |\n| `SwissADME_calculate_adme` | `operation=\"calculate_adme\"`, `smiles` | SMILES as string (not list) |\n| `SwissADME_check_druglikeness` | `operation=\"check_druglikeness\"`, `smiles` | SMILES as string |\n| `ADMETAI_predict_*` | `smiles` | Must be a **list**: `[\"SMILES\"]` not `\"SMILES\"` |\n| `SwissTargetPrediction_predict` | `operation=\"predict\"`, `smiles` | May time out |\n| `eMolecules_search` | `query` | Returns search URL (no live data) |\n| `eMolecules_search_smiles` | `smiles` | Canonical SMILES |\n| `eMolecules_get_vendors` | `compound_id` | eMolecules internal ID |\n| `Enamine_search_catalog` | `query` | Returns URL when API unavailable |\n| `Enamine_search_smiles` | `smiles` | `search_type`: \"exact\", \"similarity\", \"substructure\" |\n| `Enamine_get_compound` | `enamine_id` | Enamine-specific catalog ID |\n| `BindingDB_get_ligands_by_uniprot` | `uniprot_id` | Frequently unavailable — use ChEMBL as fallback |\n| `BindingDB_get_targets_by_compound` | `smiles` | SMILES-based target lookup |\n\n---\n\n## Common Patterns\n\n### Pattern 1: Full Compound Profile\n```\nInput: Compound name (e.g., \"imatinib\")\nFlow:\n  1. PubChem_get_CID_by_compound_name -> CID + SMILES\n  2. ChEMBL_search_molecules -> ChEMBL ID\n  3. PubChem_get_compound_properties_by_CID -> physicochemical props\n  4. SwissADME_calculate_adme \u002F ADMETAI_predict_* -> ADMET profile\n  5. ChEMBL_search_activities(molecule_chembl_id) -> binding data\n  6. ChEMBL_get_drug_mechanisms -> MOA (if approved drug)\nOutput: Complete compound profile with identity, ADMET, and activity data\n```\n\n### Pattern 2: Analog Discovery\n```\nInput: Reference compound SMILES\nFlow:\n  1. PubChem_search_compounds_by_similarity(smiles, threshold=85) -> similar CIDs\n  2. ChEMBL_search_similar_molecules(query=smiles) -> ChEMBL analogs\n  3. For each hit: PubChem_get_compound_properties_by_CID -> properties\n  4. SwissADME_check_druglikeness -> filter by drug-likeness\nOutput: Ranked list of analogs with activity data and drug-likeness scores\n```\n\n### Pattern 3: Target-Based Compound Search\n```\nInput: Target name (e.g., \"EGFR\")\nFlow:\n  1. ChEMBL_search_targets(query=\"EGFR\", organism=\"Homo sapiens\") -> target_chembl_id\n  2. ChEMBL_get_target_activities(target_chembl_id) -> all ligands with Ki\u002FIC50\n  3. Filter by pchembl_value >= 7 (potent compounds)\n  4. For top hits: SwissADME_check_druglikeness -> assess drug-likeness\n  5. eMolecules_search(query=compound_name) -> check commercial availability\nOutput: Prioritized list of potent, drug-like, commercially available compounds\n```\n\n### Pattern 4: ADMET Risk Assessment\n```\nInput: Novel compound SMILES\nFlow:\n  1. SwissADME_calculate_adme(operation=\"calculate_adme\", smiles) -> full ADMET\n  2. ADMETAI_predict_toxicity(smiles=[smiles]) -> hERG, DILI, mutagenicity\n  3. ADMETAI_predict_CYP_interactions(smiles=[smiles]) -> drug-drug interaction risk\n  4. ADMETAI_predict_BBB_penetrance(smiles=[smiles]) -> CNS penetration\nOutput: ADMET risk profile with flagged liabilities\n```\n\n---\n\n## Fallback Chains\n\n| Primary | Fallback | When |\n|---------|----------|------|\n| `BindingDB_get_ligands_by_uniprot` | `ChEMBL_get_target_activities` | BindingDB API unavailable |\n| `ADMETAI_predict_*` | `SwissADME_calculate_adme` | ml dependencies not installed |\n| `Enamine_search_catalog` | Returns URL only | API returns HTTP 500 (common) |\n| `SwissTargetPrediction_predict` | `ChEMBL_search_similar_molecules` + known targets | Prediction times out |\n| `PubChem_get_CID_by_compound_name` | `ChEMBL_search_molecules(query=name)` | Name not in PubChem |\n\n---\n\n## Limitations\n\n- **BindingDB**: REST API frequently times out; ChEMBL is the reliable alternative for binding data\n- **Enamine API**: Returns HTTP 500 often; tool provides search URL as fallback\n- **eMolecules**: No public API; tool generates search URLs only\n- **ADMET-AI**: Requires `pip install tooluniverse[ml]`; not always available in base install\n- **SwissTargetPrediction**: Web scraping-based; may time out for complex molecules\n- **SMILES format**: ADMET-AI requires a **list** `[\"SMILES\"]`; SwissADME requires a **string** `\"SMILES\"`\n- **ChEMBL IDs**: Always use full format `\"CHEMBL941\"`, never just `\"941\"`\n","# Small Molecule Discovery Skill\n\nSystematic small molecule identification, characterization, and sourcing using PubChem, ChEMBL, BindingDB, ADMET-AI, SwissADME, eMolecules, and Enamine. Covers the full pipeline from compound name to structure, activity, ADMET properties, and commercial procurement.\n\n## Domain Reasoning\n\nDrug-likeness is not a binary property. Lipinski's Rule of 5 was derived from orally administered, passively absorbed drugs and has many well-known exceptions: natural products, macrocycles, PROTACs, and many approved drugs violate one or more rules. The relevant question is not \"does this pass Ro5?\" but \"does this compound's physicochemical profile match the requirements of the target, the intended route of administration, and the therapeutic context?\" Focus on the specific requirements, not rigid rules.\n\n## LOOK UP DON'T GUESS\n\n- Compound identity (CID, ChEMBL ID, SMILES): call `PubChem_get_CID_by_compound_name` and `ChEMBL_search_molecules`; do not assume IDs from memory.\n- ADMET properties: run `SwissADME_calculate_adme` or `ADMETAI_predict_*` on the actual SMILES; do not estimate logP, TPSA, or bioavailability.\n- Binding affinities against a target: query `ChEMBL_search_activities` or `BindingDB_get_ligands_by_uniprot`; never cite IC50 values from memory.\n- Commercial availability: check `eMolecules_search` or `Enamine_search_catalog`; do not assume availability.\n\n---\n\n**KEY PRINCIPLES**:\n1. **Resolve identity first** - Always get CID and ChEMBL ID before research\n2. **SMILES required for property prediction** - Extract canonical SMILES from PubChem early\n3. **English names in tools** - Use IUPAC or common English names; avoid abbreviations in tool calls\n4. **BindingDB is often unavailable** - Fall back to ChEMBL activities when BindingDB times out\n5. **eMolecules\u002FEnamine return URLs** - These tools generate search URLs, not direct data; note this to user\n\n---\n\n## COMPUTE, DON'T DESCRIBE\nWhen 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.\n\n## When to Use\n\n- \"Find information about compound X\"\n- \"What is the drug-likeness of this SMILES?\"\n- \"Show binding affinities for EGFR inhibitors\"\n- \"Search for compounds similar to imatinib\"\n- \"Is this compound commercially available?\"\n- \"What are the ADMET properties of this molecule?\"\n- \"Find ChEMBL activities for target Y\"\n- \"Predict targets for this small molecule\"\n\n---\n\n## Key Tools\n\n| Tool | Purpose | Key Params |\n|------|---------|-----------|\n| `PubChem_get_CID_by_compound_name` | Name to CID lookup | `compound_name` |\n| `PubChem_get_CID_by_SMILES` | SMILES to CID lookup | `smiles` |\n| `PubChem_get_compound_properties_by_CID` | MW, formula, SMILES, InChIKey | `cid`, `properties` |\n| `PubChem_search_compounds_by_similarity` | Find structurally similar compounds | `smiles`, `threshold` (0-100) |\n| `PubChem_search_compounds_by_substructure` | Substructure search | `smiles` |\n| `PubChem_get_compound_synonyms_by_CID` | All names\u002Fsynonyms | `cid` |\n| `ChEMBL_search_molecules` | Search ChEMBL by name or ID | `query` |\n| `ChEMBL_get_molecule` | Full ChEMBL molecule record | `chembl_id` |\n| `ChEMBL_search_similar_molecules` | Similarity search in ChEMBL | `query` (SMILES or ChEMBL ID) |\n| `ChEMBL_search_activities` | Binding affinities and assay data | `molecule_chembl_id`, `target_chembl_id`, `pchembl_value__gte` |\n| `ChEMBL_get_drug_mechanisms` | MOA for approved drugs | `drug_chembl_id` or `drug_name` |\n| `ChEMBL_search_targets` | Find targets by name | `query`, `organism` |\n| `ChEMBL_get_target_activities` | All ligands for a target | `target_chembl_id` |\n| `SwissADME_calculate_adme` | Physicochemical + ADMET properties | `operation=\"calculate_adme\"`, `smiles` |\n| `SwissADME_check_druglikeness` | Lipinski, Veber, Egan rules | `operation=\"check_druglikeness\"`, `smiles` |\n| `ADMETAI_predict_physicochemical_properties` | MW, logP, TPSA, HBD\u002FHBA | `smiles` (list) |\n| `ADMETAI_predict_bioavailability` | Oral bioavailability prediction | `smiles` (list) |\n| `ADMETAI_predict_BBB_penetrance` | Blood-brain barrier permeability | `smiles` (list) |\n| `ADMETAI_predict_toxicity` | hERG, DILI, mutagenicity | `smiles` (list) |\n| `ADMETAI_predict_CYP_interactions` | CYP450 inhibition\u002Fsubstrate | `smiles` (list) |\n| `SwissTargetPrediction_predict` | Predict protein targets for compound | `operation=\"predict\"`, `smiles` |\n| `eMolecules_search` | Find commercially available compounds | `query` (name or keyword) |\n| `eMolecules_search_smiles` | Structure-based commercial search | `smiles` |\n| `eMolecules_get_vendors` | Find vendors for a specific compound | `compound_id` |\n| `Enamine_search_catalog` | Search Enamine screening library | `query` |\n| `Enamine_search_smiles` | Search Enamine by structure | `smiles` |\n| `Enamine_get_libraries` | List Enamine compound libraries | (none required) |\n\n---\n\n## Workflow\n\n### Phase 1: Compound Identification\n\n```\n# Step 1: Name -> CID (PubChem canonical identity)\nPubChem_get_CID_by_compound_name(compound_name=\"imatinib\")\n# -> CID: 5291\n\n# Step 2: Get SMILES and properties (needed for all downstream tools)\nPubChem_get_compound_properties_by_CID(\n    cid=\"5291\",\n    properties=\"MolecularFormula,MolecularWeight,CanonicalSMILES,InChIKey,IUPACName\"\n)\n# -> canonical SMILES, InChIKey (global identifier)\n\n# Step 3: Get ChEMBL ID (for activity data)\nChEMBL_search_molecules(query=\"imatinib\")\n# -> ChEMBL ID (e.g., \"CHEMBL941\")\n\n# Step 4: Get all synonyms (brand names, INN, etc.)\nPubChem_get_compound_synonyms_by_CID(cid=\"5291\")\n```\n\n**ID resolution priority**:\n1. Start with PubChem CID (most universal)\n2. Get ChEMBL ID (for bioactivity data)\n3. Use canonical SMILES for structure-based searches and ADMET\n\n### Phase 2: Structure-Based Search\n\n**Similarity search** (find analogs):\n```\nPubChem_search_compounds_by_similarity(\n    smiles=\"CANONICAL_SMILES\",\n    threshold=85   # Tanimoto threshold 0-100; 85 = highly similar\n)\n# Returns: list of CIDs of similar compounds\n\nChEMBL_search_similar_molecules(query=\"CHEMBL941\")  # Or SMILES\n# Returns: ChEMBL entries sorted by similarity\n```\n\n**Substructure search** (find compounds containing a scaffold):\n```\nPubChem_search_compounds_by_substructure(smiles=\"SCAFFOLD_SMILES\")\n# Returns: CIDs of compounds containing the scaffold\n```\n\n### Phase 3: Bioactivity and Binding Affinity\n\n**Get all activities for a compound** (across all targets):\n```\nChEMBL_search_activities(\n    molecule_chembl_id=\"CHEMBL941\",\n    pchembl_value__gte=6,   # pIC50\u002FKi >= 6 = IC50\u002FKi \u003C= 1 µM\n    limit=50\n)\n# Returns: assay_type, target_name, pchembl_value, units\n```\n\n**Get all ligands for a target**:\n```\n# First find target ChEMBL ID\nChEMBL_search_targets(query=\"EGFR\", organism=\"Homo sapiens\")\n# -> target_chembl_id, e.g., \"CHEMBL203\"\n\nChEMBL_get_target_activities(\n    target_chembl_id=\"CHEMBL203\"\n)\n# Returns: all compounds with binding data against this target\n```\n\n**BindingDB** (when available — often times out):\n```\nBindingDB_get_ligands_by_uniprot(uniprot_id=\"P00533\")  # EGFR\n# Returns: Ki, IC50, Kd data with literature references\n# Note: BindingDB REST API is frequently unavailable; fall back to ChEMBL\n```\n\n**pChEMBL Value interpretation**:\n| pChEMBL | IC50 \u002F Ki | Affinity |\n|---------|-----------|---------|\n| >= 9 | \u003C= 1 nM | Very potent |\n| >= 7 | \u003C= 100 nM | Potent |\n| >= 6 | \u003C= 1 µM | Moderate |\n| >= 5 | \u003C= 10 µM | Weak |\n| \u003C 5 | > 10 µM | Inactive |\n\n### Phase 4: Drug-likeness and ADMET\n\n**SwissADME** (comprehensive, requires SMILES string — not list):\n```\nSwissADME_calculate_adme(\n    operation=\"calculate_adme\",\n    smiles=\"CANONICAL_SMILES\"\n)\n# Returns: physicochemical, lipophilicity, water solubility, pharmacokinetics,\n#          drug-likeness scores (Lipinski, Veber, Egan, Muegge), PAINS alerts\n\nSwissADME_check_druglikeness(\n    operation=\"check_druglikeness\",\n    smiles=\"CANONICAL_SMILES\"\n)\n# Returns: Lipinski\u002FVeber\u002FEgan pass\u002Ffail + lead-likeness\n```\n\n**ADMET-AI** (ML-based, requires SMILES as list — install tooluniverse[ml]):\n```\nADMETAI_predict_physicochemical_properties(smiles=[\"CANONICAL_SMILES\"])\nADMETAI_predict_bioavailability(smiles=[\"CANONICAL_SMILES\"])\nADMETAI_predict_BBB_penetrance(smiles=[\"CANONICAL_SMILES\"])\nADMETAI_predict_toxicity(smiles=[\"CANONICAL_SMILES\"])\nADMETAI_predict_CYP_interactions(smiles=[\"CANONICAL_SMILES\"])\n```\n\n**Note**: ADMET-AI requires `pip install tooluniverse[ml]`. If unavailable, use SwissADME as fallback.\n\n**Key drug-likeness rules**:\n- **Lipinski Ro5**: MW \u003C= 500, logP \u003C= 5, HBD \u003C= 5, HBA \u003C= 10 (oral drugs)\n- **Veber**: TPSA \u003C= 140 Å², rotatable bonds \u003C= 10 (oral bioavailability)\n- **Lead-like**: MW \u003C= 350, logP \u003C= 3, HBD \u003C= 3, HBA \u003C= 6 (fragment\u002Flead)\n\n### Phase 5: Target Prediction\n\nWhen you have a novel compound and want to predict targets:\n```\nSwissTargetPrediction_predict(\n    operation=\"predict\",\n    smiles=\"CANONICAL_SMILES\"\n)\n# Returns: predicted protein targets with probability scores\n# Note: SwissTargetPrediction uses structure-similarity to known drug-target pairs\n# May time out for complex molecules\n```\n\n### Phase 6: Commercial Availability\n\n**eMolecules** (aggregates 200+ suppliers — returns search URL, not direct data):\n```\neMolecules_search(query=\"compound_name\")\n# -> Returns search_url to visit on eMolecules.com\n\neMolecules_search_smiles(smiles=\"CANONICAL_SMILES\")\n# -> Returns URL for exact\u002Fsimilar structure search\n```\n\n**Enamine** (37B+ make-on-demand compounds — returns URL when API unavailable):\n```\nEnamine_search_catalog(query=\"compound_name\")\n# -> If API available: returns catalog entries with catalog_id, price\n# -> If API unavailable: returns search_url for manual search\n\nEnamine_search_smiles(smiles=\"CANONICAL_SMILES\")\n# -> Exact or similarity structure search\n\nEnamine_get_libraries()\n# -> Lists available Enamine screening collections\n```\n\n**Note**: eMolecules and Enamine APIs frequently return search URLs rather than live data. Present these to the user as \"search here\" links.\n\n---\n\n## Tool Parameter Reference\n\n| Tool | Required Params | Notes |\n|------|----------------|-------|\n| `PubChem_get_CID_by_compound_name` | `compound_name` | Returns list of CIDs; take first or most relevant |\n| `PubChem_get_CID_by_SMILES` | `smiles` | Use canonical SMILES |\n| `PubChem_get_compound_properties_by_CID` | `cid`, `properties` | `cid` as string; `properties` comma-separated |\n| `PubChem_search_compounds_by_similarity` | `smiles` | `threshold` (int 0-100, default 90) |\n| `PubChem_search_compounds_by_substructure` | `smiles` | Returns CIDs matching scaffold |\n| `ChEMBL_search_molecules` | `query` | Name, ChEMBL ID, or InChIKey |\n| `ChEMBL_get_molecule` | `chembl_id` | Full format: \"CHEMBL941\" not \"941\" |\n| `ChEMBL_search_similar_molecules` | `query` | SMILES or ChEMBL ID |\n| `ChEMBL_search_activities` | `molecule_chembl_id` OR `target_chembl_id` | Use `pchembl_value__gte=6` to filter potent |\n| `ChEMBL_get_drug_mechanisms` | `drug_chembl_id` or `drug_name` | For approved drugs only |\n| `ChEMBL_search_targets` | `query` | Add `organism=\"Homo sapiens\"` to filter human |\n| `ChEMBL_get_target_activities` | `target_chembl_id` | Returns all ligands for target |\n| `SwissADME_calculate_adme` | `operation=\"calculate_adme\"`, `smiles` | SMILES as string (not list) |\n| `SwissADME_check_druglikeness` | `operation=\"check_druglikeness\"`, `smiles` | SMILES as string |\n| `ADMETAI_predict_*` | `smiles` | Must be a **list**: `[\"SMILES\"]` not `\"SMILES\"` |\n| `SwissTargetPrediction_predict` | `operation=\"predict\"`, `smiles` | May time out |\n| `eMolecules_search` | `query` | Returns search URL (no live data) |\n| `eMolecules_search_smiles` | `smiles` | Canonical SMILES |\n| `eMolecules_get_vendors` | `compound_id` | eMolecules internal ID |\n| `Enamine_search_catalog` | `query` | Returns URL when API unavailable |\n| `Enamine_search_smiles` | `smiles` | `search_type`: \"exact\", \"similarity\", \"substructure\" |\n| `Enamine_get_compound` | `enamine_id` | Enamine-specific catalog ID |\n| `BindingDB_get_ligands_by_uniprot` | `uniprot_id` | Frequently unavailable — use ChEMBL as fallback |\n| `BindingDB_get_targets_by_compound` | `smiles` | SMILES-based target lookup |\n\n---\n\n## Common Patterns\n\n### Pattern 1: Full Compound Profile\n```\nInput: Compound name (e.g., \"imatinib\")\nFlow:\n  1. PubChem_get_CID_by_compound_name -> CID + SMILES\n  2. ChEMBL_search_molecules -> ChEMBL ID\n  3. PubChem_get_compound_properties_by_CID -> physicochemical props\n  4. SwissADME_calculate_adme \u002F ADMETAI_predict_* -> ADMET profile\n  5. ChEMBL_search_activities(molecule_chembl_id) -> binding data\n  6. ChEMBL_get_drug_mechanisms -> MOA (if approved drug)\nOutput: Complete compound profile with identity, ADMET, and activity data\n```\n\n### Pattern 2: Analog Discovery\n```\nInput: Reference compound SMILES\nFlow:\n  1. PubChem_search_compounds_by_similarity(smiles, threshold=85) -> similar CIDs\n  2. ChEMBL_search_similar_molecules(query=smiles) -> ChEMBL analogs\n  3. For each hit: PubChem_get_compound_properties_by_CID -> properties\n  4. SwissADME_check_druglikeness -> filter by drug-likeness\nOutput: Ranked list of analogs with activity data and drug-likeness scores\n```\n\n### Pattern 3: Target-Based Compound Search\n```\nInput: Target name (e.g., \"EGFR\")\nFlow:\n  1. ChEMBL_search_targets(query=\"EGFR\", organism=\"Homo sapiens\") -> target_chembl_id\n  2. ChEMBL_get_target_activities(target_chembl_id) -> all ligands with Ki\u002FIC50\n  3. Filter by pchembl_value >= 7 (potent compounds)\n  4. For top hits: SwissADME_check_druglikeness -> assess drug-likeness\n  5. eMolecules_search(query=compound_name) -> check commercial availability\nOutput: Prioritized list of potent, drug-like, commercially available compounds\n```\n\n### Pattern 4: ADMET Risk Assessment\n```\nInput: Novel compound SMILES\nFlow:\n  1. SwissADME_calculate_adme(operation=\"calculate_adme\", smiles) -> full ADMET\n  2. ADMETAI_predict_toxicity(smiles=[smiles]) -> hERG, DILI, mutagenicity\n  3. ADMETAI_predict_CYP_interactions(smiles=[smiles]) -> drug-drug interaction risk\n  4. ADMETAI_predict_BBB_penetrance(smiles=[smiles]) -> CNS penetration\nOutput: ADMET risk profile with flagged liabilities\n```\n\n---\n\n## Fallback Chains\n\n| Primary | Fallback | When |\n|---------|----------|------|\n| `BindingDB_get_ligands_by_uniprot` | `ChEMBL_get_target_activities` | BindingDB API unavailable |\n| `ADMETAI_predict_*` | `SwissADME_calculate_adme` | ml dependencies not installed |\n| `Enamine_search_catalog` | Returns URL only | API returns HTTP 500 (common) |\n| `SwissTargetPrediction_predict` | `ChEMBL_search_similar_molecules` + known targets | Prediction times out |\n| `PubChem_get_CID_by_compound_name` | `ChEMBL_search_molecules(query=name)` | Name not in PubChem |\n\n---\n\n## Limitations\n\n- **BindingDB**: REST API frequently times out; ChEMBL is the reliable alternative for binding data\n- **Enamine API**: Returns HTTP 500 often; tool provides search URL as fallback\n- **eMolecules**: No public API; tool generates search URLs only\n- **ADMET-AI**: Requires `pip install tooluniverse[ml]`; not always available in base install\n- **SwissTargetPrediction**: Web scraping-based; may time out for complex molecules\n- **SMILES format**: ADMET-AI requires a **list** `[\"SMILES\"]`; SwissADME requires a **string** `\"SMILES\"`\n- **ChEMBL IDs**: Always use full format `\"CHEMBL941\"`, never just `\"941\"`\n",{"name":5,"description":7},"main","a298c929b6cbd662e1fce54302ce520d5ceea1a5",".agents\u002Flibrary\u002Fskills\u002Ftooluniverse-small-molecule-discovery","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain","https:\u002F\u002Fgithub.com\u002FPrekzursil","2026-11-02 14:30:57",{"source":8,"skillName":5,"commands":41,"prompt":51,"zipAvailable":52},[42,45,48],{"tool":43,"command":44},"npx","npx skills add Prekzursil\u002Fagent-skills-toolchain --skill tooluniverse-small-molecule-discovery",{"tool":46,"command":47},"bunx","bunx skills add Prekzursil\u002Fagent-skills-toolchain --skill tooluniverse-small-molecule-discovery",{"tool":49,"command":50},"pnpm","pnpm dlx skills add Prekzursil\u002Fagent-skills-toolchain --skill tooluniverse-small-molecule-discovery","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Flibrary\u002Fskills\u002Ftooluniverse-small-molecule-discovery\u002FSKILL.md",true,[],[55,76,107,134,148,164],{"skillNo":56,"name":57,"nameZh":6,"description":58,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":59,"categories":60,"keywords":61,"publishedAt":29},"01M6DF7D7478R55P46REYH4QAC","clarify-requirements","Resolve genuine pre-execution ambiguity by scanning repo context, generating 1-6 grounded options, and asking 1-3 focused questions via AskUserQuestion. NOT for mid-task use (injection risk); NOT when the goal is already unambiguous; use to disambiguate vague prompts before any file edits.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fworkspace-hooks\u002Fskills\u002Fclarify-requirements\u002FSKILL.md",[],[62,63,64,65,66,67,68,69,70,25,71,72,73,74,75],"clarify requirements","clarify","requirements","risk","options","task","prompts","goal","scanning","context","repo","injection","execution","file",{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":87,"publishedAt":29},"01M6DF79CA4BHJS66J8EZDBPWJ","openmm-md","Run FREE, open-source, Windows-native GPU molecular dynamics via the openmm-md MCP (OpenMM + CUDA on the local NVIDIA GPU). Use for protein \u002F protein-ligand MD when you want a free stack or are on Windows without a Schrodinger license. Covers the full workflow (prepare, solvate, minimize, equilibrate, production, analyze, mmgbsa) AND an honest decision guide vs Schrodinger Desmond, including how to run Desmond legitimately on Linux or a cloud GPU with a real license. This is a deliberately LESSER free alternative and does NOT replace the schrodinger MCP tools. Do NOT use it to pick a free tool when a validated FEP+, WaterMap, IFD-MD, or Prime MM-GBSA result is actually required.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fmcp\u002Fopenmm-md-mcp\u002Fskill\u002Fopenmm-md\u002FSKILL.md",[82],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[88,89,90,91,92,93,94,95,96,97,98,99,100,101,25,102,103,104,105,106],"openmm md","how","decision","pick","linux","analyze","tool","stack","open","NVIDIA","gpu","license","workflow","windows","free","molecular dynamics","local","do","MCP",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":119,"publishedAt":29},"01M6DF76C1MG85VEWP8VZCBNMN","visual-review","Take screenshots of web pages and UI using Playwright for visual review and iteration","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fvisual-review\u002FSKILL.md",[113,116],{"categoryNo":114,"categoryName":115,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":117,"categoryName":118,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000008","测试与质量",[120,121,122,123,124,125,126,127,128,129,89,130,131,132,133],"review","visual","visual review","pages","web","false","iteration","take","check","slides","ui","screenshot","playwright","screenshots",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":140,"publishedAt":29},"01M6DF73AQVCBZKEN0YXEX9FXP","status","Diagnostic status report — shows metaswarm installation state, project setup, and potential issues","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstatus\u002FSKILL.md",[],[136,141,142,143,144,145,146,147],"setup","report","project","installation","project setup","issues","state",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":155,"publishedAt":29},"01M6DF6X6C2XB0P6GX76P7TTYV","start","Use when starting work on any task, when the user mentions metaswarm, or when the user wants to begin tracked development work","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstart\u002FSKILL.md",[154],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},[150,156,67,157,158,159,25,160,161,162,163],"start issue","issue","ready","work on issue","user","work","work on","development",{"skillNo":165,"name":141,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":169,"publishedAt":29},"01M6DF6QMJ9AJKFKHHKRT005PQ","Interactive project setup — detects your project, configures metaswarm, writes project-local files","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002FSKILL.md",[],[141,143,104,170,145,171],"files","interactive"]