OpenReadout
MCPB · OPENREADOUT-MCP-X86_64-UNKNOWN-LINUX-MUSL.MCPB · 6 COMPONENTS
Read raw lab-instrument files offline: metadata, previews, integrity checks, open-format export.
Available components
Last scanned (23 hours ago)
Scores higher than 80% of MCPB servers
Category Health and Science
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security0
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to openreadout/openreadout). View diagnostics → Pass
- Clear OSI-approved license (MIT OR Apache-2.0).Pass
- Actively maintained (last published 17 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability69
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 15505 tokens (~534/item across 29 items; 28 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: two runs of the same published version returned different tool surfaces, so we cannot tell a change in the package from a difference in our own sandbox run.Unverified
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (96% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 28 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 30 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Unverified: 2 categories
Categories scored 0 because we could not verify them: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 18 Oct 26 −1
- Schema quality: 451 → 534 ▼ functional
- 13 Oct 26 0
- Stability: Stability not yet verified: two runs of the same published version returned different tool surfaces, so we cannot tell a change in the package from a difference in our own sandbox run. security
- Schema quality: 7826 → 14912 ▼ functional
- Schema quality: excellent → good functional
- 3 Oct 26 51
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Analysed mcpb/https://github.com/openreadout/openreadout/releases/download/v0.4.0/openreadout-mcp-x86_64-unknown-linux-musl.mcpb
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | mcpb |
| Reason | Verified |
| Discovered via | GitHub artifact attestations |
| Source repo | openreadout/openreadout |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/openreadout/openreadout/.github/workflows/release.yml@refs/tags/v0.4.0 |
| Rekor log index | 3304451478 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha256:dcab570888b3f7ca9c2455cbd34efed4ad6adac6a0577caf7aca90eb79b00434 |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
openreadout_assay ~1,217
Plate-reader exports, with the layout the file stores or `layout`. analysis: wells (per-well values, blank subtraction, replicate mean/SD/CV, outliers), curve (standard curve, back-calculated concentrations, LLOQ/ULOQ), dose-response (IC50/EC50 per compound with CI and Hill slope), kinetics (Vmax, lag, AUC per well), growth (growth rate, doubling time, lag, logistic fit, and whether each well grew, crashed or regrew, with times), qc (Z′, S/B, S/N, SSMD). An argument that names analyses applies to those only.
| Name | Type | Req | Description |
|---|---|---|---|
| analysis | string | yes | What to compute. `wells` = Per-well and per-replicate-group values: roles, blank subtraction, mean, SD, CV %, outliers; `curve` = Standard curve (linear, 4PL, 5PL) and back-calculated concentrations… |
| blank_wells | string | – | Wells to mark as blanks (`H1,H2`, `H1:H12`). |
| confidence | number | – | curve, dose-response: confidence level of intervals. Default 0.95. |
| fields | array | – | Rows show their main fields to 4 significant digits (growth: pattern, growth_rate_per_h, doubling_time_h, lag_time_s, max_value, time_to_max_s, crash_s, trough_s, regrowth_s). fields adds others, e.g… |
| file | string | yes | Path to the file or data-set directory. |
| fit_on | string | – | curve: fit every standard replicate or the level means. Default `replicates`. `replicates` = Every standard well (replicates as separate points); `means` = The mean of each standard level. |
| growth_threshold | number | – | growth: values at or below this are left out of the log-scale fit. Default 5 % of each well's maximum. |
| layout | string | – | Plate-layout file: CSV/TSV, a plate-map grid (blocks whose corner cell names the field: role, sample, compound, concentration, dilution) or a long table with a `well` column. |
| lloq | number | – | curve: lower limit of quantification (overrides the recovery rule). |
| model | string | – | curve, dose-response: the model. Default `4pl`. `linear` = y = slope · x + intercept; `4pl` = Four-parameter logistic: y = d + (a − d) / (1 + (x/c)^b); `5pl` = Five-parameter logistic: y = d + (a − d… |
| negative_wells | string | – | Wells to mark as negative controls (no effect / vehicle). |
| normalize | string | – | wells, dose-response, qc: percent effect from the controls. Default `none`. `none` = the (blank-subtracted) signal; `controls` = percent effect: 0 % = the negative control (vehicle) mean, 100 % = the… |
| plate_options | – | – | Rarely needed plate options. |
| plot | boolean | – | curve, dose-response: also return a PNG of the points and the fitted curve. |
| positive_wells | string | – | Wells to mark as positive controls (full effect / maximum signal). |
| reduce | string | – | wells, curve, dose-response, qc on a kinetic read: how each well's time course becomes one value. `first` = first time point; `last` = last time point; `max` = largest value; `min` = smallest value;… |
| standards | string | – | curve: standards as `WELLS=CONCENTRATION` items separated by `;` (`A1,A2=100;B1:B2=50`). Default: the layout's. |
| strict | boolean | – | Refuse values the file's assurance does not validate (exit_code 6). Default: the server's. |
| uloq | number | – | curve: upper limit of quantification (overrides the recovery rule). |
| weighting | string | – | curve, dose-response: fit weighting. Default `none`. `none` = Every point weight 1 (ordinary least squares); `1/y` = w = 1/|y|; `1/y2` = w = 1/y²; `1/x` = w = 1/x (x > 0); `1/x2` = w = 1/x² (x > 0). |
| wells | string | – | Only these wells (`A1:H6`); the layout's blanks and controls are still used. |
| window | integer | – | Points per sliding window (reduce=max-slope, kinetics, growth). Default: 5 or a tenth of the time points, whichever is larger. |
| Name | Type | Req | Description |
|---|---|---|---|
| analysis | string | yes | The analysis run (`wells`, `curve`, `dose-response`, `kinetics`, `growth`, `qc`). |
| blank | – | – | Blank subtraction applied. |
| compounds | array | – | One row per compound (`dose-response`). |
| curve | – | – | Standard-curve fit report (`curve`). |
| format | string | yes | Format id of the input (`plate`, or `long-csv`). |
| growth | array | – | One row per well (`growth`). |
| growth_summary | – | – | Wells by growth pattern, with the range of crash and regrowth times (`growth`). |
| kinetics | array | – | One row per well (`kinetics`). |
| layout | – | yes | Where the layout came from and what it assigns. |
| notes | array | – | What was assumed or left out. |
| outliers | – | yes | Outlier rule and flagged wells. |
| path | string | yes | The input file. |
| plate | string|null | – | Plate (table) name. |
| quality | – | – | Assay quality from control wells (whenever positive and negative controls exist). |
| read | – | yes | The read analysed. |
| reduce | string|null | – | How kinetic time courses were reduced to one value per well (endpoint analyses). |
| samples | array | – | One row per replicate group (sample, standard level, control, dose). |
| table | integer | yes | Table (plate) index. |
| warnings | array | – | What may be wrong with the layout: role names read as samples, controls of unknown sign, role-map entries that matched no well. |
| wells | array | – | One row per well. |
| written | array | – | Files written (`--csv`, `--plot`). |
No examples provided.
openreadout_batch ~1,138
One measure over many files as one tidy table, optionally joined to sample sheets or plate maps (the join key is chosen from the data and reported in joins[] with unmatched rows) and summarized by group (by; test against a control). Analyses (peaks, chromatogram, nmr-peaks, ephys-features, spikes, qpcr, gate, assay) take the arguments of their tools as options. Inputs (paths): files, directories, globs or an index query. Returns at most limit rows (page with offset; output writes them all to a file); a failing file is a row with error. openreadout_summarize regroups a table written by an earlier output.
| Name | Type | Req | Description |
|---|---|---|---|
| by | array | – | Summarize by these columns (e.g. `["condition"]`): n, mean, sd, sem, median, min, max, cv_percent per group; channels/parameters/populations stay apart automatically. |
| control | string | – | The control group. |
| exact_by | boolean | – | Group by exactly `by` (do not add the measurement columns that vary). |
| fields | array | – | Columns to keep (info: index field names, or `["all"]`). |
| formats | array | – | Only these format ids (e.g. `["fcs"]`). |
| from_index | string | – | Also take the data sets an index query selects: the index directory … |
| keys | array | – | Fixed join keys `SHEET_COLUMN=FIELD` (path, file, stem, sample_id, sample_name, barcode, well, position, run_order, column:NAME). |
| limit | integer | – | Rows to return (default 20, max 500; 0 with `output`: the rows are in the file). |
| measure | string | yes | What to measure per data set. `stats` = pixel statistics per image × channel (per=well for screening plates); `trace` = statistics per trace × sweep × channel; `table` = FCS: events, median, mean, sd… |
| offset | integer | – | First row returned. |
| options | object | – | The measure's options. Analyses: the arguments of that analysis's tool (openreadout_peaks, openreadout_nmr_peaks, openreadout_assay with its `analysis`, ...), plus `rows` (which record list becomes r… |
| output | string | – | Write the full table (or the summary, with `by`) to this .csv/.tsv/.jsonl/.json/.parquet file (verified; never overwrites without `overwrite`). |
| overwrite | boolean | – | Replace an existing output file. |
| paths | array | – | Files, directories or glob patterns. |
| query | string | – | … and the query (search syntax, e.g. "format=fcs channel~CD4"). |
| recursive | boolean | – | Walk sub-directories. |
| replicate | string | – | Average rows within each replicate first. |
| sample_sheets | array | – | Sample sheets (CSV/TSV/XLSX) or plate layouts (plate-map grids) to join; the key is chosen from the data (file name, path, sample id recorded in the file, well, barcode, vial, run order) and reported… |
| test | string | – | `welch` or `mann-whitney` against `control` (a value of the first `by` column). |
| values | array | – | Value columns to summarize (default: the measure's main values). |
| where | array | – | Row filters `COLUMN=VALUE` / `COLUMN!=VALUE` (e.g. "parameter=FITC-A"). |
| worksheet | string | – | Worksheet of an XLSX sheet. |
| Name | Type | Req | Description |
|---|---|---|---|
| columns | array | yes | Columns of `rows`, with type, unit and role (`id`, `key`, `metadata`, `annotation`, `value`, `error`). |
| grain | array | yes | Columns that identify a row within its data set. |
| inputs | – | yes | How the inputs became data sets. |
| joins | array | – | Sample sheets and layouts joined, in order. |
| measure | string | yes | Measure (`stats`, `trace`, `table`, `gate`, `info`, …). |
| offset | integer | yes | Index of the first row in `rows`. |
| output | – | – | The file the full table was written to (`-o`). |
| returned_rows | integer | yes | Rows returned here. |
| rows | array | yes | Rows as arrays in column order. |
| summary | – | – | The group summary (`--by`). |
| total_rows | integer | yes | Rows in the whole table. |
| truncated | boolean | yes | True when the table has rows after the last one returned (page with `offset`, or read the full table from `output`). |
| warnings | array | – | Things to check: skipped inputs, grouping, join results. |
No examples provided.
openreadout_check ~133
Integrity check: ok plus findings (severity, code, message) for truncation, missing planes or parts, bad blocks; a plate folder reports missing files per well; a file still being written reports acquisition_in_progress.
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Path to the file or data-set directory. |
| headers_only | boolean | – | Check headers and structure only (offsets, declared sizes and counts, missing parts): no decompression, decoding or checksums over the data. |
| strict | boolean | – | Refuse values the file's assurance does not validate (exit_code 6). Default: the server's. |
| Name | Type | Req | Description |
|---|---|---|---|
| acquisition | – | – | Present when the file is not finished: still being written (`in_progress`: findings about the unfinished tail are warnings and `ok` covers the complete part) or stopped before the end (`interrupted`)… |
| assurance | – | – | Whether the file lies inside what its reader has been validated on (the same block as `info` → `assurance`). `ok` says the file is intact; `assurance` says whether its values can be trusted. Filled b… |
| checks_performed | array | yes | What was verified, in plain words, so the caller knows what "ok" covers. |
| findings | array | yes | Everything found, in the order checked. |
| format | string | yes | Format id of the input file. |
| ok | boolean | yes | True when no finding has severity `error`. |
| path | string | yes | The input file. |
No examples provided.
openreadout_chromatogram ~637
Chromatograms from mass spectra and detector signals: TIC, BPC, extracted-ion (mz with ppm or da), SRM/MRM transitions, stored chromatograms and UV/DAD/FID/TCD traces (traces). Per chromatogram: apex time and intensity, integral, and thinned arrays. Answers 'when does m/z X elute'.
| Name | Type | Req | Description |
|---|---|---|---|
| aggregate | string | – | `sum` (default) or `max` of the points inside an XIC window. |
| bpc | boolean | – | Base-peak chromatogram. |
| channel | integer | – | Channel of the traces (e.g. one DAD wavelength). Default: the first signal channel. |
| da | number | – | XIC tolerance in m/z units instead of ppm. |
| file | string | yes | Path to the file or data-set directory. |
| max_points | integer | – | Points returned per chromatogram (the most intense point of each of N equal slices). Default 500, max 20000; the summary (apex, integral) always covers every point. |
| ms_level | integer | – | MS level of the scans. Default 1 (2 with `precursor`). |
| mz | array | – | Extracted-ion chromatograms at these m/z values (one streaming pass for all). |
| mz_range | array | – | TIC/BPC over this m/z range only, `[low, high]`. |
| polarity | string | – | `positive` or `negative`: only scans of this polarity. |
| ppm | number | – | XIC tolerance (half-width) in ppm. Default 10. |
| precursor | number | – | Only MS/MS scans of this precursor m/z (product-ion XIC). |
| precursor_tol | number | – | Precursor tolerance, m/z units. Default 0.5. |
| profile | boolean | – | Use profile data where scans store both profile and centroids. Default false (the instrument's centroids). |
| rt_range | array | – | Retention-time range `[start, end]`, minutes. |
| run | integer | – | Spectra run. Default 0. |
| scan_filter | string | – | Only scans whose scan filter/description contains this text (case-insensitive). |
| strict | boolean | – | Refuse values the file's assurance does not validate (exit_code 6). Default: the server's. |
| sweep | integer | – | Sweep of the traces (one spectrum of a map or series, one injection). Default 0. |
| tic | boolean | – | Total-ion chromatogram (the default for mass-spectrometry files when nothing else is chosen). |
| traces | array | – | Stored chromatograms or detector signals (UV/DAD, FID, TCD, stored TIC/SRM): trace indices from openreadout_info → traces[]. |
| transition_tol | number | – | Q1/Q3 tolerance of transitions, m/z units. Default 0.5. |
| transitions | array | – | SRM/MRM transitions as `"Q1>Q3"` strings, e.g. `"279.2>179.2"`. |
| Name | Type | Req | Description |
|---|---|---|---|
| chromatograms | array | yes | One entry per requested chromatogram. |
| format | string | yes | Format id of the input file. |
| notes | array | – | Anything the caller should know. |
| output | string|null | – | File written (`-o`), when any. |
| path | string | yes | The input file. |
| run | integer|null | – | Spectra run used, when any chromatogram was computed from spectra. |
| spectra_read | integer | yes | Spectra decoded. |
No examples provided.
openreadout_compare ~285
Compare two files, e.g. a raw file and its export: metadata differences, geometry, channel names, physical sizes, and per-plane hashes or the largest difference within tolerance. identical says whether they hold the same data.
| Name | Type | Req | Description |
|---|---|---|---|
| against | string | yes | The second file (e.g. an OME-TIFF export of `file`). |
| file | string | yes | The first file (e.g. the raw file). |
| ignore | array | – | JSON pointers (into openreadout_info output) to leave out of the metadata diff; `*` matches one segment. |
| image | integer | – | Only this image index (in both files). |
| level | integer | – | Pyramid level (0 = full resolution, the default). |
| no_pixels | boolean | – | Metadata and geometry only, no pixels. |
| select | array | – | Plane selection strings such as `c=0`, `z=2-5`, `t=0,3`. A second file holding only the selected planes (an export with the same selection) is matched to them in order. |
| strict | boolean | – | Refuse values the file's assurance does not validate (exit_code 6). Default: the server's. |
| tolerance | number | – | Largest absolute sample difference that still counts as equal. Default: bit-identical planes (same xxh3-128). |
| Name | Type | Req | Description |
|---|---|---|---|
| identical | boolean | yes | Nothing compared differs: metadata (unless skipped), geometry, channel names, physical sizes and planes (within the tolerance). The exit code is 0 when true, 1 when false. |
| images | array | yes | Geometry, channel-name and physical-size comparison per image index. |
| metadata | – | yes | The normalized-metadata diff. |
| notes | array | – | Caveats (e.g. formats that store different metadata for the same acquisition). |
| ours | – | yes | The first file. |
| planes | – | yes | The plane-by-plane comparison. |
| theirs | – | yes | The second file. |
No examples provided.
openreadout_ephys_features ~259
Patch-clamp features: action potentials per sweep, rheobase, f-I slope, input resistance, membrane time constant, capacitance, sag; in voltage clamp, holding current and access resistance.
| Name | Type | Req | Description |
|---|---|---|---|
| channel | integer | – | Channel (default: the first voltage channel, else the first current channel). |
| dvdt_threshold | number | – | dV/dt onset criterion, V/s (default 10). |
| file | string | yes | Path to the file or data-set directory. |
| max_spikes | integer | – | Per-spike rows returned (default 25, the first spikes in sweep order; counts stay complete). |
| min_rise_mv | number | – | A spike's peak must rise this far above the lowest voltage since the previous spike, mV (default 15; 0 counts every crossing, as eFEL does). |
| peak_threshold_mv | number | – | Spike voltage threshold, mV (default −20). |
| strict | boolean | – | Refuse values the file's assurance does not validate (exit_code 6). Default: the server's. |
| sweeps | array | – | Sweeps to analyse (default all). |
| trace | integer | – | Trace index (default 0). |
| Name | Type | Req | Description |
|---|---|---|---|
| cell | – | yes | Per-cell features. |
| channel | – | yes | Channel analysed. |
| clamp_mode | string | yes | `current_clamp`, `voltage_clamp` or `unknown` (from the channel and command units). |
| format | string | yes | Format id. |
| notes | array | – | Remarks. |
| path | string | yes | Input path. |
| sample_rate_hz | number|null | yes | Sampling rate, Hz. |
| settings | – | yes | Spike detection settings. |
| spike_count_total | integer | yes | Total spikes detected. |
| spikes | array | yes | One row per spike (at most `max_spikes`). |
| spikes_truncated | boolean | yes | True when `spikes` was cut at `max_spikes`. |
| stimulus | – | – | Stimulus from the protocol, when there is one. |
| sweeps | array | yes | One row per sweep. |
| trace | integer | yes | Trace analysed. |
No examples provided.
openreadout_export ~1,307
Convert to an open format, or save a figure, as a new file read back and verified; the source is never touched. format: ome-tiff (images, default; pyramidal when the source is), ome-zarr (multiscale; plates as OME-NGFF HCS), mzml (mass spectra, default), csv (one table or one sweep of a trace, default for tables and traces), parquet or arrow (tables, traces with every sweep, spectra=true for MS points), nwb (electrophysiology), jcamp (NMR, IR/Raman, chromatograms), asm (plate readers), rdml (qPCR), nifti (volumes: CT, MRI). Figures: plot or preview = the arguments of that call, output .png, .jpg, .tiff, .svg or .pdf (scale, dpi for print); the picture comes back too. Sends progress with a progressToken.
| Name | Type | Req | Description |
|---|---|---|---|
| centroid | boolean | – | mzML, Parquet, Arrow: write the instrument's centroid lists instead of profiles where a scan has both. |
| dpi | integer | – | Figures: print resolution (e.g. 300), recorded in .png, .jpg and .tiff files; .svg and .pdf pages get the size the raster would print at. |
| file | string | – | Path to the file (not with plot or preview). |
| format | string | – | `ome-tiff` (one BigTIFF file; the default for images), `ome-zarr` (OME-NGFF 0.5 / Zarr v3 directory with a pyramid), `mzml` (indexed mzML 1.1.0; the default for mass spectra), `csv` (one table, or on… |
| group_frames | integer | – | MRC: sum every N time points into one section (dose fractions of a movie). |
| image | integer | – | Images: only this image index. |
| labels | boolean | – | CSV: add a second header line with column labels (FCS `$PnS`). |
| level | integer | – | Images: export this source pyramid level as the full resolution (default 0). |
| output | string | – | Output path; defaults to the input with `.ome.tiff`, `.ome.zarr`, `.mzML`, `.csv`, `.asm.json`, `.rdml`, `.fastq`, `.parquet`, `.arrow`, `.nwb`, `.jdx`, `.nii.gz` or `.mrc`. Its extension sets the fo… |
| overwrite | boolean | – | Replace an existing output file or directory. |
| plot | object | – | Save a figure: the arguments of an openreadout_plot call. `output` names the file. |
| preview | object | – | Save a picture: the arguments of an openreadout_preview call (file, region, annotations, marks, dark, …); max_size up to 8192. Images are saved with a scale bar and no rulers (axes scale-bar; add tit… |
| region | – | – | Images: export only this rectangle `{x, y, width, height}` (pixels of `level`) of every plane, read tile by tile (cut a field out of a whole-slide image). |
| rows | string | – | CSV, Parquet, Arrow, NWB, JCAMP-DX: rows (samples of each sweep for traces) `A-B`, `A-` or `A`, zero-based and inclusive. |
| run | integer | – | mzML, Parquet, Arrow: spectra run index (default 0). |
| scale | number | – | Figures: pixels per figure pixel in .png, .jpg and .tiff files (default 2, up to 8); image previews are read again at max_size × scale. |
| select | array | – | Images: plane selection strings such as `c=0`, `z=2-5`, `t=0,3`. |
| spectra | boolean | – | Parquet, Arrow: export the mass spectra of `run` (one row per point, plus a `<name>.scans.parquet` per-scan summary) instead of a table or trace. |
| strict | boolean | – | Refuse values the file's assurance does not validate (exit_code 6). Default: the server's. |
| sweep | integer | – | CSV, Parquet, Arrow, NWB, JCAMP-DX: only this sweep (CSV default 0; the others: every sweep). |
| table | integer | – | CSV, Parquet, Arrow: this table index (FCS data set, plate read, event or peak table). |
| trace | integer | – | CSV, Parquet, Arrow, NWB, JCAMP-DX: this trace index (NWB default: every trace). |
| wells | array | – | OME-Zarr of a multi-well plate: only the fields of these wells (`C05`). |
No output schema declared.
No examples provided.
openreadout_extract ~160
Write one attachment a file embeds (a slide label or thumbnail, a preview image, time stamps) to a new file as stored, verified. openreadout_info view=structure lists them.
| Name | Type | Req | Description |
|---|---|---|---|
| attachment | string | yes | The attachment: a name as openreadout_info view=structure lists it (a CZI's `Thumbnail`, `Label` or `SlidePreview` image, `TimeStamps`), or `#<index>`. |
| file | string | yes | Absolute or working-directory-relative path to the file that holds the attachment. |
| output | string | – | Output path. Default: `<input stem>.<attachment name>.<ext>` next to the input. |
| overwrite | boolean | – | Replace an existing output file. |
| Name | Type | Req | Description |
|---|---|---|---|
| attachment | – | yes | The attachment that was extracted. |
| bytes_written | integer | yes | Number of bytes written. |
| format | string | yes | Format id of the input file. |
| output | string | yes | Where the bytes were written. |
| path | string | yes | The input file. |
| verified | boolean | yes | True once the output was read back and matched. |
| xxh3 | string | yes | xxh3-128 of the written bytes, 32 hex chars. |
No examples provided.
openreadout_gate ~291
Flow-cytometry gating from a FlowJo workspace (workspace) or Gating-ML 2.0 file (gatingml): the event count, percentage and medians of every population of the FCS file. Without workspace or gatingml, file is the gating file and the answer describes its samples and gate tree.
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Path to the file or data-set directory. |
| gatingml | string | – | Gating-ML 2.0 document (instead of workspace). |
| medians | array | – | Parameters whose median over each population's events is reported under populations[].medians (`$PnN` or `$PnS`; `Comp-NAME` for compensated values), or `["all"]`: every parameter a gate uses, compen… |
| populations | array | – | Report only these populations (paths or unique names) and their descendants. |
| sample | string | – | Workspace sample name or id (default: matched by file name, then $FIL, then the only one). |
| strict | boolean | – | Refuse values the file's assurance does not validate (exit_code 6). Default: the server's. |
| table | integer | – | FCS data set index. Default 0. |
| workspace | string | – | FlowJo workspace (.wsp); `file` is then the FCS file to count events in. |
| Name | Type | Req | Description |
|---|---|---|---|
| compensation | array | yes | Compensation matrices the gating file defines (and whether any gate used them). |
| event_count | integer|null | – | Events in the data set. |
| gating_file | string | yes | The gating file (FlowJo workspace or Gating-ML document). |
| gating_format | string | yes | `flowjo-wsp` or `gating-ml`. |
| notes | array | – | Caveats: skipped populations, disagreements with counts stored in the workspace, scaling. |
| path | string|null | – | The FCS file gated; absent when only the gating file was described. |
| populations | array | yes | One row per population, parents before children. |
| sample | – | – | The workspace sample whose gates were used (FlowJo only). |
| table | integer|null | – | FCS data set (table) gated. |
| transforms | array | yes | Transforms by id (FlowJo: by parameter name). |
| tree | array | yes | The same populations as a tree (quadrant gates appear as grouping nodes without a count). |
| workspace | – | – | Workspace-level facts (FlowJo only). |
No examples provided.
openreadout_health ~123
Storage health of a share indexed by openreadout_index: truncated or corrupt files, unreadable formats, duplicates (confirmed by content hash unless no_hash), the same experiment stored twice, files at risk, totals and personal-data findings.
| Name | Type | Req | Description |
|---|---|---|---|
| index_dir | string | yes | Index directory (from openreadout_index or `openreadout index`). |
| max_list | integer | – | Most entries listed per section (default 50; counts are complete). |
| no_hash | boolean | – | Do not confirm duplicate candidates by hashing their content (no file is read). |
| Name | Type | Req | Description |
|---|---|---|---|
| at_risk | – | yes | Vendor-only formats with no open export. |
| by_family | array | yes | Per family. |
| by_format | array | yes | Data sets and bytes per format. |
| by_year | array | yes | Per acquisition year. |
| duplicates | – | yes | Byte-identical copies. |
| generated_at | string | yes | When this report was made. |
| index_complete | boolean | yes | Whether the index covers every root to the end. |
| index_dir | string | yes | The index directory. |
| index_updated_at | string | yes | When the index was last written. |
| integrity | – | yes | Truncated and corrupt data sets. |
| near_duplicates | – | yes | The same experiment stored more than once. |
| pii | – | yes | Personal data. |
| roots | array | yes | The roots of the index. |
| totals | – | yes | Totals. |
| unreadable | – | yes | Unreadable formats and unrecognised files. |
No examples provided.
openreadout_index ~336
Catalog every data set under roots into index_dir (Parquet: one row per data set with format, size, sample, instrument, technique, method, operator, start, dimensions, channels, objective, events, scans, integrity status, personal-data flags). Headers only and resumable: a call stops after max_files/max_seconds with complete=false, and the same call again continues. openreadout_search queries the result. For one folder of files, openreadout_batch with measure info lists what each file is in one call.
| Name | Type | Req | Description |
|---|---|---|---|
| check | string | – | Integrity check per data set: `headers` (default; structure only), `full` or `none`. |
| exclude | array | – | Glob patterns of names or root-relative paths to skip. |
| follow_symlinks | boolean | – | Crawl directories behind symbolic links too (links to files are always read). |
| full_rescan | boolean | – | Read every file again instead of reusing unchanged records. |
| index_dir | string | yes | Index directory to create or update (never inside a root). |
| max_files | integer | – | Stop after this many files in this call (default 20000); call again to continue. |
| max_seconds | number | – | Stop after this many seconds in this call (default 45); call again to continue. |
| pii | boolean | – | Look for personal data (default true). |
| restart | boolean | – | Discard an interrupted crawl instead of resuming it. |
| roots | array | yes | Directories (or files) to crawl. |
| threads | integer | – | Worker threads (default: the number of CPUs). |
| Name | Type | Req | Description |
|---|---|---|---|
| bytes | integer | yes | Bytes of every file seen. |
| changes | object | yes | Data sets per change (`new`, `changed`, `unchanged`, `moved`) and `removed`. |
| check_status | object | yes | Data sets per check status. |
| complete | boolean | yes | True when the crawl walked every root to the end. False after a cap (`--max-files`, `--max-seconds`) or an interruption: the tables then hold what was read so far plus the previous run's records for… |
| crawl | – | yes | Crawl counters, cumulative over resumed sessions. |
| datasets | integer | yes | Data sets (rows of `experiments.parquet`) after multi-file grouping. |
| families | object | yes | Data sets and bytes per family. |
| files | integer | yes | Rows of `files.parquet`. |
| files_per_s | number|null | yes | Items per second over the crawl's wall time. |
| formats | object | yes | Data sets and bytes per format id. |
| index_dir | string | yes | Absolute path of the index directory. |
| next | string|null | – | What to do next, when the crawl is not complete. |
| pii | – | yes | Personal-data totals. |
| problems | object | yes | Problems per category (`integrity`, `readability`, `walk`, `pii`). |
| roots | array | yes | The directories (or files) crawled, absolute. |
| schema_version | string | yes | [`INDEX_SCHEMA_VERSION`]. |
| settings | – | yes | Options of the crawl. |
| started_at | string | yes | When this run started (ISO-8601 UTC). |
| tables | object | yes | The tables. |
| tool | – | yes | The tool and version that wrote it. |
| unknown_extensions | object | yes | Files no reader recognises, per lower-case extension (`(none)` for no extension). |
| updated_at | string | yes | When the tables were written. |
| years | object | yes | Data sets per acquisition year (`unknown` when the file records no date). |
No examples provided.
openreadout_info ~572
What an instrument file or data-set directory holds, from its headers (fast on huge files): format, images[] (sizes, pixel type, µm/px, channels and dyes, objective), tables[], traces[], spectra[] (MS runs), plate, experiment (sample, instrument, method, operator, start) and assurance. view=summary attaches a ~384 px thumbnail of image 0 with full-resolution pixel rulers. ask answers a question in words, naming the fields it used.
| Name | Type | Req | Description |
|---|---|---|---|
| ask | string | – | A question in plain words ("what was the gradient?", "which channel is DAPI?", "how many MS/MS scans?"): answered under answers[] with the fields each came from. Implies view=explain. |
| file | string | yes | Path to the file or data-set directory. |
| first_entry | integer | – | view=structure with kind: skip this many elements of that kind first (paging). |
| kind | string | – | view=structure: list only elements of this kind (as entries_total names them), e.g. "attachment" or "subblock". |
| max_entries | integer | – | view=structure: list at most this many elements of each kind (0 = all). Default 50. |
| max_frames | integer | – | view=full: per-frame records per image under images[].extra.frames. Default 100; 0 omits them; -1 embeds all. |
| max_images | integer | – | List at most this many images (0 = all). Default: all, except screening plates (16; their field images are all alike and plate.wells[].images indexes every field). |
| strict | boolean | – | Refuse values the file's assurance does not validate (exit_code 6). Default: the server's. |
| thumbnail | boolean | – | view=summary: attach a small picture of image 0 (~384 px, with full-resolution pixel rulers) as image content. Default true; skipped (with a note) when it would decode too much. |
| vendor | boolean | – | view=full: include the vendor's raw metadata tree (can be megabytes). Default false. |
| view | string | – | What to return. `summary` = the header summary (default); `full` = the summary with per-frame records (time stamps, stage positions, exposure) and per-field provenance; vendor=true adds the vendor's… |
Structured output declared, but exposes no named fields.
No examples provided.
openreadout_link ~182
Groups files that measured the same sample across instruments and formats (sample id, barcode, plate well + plate, a conversion naming its source, the same acquisition or the same spectra), from headers; every link has its evidence and a confidence (high/medium/low; links below min_confidence are listed in weak_links).
| Name | Type | Req | Description |
|---|---|---|---|
| formats | array | – | Only these format ids. |
| from_index | string | – | Also take the data sets an index query selects: the index directory … |
| min_confidence | string | – | `low`, `medium` (default) or `high`: weaker links are listed in weak_links, not grouped. |
| no_recursive | boolean | – | Only the top level of directories. |
| paths | array | – | Directories (walked recursively), files or glob patterns. |
| query | string | – | … and the query. |
| Name | Type | Req | Description |
|---|---|---|---|
| groups | array | yes | Groups of two or more data sets. |
| inputs | – | yes | How the inputs became data sets. |
| min_confidence | – | yes | Minimum confidence of links that form groups. |
| notes | array | – | Things to know. |
| shared_identifiers | array | – | Identifiers treated as weak evidence. |
| unlinked | integer | yes | Data sets in no group. |
| unlinked_examples | array | – | Some of them. |
| weak_links | array | – | Links below `min_confidence` (not grouped), strongest first (first 50). |
No examples provided.
openreadout_nmr_peaks ~541
NMR peak list (ppm, height, width, S/N) and integrals of given regions or of every multiplet (auto_integrate), from the vendor's processed spectrum or a spectrum processed from the FID (from=fid: group delay, apodization, zero filling, FT, phase, baseline).
| Name | Type | Req | Description |
|---|---|---|---|
| auto_integrate | boolean | – | Without integrate: integrate every multiplet (peaks closer than 15 Hz, ±10 Hz). |
| baseline | string | – | Baseline: `default` (order-1 polynomial), `none`, `poly:N`. Stored spectra are used as stored unless this is given. |
| file | string | yes | Path to the file or data-set directory. |
| from | string | – | `auto` (default: the vendor's processed spectrum if present, else process the FID), `fid` (always process the FID), `processed` (stored spectrum only). |
| integral_reference | array | – | Normalise integrals so region `[index, value]` has that value (default `[0, 1]`). |
| integrate | array | – | Regions to integrate, `[[a, b], …]` in ppm. |
| lb | number | – | Exponential line broadening in Hz (0 = none; default stored, else 0.3 Hz 1H / 1 Hz other). |
| max_peaks | integer | – | Keep at most this many peaks (tallest; default 200). |
| min_height_fraction | number | – | Minimum height as a fraction of the tallest point (default 0; e.g. 0.01). |
| min_prominence | number | – | Minimum prominence in noise SDs (default 5). |
| min_snr | number | – | Minimum peak height in noise SDs (default 10). |
| negative | boolean | – | Also report negative peaks (DEPT/APT). |
| phase | string | – | `default` (stored phases, else automatic), `stored`, `auto`, `magnitude`, `none`, or `"P0,P1"` in degrees. |
| range_ppm | array | – | Only pick between two shifts, `[a, b]` ppm. |
| size | integer | – | Transform size in complex points (power of two). |
| strict | boolean | – | Refuse values the file's assurance does not validate (exit_code 6). Default: the server's. |
| sweep | integer | – | Row of a ser/arrayed FID (default 0). |
| trace | integer | – | Trace index (default: chosen by `from`). |
| Name | Type | Req | Description |
|---|---|---|---|
| axis | – | yes | The chemical-shift axis of the spectrum. |
| format | string | yes | Format id. |
| integrals | array | – | Integrals of the requested regions. |
| main_peak | – | – | The tallest positive peak (named like `analyze peaks` → `main_peak` for chromatograms). |
| noise_sd | number|null | yes | Robust noise standard deviation (same units as `height`). |
| notes | array | – | Remarks. |
| nucleus | string|null | – | Observed nucleus, when known. |
| path | string | yes | The input path. |
| peak_count | integer | yes | Number of peaks found. |
| peak_options | – | yes | Thresholds used. |
| peaks | array | yes | Peaks, high shift first. |
| processing | – | – | How the FID was processed (`source` = `fid` only). |
| source | string | yes | `processed` (a spectrum the vendor software stored) or `fid` (processed here). |
| sweep | integer | yes | Sweep (row) used. |
| trace | integer | yes | Trace used (see `info` → `traces[]`). |
| trace_name | string|null | – | Its name. |
No examples provided.
openreadout_peaks ~1,037
Detect and integrate peaks: chromatograms (detector traces, TIC, XIC, SRM) with retention time, area, height, widths, tailing, plates, resolution, S/N and area % (purity); one peak near rt; a compound list; bands and regions of IR, Raman, UV-Vis and NMR spectra and peaks of sized electropherograms in bp (x_range, integrate). Takes the openreadout_chromatogram arguments to choose the signal.
| Name | Type | Req | Description |
|---|---|---|---|
| aggregate | string | – | `sum` (default) or `max` of the points inside an XIC window. |
| area_seconds | boolean | – | Areas in signal × seconds instead of signal × minutes. Default false. |
| baseline | string | – | Baseline under detected peaks: `auto` (default), `drop`, `valley` or `tangent`; or the baseline under `x_range` windows and manual integrations: `linear` (default: a straight line between the window'… |
| bpc | boolean | – | Base-peak chromatogram. |
| channel | integer | – | Channel of the traces (e.g. one DAD wavelength). Default: the first signal channel. |
| compounds | array | – | Targeted compounds: `[{name, mz? | q1+q3? | trace?, rt?, window?, ppm?, polarity?, ms_level?, precursor?}]`; one result row each under `compounds`. |
| da | number | – | XIC tolerance in m/z units instead of ppm. |
| file | string | yes | Path to the file or data-set directory. |
| integrate | array | – | Manual integrations `[[start, end], ...]` in minutes. |
| min_height | number | – | Detection threshold in signal units. |
| min_snr | number | – | Detection threshold, height / noise σ. Default 3. |
| min_width | number | – | Smallest width at half height, minutes. |
| ms_level | integer | – | MS level of the scans. Default 1 (2 with `precursor`). |
| mz | array | – | Extracted-ion chromatograms at these m/z values (one streaming pass for all). |
| mz_range | array | – | TIC/BPC over this m/z range only, `[low, high]`. |
| pick | string | – | `largest` (default) or `nearest` peak in the window. |
| polarity | string | – | `positive` or `negative`: only scans of this polarity. |
| ppm | number | – | XIC tolerance (half-width) in ppm. Default 10. |
| precursor | number | – | Only MS/MS scans of this precursor m/z (product-ion XIC). |
| precursor_tol | number | – | Precursor tolerance, m/z units. Default 0.5. |
| profile | boolean | – | Use profile data where scans store both profile and centroids. Default false (the instrument's centroids). |
| rt | number | – | Expected retention time (minutes): also report the peak there as `picked`. |
| rt_range | array | – | Retention-time range `[start, end]`, minutes. |
| run | integer | – | Spectra run. Default 0. |
| scan_filter | string | – | Only scans whose scan filter/description contains this text (case-insensitive). |
| smooth | integer | – | Savitzky–Golay window in points (below 5: none). Default automatic. |
| strict | boolean | – | Refuse values the file's assurance does not validate (exit_code 6). Default: the server's. |
| summary_only | boolean | – | Leave out the full peak tables (keep compounds, picked and manual results). Default false. |
| sweep | integer | – | Sweep of the traces (one spectrum of a map or series, one injection). Default 0. |
| tic | boolean | – | Total-ion chromatogram (the default for mass-spectrometry files when nothing else is chosen). |
| traces | array | – | Stored chromatograms or detector signals (UV/DAD, FID, TCD, stored TIC/SRM): trace indices from openreadout_info → traces[]. |
| transition_tol | number | – | Q1/Q3 tolerance of transitions, m/z units. Default 0.5. |
| transitions | array | – | SRM/MRM transitions as `"Q1>Q3"` strings, e.g. `"279.2>179.2"`. |
| window | number | – | Half-width of the `rt` window (and of compounds without one), minutes. Default 0.5. |
| x_range | array | – | Axis windows `[[a, b], ...]` to integrate, in the axis's own units (either order): on a spectrum (IR/Raman cm⁻¹, UV nm, NMR ppm) each is a region under `spectra[].regions` (area with the `baseline`,… |
| Name | Type | Req | Description |
|---|---|---|---|
| chromatograms | array | yes | One entry per analysed chromatogram. |
| compounds | array | – | One row per compound of the compound list. |
| format | string | yes | Format id of the input file. |
| notes | array | – | Anything the caller should know. |
| outputs | array | – | Files written (`-o`, `--plot`). |
| path | string | yes | The input file. |
| spectra | array | – | Spectra (traces whose axis is not time: wavenumber, wavelength, ppm, …): bands and integrated regions, one entry per analysed spectrum. |
No examples provided.
openreadout_plot ~638
A finished figure from lab files in one call, as image content plus what was drawn (series, data read, ranges, units, marked peaks). Name data by file and selector, never by pasting numbers: traces and sweeps, chromatograms (TIC, XIC) and the spectrum at an rt or the TIC apex, plate wells by range or layout group (curves per well, or mean ± spread per group), FCS dot plots coloured by gate population and histograms, f–I curves, dose-response and standard-curve fits, a table file's columns (openreadout_batch output); small inline values are allowed. Several files overlay; facet=series gives small multiples, facet=plate plate positions; panels side by side; annotate with bands, lines, labelled points, arrows. Draws only; openreadout_export saves the figure.
| Name | Type | Req | Description |
|---|---|---|---|
| annotate | array | – | Bands, lines, labelled points, arrows, boxes and notes, in the units the axes show: the same annotations as openreadout_preview (`facet` picks one small plot). |
| caption | string | – | Small print under the figure (a source credit, a method note). |
| column_labels | array | – | Column headings of a plate facet (e.g. doses), left to right. |
| columns | integer | – | Panels (or facets of a single panel) per row. Default: all panels in one row; facets in a near-square grid. |
| data | – | – | What to draw: one series spec or a list of them, drawn in order (first at the back). |
| facet | – | – | Small multiples: `series` = one small plot per series (sweeps, files, groups, wells); `plate` = plate wells in their plate positions. |
| file | – | – | The file of every series here that names no file, table or values. Alone, without `data`, it draws the file's default view. |
| height | integer | – | Height in px (default from the content, at most 3000). |
| legend | – | – | How series are named: `direct` labels at the line ends, a `key` row, or `none`. Default direct when it fits, else key. |
| panels | array | – | Several panels, side by side (see columns); instead of a top-level `data`. |
| row_labels | array | – | Row headings of a plate facet, top to bottom. Default: the layout group of each block of rows, else the row letters. |
| share | – | – | Panels that share an axis range. Default none. |
| stack | number | – | Offset each series upward by this fraction of the tallest one (stacked spectra). |
| strict | boolean | – | true: refuse values this file's assurance does not validate (exit_code 6, with a hint). |
| theme | – | – | Colour scheme. Default light. |
| title | string | – | Title over the figure. |
| width | integer | – | Width in px (default 1200, at most 3000). |
| x | – | – | The x axis. |
| y | – | – | The y axis. |
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | yes | Files the data came from. |
| height | integer | yes | Picture size in px. |
| inline_series | integer | yes | Series drawn from inline values (numbers the caller supplied, not read from a file). |
| notes | array | – | What was done to the data (subtractions, fits, transforms). |
| panels | array | yes | One entry per panel. |
| save | string|null | – | How to save this figure to a file (MCP: the openreadout_export call). |
| theme | string | yes | `light` or `dark`. |
| title | string|null | – | Figure title. |
| warnings | array | – | Data that could not be drawn as asked, or values to double-check. |
| width | integer | yes | Picture size in px. |
No examples provided.
openreadout_preview ~1,693
A picture of the data as image content plus what was drawn: an image plane (default channel 0, middle z), a composite, a max projection (mip=z), a region (only the tiles needed are read), a trace or spectrum plot (largest peaks labelled; marks=spikes marks action potentials; x_range zooms), a Sanger chromatogram with base calls and quality or a sized electropherogram with the ladder, a plate heat map or, for kinetic reads, per-well growth curves coloured by layout group, or a flow-cytometry density plot. Image pictures carry rulers in full-resolution pixels and a µm scale bar, so a region read off the rulers zooms in. annotations draw your own labelled points, boxes, outlines, arrows, lines and bands in the picture's coordinates, to show the user what you found. Draws only; openreadout_export saves the picture.
| Name | Type | Req | Description |
|---|---|---|---|
| annotations | array | – | Your own marks, drawn on top and reported back with their pixel positions. Coordinates as the picture shows them: full-resolution pixels on images (the ruler numbers), axis units on plots, wells on p… |
| axes | string | – | Image previews: what frames the picture. `rulers` = coordinate rulers in full-resolution pixels and a scale bar around the picture (default); `grid` = rulers, plus faint grid lines over the data at t… |
| caption | string | – | Image previews with axes scale-bar: a caption under the picture (what it shows, the stain, the sample). |
| centroid | boolean | – | Spectrum preview: the instrument's centroid list instead of the profile. |
| channels | array | – | Trace preview: channel indices (default: the first 8). |
| columns | array | – | Table columns: a plate's value column, or the x and y parameters of a flow-cytometry density plot (one gives a histogram; default FSC-A, SSC-A). |
| composite | boolean | – | Blend all (or the selected) channels additively in their colours. |
| contrast | string | – | `auto` (default; the file's display window when it has one, `log:90,99.95` on diffraction images), `min-max`, `percentile:LO,HI` (e.g. `percentile:1,99`), `log` (`log:50,99.9`) or `log:LO,HI`, `raw`,… |
| dark | boolean | – | Draw in the dark theme. |
| fft | boolean | – | Images: a power-spectrum (FFT) inset in the top-right corner: Thon rings of a cryo-EM micrograph, the spots of a lattice. |
| file | string | yes | Path to the file. |
| format | string | – | Encoding. Default png (sent as JPEG when a PNG would be too large); svg also returns the vector drawing as text. `png` = lossless (default); `jpeg` = lossy and smaller; `svg` = vector: text stays tex… |
| image | integer | – | Image index (default 0). |
| lanes | – | – | Gels and blots: how lanes are found for `marks: lanes` (as `openreadout_stats` lanes). |
| level | integer | – | Pyramid level to read (default: the level nearest max_size, or the level at which `region` renders at about max_size). |
| lut | string | – | Colour lookup. Default: gray for one channel (inverted on diffraction images), channel colours for composites. `gray` = black to white; `channel-color` = black to the channel's colour; `inverted` = w… |
| marks | string | – | Marks from the data. Default auto: the prominent peaks of spectra and chromatograms are labelled; diffraction images get resolution rings. `auto` = label the largest peaks of spectra and chromatogram… |
| max_size | integer | – | Longest side in pixels, rulers included (MCP: default 768, at most 2048). |
| mip | string | – | Maximum-intensity projection, over the selected range if any. `z` = along z (focal planes); `t` = along t (time points). |
| objects | – | – | Images: how objects are found for `marks: objects` (as `openreadout_stats` objects). |
| region | – | – | Zoom: only this rectangle, `{x, y, width, height}` in full-resolution pixels (or in the pixels of `level` when a level is given). Whole-slide images: look at the overview first, then at regions of it. |
| run | integer | – | Spectrum preview: run index. |
| scan | integer | – | Spectrum preview: instrument scan number instead of an index. |
| select | array | – | Plane selection such as `c=1`, `z=4`, `t=0` or combined `c=0,1,z=2`. Default: c=0, the middle z, t=0. Several channels imply a composite. |
| spectrum | integer | – | Spectrum preview: zero-based spectrum index. |
| strict | boolean | – | Refuse values the file's assurance does not validate (exit_code 6). Default: the server's. |
| sum | string | – | Sum projection, over the selected range if any: a movie's frames added up (e.g. sum t, select t=0-39). `z` = along z (focal planes); `t` = along t (time points). |
| sweep | integer | – | Trace preview: sweep index. |
| table | integer | – | Plate or flow-cytometry preview: table index. |
| title | string | – | Image previews with axes scale-bar: a title above the picture. |
| trace | integer | – | Trace preview: trace index (see openreadout_info traces[]). |
| view | string | – | Volumes: the plane to show. `axial`, `coronal`, `sagittal` (radiological orientation), `orthogonal` (all three, crossing at the middle or the selected z), `xz`, `yz`, or `native` (as stored). Default… |
| x_range | array | – | Trace preview: only this window of the x axis, `[a, b]` in its units (bp of a sized electropherogram, base positions of a Sanger read, minutes, ppm, …). |
| Name | Type | Req | Description |
|---|---|---|---|
| annotations | array | – | The caller's annotations as drawn: each as given, plus where it landed in PNG pixels. |
| bytes | integer | yes | Size of the encoded image. |
| chromatogram | – | – | Present for chromatogram previews (a mass-spectrometry run's total-ion chromatogram). |
| encoding | string | yes | `png`, `jpeg` or `svg`. |
| events | – | – | Present for event previews. |
| format | string | yes | Format id of the input file. |
| height | integer | yes | Image height in pixels. |
| hint | string|null | – | What to do next with the picture (look at it; zoom with a region read off the rulers). |
| image | – | – | Present for image previews. |
| kind | string | yes | `image`, `trace`, `chromatogram`, `spectrum`, `plate` or `events`. |
| lanes | object|null | – | `marks: lanes`: the lanes and bands found in the area shown, as `stats` lanes. |
| marks | array | – | Marks drawn from the data (labelled peaks, action potentials). |
| notes | array | – | Anything the caller should know (fallbacks, caps, implied options). |
| objects | object|null | – | `marks: objects`: the objects counted in the area shown, as `stats` objects (the first 20 listed). |
| output | string|null | – | The written file (CLI); absent when the preview is returned inline (MCP image content). |
| panels | array | – | Plot panels (traces, spectra, plate curves, events): where each sits in the picture and the data range it shows. |
| path | string | yes | The input file. |
| plate | – | – | Present for plate previews. |
| save | string|null | – | How to save this picture to a file (MCP: the openreadout_export call). |
| spectrum | – | – | Present for spectrum previews. |
| trace | – | – | Present for trace previews. |
| verified | boolean | yes | True once a written file was read back and matched. |
| width | integer | yes | Image width in pixels. |
| xxh3 | string | yes | xxh3-128 of the encoded bytes, 32 hex chars (identical across runs for the same request). |
No examples provided.
openreadout_qpcr ~549
Real-time PCR (RDML, .eds, .rex, ...): one record per well and target with sample, task, Cq and Tm; compute_cq recomputes Cq, ddcq gives 2^-ΔΔCq fold changes, standard_curve fits efficiency per target.
| Name | Type | Req | Description |
|---|---|---|---|
| baseline_end | integer | – | Baseline window for `compute_cq`, last cycle. |
| baseline_start | integer | – | Baseline window for `compute_cq`, first cycle. |
| compute_cq | boolean | – | Also compute our own Cq. |
| control_sample | string | – | ΔΔCq control (calibrator) sample; default: the file's. |
| cq_method | string | – | How `compute_cq` computes Cq; default: `second-derivative` for LightCycler 480 `.ixo` files without a threshold or baseline window, else `threshold`. `threshold` = Where the baseline-corrected curve… |
| ddcq | boolean | – | ΔΔCq relative quantification (rows: one per sample × target). |
| fields | array | – | Rows show their main fields to 4 significant digits (records: well, sample, target, cq, tm; relative_quantities: cq means, delta_cq, delta_delta_cq, rq with rq_min and rq_max). fields adds others, e.… |
| file | string | yes | Path to the file or data-set directory. |
| max_records | integer | – | At most this many records (default 500). |
| reference_targets | array | – | ΔΔCq reference targets; default: the file's. |
| run | string | – | Only this run. |
| sample | string | – | Only this sample, case-insensitive. |
| standard_curve | boolean | – | Standard curve per target (rows: one per target). |
| strict | boolean | – | Refuse values the file's assurance does not validate (exit_code 6). Default: the server's. |
| target | string | – | Only this target, case-insensitive. |
| threshold | number | – | Threshold for `compute_cq`. |
| undetermined_cq | number | – | Cq for undetermined results in means and ΔΔCq; default: left out and counted. |
| well | string | – | Only this well (`A1`). |
| Name | Type | Req | Description |
|---|---|---|---|
| acquisition_temperature_c | number|null | – | Temperature of the step that reads fluorescence during cycling (the annealing / extension temperature of a two-step PCR), °C. |
| control_sample | string|null | – | Control (calibrator) sample used or recorded. |
| cq_comparison | – | – | Our Cq against the vendor's (with `compute_cq`). |
| cq_counts | – | yes | Cq statuses over every record that matches the filters (not cut by `max_records`). |
| cycles | integer|null | – | Number of PCR cycles in the program. |
| dialect | string | yes | Dialect (`rdml`, `eds-sds`, `eds-7500`, `eds-json`, `rex`). |
| experiment | string|null | – | Experiment or run name. |
| format | string | yes | Format id. |
| instrument | string|null | – | Instrument model. |
| notes | array | yes | What to keep in mind. |
| path | string | yes | The input file. |
| record_count | integer | yes | Records matching the filters. |
| records | array | yes | The records. |
| reference_targets | array | yes | Reference targets used or recorded (endogenous controls). |
| relative_quantities | array | – | ΔΔCq results (with `relative`). |
| standard_curves | array | – | Standard curves (with `standard_curve`). |
| targets | array | yes | Per target: counts by Cq status and the mean Cq without the undetermined results. |
| truncated | boolean | yes | True when `max_records` cut the list. |
| undetermined_cq | number|null | – | Cq used for undetermined results in the aggregates, when the request gave one. |
No examples provided.
openreadout_report ~151
A privacy-reviewed diagnostic bundle for a file that is refused, fails or is not validated, for a new-variant issue: no data values, free text only with include_text, and the issue_url to file it at. Nothing is sent; the user files it.
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | The file (or data-set directory) that is refused, fails or is not validated. |
| include_text | boolean | – | Keep free text from the file (sample, image and channel names, comments); the path and personal data are still replaced. Default false: only with the user's consent. |
| output | string | – | Also write the bundle to this new local file. Default: only return it. |
| Name | Type | Req | Description |
|---|---|---|---|
| bytes | integer|null | – | Size of the written bundle. |
| issue_url | string | yes | Where to file it (never contacted by the program). |
| output | string|null | – | Where the bundle was written; `None` with `--dry-run` (or from MCP without `output`). |
| report | – | yes | The bundle, exactly as written. |
No examples provided.
openreadout_scans ~398
The scans of a mass-spectrometry run, without decoding peaks: scan number, MS level, retention time, polarity, precursor m/z and charge, isolation window, activation, collision energy, filter, stored TIC; filtered and paged, and every match counted (matched, ms_level_counts). IR, Raman, UV-Vis and NMR spectra are traces: openreadout_trace.
| Name | Type | Req | Description |
|---|---|---|---|
| activation | string | – | Only this activation: HCD, CID, ETD, ... (case-insensitive). |
| charge | integer | – | Only precursors of this charge state. |
| count | boolean | – | Only count the matching scans (matched, ms_level_counts); list none. |
| file | string | yes | Path to the mass-spectrometry file. |
| limit | integer | – | List at most this many matching scans (default 100, at most 5000); all are counted. |
| ms_level | integer | – | Only scans of this MS level (1 = full scans, 2 = MS/MS). |
| offset | integer | – | Skip this many matching scans (paging; default 0). |
| polarity | string | – | Only `positive` or `negative` scans. |
| precursor | number | – | Only MS/MS scans whose precursor m/z is within the tolerance of this. |
| precursor_ppm | number | – | Precursor tolerance in ppm instead. |
| precursor_tol | number | – | Precursor tolerance in m/z units (default 0.01). |
| rt_range | array | – | Retention-time window `[start, end]` in minutes. |
| run | integer | – | Run index for files with several runs (Sciex samples; default 0). |
| scan_filter | string | – | Only scans whose filter string contains this text (case-insensitive). |
| strict | boolean | – | Refuse values the file's assurance does not validate (exit_code 6). Default: the server's. |
| Name | Type | Req | Description |
|---|---|---|---|
| filter | – | – | The conditions applied (omitted when every scan is listed). |
| format | string | yes | Format id of the input file. |
| matched | integer | yes | Scans matching the conditions (all of them are counted, not only the page listed). |
| ms_level_counts | object | yes | Counts of the matching scans per MS level (`"1"`, `"2"`, ...). |
| offset | integer | yes | Position of the first listed scan among the matching ones (0-based; `--offset`). |
| path | string | yes | The input file. |
| returned | integer | yes | Number of scans listed. |
| rt_range_s | array|null | – | Retention-time range of the matching scans in seconds. |
| run | integer | yes | Run index. |
| scan_count | integer | yes | Spectra in the run. |
| scans | array | yes | The listed scans, in spectrum-index order. |
| source | string | yes | `headers` when the reader listed scan headers without decoding peaks, `spectra` when every spectrum had to be decoded to list it. |
| truncated | boolean | yes | True when more matching scans follow the page (`offset + returned < matched`). |
No examples provided.
openreadout_search ~393
Query an index from openreadout_index: 'format=nd2 objective=60x', 'channel~CD4', 'events>100000', 'rate>=20kHz', 'acquired<2015', 'status=truncated|corrupt'. Returns {total, returned, results[]}: total counts every match, results is capped by limit (default 50); fields=['all'] returns every column.
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | – | Columns to return (aliases allowed); default: path, format, size, acquired, sample, instrument model, technique, channels, objective, check status, what. `["all"]`: every column. |
| index_dir | string | yes | Index directory (from openreadout_index or `openreadout index`). |
| limit | integer | – | Most results (default 50, max 1000). |
| query | string | – | Query: space-separated terms, all must match; `OR` between alternatives. `field=value`, `!=`, `~` (contains), `<`/`<=`/`>`/`>=` with units (`size>1GB`, `rate>=20kHz`) or dates (`acquired<2020`), `fie… |
| sort | string | – | Sort field (`size`, `-acquired` for descending). Default: path order. |
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | yes | The columns of each result. |
| index_complete | boolean | yes | Whether the index covers every root to the end (see `index.json`). |
| index_dir | string | yes | The index directory searched. |
| query | string | yes | The query as given. |
| results | array | yes | One object per matching data set, with the requested columns. |
| returned | integer | yes | Results returned. |
| total | integer | yes | Data sets matching. |
| truncated | boolean | yes | True when `total` > `returned`. |
No examples provided.
openreadout_spectrum ~417
One mass spectrum, picked by retention time (rt, minutes: the scan nearest it), scan number or zero-based spectrum index: metadata, peaks[] (the most intense, with charge from the isotope spacing and neutral mass) and mz[]/intensity[].
| Name | Type | Req | Description |
|---|---|---|---|
| centroid | boolean | – | The stored centroid list instead of the profile when a scan has both. |
| file | string | yes | Path to the mass-spectrometry file. |
| lock_mass | string | – | Waters .raw: correct m/z with the lock-spray reference scans, given the lock compound's m/z (e.g. 556.2771), or "auto" for the Lock Mass the file records. Default: m/z as stored. |
| max_points | integer | – | At most this many points, the most intense kept (default 1000; point_count reports the full size). |
| ms_level | integer | – | Count spectrum among the spectra of this MS level only (1 = full scans, 2 = MS/MS). MS1 and MS/MS scans interleave, and ms_level=2 with spectrum=0 is the first MS/MS scan. |
| rt | number | – | The MS scan (of ms_level, default 1) nearest this retention time, minutes: the spectrum at a chromatogram's apex. |
| run | integer | – | Run index for files with several runs (Sciex samples; default 0). |
| scan | integer | – | The scan number as the instrument counts it (1-based in Thermo files; mzML `scan=N` native ids, mzXML `num`, timsTOF spectrum position + 1). |
| spectrum | integer | – | The zero-based spectrum index, counted within ms_level when it is given. |
| strict | boolean | – | Refuse values the file's assurance does not validate (exit_code 6). Default: the server's. |
| top_peaks | integer | – | Most intense peaks listed under peaks[] with charge and neutral mass (default 20). |
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | yes | Format id of the input file. |
| path | string | yes | The input file. |
| peaks | array | – | The most intense peaks of the whole spectrum, with charges from their isotope patterns. |
| point_count | integer | yes | Number of points in the full spectrum (the arrays may be shortened by `max_points`). |
| run | integer | yes | Run index the spectrum belongs to. |
| spectrum | – | yes | The spectrum, with its arrays. |
| truncated | boolean | yes | True when `mz`/`intensity` were shortened to `max_points` (the most intense points are kept, in m/z order). |
| view | string | yes | `primary` (profile when recorded) or `centroid` (the instrument's centroid list). |
No examples provided.
How do I install the OpenReadout MCP server?
OpenReadout ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, dcab570888b3f7ca9c2455cbd34efed4ad6adac6a0577caf7aca90eb79b00434; the commands to do that are on this page. If it does not match, do not open it.
mcpb · openreadout-mcp-x86_64-unknown-linux-musl.mcpb
Download bundleCheck the download matches the SHA-256 the MCP registry declares before you open it. If it does not match, do not open the file.
SHA-256
dcab570888b3f7ca9c2455cbd34efed4ad6adac6a0577caf7aca90eb79b00434
macOS / Linux
echo "dcab570888b3f7ca9c2455cbd34efed4ad6adac6a0577caf7aca90eb79b00434 openreadout-mcp-x86_64-unknown-linux-musl.mcpb" | shasum -a 256 -c
Windows (PowerShell)
(Get-FileHash -Algorithm SHA256 .\openreadout-mcp-x86_64-unknown-linux-musl.mcpb).Hash -eq "dcab570888b3f7ca9c2455cbd34efed4ad6adac6a0577caf7aca90eb79b00434"
Run it in the folder you saved the bundle to, then open the file with an MCPB-capable host such as Claude Desktop.
What is the OpenReadout MCP server?
OpenReadout is an MCP server listed in the public MCP registry as io.github.openreadout/openreadout. Read raw lab-instrument files offline: metadata, previews, integrity checks, open-format export. This page covers its MCPB bundle (https://github.com/openreadout/openreadout/releases/download/v0.4.0/openreadout-mcp-x86_64-unknown-linux-musl.mcpb).
Is the OpenReadout MCP server safe to use?
OpenReadout scores 50 out of 100 on VerifyMCP. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the OpenReadout MCP server expose?
OpenReadout exposes 28 tools: openreadout_assay, openreadout_batch, openreadout_check, openreadout_chromatogram, openreadout_compare, and 23 more. Their descriptions and schemas cost roughly 15,215 tokens of context every time the server is loaded.
What licence is the OpenReadout MCP server under?
OpenReadout declares the MIT OR Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.