Skip to main content
Glama
systemsomicslab

ms-data-parser

pipeline_plan

Idempotent

Validate and resolve MS-DIAL pipeline request settings, save missing inputs or fixed requirements, and confirm execution conditions without launching analysis.

Instructions

入力検査・不足情報・固定要求の保存のみを行う。Consoleは起動しない。

Parameters

dataset_root: 生データフォルダのパス。MS-DIAL が読む 12 形式 (.abf / .ibf / .cdf / .mzml / .wiff / .raw / .d / .wiff2 / .qgd / .lcd / .lrp / .imzml)が入っているフォルダを指します。 Agilent・Bruker の .d と Waters の .raw はフォルダが 1 検体です。 request: pipeline-request.v1 のトップレベル項目(省略可、spec §10.1)。 target / polarity / method_file / lbm_file / library_mode / msp_file / sample_manifest / preprocess / comparisons 等。相対パスは dataset_root 基準。library_mode="msp_only" は LBM を使わず研究室の参照 ライブラリ(.msp)だけで同定する(msp_file か極性の設定 [library] msp_positive / msp_negative。メソッドの Text DB・注釈器設定表の宣言は空にする)。 lbm_file との同時指定、auto での msp_file は PIPELINE_REQUEST_INVALID。 request_id: 冪等性キー。同一内容の再送は同じ結果を返し、別内容は IDEMPOTENCY_CONFLICT。

dataset_root 直下に analysis-request.json(同じトップレベル項目を持つ JSON)と sample-manifest.tsv があれば既定名として読む。要求値の優先順位は request で明示した値 > analysis-request.json > 既定値(spec §7.1)で、 preprocess だけは子キー単位で重なる。どの値がどこから来たかは保存された 要求の value_sources(explicit / request_file / default)で確認できる。 置いてあるファイルが壊れている・未知キーを持つ場合は黙って無視せず PIPELINE_REQUEST_INVALID にする。

receiptの resolved に、解決済みの実行条件——method(source_path / sha256)・lbm・polarity(value とその source)・library_mode・ msp(ファイル名・sha256・出どころ。置き場所は載せない)——が入る。何も 起動しないうちにこれらを確認するのがこのツールの用途。

起動せずに needs_input を保存することがある(不正なsample_manifest等、 spec §9.2「既知の不正入力はConsole起動前に拒否する」)。条件だけ確認したい 利用者はこちらを使い、実際に進めたいときは pipeline_run を使う。

Input Schema

NameRequiredDescriptionDefault
requestNo
request_idNo
dataset_rootYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false; the description adds substantial context beyond that, including what is persisted, the precedence rule (`request` > `analysis-request.json` > defaults, with `preprocess` merged per child key), and the error codes PIPELINE_REQUEST_INVALID and IDEMPOTENCY_CONFLICT. It also discloses that malformed or unknown-key files are rejected rather than silently ignored. However, the description never explains why the tool is non-read-only aside from 'saving requirements', nor does it describe what happens to previously saved state on re-submission with a different payload beyond the conflict code.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose statement is front-loaded and each subsequent block (parameters, precedence, receipt, routing to pipeline_run) earns its place. It is long, and the numpy-style parameter dump arguably belongs in the schema rather than the description, which costs it a point, but there is no filler prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter orchestration entry point with no output schema and 0% schema coverage, the description supplies everything needed: parameter meaning, precedence resolution, error codes, and the contents of `receipt.resolved` (`method` source_path/sha256, `lbm`, `polarity` value+source, `library_mode`, `msp`). An agent can call it and interpret the result without further context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden — and it does: `dataset_root` enumerates the 12 accepted formats and warns that Agilent/Bruker `.d` and Waters `.raw` are folder-per-sample; `request` enumerates the top-level spec keys, the relative-path base, the `msp_only` library mode semantics, and the invalid combinations; `request_id` defines idempotency behavior and the conflict code.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a specific scope: input validation, missing-info detection, and persisting the resolved request — explicitly stating the Console is NOT launched. It immediately distinguishes itself from the execution siblings, and the closing line reinforces the split with pipeline_run.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the selecting condition directly: use this when you only want to confirm the resolved conditions, and use `pipeline_run` when you actually want to proceed. It also names the case where a `needs_input` state is saved instead (invalid sample_manifest), so the agent knows this tool can return without a runnable plan.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.