The workbench
An agent that chooses each step from what it has learned so far, a toolkit of about a hundred tools, and a live Python kernel you share with it. This is the machinery behind every answer in Essarion Science.
01How a turn runs
A turn is a loop. The agent sees your request, the conversation so far, the files in the session and the full list of tools it can run right now. It makes one decision: call one tool with typed inputs, or finish with an answer. The tool's result comes back as an observation, and it decides again.
There is no fixed pipeline. A one-line factual question may take two steps; a target assessment may take forty. A few rules keep the loop honest:
- Every tool validates its inputs. A call with the wrong fields comes back as an error the agent can read and correct.
- An identical call made twice in the same turn returns the earlier result instead of running again.
- A turn that keeps repeating failing actions is stopped as stalled.
- A tool already running is never interrupted. Limits only stop new work from starting.
When a turn reaches its step or time limit, or stalls, it writes up what it has and says why it stopped.
Reading the request
Before the first tool call, the agent writes down how it read the request and shows it to you as a card: what you want, the decision it feeds, what a good answer would contain, what it decided without asking, and the next move beyond the question. It also picks what the turn should hand over:
| Deliverable | What it is |
|---|---|
| Summary | A direct answer, possibly with figures. |
| Dossier | An assessment of a target, compound or mechanism. |
| Candidate set | Ranked molecules or drugs, with the argument for each. |
| Experiment protocol | An experiment someone could run. |
| Decision memo | What to do, on what evidence, and what would change it. |
| Data package | Computed tables to take away and use. |
| Research campaign | A set of hypotheses, ranked and stress-tested. |
The document is built only from what the turn produced. Sections with no evidence behind them say so, and the operations that failed are listed next to the ones that worked. A turn that did no real work, such as a short conversational reply, hands nothing over.
The plan and the scratchpad
For longer work the agent writes a plan: the goal, the ordered steps, and what it expects each step to show. The plan is kept whole for the rest of the turn, even as older steps in the transcript are condensed, and each step is marked with what actually happened. A result that contradicts a written expectation is treated as a finding.
The scratchpad is the turn's working memory. It has sections for the working hypothesis, evidence for and against, anomalies, open questions, methodological concerns and dead ends. The agent is instructed to note anything unexpected under anomalies as soon as it sees it.
What depth changes
Depth is set in the Databases & skills sheet. It sets how much room a turn has, which heavier tools it may use, and how persistent it is.
| Scan | Deep dive | Exhaustive | |
|---|---|---|---|
| Steps per turn | 14 | 60 | 200 |
| Time limit | Shortest | Longer | Longest |
| Literature pool | Smallest | Larger | Largest |
| Multiverse curve, PDF table extraction, replication graph | Off | On | On |
| Can be sent back for stopping early, and again for unsupported prose | No | Up to 2 times each | Up to 6 times each |
| If it is about to say a question cannot be settled | Accepted | Pushed to try an unused relevant tool, or 3 testable conjectures | Pushed to try an unused relevant tool, or 8 testable conjectures |
| Reasoning per model call | Low | High | High, with the largest thinking budget |
The reviewer and the check that claimed work actually happened run at every depth. See Verification.
02The toolkit
The agent sees every tool that can run in the current state, with its exact name and input fields. It can also ask for any tool's full manual page, or ask which tools address a goal. That second question also returns what the system cannot do, so a missing capability is reported as a gap in the system rather than a gap in the science.
| Family | Examples | What they do |
|---|---|---|
| Retrieval | biomed.search_literature, biomed.fetch_structure, biomed.query_variants, literature.search, web.fetch | Pull records from the databases, the wider literature, or a public URL. |
| Bundled data | data.catalog, data.query, data.aggregate | Query the two bundled datasets locally: rows, counts and base rates. |
| Literature review | review.screen, review.extract, review.prisma | Screen records against written criteria, pull the same fields from every included paper with a checked quote under each, and draw the PRISMA flow. |
| Biology | target.assess, variant.interpret, seq.homology, expr.differential, sc.annotate, gwas.locus_to_gene, phylo.tree, clone.simulate | Target dossiers, variant evidence, BLAST homology, differential expression, cell-type naming, GWAS gene assignment, trees, and cloning checks. |
| Chemistry and pharmacology | chem.profile, chem.analogs, chem.admet, pharma.drug_profile, pharma.safety_signal, trials.landscape | Medicinal-chemistry profiles and alerts, analogue design, ADMET from published models, drug profiles, FAERS signals, and the trial landscape by intervention. |
| Engines and discovery | structure.pockets, qsar.build, pk.simulate, trial.simulate, discover.gauntlet, discover.campaign | Compute what no database holds, and propose and stress-test new ideas. See Engines & discovery. |
| Statistics and verification | hypothesis.parse, preregistration.build, meta.pool_effects, multiverse.specification_curve, adversarial.collaborate | Test a claim formally. See Verification. |
| Compute and output | biomed.notebook_exec, biomed.run_skill, figure.render, biomed.build_model, report.write | Run code, run a skill, draw a chart, build a 3D model, write a cited report. |
| Working memory | plan.write, scratchpad.write, conjecture.spawn, files.read, vision.inspect | Keep the plan, take notes, turn findings into testable conjectures, read session files, and look at images. |
Skills
Skills are packaged computations. All run locally or against a public endpoint, with no key.
| Skill | Provides |
|---|---|
| Sequence tools | GC content, translation, ORF finding and pairwise alignment (Biopython). |
| Single-cell QC | Per-cell QC metrics with MAD outlier flagging for single-cell RNA-seq. |
| Molecular design | Descriptors, drug-likeness rules, PAINS and Brenk alerts, similarity, scaffolds, clustering and analogue enumeration (RDKit). |
| Protein biophysics | Molecular weight, pI, extinction coefficient, GRAVY, instability, transmembrane spans and developability liabilities from sequence. |
| Variant effect | Ensembl VEP consequences for rsIDs and HGVS, plus Grantham distance for missense changes. |
| CRISPR guide design | SpCas9, SaCas9 and Cas12a guides, scored, with seed-aware off-target scanning. |
| PCR primer design | Primer pairs with nearest-neighbour Tm, salt correction, dimer and hairpin checks. |
| Dose-response | Four-parameter logistic fits for IC50/EC50 with confidence intervals, plus Bliss and Loewe combination analysis. |
| Enzyme kinetics | Michaelis–Menten fits for Km, Vmax and kcat, and inhibition-mechanism identification with Ki. |
| Pharmacokinetics | One- and two-compartment simulation, parameter derivation, allometric scaling and target coverage. |
| Survival analysis | Kaplan–Meier curves, log-rank tests with a proportional-hazards check, and univariate Cox regression. |
| Trial design | Sample size and power for continuous, binary and time-to-event endpoints, 3+3 and BOIN escalation, and interim futility. |
03The notebook kernel
Each session has one Python kernel, and it persists across cells and across turns. A table loaded in the first turn is still there in the fifth. That is what makes the analysis cumulative rather than a series of disconnected snippets.
numpy, scipy, pandas, networkx and Biopython are available. Charts are drawn through a built-in figure API rather than matplotlib or plotly, which are not available in the kernel. Files attached to the session can be read from it.
Running your own cells
The Notebook tab of the workbench panel has a console into the same kernel. Variables the agent built are already in scope, and anything you define is visible to the agent's next cell. Your cells appear in the notebook marked as yours. The console also lists the kernel's variables and can reset the kernel.
# cell 1
import pandas as pd
effects = pd.DataFrame(rows)
effects.describe()
# cell 2 — `effects` is still bound
effects.groupby("study_design")["hedges_g"].agg(["mean", "count"])
What the kernel will not do
Every cell, whether the agent's or yours, passes a static check before it runs: no underscore or dunder access, no open, eval, exec or getattr, and imports only from a safelist of compute libraries. Each cell has a wall-clock timeout. Persistence keeps the namespace and relaxes nothing else.
04Figures, models and artifacts
When a question compares, ranks or describes a distribution or a structure, the agent is instructed to compute the numbers and show them, not just describe them. Charts are drawn in the notebook. 3D models are built from real coordinates:
- a PDB id, fetched from the RCSB PDB;
- a UniProt accession, resolved to its AlphaFold DB model;
- an amino-acid sequence, folded with ESMFold;
- a nucleotide sequence, drawn as a B-DNA double helix;
- or coordinates supplied inline.
The agent is forbidden from hand-building protein coordinates. If a real fold is not available, it says so. Designing a new sequence for a backbone depends on an external design service; where that service is not available, the tool reports it.
Every artifact opens in a panel with five tabs: View, Code, Execution log, Inputs and Environment. You can download the producing script. Redrawing the same figure adds a new version you can step back through. Open a chart and click on it to leave a note; the agent changes the code and redraws it.
05Files and images
Files you attach, up to 64 MB each, are stored in the session's workspace. The agent sees the list every turn and can read them with its file tools or from the kernel. Pasted screenshots, gels, plots and micrographs can be inspected with a vision tool, which the agent also uses to check figures it has drawn.
06Beyond the typed tools
For a public resource with no connector, the agent can fetch a URL directly. The fetch is recorded as a source, so it can be cited and checked. Only public addresses can be reached; private, loopback and cloud-metadata addresses are refused, and redirects are checked at every hop.
A sandboxed shell also exists for work no typed tool covers. Each command runs in its own process with CPU, memory, file-size and file-descriptor limits. It is never offered at Scan depth, and whether it is offered at other depths depends on the resources of the deployment.