Demo · lab data

Agentic LIMS

Every result traced. Every use decided. Public laboratory results, each with the path it took from the site where it was sampled to the file it was retrieved in, held as a dataset that decides its own use. An agent reaches it only over MCP and proposes; the dataset's gate decides each result under a written policy; a person approves what the gate escalates; and an answer drawn from a method document is shown only if every quote in it is found on the page it cites.

176 seconds, captions only. Recorded on 2026-10-24 from the running system. Orders are typed into the chat; one is given in plain language to a model through an API. Every number in a caption is read from the run's records, and the recording stops if a result differs or a pointer loses what it points at. One thing is not shown at the speed it ran: the turn of the 3D view is filmed frame by frame, because the recording browser draws it in software. The on-screen text. Archived on Zenodo: doi:10.5281/zenodo.23625293.
Traced

From the site to the file, every result

The 3D lineage view, nitrate results at Lake Monona lit from the site to the retrieved file
  1. The data. 8,542 results from the Water Quality Portal, Dane County, Wisconsin, April to June 2023: public, as the portal served them, with the file's sha256 kept.
  2. Layers. Seven layers above a map of the sites: collection, lab, results, storage, portal, retrieval, and use. Each site sits at its own coordinates; each node exists because a column of the records says so.
  3. A trace. 9 nitrate results at Lake Monona: one site, one lab, one provider, the portal, the file. Each row is traced and checked, not drawn by adjacency.
  4. A gap, shown. 1,667 lab samples name no laboratory. Their path is drawn in orange: where they came from, and that they still reached the file.
Decided

The agent proposes; the dataset decides each result

The dataset's gate deciding the nutrient results: admitted in blue, escalated in amber, refused in orange
  1. A report is assembled. The dataset's gate decides each of 778 results: 359 admitted, 172 to a person, 247 refused. A computed value is not a measurement; a lab sample that names no lab cannot be traced.
  2. The laboratory's own flags count. 121 the lab flagged (106 past their holding time), 51 provisional. The gate reads the lab's quality notes from the records and sends those results to a person.
  3. A person decides. The approval card shows each rule and its flags, and the approval is bound to exactly the rows escalated. Approved: 531 admitted under a new grant, gr-0002, that replaces the first.
  4. The model cannot overrule it. Asked in plain language to put the computed values in as if measured, the model read the order correctly, and The dataset refused all 219 again. The model has no way to approve; only the person's channel carries an approval.
The approval card: the escalated results by rule and laboratory flag, with Approve and Decline
Documents

Each node carries its documents, and answers are checked against them

A USGS method publication open beside the lineage, with the quoted passage marked
  1. What a node has. Every node carries its documents: this lab has 6. Its source records, the lab's notes, and the method publications its results cite. A document is linked to a node only because rows on it cite or name the document.
  2. Opened where the results point. The anion method, at p. 19 of USGS Open-File Report 93-125, the page the results cite, served by the dataset over MCP.
  3. An answer that holds. Answered only from the dataset's passages. Every quote checked against its page. A quote not found word for word on its page is retried once, then the answer is withheld.
Evidence

Every decision on the dataset's own ledger

The Decision Trace, an escalation open with the dataset's evidence entry
  1. Written, and read back. Written: 531 records, each with its lineage and the decisions behind it. The file is read back from disk and its sha256 compared with what the dataset reported.
  2. Cited, not asserted. Every decision cites the dataset's own evidence, and both ledgers are hash-chained. An edited line is caught when a ledger loads.
  3. The contract first. The agent knows nothing until it connects. Over MCP it reads what the dataset is, its policy and its revision, and the capabilities it may call: 11 capabilities, the policy lims/report-use, and its revision: the sha256 of the file it serves.
What it does not claim

The limits, stated

  • It is called a LIMS because the records are what laboratory systems produce: samples, labs, methods, statuses. The demo registers no samples and schedules no tests. It shows the lineage of that output and decides its use.
  • An approval is recorded with who, when and the hash of the exact rows, and the dataset refuses one for any other rows. It is not cryptographically bound to a person.
  • A document answer is withheld whenever a quote does not hold, even when the answer is right. Facts that live only in a table are usually withheld, because text extracted from a table comes out in column order.
  • Document search is word-based, not semantic. It runs inside the dataset, so the passages a model sees are the dataset's choice, and they are recorded.
  • One public slice of data, one machine, one recorded run. It shows what happens, not how often.

The data: Water Quality Portal, National Water Quality Monitoring Council, U.S. Geological Survey and Environmental Protection Agency, doi:10.5066/P9QRKUVJ. The video: Chernov, A. (2026). Agentic LIMS: Agent Scope demo video. Zenodo. doi:10.5281/zenodo.23625293. The method publications are U.S. government works. The code behind this demo is private. The Decision Trace view is the published @agent-scope-ca/graph-canvas component.