# chromagentic

- **Event:** [Built with Claude: Life Sciences](https://cerebralvalley.ai/e/built-with-claude-life-sciences)
- **When:** Jul 7 at 12:00 PM – Jul 14 at 12:00 AM (EDT)
- **Where:** Online
- **Team:** [Tao Zheng](https://cerebralvalley.ai/u/ztao)
- **GitHub:** https://github.com/zt10001/agentic_chroma
- **Demo video:** https://www.youtube.com/watch?v=c6sVTKO7xlo
- **Gallery:** https://cerebralvalley.ai/e/built-with-claude-life-sciences/hackathon/gallery
- **Page:** https://cerebralvalley.ai/e/built-with-claude-life-sciences/hackathon/gallery/203

**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*.

---

Markdown version of https://cerebralvalley.ai/e/built-with-claude-life-sciences/hackathon/gallery/203. Site index for agents: https://cerebralvalley.ai/llms.txt · full text: https://cerebralvalley.ai/llms-full.txt
