chromagentic
Built at Built with Claude: Life Sciences · Jul 7, 2026 · Remote

**Agentic Chroma is an MCP server that gives an AI agent the role of a human operator at a Waters chromatography workstation.** From any MCP-capable Claude client, a researcher runs liquid-chromatography experiments in plain language: the agent browses Empower 3 projects and methods, reads an instrument method back in plain words (each solvent line's contents, the TUV wavelengths, the pressure limit), authors a sample set with the correct instrument-prep prologue, requests and starts acquisition, watches the live run on a local dashboard, and analyzes the resulting chromatograms — peak detection, retention time, resolution, and peak shape. **The hard part isn't the language — it's doing this safely against a real instrument.** The design keeps the human as *both the hands and the gate*. The agent emits a concrete physical prep plan (mobile phases, wash/waste, column, exact vials to load); the researcher preps the bench and then personally approves **every** instrument `connect` and **every** injection through a client-side permission prompt that carries a LIVE INJECTION warning. A server-side ordering backstop (`start_acquisition` refuses unless `request_acquisition` prepared the same project + sample set) complements — but never replaces — that human gate. `abort_run` is always available and never gated. **Under the hood it's a capability-based driver core.** A 64-bit MCP server talks over JSON-RPC to a 32-bit COM sidecar that hosts the Empower 3 Toolkit; drivers translate the vendor model into a canonical domain model (`Project`, `Method`, `SampleList`, `Injection`, `Chromatogram`, …) and self-register, so the MCP tool surface lights up per the active backend's capability manifest. A `simulated` backend exposes the full tool surface with no hardware; the `empower` backend is **live on a real ACQUITY UPLC + TUV** on my workstation; a `waters_connect` (Xevo G2-XS QTof, REST/OAuth2) backend is the next drop-in driver. Adding an instrument means writing one driver package — never editing the core. **What I found / what's live-verified.** Against the real Empower Toolkit I confirmed the sample-set prep functions store and round-trip end-to-end (`wet_prime` 34, `wash_needle` 33, `equilibrate` 9, `inject` 1); that instrument-method summaries can be pulled straight from `InstSetupCOM.Xml` and resolved even though this Toolkit build doesn't register a `MethodSet` COM class; and — importantly for safety — that the permission gate has a real trap: the very first gated call after enabling the MCP server mid-session did **not** prompt, and only after re-confirming the Ask rules via `/permissions` did every subsequent live-injection call prompt correctly. That finding is now baked into the acquisition SOP. **Three concrete cases (the demo).** I hand Agentic Chroma three real questions from my bench, in plain language, and it answers each on the real instrument with me as the gate: 1. **Quantitation + report** — it runs a semaglutide injection live, builds a calibration curve from the standards in sample set `sema_20260708`, back-calculates the semaglutide concentration in my unknown wash samples, and writes up an analysis report. 2. **Carryover** — it checks the blank injected after the highest standard for residual analyte, quantifies the carryover, and recommends a concrete instrument-method fix. 3. **Retention drift** — with no new run at all, it compares a development peptide's standards across two prior runs, quantifies the retention shift, and recommends a method change to control it. The calibration fit, quantitation, carryover math, drift comparison, report, and every recommendation are the *agent's own analytical reasoning* on top of the read tools — not a canned quantitation feature. That loop — ask, run (approved), analyze, recommend — is what the tool exists to close. **Why it matters.** Today an LC–MS run is a static file uploaded *after* the fact, and the reasoning behind each method-development decision evaporates. Agentic Chroma turns the run into a supervised, auditable loop — interpret the goal, propose injections and conditions within guardrails, submit and monitor, evaluate the data, recommend the next experiment — with a person approving every physical action. For analytical labs it's the missing operating layer between *a scientist with a question* and *an instrument that only speaks Empower*.