How it works
SciAgentKit runs the structure-based drug-discovery pipeline as a chain of deterministic tools your AI agent calls in order. Every stage writes its own outputs and a signed reproducibility manifest — nothing is estimated by a language model.
Ask your agent “dock these ligands to EGFR” and it backfills every prerequisite in order. Each stage is a single MCP tool with typed inputs and file outputs saved under runs/.
Resolves the target to a UniProt entry, lists PDB structures, aligns sequences, and ranks candidates by resolution, coverage, and mutation match — it does not invent rankings.
Output: ranked_structures.csv · target_sequence.fasta · uniprot_target.csv
Downloads the selected structure's coordinate file from RCSB (falls back to mmCIF for large assemblies) so the receptor is real atoms, not a placeholder.
Output: <PDBID>.pdb
Cleans and protonates molecules at the requested pH and generates 3D conformers with RDKit (Open Babel fallback), ready for docking or parameterization.
Output: ligands_3d.sdf · cleaned_ligands.csv
Deterministic drug-likeness and liability screen: ESOL solubility, Lipinski/Veber/Ghose/Egan rules, GI/BBB heuristics, and PAINS/Brenk structural alerts.
Output: adme_tox.csv · library_profile.csv
Defines the docking box from a co-crystallized ligand, a residue list, or a pocket detector (fpocket / P2Rank), with an automatic fallback.
Output: pocket.json (center + box size)
Removes the pocket ligand (preserving waters by default), repairs hydrogens and atoms, and prepares the receptor for PDBQT conversion.
Output: docking_receptor_prepared.pdb
Runs AutoDock Vina, GNINA, or smina inside the defined pocket and ranks poses by binding affinity parsed straight from the engine's log.
Output: docked poses (.pdbqt) · docking_scores.csv
Builds a complete OpenMM / OpenFF job: solvation, ion neutralization, minimization, NVT and NPT equilibration, and a production run with reporters — as runnable scripts.
Output: system.xml · integrator.xml · run.py · md_config.json
Computes backbone RMSD and per-residue RMSF with MDAnalysis and, optionally, a ligand–protein interaction fingerprint with ProLIF — from your actual trajectory files.
Output: rmsd.csv · rmsf.csv · interactions.csv · figures
Combines docking score, MD stability, and ADME/tox desirability into one composite ranking — penalizing toxicity liabilities and up-weighting BBB permeability for CNS targets.
Output: top_hits.csv
Proposes a staged experimental template tailored to the target class: biochemical assay → cell-based activity → BBB (for CNS) → ADME/DMPK → safety. Advisory, not results.
Output: wet_lab_plan.md
Assembles everything into a professional Markdown / PDF / DOCX report and preserves a signed reproducibility manifest for the whole run.
Output: report.md · report.pdf · run_manifest.json
Poses are ranked by binding affinity taken directly from the docking engine — SciAgentKit parses the log, it never guesses a score.
pocket.json (center + box)| pose | affinity (kcal/mol) | rmsd l.b. | rmsd u.b. |
|---|---|---|---|
| 1 | – | 0.000 | 0.000 |
| 2 | – | – | – |
| 3 | – | – | – |
Exact schema of docking_scores.csv. Values are filled in from the engine's own output at run time.
The MD stage produces a runnable, fully-specified OpenMM job; after you run it, the analysis stage turns the trajectory into quantitative stability and interaction metrics.
run.py + serialized system.xml — no black box| artifact | from |
|---|---|
| rmsd.csv / rmsd.png | MDAnalysis |
| rmsf.csv / rmsf.png | MDAnalysis |
| interaction_heatmap.png | ProLIF |
Every metric is computed from your trajectory files by the named library.
One command assembles a structured dossier — Markdown, PDF, or DOCX — with a fixed, reviewable section layout. Here is the table of contents write_report produces.
Every stage writes a run_manifest.json that pins the exact command, parameters, environment, package versions, git commit, and a SHA-256 of every input and output — so a result can be audited and reproduced byte-for-byte.
{
"schema_version": "sciagentkit.manifest.v1",
"workflow_name": "docking_screen",
"created_at_utc": "2026-07-11T09:24:18.402Z",
"command": "sciagent run-docking receptor.pdbqt ligands/ pocket.json",
"parameters": { "engine": "vina", "exhaustiveness": 8, "num_modes": 9 },
"python_version": "3.12.4",
"platform": "Linux-6.1-x86_64",
"git_commit": "8ee75b8…",
"packages": {
"sciagentkit": "1.0.3", "rdkit": "2024.03.5",
"pandas": "2.2.2", "numpy": "1.26.4"
},
"input_files": [
{ "path": "receptor.pdbqt", "sha256": "3f9a…c1" },
{ "path": "pocket.json", "sha256": "b7e2…8d" }
],
"output_files": [
{ "path": "docking_scores.csv", "sha256": "a10f…44" }
],
"note": "Molecular values were computed by deterministic tools, not inferred by an LLM."
}
Field layout is exact; hashes, timestamps, and versions shown are illustrative placeholders — a real run fills them from your environment.
Wire SciAgentKit into Claude, Cursor, Gemini, or Codex and start with a free 3-day trial.