| name | retrosynthesis |
| description | Plan synthetic routes and judge whether a proposed molecule can actually be made, using AiZynthFinder's Monte-Carlo tree search over template-derived reactions and a purchasable building-block stock. Use this skill to configure expansion and filter policies, choose a stock file, run route search over a candidate set, and read the returned trees — solved fraction, route depth, and which building blocks a route bottoms out in. Also trigger on AiZynthFinder, retrosynthetic tree search, synthetic accessibility, SAscore, RAscore, building-block stock, reaction template, or route scoring. |
| license | MIT |
| allowed-tools | Read Write Edit Bash |
| compatibility | Requires Python 3.10+. The bundled scripts write AiZynthFinder YAML configuration and parse its route JSON using only the standard library. Running a search needs aizynthfinder 4.4+ (pip, Python >=3.10 and <3.13, MIT) plus its downloaded policy models and a stock file; CPU is sufficient, though a GPU speeds up the expansion policy. |
| metadata | {"version":"1.0","skill-author":"K-Dense Inc.","openclaw":{"emoji":"⚗️","homepage":"https://github.com/MolecularAI/aizynthfinder"},"hermes":{"category":"research"}} |
Retrosynthetic Planning
The Make half of design-make-test-analyse, and the check that a proposed molecule is more than a
picture. AiZynthFinder runs Monte Carlo tree search over reaction templates until every leaf of a
route is something you can buy.
Tool: AiZynthFinder 4.4.1, MIT.
pip install aizynthfinder — Python 3.10–3.12 only, it will not install on 3.13. Then
download_public_data <dir> for models and a ZINC stock (several GB). CPU is sufficient.
Checked against: 4.4.1, December 2025.
Read references/aizynthfinder-setup.md before your first run,
references/synthesizability-scores.md when triaging more
molecules than you can search, and references/route-quality.md
before acting on a route — that one is judgement, not syntax.
The two scripts
| Script | Answers |
|---|
aizynth_config.py | What does the config look like, and are the model files really there? |
route_report.py | What fraction is makeable, in how many steps, from what? |
The stock file is the answer
This is the thing to get right. A target is solved when every leaf of a route is in your stock
file — so "solved" is a statement about the stock at least as much as about the molecule.
| Stock | Solved fraction |
|---|
| small in-house inventory | low; reflects what you can start today |
| ZINC (the default download) | moderate; a public baseline |
| eMolecules / commercial | high |
| Enamine building blocks | high; what a REAL-space campaign should use |
A solved fraction quoted without naming the stock is meaningless — the same molecule is solved
against eMolecules and unsolved against a cupboard. route_report.py says so on every run.
Configuration changed at version 4
Version 3 took bare lists of file paths; version 4 takes typed blocks. Every tutorial older than
2024 shows the incompatible form, and the resulting error is unhelpful.
python skills/retrosynthesis/scripts/aizynth_config.py config \
--model uspto_model.onnx --templates uspto_templates.csv.gz \
--filter-model uspto_filter_model.onnx --stock zinc:zinc_stock.hdf5 > config.yml
python skills/retrosynthesis/scripts/aizynth_config.py check --config config.yml