tooluniverse-organic-chemistry-03ebe0 — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited tooluniverse-organic-chemistry-03ebe0 (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill teaches how to think through organic chemistry problems, not what to memorize.
Do NOT pattern-match to a named reaction. Instead, reason from first principles:
Look at each molecule and ask: where is the electron density?
The reaction will happen where the strongest nucleophile meets the strongest electrophile.
Three fundamental categories:
Draw the arrow from nucleophile to electrophile. Ask:
Every reaction needs a thermodynamic reason to proceed:
Before reporting an answer:
Identify the reaction type from reagents/conditions, then apply its product topology:
| Reagent/Condition Pattern | Reaction Type | Product Logic |
|---|---|---|
| RMgBr (or RLi) + ArX + Pd or Ni catalyst | Kumada coupling | R replaces X on Ar; excess RMgBr replaces ALL X |
| Ph3P=CHR + aldehyde/ketone | Wittig | C=C replaces C=O; unstabilized ylide → Z-alkene; stabilized (ester/CN) → E-alkene |
| Sulfoxide + strong electrophile (Tf2O, Ac2O) | Pummerer rearrangement | S-oxidation state drops; alpha-carbon gets new bond to nucleophile/leaving group |
| Allyl vinyl ether heated (or 1,5-dien-3-ol + base) | [3,3]-sigmatropic (oxy-Cope/Claisen) | Redraw 6-membered chair TS; new sigma bond at 1,6 positions; old 3,4 bond breaks |
| Diene + dienophile, heat | Diels-Alder | [4+2] cycloaddition; endo rule for stereochemistry; cis dienophile substituents stay cis |
| ArX + excess organometallic (no catalyst) | Nucleophilic aromatic substitution or benzyne | Each X replaced by nucleophile; count equivalents to determine degree of substitution |
Work backward from product to starting materials by identifying how key bonds were formed:
RXNChemistry_predict_reaction (forward prediction: reactants → most likely product, IBM RXN for Chemistry ML model) and RXNChemistry_predict_retrosynthesis (target → candidate synthetic routes) can cross-check a from-first-principles answer, especially for reactions outside the named-reaction decision tree above. Reason through the mechanism first per the steps in this skill — these are a sanity check on a proposed product/route, not a substitute for understanding why it forms.
Requires `RXN4CHEMISTRY_API_KEY` — verified live: with no key set, neither tool appears in tu list/loads at all (the same intentional key-gating pattern as Addgene/USPTO elsewhere in ToolUniverse); set the key to enable, don't treat their absence as a bug. Both operations are asynchronous (poll via poll_interval/max_wait_time params) since the underlying model runs as a queued job, not a synchronous API call.
MolecularFormula_analyze tool (via MCP/SDK) with sample_g, CO2_g, H2O_g, and molar_mass parameters. Fallback: run molecular_formula.py directly.DegreesOfUnsaturation_calculate tool with formula parameter. Fallback: run degrees_of_unsaturation.py --formula <result>.Do NOT look up tables of chemical shifts. Instead, follow this systematic approach:
If given, calculate degrees of unsaturation first. This immediately tells you:
This single number eliminates huge categories of structures before you look at any spectrum.
Do not try to assign every peak. Instead, ask three questions:
If you can answer these three questions, you have identified the major functional groups. Everything else is confirmatory.
Every signal tells you three things — use all of them:
No single spectrum gives the answer. Combine them:
A stereocenter is a carbon with four DIFFERENT substituents. To find them:
Ask: what is the mechanism?
These ready-to-run scripts live in skills/tooluniverse-organic-chemistry/scripts/. Use them via the Bash tool instead of computing by hand — they validate inputs and print verification lines.
chemistry_facts.py — Chemical and physical facts referenceA lookup tool for facts that are easy to mis-remember. Query this script instead of guessing. Three categories: allotropes, point_group, common_reagents. Run with no extra args to list all entries in a category.
python chemistry_facts.py --type allotropes --element P
python chemistry_facts.py --type point_group --molecule "benzene"
python chemistry_facts.py --type common_reagents --reagent "LiAlH4"
python chemistry_facts.py --type allotropes # list all elementsCoverage: Allotropes for P, C, S, O. Point groups for 15 molecules (water C2v through H2 D∞h). 24 reagents (LiAlH4 through DMDO) with full name, function, selectivity, stereochemistry, and KEY DISTINCTION notes.
When to use: Any question about allotropes, molecular symmetry/point groups, or reagent selectivity. Always query before reporting reagent facts.
crystal_validator.py — Crystal structure density validatorPreferred: use CrystalStructure_validate tool (via MCP/SDK) with unit cell parameters (a, b, c, alpha, beta, gamma, Z, MW, density). Fallback: run crystal_validator.py directly.
Validates crystal structure data by computing theoretical density from unit cell parameters and comparing against a reported value. Flags inconsistencies that indicate errors in published datasets.
Supports all seven crystal systems (cubic, tetragonal, orthorhombic, hexagonal, trigonal, monoclinic, triclinic).
python crystal_validator.py --a 5.43 --b 5.43 --c 5.43 --Z 8 --MW 28.085 --density 2.329
python crystal_validator.py --datasets datasets.json # batch mode: JSON array of datasetsAngles default to 90deg. Output: crystal system, volume, calculated density, %error, verdict (OK/WARNING/MISMATCH). Batch mode compares multiple datasets to find the outlier. Density formula: d = (Z MW) / (V Na).
When to use: Crystal structure verification, density consistency checks, finding erroneous datasets.
stereochem_tracker.py — Stereochemistry through reaction sequencesTracks R/S configuration at a stereocenter through a series of reactions, predicting the stereochemical outcome at each step.
python stereochem_tracker.py --start R --reactions "SN2, oxidation, SN1"Supported reactions: SN2 (inversion), SN1 (racemization), E2/E1 (elimination), reduction/oxidation/hydrogenation/hydroboration/epoxidation (retention), mitsunobu (inversion), double_inversion (retention), racemization/epimerization/enolization (racemization).
When to use: Multi-step synthesis chirality tracking, verifying net retention/inversion.
smiles_verifier.py — SMILES molecular property verifier (no RDKit)Preferred: use SMILES_verify tool (via MCP/SDK) with smiles and optional constraint parameters (mw, heavy_atoms, valence_electrons, total_atoms, formal_charge). Fallback: run smiles_verifier.py directly.
Parses a SMILES string without external dependencies and computes molecular weight, heavy atom count, valence electron count, total atom count, and formal charge. Then optionally checks these against user-supplied constraints. Use this every time you design or propose a SMILES answer.
python smiles_verifier.py --smiles "CC(C)(C(=N)N)N=NC(C)(C)C(=N)N" --mw 198.15 --heavy_atoms 14 --valence_electrons 80Constraint flags: --mw (tolerance 0.5), --heavy_atoms, --valence_electrons, --total_atoms, --formal_charge
When to use: Always verify SMILES answers before reporting. Catches MW, atom count, and electron count errors.
degrees_of_unsaturation.py — Degrees of unsaturation (DoU) calculatorPreferred: use DegreesOfUnsaturation_calculate tool (via MCP/SDK) with formula or individual atom count parameters. Fallback: run degrees_of_unsaturation.py directly.
Computes DoU = (2C + 2 + N − H − X) / 2 from a formula string or individual atom counts. Handles all halogens (F, Cl, Br, I) and notes that O and S do not affect DoU. Prints the full arithmetic, a structural interpretation, and a round-trip verification.
python degrees_of_unsaturation.py --formula C6H6
python degrees_of_unsaturation.py --C 10 --H 14 --O 2 --N 1Output: atom counts, step-by-step formula, result, structural interpretation, non-integer DoU warning.
molecular_formula.py — Combustion analysis and formula analysisPreferred: use MolecularFormula_analyze tool (via MCP/SDK) with combustion or formula parameters. Fallback: run molecular_formula.py directly.
Two modes in one script.
Mode 1: combustion analysis — --sample_g, --CO2_g, --H2O_g, optional --molar_mass Mode 2: formula analysis — --formula C6H6 (MW, DoU, elemental composition)
python molecular_formula.py --sample_g 0.2 --CO2_g 0.4874 --H2O_g 0.1998 --molar_mass 78
python molecular_formula.py --formula C6H6ALWAYS EXECUTE as Python scripts using the Bash tool — do not compute mentally. Prefer the bundled scripts (molecular_formula.py, degrees_of_unsaturation.py) over writing code from scratch.
Key formulas (write and run Python when bundled scripts don't cover the case):
CrystalStructure_validate tool. Fallback: crystal_validator.py (never compute unit cell volumes by hand)stereochem_tracker.py (tracks R/S through SN2, SN1, etc.)DegreesOfUnsaturation_calculate tool. Fallback: degrees_of_unsaturation.pyMolecularFormula_analyze tool. Fallback: molecular_formula.pySMILES_verify tool. Fallback: smiles_verifier.py (always verify SMILES answers)chemistry_facts.py --type allotropes --element Xchemistry_facts.py --type point_group --molecule "name"chemistry_facts.py --type common_reagents --reagent "name"PubChem_get_CID_by_compound_name then PubChem_get_compound_properties_by_CIDOPSIN_name_to_structure (param name) — deterministic parser returning SMILES/InChI/InChIKey, the go-to for turning a systematic name (e.g. "2-acetoxybenzoic acid") into a structure you can then SMILES_verify. Trade/trivial names return parsed=false → use PubChem_get_CID_by_compound_name instead.PubChem_get_CID_by_compound_name or PubChem_get_compound_properties_by_CIDChEMBL_get_molecule or ChEMBL_search_moleculesHMDB_get_metaboliteExtract unit cell params, Z, MW, density for each dataset. Run crystal_validator.py --datasets datasets.json in batch. Largest %error = the error. Common errors: wrong Z, swapped params, angle transcription errors.
python smiles_verifier.py --smiles "..." --mw X --heavy_atoms Y --valence_electrons Z~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.