ms-data-parser
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ms-data-parserLoad the dataset in LIPIDMIX_DATA_DIR and show me the PCA."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Lipidmix with LLM
An MCP server (ms-data-parser) that reads MS-DIAL's binary lipidomics outputs and
exposes them to an LLM in a form it can actually reason over.
MS-DIAL writes its alignment results as compressed MessagePack and custom binary blobs. They are unreadable outside the GUI, and far too large to paste into a chat. This server parses them, runs the standard lipidomics analyses server-side, and returns compact summaries — so an LLM client such as Claude Desktop, Claude Code, or a local WebUI can drive a full analysis without ever seeing the raw matrices.
What it does
Parses MS-DIAL binaries — alignment results, per-measurement peak lists, deconvoluted MS/MS spectra, and extracted ion chromatograms.
Runs the analysis server-side — preprocessing and QC (normalization, blank subtraction, QC-RSD filtering, drift correction), PCA, and two-group differential analysis with BH-FDR.
Keeps results out of the context window — plots are rendered to PNG on the server rather than shipped as coordinate lists, and full result tables stay in session state until exported.
Accumulates knowledge — literature notes and reusable analysis playbooks are served back to the LLM as MCP resources, so findings compound across sessions.
Can drive MS-DIAL itself (auxiliary) — the main workflow reads output MS-DIAL has already written (for example after processing in the MS-DIAL GUI). Given a folder, the server first checks for such output and goes straight to analysis if it is there. Only when the folder holds raw acquisition files alone does it ask for your permission, then plan and run MS-DIAL Console and load the resulting mzTab-M.
Related MCP server: Excel MCP Server
Supported inputs
Format | Contents |
| Alignment result, per-sample peaks. The main source for cross-sample comparison and PCA. |
| Alignment result, spot representatives. Dataset-wide catalog and annotations. |
| A single measurement's detected peaks. |
| Deconvoluted MS/MS spectra. MS-DIAL's own binary format — not MessagePack. |
| Extracted ion chromatograms. |
mzTab-M 2.0 | Standard exchange format, produced by the MS-DIAL Console path. |
MS-DIAL sidecars (*_tags.xml, .mddata, .mdproject) are read for tags and sample
class assignments where present.
Quick start
From the repository root, run the setup script once. It uses uv
when available (uv also fetches Python if you don't have it) and otherwise falls back to a
standard venv with Python 3.13+. Dependency versions are pinned by uv.lock.
powershell -ExecutionPolicy Bypass -File setup.ps1 # Windowssh setup.sh # macOS / Linux(Windows blocks running .ps1 files directly under the default execution policy, hence
-ExecutionPolicy Bypass.)
It creates .venv/, checks that every dependency imports, copies lipidmix.local.toml from
the example if missing, writes a .mcp.json for Claude Code, and prints the snippet to paste
into Claude Desktop's claude_desktop_config.json. Existing .mcp.json and
lipidmix.local.toml are never overwritten — differences are reported instead.
Point it at your data and ask the client to start:
export LIPIDMIX_DATA_DIR=/path/to/your/msdial/outputLoad the dataset in
LIPIDMIX_DATA_DIRand show me the PCA.
That calls load_dataset, the entry point: it picks the latest alignment batch, runs the
standard overview, and primes the session for everything that follows.
MS-DIAL Console and reference libraries (optional)
Running MS-DIAL Console from raw data (console_*, pipeline_*) or matching against your own
.msp library (library_load) needs to know where those files live. Copy
lipidmix.example.toml to lipidmix.local.toml next to server.py and fill in the paths
(Windows paths in single quotes). The file is not tracked by git and is read on every call, so
edits take effect without restarting the server. The environment variables MSDIAL_EXE,
MSDIAL_LBM, MSDIAL_MSP_POS and MSDIAL_MSP_NEG still work and take precedence over the file.
If something is missing, the tool's error names the file and the key to fill in.
To run the parsers without an MCP client, see docs/cli.md.
Repository map
server.py is a thin facade that registers tools by import side effect; it must stay at
the repository root because MCP client configs reference it by absolute path. The
implementation lives under metabolomix/.
Package | Responsibility |
| FastMCP instance, configuration, session state, path resolution. Depends on nothing else in the tree. |
| One |
| mzTab-M reader and canonical |
| MS-DIAL Console execution: job planning, running, output collection. |
| Format-independent numerics: preprocessing/QC, PCA, differential analysis, the export contract. |
| Renderer-neutral plot payloads and matplotlib rendering. |
| MS-DIAL-specific sidecars, identification, peak verification. |
| Pure logic for the knowledge and playbook notes. |
| MCP tools not tied to a single input format. |
Documentation
To find out | Read |
The whole system at a glance — every tool's inputs and outputs, the analysis routes, the statistics, and export formats, with diagrams (Japanese) | |
What each MCP tool takes and does | |
What an output field means — row granularity, lipid-name grammar, caveats | docs/output_format/, also served as the MCP resource |
Which functions a tool calls, in what order | |
MessagePack key indices, transcribed from MS-DIAL's | |
Running the parsers from the command line | |
Setting up the local MCP server on a member's machine | |
Working on this repository |
Tests run from the repository root. They need pytest, which is not part of the
runtime dependencies; set up with the development group first:
powershell -ExecutionPolicy Bypass -File setup.ps1 -Dev
.venv/Scripts/python.exe -m pytest tests -qStatus and caveats
This is a research prototype, developed against one lab's MS-DIAL outputs. Treat the following as known limits rather than surprises:
Version-coupled. The binary readers follow MS-DIAL's internal class layout. A MS-DIAL release that changes those classes will need the key indices in
docs/schema/re-checked.Multi-group ANOVA is deliberately unavailable. MS-DIAL metadata carries no factor-to-level mapping, so the server asks you to carve out two groups explicitly instead of guessing a design.
Identification confidence is reported, not assumed. An MS/MS flag and an actual acquired spectrum are distinguished throughout; check the reported band before claiming an MSI level.
Analysis records live with the data, not the code. Objectives and reports are written to
reports/inside the analysis folder (next to the raw data and MS-DIAL output), never under the clone;data/is untracked.
License
MIT.
This project reads MS-DIAL's output files; it contains no MS-DIAL source code and is not
a derivative of it. The MessagePack key indices in docs/schema/
are transcribed from the [Key(N)] attributes of MS-DIAL's own classes, with the upstream
repository and the commit they were checked against recorded in each file. MS-DIAL
(systemsomicslab/MsdialWorkbench) is
licensed under LGPL-3.0 by its authors.
Available Tools
77 toolsarf2_annotate_identitiesARead-only
指定/自動解決の ARF2 スポット注釈を GOSLIN 正規化・RefMet/LIPID MAPS ID・ MSI レベルで一括標準化し、TSV 表で返す(オフライン)。
返すのはファイル先頭から max_rows 件だけで、強度順でも MSI 順でもない。
総スポット数と残り件数はヘッダ行に出るので、カタログ全体を見たと思わないこと。
絞り込みには arf_parser(annotation_keyword=...) や arf2_parser の概観を使う。
ARF2 には MS/MS 取得フラグ・精密質量誤差が無いため、MSI は保守的にクラス上限で
評価する(has_msms=False, バンドは UNKNOWN)。より確度の高い MSI 評価は個別ピークの
verify_peak_annotation(精密質量・アダクト整合を含むドシエ)を参照。
| Name | Required | Description | Default |
|---|---|---|---|
| max_rows | No | ||
| file_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds significant context beyond readOnlyHint: it runs offline, returns only the first max_rows from the file start without intensity/MSI ordering, and reports total/remaining counts in the header row. It also discloses the conservative MSI evaluation due to missing MS/MS flags and accurate mass error, including has_msms=False and UNKNOWN band.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then uses a bolded caveat to highlight the most important limitation. Dense but every sentence is relevant; minor verbosity from the Japanese prose but no wasted sections.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately complete for a read-only, no-output-schema tool: it explains the return format (TSV with header counts), pagination limits, ordering caveats, and MSI confidence limits. The main gap is the missing explanation of file_path and whether it is required for meaningful use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It thoroughly explains max_rows pagination and ordering semantics, but says nothing about file_path beyond the schema's type, leaving one of two parameters unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: normalizing manual/auto-resolved ARF2 spot annotations to GOSLIN, RefMet/LIPID MAPS IDs, and MSI levels, returning a TSV table offline. It also names sibling tools (arf_parser, arf2_parser, verify_peak_annotation), making the tool distinguishable without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes filtering to arf_parser(annotation_keyword=...) or arf2_parser overview, and higher-confidence MSI evaluation to verify_peak_annotation. It does not state a direct 'use this when' condition for the tool itself, but the alternatives and caveats give clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arf2_parserARead-only
.arf2 ファイル(MS-DIALの全体カタログ)を解析し、データセットの全体像(メタデータ)を要約して返します。 このファイルにはサンプル個別の強度データは含まれていないため、PCA等の多変量解析は実行できません。 データ全体の品質や、アノテーション状況の概観を把握するために使用します。
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation covers safety and the description is consistent with it, while adding real behavioral context beyond the annotations: the file contains no per-sample intensity data, so multivariate analysis is impossible, and the return is a metadata summary. It does not describe output shape or failure modes for unreadable paths, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: what it does, what it cannot do, and when to reach for it. The capability statement is front-loaded and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must say something about returns, and it does (dataset overview/metadata summary). Combined with the explicit limitation warning, an agent has enough to call it correctly; only the null/unset file_path case is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter (file_path) with 0% schema description coverage, so the description must carry the burden. It does imply the path must point to a specific .arf2 MS-DIAL catalogue file, which is meaningful, but it never explicitly ties this constraint to the file_path argument or discusses optionality (the param is not required and defaults to null).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (解析し…要約して返します) and resource (.arf2 file, MS-DIAL全体カタログ), and states what the output is: dataset overview metadata. It does not explicitly distinguish itself from the similarly-named sibling arf_parser, which an agent would likely confuse it with, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a positive use case (把握するために使用します for overall quality and annotation status) and an explicit when-not: PCA and other multivariate analyses cannot be done with this file. It stops short of naming the alternative tool (e.g. arf_pca_* / arf_parser), so routing between siblings is still partly left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arf_differentialARead-only
前処理後行列で2群差次的解析(Welch t 検定 + log2FC)を行う。
group_a / group_b の両方を指定する。多群 ANOVA は「因子(加齢/菌叢等)→水準」の 対応が MS-DIAL メタに無く安全に導けないため現状は非対応(誤って全 Class ID を 水準にした結果を返さないよう封鎖している)。3群以上を比べたいときは、下記の 因子トークン・プール指定で関心のある2群を切り出して呼ぶこと。
先に arf_preprocess を実行して session_state.session.arf.feature_matrix を用意すること (未実行ならエラーを返す。生行列への暗黙フォールバックはしない)。
group_a / group_b: 完全な Class ID(
24M_GF_F)に加え、因子トークンによる プール群指定を受け付ける。group_a="24M", group_b="9w"のように書くと、その トークンを含む全 Class ID がプールされる(24M_GF_F+24M_SPF_M+ …)。 複数トークンの AND 指定も可("24M_GF")。両群が同じ Class ID を掴むとエラー。log_transform: [既定 True] log2(x+1) 空間で検定する。MS 強度は対数正規に近く、 生強度での t 検定/ANOVA は正規性仮定を外れやすいため既定で有効。2群では log2FC も log2 空間の群平均差(=幾何平均比)になる。生スケールで検定したい場合のみ False。
| Name | Required | Description | Default |
|---|---|---|---|
| group_a | No | ||
| group_b | No | ||
| q_threshold | No | ||
| log_transform | No | ||
| log2fc_threshold | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, so the description carries most of the load and does so well: it discloses the hard prerequisite and that violation produces an error rather than a silent fallback, and that overlapping Class ID resolution between the two groups is an error. It also justifies the log_transform default (intensity is approximately log-normal, raw-scale t-tests violate normality). It does not describe the shape of the returned results, which is the remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The output is front-loaded with the core action, then prerequisite, then parameter semantics as a bullet list. The explanation of why ANOVA is blocked is slightly verbose but earns its place by preventing an agent from improvising a multi-group comparison. Minor redundancy between the multi-group paragraph and the group_a/group_b bullet.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given five parameters at 0% schema coverage, no output schema, and only a readOnly annotation, the description covers the stateful prerequisite, the error paths, and the non-obvious pooling syntax. It is nearly complete, falling short only on the two filter thresholds and on what the result set contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does thoroughly for group_a/group_b (full Class ID like `24M_GF_F`, factor-token pooling such as `group_a="24M", group_b="9w"`, AND-composition of multiple tokens, error on identical Class IDs) and for log_transform (default True, log2(x+1) space, log2FC becomes a difference of group means in log space). However, q_threshold and log2fc_threshold — two of five parameters — receive no explanation at all, leaving the coverage incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb and resource — two-group differential analysis with Welch t-test plus log2FC — computed on the preprocessed matrix. It is clearly distinguishable from sibling tools such as arf_preprocess (upstream) and arf_plot_volcano / arf_export_differential (downstream consumers).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit prerequisite (arf_preprocess must have produced session_state.session.arf.feature_matrix, otherwise it errors with no implicit fallback), an explicit exclusion (multi-group ANOVA is unsupported, with the reason it cannot be derived safely from MS-DIAL metadata), and an explicit workaround for 3+ groups (pool two groups via factor tokens). That is when-to-use, when-not-to-use, and an alternative in one place.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arf_excludeARead-only
PCA 外れサンプルや特定ピークを名前/ID で手動除外・再包含する(可逆・非破壊)。
先に arf_parser で ARF を読み込んでおくこと。除外は session に保持され、以降の arf_parser の再実行 / arf_preprocess(→ arf_pca_preprocessed / arf_differential)へ反映される。 filtered_features 自体は変更しないため、mode="remove"/"clear" で元に戻せる。
引数:
exclude_samples: 除外するサンプル。完全なサンプル名に加え、
_区切りの因子 トークン指定("ILG_6h"= ILG かつ 6h の全サンプル)を受ける。トークンは Class ID とサンプル名の両方から解決される。解決結果は payload の resolved_samples に必ず出る。一致ゼロの指定は unmatched_samples 行きで、 除外指定の取りこぼしだけで解析を止めない。exclude_spots: 除外するスポットの MasterAlignmentID(int)のリスト。
mode: add(既定・追加)/ remove(再包含)/ clear(全消去)/ list(現状表示のみ)。
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | add | |
| exclude_spots | No | ||
| exclude_samples | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the readOnlyHint annotation: state is held in the session, filtered_features itself is untouched so mode=remove/clear restores it, and unmatched specifications go to unmatched_samples rather than aborting. This resolves what would otherwise look like a readOnly-versus-mutation tension by clarifying only session state changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and the non-destructive guarantee, then a prerequisite line, then a clean per-argument breakdown. Slightly long, but nearly every clause adds actionable detail; only marginal trimming would be possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description proactively names the relevant return fields (resolved_samples, unmatched_samples) and the four modes, giving an agent everything needed to call and interpret the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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: exclude_samples token syntax (`"ILG_6h"` resolves across Class ID and sample names), exclude_spots as MasterAlignmentID ints, and all four mode values with their meanings. This is far beyond what the bare schema conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (manual exclusion/re-inclusion) against a specific resource (PCA outlier samples or named peaks), and qualifies the operation as reversible and non-destructive up front. An agent understands immediately this is a curated edit to analysis exclusions, not a data mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the prerequisite (run arf_parser first) and where the exclusion propagates (re-runs of arf_parser / arf_preprocess → arf_pca_preprocessed / arf_differential). It does not name an alternative tool for the same job, so it stops short of full when-to-use-vs-alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arf_export_differentialAIdempotent
差次的結果を InChIKey 付きの 1 ファイルへ書き出す(spec §6.1)。
先に arf_preprocess → arf_differential を実行しておくこと。同一 アラインメントの兄弟 .arf2 から同定情報を MasterAlignmentID で結合する。 濃縮解析の背景を保つため、有意な行だけでなく InChIKey が付いた全行を出す。
apply_curation(既定 true): curation_submit で wrong を付けたスポットを
同定なしとして扱い、出力から外す。フラグがあればメタ行 # curation = ... で
適用状況を宣言する。フラグが無ければ出力は変わらない。成功 payload の
curation は {state, wrong_excluded, suspect, orphaned}(orphaned は以前の版の
.arf2 に付いたまま当たらないフラグの件数。1 件以上なら warnings にも出る)。
assign(curation_submit の候補付け)は同定を置き換え(name_source / inchikey_source =
curation)、redundant は除外する。どちらかがあれば curation に
assigned と redundant_excluded が足される。
フラグ記録(curation/flags.jsonl)に読めない行があれば書き出さずにエラーを返す
(wrong を黙って落とさないため)。
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | Yes | ||
| apply_curation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far exceeds the annotations (which only say idempotent, non-destructive, non-read-only): it explains what apply_curation removes (wrong-marked spots treated as unidentified), that meta rows declare '# curation = ...', the exact success payload fields {state, wrong_excluded, suspect, orphaned} plus assigned/redundant_excluded, and that unreadable flag lines cause an error rather than silent loss. This is rich, specific behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and prerequisites well, but the curation paragraph is dense and trails into payload-field enumeration that could be tightened. Most sentences earn their place, though the structure is not maximally lean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by documenting the return payload and warning behavior. Combined with prerequisite and join semantics, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry parameter meaning; it does this thoroughly for apply_curation (default true, exclusion behavior, no-op when no flags, assign/redundant handling). output_path is left uncharacterized (overwrite behavior, directory creation) but is self-evident from its name and required status.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: writes differential results into a single file with InChIKey (spec §6.1), and clarifies it emits all rows with InChIKey, not only significant ones. It does not name distinguishing alternatives such as arf_export_evidence_bundle or dataset_export_differential, so an agent must infer the choice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the prerequisite ordering: run arf_preprocess → arf_differential first, and that identification data is joined from the sibling .arf2 via MasterAlignmentID. No exclusions or comparison against sibling export tools are given, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arf_export_evidence_bundleCIdempotent
全特徴量と出典別候補をmassbank-context用v2バンドルへ出力する。既存v1は変更しない。
| Name | Required | Description | Default |
|---|---|---|---|
| output_dir | Yes | ||
| apply_curation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write (readOnly=false), idempotent, and non-destructive; the description's 'v1 is not modified' reinforces non-destructiveness but adds little new. It does not say whether an existing v2 bundle is overwritten, nor what apply_curation does or why it defaults to true, leaving curation behavior opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the purpose front-loaded and no filler. Efficient, though the second sentence is a behavioral caveat rather than actionable guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write/export tool with two undocumented parameters, no output schema, and a curation toggle that changes results, the description is too thin. It omits parameter semantics, overwrite behavior, and when to prefer this export over its near-identical sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters. It never mentions output_dir or apply_curation, leaving the meaning and effect of the curation flag entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (出力する/export) and resource (全特徴量と出典別候補を massbank-context 用 v2 バンドル). It partially distinguishes itself by naming the v2 bundle format and noting v1 is untouched, but it does not explicitly differentiate from the very similar sibling dataset_export_evidence_bundle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is 'existing v1 is not modified', which describes behavior, not when to choose this tool over dataset_export_evidence_bundle or arf_export_differential. There is no when-to-use or when-not-to-use statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arf_list_classesARead-only
絞り込み・群分けに使える因子トークンの一覧を返す(Class ID とサンプル名の両方)。
class_ids / group_levels / group_factors / group_a / group_b に何を書けるかを
発見するための入口。.mddata が無くてもサンプル名の語彙は返る。
sample_token_vocabulary.tokens[<token>] は出現サンプル数・role 内訳・
サンプル名内の出現位置を持つ。位置は因子の並びを推測する手掛かりだが、値が
2トークンに割れる場合(G_uralensis)にずれるため指定には使わない。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already covering the safety profile, the description adds real value: the vocabulary is returned even when `.mddata` is absent, and it warns that token positions shift when a value splits into two tokens (G_uralensis) so positions must not be used for specification. That is a non-obvious behavioral caveat an agent would otherwise get wrong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first line, followed by discovery usage, return structure, and a caveat, in that order. Every sentence carries information; the token-position warning is dense but necessary rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining returns, and it does so by naming the sample_token_vocabulary.tokens fields. Combined with the offline-availability note and the positional caveat, an agent has enough to call it correctly; only concrete field types/shape detail is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description goes further by describing the shape of entries under sample_token_vocabulary.tokens (occurrence count, role breakdown, position within sample names), which tells the agent how to interpret the returned vocabulary it will feed into other tools' parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: returns factor tokens usable for filtering/grouping, covering both Class IDs and sample names. Siblings like arf_list_tags and arf_list_sample_roles list different vocabularies, and this description's scoping to filtering/grouping factors makes the distinction clear without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly positions itself as the entry point for discovering what can be written into class_ids / group_levels / group_factors / group_a / group_b, which is concrete when-to-use guidance. It does not name a when-not condition or an alternative sibling, keeping it just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arf_list_sample_rolesARead-only
ロード済み ARF のサンプルを sample/qc/blank に分類し、TSV 表で返す(前処理の適用前確認)。
列は sample / role / group / batch / run_order / excluded。group は
group_levels 未指定時の既定=完全 Class ID。batch は MS-DIAL に専用項目が
無いためファイル名中の8桁日付からの推定で、その出所(batch_source)は
全行共通なのでヘッダ行にまとめてある。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, it discloses the return format (TSV), the exact column set, and an important data-quality caveat: `batch` is inferred from an 8-digit date in the filename because MS-DIAL lacks a dedicated field, with `batch_source` hoisted into the header row. That caveat is exactly the kind of context annotations cannot carry; it only lacks notes on failure modes (e.g., no ARF loaded).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the pre-processing-check framing are front-loaded in the first sentence, with column and derivation details following. Slightly dense but every sentence carries information an agent would otherwise have to discover by running the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must describe returns — and it does, listing all six columns and the header-level `batch_source`. Complete enough to call and interpret; only preconditions (a loaded ARF must exist) are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description still adds value by explaining the default semantics of the emitted `group` column (full Class ID when group_levels is unspecified), which preempts confusion about output rather than input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: classify samples of a loaded ARF into sample/qc/blank and return a TSV table, with the columns enumerated. An agent can tell this is a read-only role-listing tool rather than an analysis tool like arf_pca_preprocessed, though it never names the sibling listers (arf_list_tags, arf_list_classes) it sits beside.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
「前処理の適用前確認」 gives a clear trigger condition — run this to confirm sample roles before applying preprocessing. There is no explicit when-not guidance or named alternative for other listing needs, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arf_list_tagsARead-only
List MS-DIAL tags discovered for the currently loaded ARF dataset.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already declares the safety profile, so the description only needs added context. It contributes the scope limitation (only the currently loaded dataset), but says nothing about what happens with no dataset loaded or what a 'tag' record contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, and the scope constraint is front-loaded. Nothing to trim and nothing important buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param read-only list tool this is close to adequate, but with no output schema the return shape (what fields a 'tag' has, whether an empty list is possible) is entirely undocumented, and the description doesn't compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and no parameter explanation is required. The description correctly signals the only input-state dependency: which dataset is 'currently loaded'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('List MS-DIAL tags') and scopes it to 'the currently loaded ARF dataset'. The resource qualifier distinguishes it from siblings like arf_list_classes and arf_list_sample_roles, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'For the currently loaded ARF dataset' implies the prerequisite that a dataset must already be loaded (e.g., via arf_parser), but neither the condition nor any alternative among the many arf_* siblings is stated. Usage is only inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arf_parserARead-only
.arf(サンプル別強度)を読み込み、フィルタを適用して PCA を実行する。
生スポット行列に対する PCA の唯一の入口。フィルタ条件を変えて PCA をやり直したい ときは、引数を変えて本ツールを再呼び出しする(ファイルはセッションキャッシュされ 再パースは走らない)。手動除外(arf_exclude)も PCA 前に反映される。 正規化・QC・欠損補完を経た「前処理後」行列での PCA は arf_preprocess → arf_pca_preprocessed。
正負の Loading 上位とスコアプロット用 JSON を含む Markdown 要約を返す。
引数:
file_path: 解析する .arf ファイルのパス (省略時は自動検索)
props: PCAに使用するプロパティのリスト (デフォルト: ["height"])
components: 計算する主成分の数
top_features: 各主成分から抽出する正・負の寄与トップ件数 (デフォルト: 10)
log_transform: [任意] PCA前に log10 変換を適用する(強度の歪みを抑え条件分離が向上しやすい。既定 False)
min_detection_rate: [任意] 特徴量の実検出率(非ギャップフィル)による足切り 0.0-1.0(既定 0.0=無効)
min_intensity: [任意] スポット平均強度(HeightAverage)の最小閾値(既定 0.0=無効)
annotation_keyword: [任意] 同一バッチARF2の名前を優先した部分一致検索。 ARF2が無い/未注釈ならARF名を使う。PCはLPCにも部分一致するため、クラス限定はontologiesを使う。
spot_ids: [任意] MasterAlignmentIDの完全一致リスト(0以上、空リスト不可)。
ontologies: [任意] 脂質クラスの完全一致リスト(大文字小文字を区別しない)。 spot_ids、キーワード、他のフィルタとはAND。元のピーク値は変更しない。 これは生スポットの選択であり、選択変更後はarf_preprocessを再実行する。 部分集合でTIC正規化すると分母が変わる。全体の正規化/FDRを維持する用途では 全体で解析・エクスポートしてから対象を参照し、部分集合で再計算しない。
tag_labels: [任意] MS-DIALタグ名またはタグIDのリスト
tag_mode: any/all/none/not_all のいずれか
tag_scope: sample_peak(サンプル別Peak ID)または alignment_spot(MasterAlignmentID)
tag_directory: [任意] *_tags.xml の探索先。既定はARFと同じディレクトリ
missing_sample_policy: タグファイル未対応サンプルの扱い。error/exclude/untagged(既定 error)
class_ids: [任意] 因子トークンによるサンプル絞り込み。各要素は
_区切りの部分指定 で、指定した全トークンを含むサンプルに一致する(要素内AND・順不同)。要素間はOR。 トークンは Class ID とサンプル名の両方から解決されるため、Class ID に入って いない因子(時点・複製・測定日)でも絞れる。例:["6h"],["ILG_6h","control_6h"]。class_missing_sample_policy: Class IDメタデータ未対応サンプルの扱い。error/exclude(既定 error)
group_levels: [任意] PCA点の色分け因子の値トークン(例:
["gf","spf"])。 未指定なら各サンプルの完全Class IDで色分け。指定するとその因子だけで統合し、 該当しないサンプルは "other" 群になる。group_factors: [任意] 因子軸のリスト。各軸は値トークンのリストで、直積ラベルを 作る(例
[["control","ILG"],["0h","6h"]]→"control|0h")。group_levels より優先。 処置×時点のような多群を手書き列挙せずに色分けできる。include_roles: [任意] class_ids のフィルタに含める role(既定
["sample"])。 統合トークン空間ではサンプル名経由で QC/blank を掴み得るため既定で落とす。 QC も含めたいときだけ["sample","qc"]のように明示する。
| Name | Required | Description | Default |
|---|---|---|---|
| props | No | ||
| spot_ids | No | ||
| tag_mode | No | any | |
| class_ids | No | ||
| file_path | No | ||
| tag_scope | No | sample_peak | |
| components | No | ||
| ontologies | No | ||
| tag_labels | No | ||
| group_levels | No | ||
| top_features | No | ||
| group_factors | No | ||
| include_roles | No | ||
| log_transform | No | ||
| min_intensity | No | ||
| tag_directory | No | ||
| annotation_keyword | No | ||
| min_detection_rate | No | ||
| missing_sample_policy | No | error | |
| class_missing_sample_policy | No | error |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, and the description adds real behavior beyond that: session-level file caching (no re-parse), the interaction with manual exclusions, the shape of the return value (Markdown summary with top positive/negative loadings plus JSON for score plots), and the caveat that subset selections break global normalization. That is a lot of genuine context for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the key alternative come first, then a parameter inventory; length is proportional to 20 arguments and no bullet is pure filler. It is dense rather than padded, though the class_ids/group_factors examples and the TIC caveat could be tightened slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, 20-parameter analysis tool with no output schema, the description covers inputs, caching, exclusion interaction, return contents, and downstream implications (re-running preprocessing after spot selection changes). An agent has what it needs to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and there are 20 parameters, so the description must carry the load — and it does, documenting defaults and edge semantics for nearly every argument: annotation_keyword vs ontologies (PC matching LPC), class_ids token AND/OR resolution across Class ID and sample name, group_factors vs group_levels precedence, and include_roles defaulting to sample-only. This is well beyond a restatement of the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb chain (load .arf, apply filters, run PCA) and declares itself the single entry point for PCA on the raw spot matrix. It also explicitly separates itself from arf_pca_preprocessed, which handles the preprocessed matrix, so an agent can route between the two without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use rules: re-call with different arguments to redo PCA (noting the file is session-cached), and use arf_preprocess → arf_pca_preprocessed for normalized/QC'd matrices. It also notes arf_exclude changes are applied before PCA and warns about TIC normalization on subsets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arf_pca_preprocessedARead-only
arf_preprocess で用意した前処理後行列で PCA を実行する(前処理後経路の PCA 入口)。
正規化・QC フィルタ・欠損補完を経た行列に対する PCA。生スポットへ直接フィルタして やり直す PCA は arf_parser。手順は arf_preprocess → 本ツール。色分け(group_levels)や log 変換だけを変えて再実行しても、前処理はやり直さない。 群分けは group_levels(1因子)または group_factors(因子軸の直積、例 [["control","ILG"],["0h","6h"]] → "control|0h")で指定する。値トークンは Class ID とサンプル名の両方から解決されるため、Class ID に無い時点などでも色分けできる。
| Name | Required | Description | Default |
|---|---|---|---|
| components | No | ||
| group_levels | No | ||
| top_features | No | ||
| group_factors | No | ||
| log_transform | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and nothing in the description contradicts that (it is a computation over an existing matrix). Beyond annotations it adds real behavioral context: preprocessing is not repeated on re-execution when only grouping or log transform changes. It stops short of describing return contents or component defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose and the sibling distinction before the detail, which is the right ordering. Some sentences (the group_factors explanation) are dense and line-wrapped, but each carries information rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the workflow position, the alternative path, and the grouping mechanics thoroughly, which is the main complexity for this tool. However, with no output schema and no annotation coverage beyond readOnlyHint, an agent still lacks guidance on what components does, what top_features (default 10) controls, or what the call returns — meaningful gaps for a 5-parameter analysis tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and there are 5 parameters, so the description must compensate. It does well on grouping — group_levels is one factor, group_factors is a product of factor axes with a concrete example ([['control','ILG'],['0h','6h']] → 'control|0h') and a note that tokens resolve from both Class ID and sample name — but components and top_features are never mentioned, leaving two parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (PCA on the matrix produced by arf_preprocess) and explicitly frames itself as the entry point of the preprocessed route. It also names the distinct sibling path (arf_parser) that re-filters raw spots, so an agent can tell the two apart without reading either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the exact call order (arf_preprocess → this tool) and the condition that selects the alternative arf_parser (PCA that refilters raw spots). It also states when NOT to redo preprocessing — if only group_levels coloring or log transform changes, just re-run this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arf_pca_speciesARead-only
選んだ分子種(arf_plot_species と同じ項目指定・除外)で PCA を回し、スコア図を返す。
対象の試料は groups に入る試料(2 群に入る試料は最初の群の色で 1 回だけ)。
low_reliability_samples は主成分の計算に使わず、投影だけする(図では白抜き)。
normalize: "none"(既定)/ "total"(試料ごとに選んだ分子種の合計で割り、全試料の合計の中央値を掛ける。 試料量の差を除いて組成を比べるとき)。log_transform(既定 True)で log10(x + 1)。 その後、計算に使う試料の平均と母標準偏差で autoscale。分散 0 の分子種は外す。
orient_by: 群名。その群の平均スコアが正になるよう主成分の符号をそろえる(符号は本来任意)。
ローディング(固有ベクトルの成分と相関 r)はセッションに残し、plot_pca_loadings(source="species") が描く。スコア図のファイルは save_figure(kind="pca", source="species")。
output: "image"(既定)/ "payload"(点列・寄与率・PC1 の r の上位と下位)。
計算に使う試料が 3 未満などの入力の誤りは {"status": "error", "message": ...}。
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| title | No | ||
| groups | Yes | ||
| output | No | ||
| normalize | No | none | |
| orient_by | No | ||
| require_msms | No | ||
| log_transform | No | ||
| apply_curation | No | ||
| standard_samples | No | ||
| low_reliability_samples | No | ||
| exclude_auto_likely_wrong | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond readOnlyHint=true: it discloses that low_reliability_samples are excluded from the fit and only projected (rendered hollow), the exact normalization and log10(x+1) + autoscale pipeline, dropping of zero-variance species, the orient_by sign convention, that loadings are persisted to the session for plot_pca_loadings(source="species") and figures saved via save_figure(kind="pca", source="species"), plus the error envelope {"status": "error", "message": ...} for fewer than 3 usable samples.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence states the action and return, then bullets front-load the sample-set and preprocessing semantics before the persistence/output notes. Dense but each bullet carries decision-relevant information; the parenthetical normalization explanation is the only slightly verbose stretch.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter tool with no output schema and no schema descriptions, the description covers the computation pipeline, figure/payload return modes, cross-tool side effects, and the error shape. The remaining gap is the handful of boolean filter parameters (require_msms, apply_curation, exclude_auto_likely_wrong) whose effect on the input sample/feature set is never stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 12 parameters, so the description must carry the load. It explains the non-obvious ones well (normalize, log_transform, orient_by, low_reliability_samples, output), but require_msms, apply_curation, exclude_auto_likely_wrong, standard_samples and title are left entirely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: run PCA on the selected molecular species (item specification/exclusion identical to arf_plot_species) and return a score plot. It anchors the item-selection convention to a named sibling, which makes the input intent unambiguous. It does not, however, distinguish itself from the other PCA siblings (arf_pca_preprocessed, dataset_pca).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than routed: the description explains that items/groups follow the same convention as arf_plot_species and gives a conditional for normalize="total" (when comparing composition after removing sample-amount differences). There is no explicit statement of when to prefer this over arf_pca_preprocessed or dataset_pca, nor any exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arf_plot_group_intensityARead-only
選んだクラス・分子種ごとに、試料群の試料別強度を並べる(1 項目 1 パネル。既定は PNG 画像)。
items: 1 項目 1 パネル(1〜30 件)。
.arf2の Ontology に完全一致すればクラス(全分子種の合計)、 しなければ分子種名(|で分けた候補名に完全一致。low score:等の接頭辞は無視)。"PE+EtherPE"のように+で合算。当たらない項目は N.D. のパネルになる。groups: 1 群以上。
arf_differentialと同じトークン規則("KO_9w"は両方を含む試料)。 QC・ブランクは群の指定にqc/blankを書いたときだけ入る。1 点 = 1 試料の PeakHeight 合計(gap-fill 含む)。縦軸は log10 で全パネル共通、群は log10 の平均 ± SD。 検定はしない(
arf_differentialを使う)。クラスの合計からは標識内部標準(
(d7)等)と、standard_samples の試料にだけある分子種を除く。 apply_curation(既定 True)で人の判断(wrong / redundant 除外、assign 付け替え)、 exclude_auto_likely_wrong で最新レビューの likely_wrong も除く。除いたものは payload の excluded。low_reliability_samples: 白抜きで描き、平均 ± SD から外す。
detection_limit: 検出下限の破線。省略時は param ファイルの Minimum peak height。
arf_exclude で除いた試料は描かず、除いたスポットはクラスにも名前指定にも入れない(excluded の manual)。
output: "image"(既定)/ "payload"(
lipidmix.group_intensity.v1)。PNG ファイルが要るときは save_figure(kind="group_intensity")。入力の誤り(群が当たらない・detection_limit が 0 以下・ncols が 1 未満など)は
{"status": "error", "message": ...}で返す。失敗した呼び出しの後は前回の図を破棄する。
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| ncols | No | ||
| title | No | ||
| groups | Yes | ||
| output | No | ||
| apply_curation | No | ||
| detection_limit | No | ||
| standard_samples | No | ||
| low_reliability_samples | No | ||
| exclude_auto_likely_wrong | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint, but the description discloses the real behavior: curation defaults (apply_curation, exclude_auto_likely_wrong), that class totals drop (d7)-labeled internal standards and standard_samples-only species, that arf_exclude removals propagate, the log10 common axis and mean±SD computation, and that a failed call discards the previous figure. Error semantics ({"status": "error", "message": ...}) are stated too. This is a lot of value beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence leads, followed by per-parameter bullets, so the doc is front-loaded and easy to scan. It is dense and mixes in edge cases like error strings and prior-figure invalidation, which are useful but slightly bloat the end of the list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters, no output schema and only a readOnly annotation, the description covers inputs, computation, exclusion rules, output mode ("image" vs the lipidmix.group_intensity.v1 payload) and failure behavior. That is sufficient for an agent to invoke it correctly without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and there are 10 params, so the description must carry the load, and it mostly does: items gets matching rules, '|' candidate handling, '+' summing, the 1–30 limit and N.D. fallback; groups gets the token rule with the qc/blank caveat; output, apply_curation, exclude_auto_likely_wrong, detection_limit and low_reliability_samples are all defined. title is never mentioned and ncols is only referenced via its validation constraint, leaving two params under-specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it lays out per-sample intensities of sample groups for each selected class or molecular species, one item per panel (default PNG). It also explicitly contrasts itself with arf_differential (no statistical testing) and save_figure (for getting a PNG file), so an agent can place it among the plotting siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing: '検定はしない(`arf_differential` を使う)' and 'PNG ファイルが要るときは save_figure(kind="group_intensity")', plus a clear rule that QC/blanks are only included when requested. It never differentiates itself from the nearest sibling, arf_plot_species, which is the one remaining gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arf_plot_speciesARead-only
選んだクラスを分子種(アラインメントスポット)に展開し、1 分子種 1 パネルで群ごとの試料別の値を並べる。
items: クラス名(.arf2 の Ontology に完全一致)は配下のスポットに展開、それ以外は分子種名。 同じ名前でも付加イオンが違えば別パネル(見出しに付加イオンと ID)。1 回 40 パネルまで。
groups: arf_plot_group_intensity と同じトークン規則(QC・ブランクは qc / blank を書いたときだけ)。
value: "share"(既定。試料ごとに 高さ ÷ 分母の合計 × 100。棒 = 群平均、ひげ = SD)/ "height" (PeakHeight を log10 で。横線 = log10 の平均、ひげ = SD、0 は軸の下端)。検定はしない。
share_basis: 割合の分母にする項目(省略時は items)。例: PG のページでも分母は ["PG", "DGDG", "MGDG", "CL"]。分母にも同じ除外を適用する。当たらない部品があると分母が変わるので 描かずにエラー。items に当たらない部品は caveats に書く。value="height" では share_basis は無視される。
除外は arf_plot_group_intensity と同じ(内部標準・standard_samples だけにある分子種・ apply_curation の判断・exclude_auto_likely_wrong・arf_exclude したスポット)。require_msms=True で MS/MS の裏付けがない分子種も除く。除いたものは payload の excluded。
low_reliability_samples: 白抜きで描き、平均と SD から外す。菱形は gap-filled の値。
output: "image"(既定)/ "payload"(lipidmix.species_intensity.v1)。PNG ファイルは save_figure(kind="species")。
入力の誤りは {"status": "error", "message": ...}。失敗した呼び出しの後は前回の図を破棄する。
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| ncols | No | ||
| title | No | ||
| value | No | share | |
| groups | Yes | ||
| output | No | ||
| share_basis | No | ||
| require_msms | No | ||
| apply_curation | No | ||
| standard_samples | No | ||
| low_reliability_samples | No | ||
| exclude_auto_likely_wrong | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite minimal annotations (readOnlyHint=true), the description discloses substantial behavior: a 40-panel-per-call cap, the full exclusion pipeline (internal standards, standard_samples-only species, apply_curation, exclude_auto_likely_wrong, arf_exclude, require_msms), error behavior ({"status":"error"}), and that the previous figure is discarded after a failed call. This is exactly the context annotations cannot provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by terse bullets keyed to parameter names, which makes scanning efficient. Some detail (e.g., 0-on-axis-lower-bound, SD whisker rendering) is niche, but nearly every sentence carries actionable semantics for a 12-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete enough for a complex 12-param plotting tool: behavior, defaults, exclusions, and error semantics are all present, and the payload schema name (lipidmix.species_intensity.v1) is given in lieu of an output schema. Gaps are limited to ncols/title semantics and the exact payload field layout.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage the description carries the burden, and it explains items (class expansion vs literal species names), groups token rules, value enum semantics, share_basis denominator behavior (ignored when value="height"), output modes, and the exclusion-related booleans. Only ncols and title are left unexplained, which are minor layout/formatting knobs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: expands selected classes into molecular species (alignment spots) and produces one-panel-per-species per-group per-sample plots. It also distinguishes itself implicitly from arf_plot_group_intensity by referencing it for shared token/exclusion rules, so an agent can distinguish the two.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through defaults (value="share", output="image") and references to arf_plot_group_intensity for shared rules, but there is no explicit 'use this when / prefer X instead' guidance. The agent can infer this is the species-level counterpart to the group-intensity plot, but must infer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arf_plot_volcanoARead-only
Show the latest two-group volcano — as a PNG image by default.
Run arf_differential (two-group) first. Read-only; writes no file.
output="image" (the default) renders the plot server-side and returns it as
an image block plus a one-line caption, so the figure appears directly in the
chat. output="payload" instead returns the client-neutral
lipidmix.volcano.v1 JSON for a client that draws its own interactive chart
(Use-LLLM's Plotly view); the deployment default can be flipped with the
LIPIDMIX_PLOT_OUTPUT environment variable.
Prefer the image: the coordinate payload costs tens of thousands of tokens and
an LLM cannot read a point cloud usefully — the numbers you should reason about
(counts, top hits, caveats) are in arf_differential's own result. In payload
mode, up/down points are always kept in full and only ns points are
thinned to fit max_points; every count is reported in selection. The
image always draws every feature.
Call save_figure(kind="volcano") only when the user wants the PNG written to disk.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| output | No | ||
| max_points | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond readOnlyHint=true: declares that it writes no file, describes server-side rendering and the image-block-plus-caption return shape, the alternative JSON payload contract (lipidmix.volcano.v1), the LIPIDMIX_PLOT_OUTPUT env override, and a token-cost warning. It also discloses the thinning rule and that counts are reported in `selection`, which is exactly the kind of behavioral caveat annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the prerequisite, then structured mode-by-mode. Dense but nearly every clause carries decision-relevant information; the payload-mode paragraph is long and the parenthetical "Use-LLLM's Plotly view" is incidental, keeping it just short of fully economical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description covers return shapes for both modes, the prerequisite step, the cost tradeoff, the disk-write alternative, and the deployment-level default. For a plot tool with three params and no annotations beyond read-only, nothing an agent needs in order to call it correctly or choose a mode is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the parameters, and it does explain `output` ("image" vs "payload" plus default and env override) and `max_points` (only ns points are thinned; up/down always kept; image always draws every feature). The third parameter, `title`, is never mentioned, leaving one small gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Show the latest two-group volcano"), names the default rendering medium (PNG image), and implicitly distinguishes itself from arf_plot_species and the separate save_figure writer. An agent can tell what it produces and in what form without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the prerequisite ("Run arf_differential (two-group) first"), states a preference ("Prefer the image"), gives a rationale, and routes the disk-writing case to save_figure(kind="volcano"). When-to-use and when-to-use-something-else are both spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arf_preprocessCRead-only
ロード済み ARF 行列に前処理レシピを適用し、session を更新して報告を返す。
以降の PCA/差次的解析は session_state.session.feature_matrix(前処理後)を消費する。
| Name | Required | Description | Default |
|---|---|---|---|
| props | No | ||
| impute | No | half_min | |
| normalize | No | none | |
| max_qc_rsd | No | ||
| drift_correct | No | ||
| blank_min_fold | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does disclose valuable behavior beyond the schema: it mutates the session and writes the result to session_state.session.feature_matrix, which downstream steps read. However, that stated session update sits in tension with the annotation readOnlyHint=true, so the agent receives conflicting signals about side effects. It also says a 'report' is returned without describing its content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the core action is front-loaded before the downstream-dependency note. It is efficiently written, though the terseness is partly a symptom of the missing parameter and return-value detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter preprocessing tool with no output schema and no documented parameters, the description covers only the high-level purpose and the session dependency. It does not explain the recipe options, defaults, valid ranges, or what the returned report contains, leaving most of what an agent needs to call it correctly undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Six parameters exist with 0% schema description coverage and no enums, and the description mentions none of them – not props, impute, normalize, max_qc_rsd, drift_correct, or blank_min_fold. With the schema carrying no semantics and the description adding nothing, an agent cannot tell what a 'recipe' consists of or what values are legal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource – applying a preprocessing recipe to an already-loaded ARF matrix – and adds the concrete effect of updating the session. It is distinguishable from siblings like arf_pca_preprocessed or dataset_preprocess by naming the preprocessing step itself, though it never explicitly differentiates itself from those near-neighbours.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the second sentence says downstream PCA/differential analyses consume session_state.session.feature_matrix after preprocessing, which hints this runs before those steps. There is no explicit 'use this when...', no statement of prerequisites (which matrix must already be loaded), and no named alternative such as dataset_preprocess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
console_cleanupADestructiveIdempotent
あるジョブが生成したファイルだけを一覧・削除します(既定は一覧のみ)。
MS-DIAL Console は生データフォルダ側にも生成物を出すため、再実行のたびに 別タイムスタンプのアライメント一式が同じフォルダへ積まれます。放置すると 「複数バッチ混在フォルダ」になり、どれが今回の結果か分からなくなります。
消す対象は analysis-job.json が記録した生成物だけです。タイムスタンプの 推測では消しません(別バッチの成果物を巻き込むため)。記録が無いジョブは NO_JOB_OUTPUT で拒否します。生データ(.wiff 等)には触れません。
dry_run: True(既定)なら一覧を返すだけ。False で実際に削除します。
削除後、ジョブの status は cleaned になります(生成物を指したまま
completed で残ると、dataset_load が存在しないファイルを読もうとします)。
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| job_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true, idempotentHint=true, readOnlyHint=false), it discloses the crucial safety design: deletion is driven only by the analysis-job.json manifest, never by timestamp guessing, raw data such as .wiff is untouched, and jobs without a record are refused. It also explains the post-delete side effect that the job status becomes `cleaned` and why that matters to dataset_load.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The default behavior and the deletion scope are front-loaded, and the bold emphasis on exactly what gets deleted is well placed. The background paragraph on MS-DIAL Console is slightly verbose but justifies why the tool exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a default-no-op destructive mutation tool with no output schema, it covers scope, refusal behavior, and status transition adequately. The remaining gap is the unresolved job_path semantics and what the returned listing actually contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter burden. It fully explains dry_run (default True = list only, False = actually delete) but says nothing about job_path, which is the key selector parameter and defaults to null, leaving the agent to infer its format and meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line gives a specific verb pair (list/delete) with an explicit scope: only files generated by one job, defaulting to listing. The follow-up explains the exact domain problem (MS-DIAL Console piling up timestamped alignment sets in the raw-data folder), so an agent can tell this is the targeted cleanup tool rather than a generic file remover.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the triggering situation (repeated runs leave mixed batches and you can no longer tell which result is current) and the guardrail that only artifacts recorded in analysis-job.json are touched, with NO_JOB_OUTPUT returned for unrecorded jobs. It does not, however, point to specific sibling alternatives (e.g. job_list / console_status) for inspecting before cleaning.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
console_method_candidatesARead-onlyIdempotent
使えるメソッドファイルの候補を列挙します(console_plan が失敗する前に呼べます)。
MS-DIAL GUI は解析のたびに <project>_param_<終了時刻>.txt をプロジェクト
フォルダへ自動保存します。その極性で一度も GUI 実行が無いフォルダには存在
しないため、兄弟フォルダ(POS の隣の NEG 等)と過去 run まで探します。
dataset_root: 生データフォルダ。
polarity: "positive" / "negative"。省略すると極性で区別せず全件返します。
指定すると各候補に usable が付き、一致しないものは
needs_polarity_conversion(console_method_template を経由させる)。
omics: 既定 "lipidomics"。None で絞り込みません。
search_dirs: 追加で探すフォルダ。再帰はしません。
候補には比較用の key_params(検出・アライメント条件のうち結果を変える少数)が
付きます。候補が 10 件を超えるときは付きません(戻り値が肥大するため)。
| Name | Required | Description | Default |
|---|---|---|---|
| omics | No | lipidomics | |
| polarity | No | ||
| search_dirs | No | ||
| dataset_root | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/non-destructive, and the description adds genuinely non-obvious behavior: the search silently expands to sibling folders and past runs, search_dirs is non-recursive, and key_params is omitted when more than 10 candidates exist to avoid bloat. These are exactly the surprises an agent needs warned about.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and the console_plan relationship, then a clean per-parameter block. Slightly verbose in the MS-DIAL background paragraph, but every sentence contributes context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still names the return fields (usable, needs_polarity_conversion, key_params) and their conditional presence, which is what an agent needs to interpret results. It stops short of describing the candidate entry shape (path, filename, detection parameters), which is the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the full burden — and it does: dataset_root, polarity string values plus its effect on the output and on needs_polarity_conversion, omics default of 'lipidomics' with None meaning no filtering, and search_dirs' non-recursive semantics. All four parameters gain meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('列挙します' of usable method-file candidates) and immediately scopes it against the sibling workflow ('console_plan が失敗する前に呼べます'). The explanation of where MS-DIAL param files come from makes the tool's role unmistakable versus console_method_template and console_plan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear timing context (call before console_plan fails) and routes mismatched-polarity entries to console_method_template via the needs_polarity_conversion flag. No explicit 'do not use when' statement, but the routing guidance is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
console_method_templateAIdempotent
既存のパラメータから、別極性用のメソッドファイルを作ります(最後の手段)。
まず console_plan の method_file 省略を試してください。 MS-DIAL GUI は解析の
たびに <project>_param_<終了時刻>.txt を自動保存するので、その極性で一度でも
GUI 実行があれば、作る必要はありません。
このツールが要るのは「その極性で一度も処理していない」場合だけです
(別極性は処理済み、というのが典型)。やることは 2 行の差し替えです:
Ion mode と Searched adduct ions をその極性の標準セットにする。
検出・アライメント条件は元のまま引き継ぎます(勝手に変えると別の解析になる)。
加えて、GUI 由来では必ず空の Lbm file path を解決して埋めます。
out_path: 書き出し先。
polarity: "positive" / "negative"(作りたい側)。
based_on: 元にするパラメータファイル。省略時は dataset_root から探します
(極性は問いません — 別極性から作るのがこのツールの用途なので)。
dataset_root: based_on 省略時の探索先。dataset_root 直下・兄弟フォルダ・
過去 run まで探します。候補が複数あれば based_on で選ぶよう
METHOD_FILE_CHOICE_REQUIRED で止まります(土台の選択は解析条件そのもの
なので、最新を黙って採りません)。
library_mode: "auto"(既定)か "msp_only"。"msp_only" は console_plan と同じく
Lbm file path を空にし、Msp file path に作りたい極性の研究室 MSP を書き、
Text DB と注釈器設定表の宣言を空にする(解決順・止まる条件も console_plan と同じ)。
msp_file: library_mode="msp_only" で使う MSP の明示パス。
| Name | Required | Description | Default |
|---|---|---|---|
| omics | No | lipidomics | |
| based_on | No | ||
| msp_file | No | ||
| out_path | Yes | ||
| polarity | Yes | ||
| dataset_root | No | ||
| library_mode | No | auto |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as non-destructive, idempotent, and not read-only, and the description goes well beyond that: it states that detection/alignment conditions are inherited unchanged, that the empty `Lbm file path` is always resolved, that ambiguous candidates halt with `METHOD_FILE_CHOICE_REQUIRED` rather than silently picking the newest, and how `library_mode=msp_only` rewrites library paths. That is exactly the operational context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The critical guidance (try console_plan first) is front-loaded before any parameter detail, and each paragraph maps to a decision the caller must make. It is on the long side with heavy bold emphasis, but for a 7-parameter tool with zero schema descriptions every sentence does real work; only minor tightening is possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no output schema, the description covers purpose, prerequisites, exact mutation surface, stop conditions, and mode behavior. Remaining gaps are small: what the call returns (a path? a confirmation?) is not stated, and the `omics` parameter is undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage the description carries the full burden, and it does so for six of seven parameters: `polarity` values ('positive'/'negative'), `based_on` being polarity-agnostic, `dataset_root` search scope, `library_mode` values and their effect, and `msp_file` usage. The `omics` parameter (default 'lipidomics') is never mentioned, leaving one gap in an otherwise thorough mapping.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource (creates a method/parameter file for the opposite polarity from existing parameters) and immediately distinguishes this from the sibling tool console_plan by framing itself as a last resort. It also scopes the change precisely (only `Ion mode` and `Searched adduct ions` are swapped), which tells an agent exactly what artifact it produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-not ('まず console_plan の method_file 省略を試してください') with the reason (the GUI auto-saves `<project>_param_<終了時刻>.txt` on every run), and an explicit when ('その極性で一度も処理していない場合だけ'). The alternative and the decision rule that selects it are both named, so no inference is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
console_planA
MS-DIAL Console の実行計画を作成し、analysis-job.json を生成します。
Parameters
dataset_root:
生データフォルダのパス。MS-DIAL が読む 12 形式
(.abf / .ibf / .cdf / .mzml / .wiff / .raw / .d / .wiff2 /
.qgd / .lcd / .lrp / .imzml)が入っているフォルダを指します。
Agilent・Bruker の .d と Waters の .raw はフォルダが 1 検体です。
リポジトリ外のパスを指定してください。
method_file:
MS-DIAL Console のパラメータファイル(ASCII テキスト。key: value 形式)。
省略できます — 省略時は dataset_root 直下・兄弟フォルダ・過去 run
(runs/*/analysis-job.json)まで探し、Ion mode が polarity と
一致する最新のものを使います。一致が無く別極性の候補があれば
METHOD_FILE_CHOICE_REQUIRED で止まります(候補の列挙だけなら
console_method_candidates)。
.mdproject / .mddata は使えません(ZIP なので Console は中身を
読めず、全パラメータが既定値のまま実行されます)。
lbm_file:
脂質ライブラリ(.lbm2)のパス。省略時は「メソッドファイルの宣言 →
ビルド生成物(MsdialWorkbench をソースからビルドしている場合) →
[msdial] lbm(lipidmix.local.toml)か環境変数 MSDIAL_LBM →
Console の実行体([msdial] exe / MSDIAL_EXE)と同じフォルダ」の順に、MS-DIAL GUI と
同じ規則で自動解決します。GUI 由来のパラメータは Lbm file path: が
必ず空なので、この自動解決が無いと警告なしで同定 0 件になります。
自動補完(宣言より後ろの 3 つ)は lipidomics だけです。引数と宣言は
metabolomics でも使います(Console は omics を問わず LBM で脂質を同定する)。
解決した LBM と、相対で宣言されたライブラリ類のパス(Msp file path
Text DB file path 等)は、メソッドファイル基準の絶対パスにして
run_dir/effective-method.txt へ書きます(Console は相対パスを
自分の作業フォルダ基準で読み、見つからなければ黙って飛ばすため)。
polarity:
"positive" または "negative"。
measure:
"peak_height"(既定)または "peak_area_above_zero"。
現行 MS-DIAL Console は peak_height のみ正確に出力します。
"peak_area_above_zero" を指定すると UNSUPPORTED_AREA_CONSOLE で停止します。
omics:
"lipidomics"(既定)または "metabolomics"。
save_project:
True(既定)なら MS-DIAL Console に -p を渡し、GUI で開ける
.mdproject を出力フォルダに生成させます。
timeout_s:
MS-DIAL Console のタイムアウト秒数(既定 21600 = 6 時間)。
実測では 4 サンプルで約 3 分。60 サンプル規模では 1 時間を超え得ます。
keep_extension:
アライメントする計測形式(例 "wiff" / "wiff2")。dataset_root に形式が
混在しているとき(SCIEX は 1 測定につき .wiff と .wiff2 ができる)に
使います。省略して混在していれば、選べる形式を choices に入れた
MIXED_RAW_FORMATS を返すので、そこから選んで呼び直してください。
指定すると、その形式の計測ファイルと随伴ファイルだけを集めたフォルダを
<元フォルダ>_<拡張子> にハードリンクで作り(既にあれば欠けている分だけ
補う)、そちらで計画します。元フォルダは変更しません。
library_mode:
"auto"(既定)か "msp_only"。"msp_only" は LBM を使わず、研究室の参照ライブラリ
(.msp)だけで同定する: 実効メソッドの Lbm file path を空にし、Msp file path に
msp_file か極性の設定(環境変数 MSDIAL_MSP_POS / MSDIAL_MSP_NEG →
lipidmix.local.toml の [library] msp_positive / msp_negative)を書き、メソッドが宣言する
Text DB と MSP / Text の注釈器設定表を空にする(消したキーは removed_declarations)。
メソッドの Msp file path の宣言は使わない。MSP が決まらなければ MSP_NOT_CONFIGURED /
MSP_NOT_FOUND で止まり、ジョブを作らない。lbm_file とは同時に指定できない。
戻り値の msp はファイル名と出どころだけで、ライブラリの置き場所は返さない。
msp_file:
library_mode="msp_only" で使う MSP の明示パス(設定より優先)。"auto" では指定できない。
成功すると session.current_job_path にジョブパスが設定され、 console_run でそのまま実行できます。
| Name | Required | Description | Default |
|---|---|---|---|
| omics | No | lipidomics | |
| measure | No | peak_height | |
| lbm_file | No | ||
| msp_file | No | ||
| polarity | No | positive | |
| timeout_s | No | ||
| method_file | No | ||
| dataset_root | Yes | ||
| library_mode | No | auto | |
| save_project | No | ||
| keep_extension | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, and the description adds real context beyond them: it writes analysis-job.json and run_dir/effective-method.txt, hardlinks into a new <folder>_<ext> directory while leaving the original untouched, and sets session.current_job_path on success. However, it never confirms or explains the non-idempotent framing (the hardlink step is described as incremental/top-up, which an agent could read as repeat-safe), leaving a mild tension with idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-sentence purpose followed by a scannable per-parameter block, with no filler sentences. It is very long, but for 11 undocumented parameters at 0% schema coverage most of the length is load-bearing; a few passages (e.g. the LBM resolution chain detail) go deeper than an agent likely needs to select and call the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-read-only tool with no output schema and 11 undocumented parameters, the description covers prerequisites, failure codes, side effects, and the success outcome (session.current_job_path). What is thin is the shape of the returned plan object beyond the job path and the enumerated error identifiers, so an agent knows the exit paths but not the full payload.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the full load, and it does: all 11 parameters are explained with defaults, accepted values, mutual exclusions (lbm_file vs library_mode='msp_only'), precedence rules, and the error each violation produces. It adds semantics the bare schema cannot, e.g. that .mdproject/.mddata are unusable and that missing LBM resolution silently yields zero identifications.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opening line states a specific verb and artifact: builds an MS-DIAL Console execution plan and generates analysis-job.json. It is clearly distinguishable from console_run (executes) and console_method_candidates (only lists candidates), both of which are named in the body.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Extensive when-to-use guidance: method_file omission behavior with METHOD_FILE_CHOICE_REQUIRED, keep_extension handling with MIXED_RAW_FORMATS and the instruction to re-call with a choice, measure='peak_area_above_zero' stopping with UNSUPPORTED_AREA_CONSOLE, and explicit routing to console_method_candidates and console_run. Alternatives and failure exits are spelled out rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
console_prepare_inputAIdempotent
計測フォーマットが 1 種類だけの入力フォルダを作ります(MIXED_RAW_FORMATS の解消)。
MS-DIAL は .wiff と .wiff2 を別フォーマットとして数えるため、SCIEX の
生データフォルダはそのままでは対話プロンプトが出て実行できません。
このツールは指定した拡張子の計測ファイルとその随伴ファイル
(.wiff.scan / .timeseries.data 等)だけを集めたフォルダを作ります。
Agilent・Bruker の .d と Waters の .raw のようにフォルダそのものが
1 検体の形式も扱えます。その場合はフォルダ構造を実体として作り直し、
中のファイルだけをリンクします(フォルダ自体はリンクにしません)。
実体はコピーせずハードリンクを張ります(同一ボリュームで無い場合のみコピー)。 元フォルダは一切変更しません。 MS-DIAL の生成物はこの新しいフォルダ側に 出るので、生データ本体を汚さずに済みます。
dataset_root: 生データフォルダ。
keep_extension: 残す計測拡張子(既定 "wiff")。MS-DIAL が読む 12 形式
(abf / ibf / cdf / mzml / wiff / raw / d / wiff2 / qgd / lcd / lrp /
imzml)から選びます。MIXED_RAW_FORMATS の formats が実際の内訳です。
out_dir: 出力先。省略時は <元フォルダ>_<拡張子> を兄弟として作ります。
| Name | Required | Description | Default |
|---|---|---|---|
| out_dir | No | ||
| dataset_root | Yes | ||
| keep_extension | No | wiff |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Rich disclosure beyond the annotations: hard links instead of copies, copies only when the volumes differ, the source folder is never modified (consistent with destructiveHint=false), and MS-DIAL outputs land in the new folder. It also explains that for .d/.raw-style formats the directory tree is recreated and only inner files are linked, which an agent could not infer from any structured field.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the motivating failure mode are front-loaded, followed by behavior and then a parameter glossary, which is a sensible order. It is on the long side with some explanatory redundancy about the wiff/wiff2 distinction, but every block is functional.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-hint, no-output-schema tool the description is nearly complete: it covers behavior, safety, defaults, and valid inputs. The one gap is the return value (the created path / summary) and idempotency behavior on re-run with an existing out_dir, which is not spelled out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry all parameter meaning — and it does: dataset_root is the raw folder, keep_extension defaults to "wiff" and enumerates the 12 MS-DIAL-readable extensions, and out_dir defaults to the sibling <source>_<extension>. This is exactly the value the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It pairs a concrete verb (create a folder holding one measurement format) with the exact problem state it resolves (MS-DIAL's MIXED_RAW_FORMATS prompt / SCIEX .wiff vs .wiff2). No sibling tool addresses this remediation step, so the purpose is distinguishable without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the trigger condition clearly — a raw folder that would otherwise raise MIXED_RAW_FORMATS and prompt interactively — and describes handling of folder-as-sample formats (.d, .raw). It does not name exclusions or an alternative tool (e.g. console_cleanup / console_plan) when this is not the right step, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
console_runA
MS-DIAL Console を実行します。
job_path: analysis-job.json へのパス。省略時は session.current_job_path を使用します。 事前に console_plan を実行しておく必要があります。
detach: True にすると監視ワーカーを親から切り離して起動し、待たずに戻ります。 実データ 60 サンプルは約 44 分かかるため、既定の同期実行では 1 ツール 呼び出しがその間ずっと戻らず、呼び出し元が中断されると生成物ごと失います。 長い実行ではこちらを使ってください。
返る `pid` は**監視ワーカーのもの**で、MS-DIAL Console のものではありません
(Console の pid は run_dir の execution-result.json に載ります)。ワーカーが
終了まで見張り、生成物の収集とジョブの確定まで行うので、`console_status` を
呼ばなくても結果は確定します。どちらの経路でも run_dir に終了証跡(execution-result.json)が残ります。 終了コードが 0 でも、主 mzTab-M が一意に選べ、定量行列に有限値があり、予定した 入力が全て assay に対応していなければ completed にはなりません(partial / failed)。
実行完了後、session.current_job_path は同じジョブを指し続けます。 結果は console_status または dataset_load で確認してください。
| Name | Required | Description | Default |
|---|---|---|---|
| detach | No | ||
| job_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the annotations: it discloses that detach returns immediately with a worker pid (not the Console pid), that the worker also collects artifacts and finalizes the job, that execution-result.json is always written to run_dir, and that exit code 0 alone does not mean completed (partial/failed criteria are named). It also notes session.current_job_path persists after the run.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence is front-loaded and the content is dense and necessary, but the detach section is verbose with bold emphasis and the pid/worker explanation is extended. Nearly every sentence earns its place, though the layout could be tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must cover return semantics — it explains the returned pid, the run_dir execution-result.json artifact, the completion criteria (unique main mzTab-M, finite values in the quantification matrix, all planned inputs mapped to assays), and where to read results. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description carries the full burden — and it does. job_path is defined as the path to analysis-job.json with a stated default (session.current_job_path), and detach is defined behaviorally (detached worker, no wait, pid semantics) rather than just as a boolean.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('MS-DIAL Console を実行します') and immediately anchors it in the workflow by requiring console_plan beforehand. This makes it clearly distinguishable from console_plan, console_status, and console_cleanup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says console_plan must be run first, gives a concrete rule for choosing detach=True (60 samples ≈ 44 min, sync calls can be interrupted and lose artifacts), and directs to console_status or dataset_load to check results. The when/when-not conditions are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
console_statusARead-only
ジョブの現在のステータスを返します。
保存済みの状態を読むだけで、完了処理はしません。実行の監視・生成物の 収集・ジョブの確定は切り離しワーカー(console_run が起こす)が最後まで行うので、 このツールを呼ばなくても結果は確定します。
job_path: analysis-job.json へのパス。省略時は session.current_job_path を使用します。
include_artifacts: 生成物の全文一覧(TSV)を含めます。既定 False。
生成物は 1 サンプルにつき 5 件出るため 60 サンプルで 300 行を超え、
全文を返すと後ろの warnings / error が埋没します。既定では件数
(artifact_count) と役割別内訳 (artifacts_by_role) だけを返します。
個々のパスが必要なとき(欠落の特定など)だけ True にしてください。
| Name | Required | Description | Default |
|---|---|---|---|
| job_path | No | ||
| include_artifacts | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, but the description adds substantial context beyond that: no completion or side effects occur, results are finalized independently of this call, and — critically — the default output can bury 'warnings / error' under 300+ artifact lines (5 per sample × 60 samples). That is exactly the kind of output-volume and data-shape behavior an agent cannot infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the read-only/no-finalization caveat are front-loaded, then each parameter gets a compact block. Nothing is padding — even the numeric detail (5 artifacts per sample, 60 samples) exists to justify the default, so an agent can decide correctly rather than guess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and zero schema coverage, the description covers the two parameters and hints at return fields (artifact_count, artifacts_by_role, warnings, error). It never enumerates the status values or the remaining top-level response fields, so an agent still has some uncertainty about what 'current status' actually contains, but nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 does: job_path is defined as a path to analysis-job.json with a stated default (session.current_job_path), and include_artifacts gets its default, its effect (full TSV listing), the reason it is off by default (300+ rows swamping warnings/error), and the specific situation that justifies True (locating missing paths).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('returns the current status of a job') and immediately defines the negative scope — it only reads persisted state and does not perform completion processing. It also names the actor that does the finishing work (the detached worker started by console_run), which cleanly separates it from the sibling console_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says explicitly that calling this tool is not required for results to be finalized, which prevents an agent from polling it as a necessary step, and it implies its monitoring role. It does not, however, compare itself with the other status/enumeration siblings (job_list, pipeline_status, dataset_status) or state when the agent should prefer one over another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
curation_flagsBRead-only
現在のアラインメントで有効な判断(スポットごとの最新 1 行、clear 済みは除く)を TSV で返す。 列は spot_id・flag・name(assign の記録名)・of(redundant の相手スポット)・note・source・ts。
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes safety, but the description adds useful behavioral detail beyond annotations: output is TSV, only the latest row per spot is included, and cleared items are excluded. It does not mention size limits, pagination, or authorization requirements, but the key filtering behavior is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences. The key return format and filtering rule are front-loaded, followed by the column list, with no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because there is no output schema, the description appropriately documents the TSV columns and filtering behavior. However, it leaves the sole optional parameter unexplained and gives no routing guidance among the many curation-related siblings, so it is only minimally complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one optional parameter, file_path, with 0% schema description coverage, and the description never mentions it. Since schema coverage is low, the description should compensate by explaining what file_path controls, but it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns currently valid curation decisions as TSV, with specific scope: latest row per spot and excluding cleared entries. It also names the exact columns, making the resource and output concrete. It does not explicitly distinguish itself from related siblings such as curation_view_data or curation_review, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what is returned but gives no explicit guidance on when to use this tool versus curation_view_data, curation_review, curation_suggest, or curation_submit. Usage is only implied by the read-only nature of the output.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
curation_reviewA
注釈付きスポットを一覧で確かめるレビューを作る(EIC・対向プロット・Δppm・ΔRT・
RT–m/z 傾向と機械判別)。先に library_load(アラインメントに使われた
*_Loaded.msp2.dbs を推奨)。
対象: 既定は注釈付き全部。ontology=["PG"] でクラス、name_contains で名前の部分一致。
戻り値は suspect 以上(とフラグ済み)のスポットだけの TSV(判定の重い順に先頭 max_rows
行、既定 100。総数は n_table_rows_total、載せた数は n_table_rows_shown。全件は
HTML ビューアにある)、判定の件数、クラス別の傾向要約(点数・R²・外れ数)、HTML
ビューアのパス。file_ids は .arf の行にある試料 ID だけ(無い ID はエラー)。
EIC 系列やスペクトルは返さない——ユーザーには
html_path をブラウザで開いてもらい、ビューアの Submit で送ってもらう(記録と
_tags.xml の反映はビューアが直接行う。submit.via == "viewer")。送信用テキストを貼るよう
頼まない。送った結果は curation_flags で確かめられる。Copy のテキストが貼られたとき
(受け口の時間切れ・submit.via == "copy")は従来どおり curation_submit(submission_text=...) に渡す。
判定: likely_wrong(強い不一致: polarity_mismatch / precursor_unmatched / dmz_out /
class_rule_rejected(MS-DIAL の脂質クラス規則による棄却で、脂質規則が走ったデータに限る)/
adduct_isomer_of:(m/z が同時溶出する証拠の強い別物質スポットの別アダクトで説明できる。
相手はレビューの対象に絞らずアラインメント全体から探す))、
suspect(ppm_out / low_score / drt_out / eic_poor / adduct_isomer_minor_of:、
または弱い兆候の重なり)、ok。
RT–m/z 傾向(trend_outlier)は補強にしか使わない。UNKNOWN は不一致に数えない。
thresholds で既定のしきい値(ppm_pass=5, ppm_borderline=10, drt_pass=0.5 分 など)を上書きできる。
| Name | Required | Description | Default |
|---|---|---|---|
| file_ids | No | ||
| max_rows | No | ||
| ontology | No | ||
| file_path | No | ||
| max_traces | No | ||
| thresholds | No | ||
| name_contains | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly=false, idempotent=false, destructive=false) it discloses real behavior: outputs are limited to suspect-or-worse spots, capped by max_rows (default 100) with total-vs-shown counts in named fields, unknown file_ids raise an error, and EIC series/spectra are deliberately not returned. It also explains that the HTML viewer performs the Submit and writes _tags.xml. The only gap is that it never says what files/artifacts are written on disk by this call itself (e.g., the HTML path's lifecycle).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Bold section markers (prerequisite, target/scope, return values, judgment taxonomy) make it well front-loaded and skimmable. It is long, and the exhaustive enumeration of likely_wrong/suspect codes (polarity_mismatch, precursor_unmatched, dmz_out, class_rule_rejected, adduct_isomer_of, etc.) is denser than strictly needed to invoke the tool, but each item is substantive rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return contract—and it does: TSV of suspect+ spots, ordering, named count fields (n_table_rows_total, n_table_rows_shown), per-class trend summary contents (scores, R², outlier counts), and the html_path. Combined with the workflow hand-off to curation_flags and curation_submit, an agent has everything needed to call it and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the prose must carry all semantics; it explains file_ids (only IDs present as .arf rows, else error), max_rows (default 100, heavy-first ordering), ontology ("PG" class filter), name_contains (partial name match), and thresholds (with concrete defaults ppm_pass=5, ppm_borderline=10, drt_pass=0.5). However file_path and max_traces are never mentioned, leaving two of seven parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific action and artifact: it builds a review table of annotated spots containing EIC, mirror plot, Δppm, ΔRT, RT–m/z trend and machine discrimination. It also clearly separates this from curation_suggest/curation_submit/curation_flags by describing the review-and-submit workflow, so an agent can identify the tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the prerequisite explicitly ('先に library_load', recommending the *_Loaded.msp2.dbs), explains the default scope versus the ontology/name_contains filters, and gives the exact fallback condition for hitting curation_submit (pasted Copy text / submit.via == "copy"). It also says where to verify submitted results (curation_flags), so the when/how of use is fully prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
curation_submitADestructive
キュレーションのフラグを記録する(追記。フラグの無いスポットは「間違っていない」で何も書かない)。
ユーザーがビューアの「送信用テキストをコピー」で貼った文をそのまま submission_text に渡す
(CURATION_SUBMIT で始まる行だけを読む。書き写さないこと)。直接渡すなら review_id と
flags=[{"spot_id": 12, "flag": "wrong" | "suspect" | "confirmed" | "clear", "note": "..."}]
(confirmed = 注釈が正しいと確かめた。wrong / suspect と排他)。
候補付け(cs-…)の送信は flags=[{spot_id, flag: assign|redundant|clear, candidate: "L1"|"R1", level: sum|species, note}]。候補の中身(名前・InChIKey)は保存済みの候補付けから展開するので、
送信側で名前を書かない。assign / redundant は _tags.xml を変えない。
source は誰の判断か: ユーザー自身の判断は "user"、LLM の提案にユーザーがチャットで同意した
ものは "llm"。ユーザーの同意なしに呼ばない。
不正な要素が 1 つでもあれば何も書かずにエラーを返す(同じ spot_id を 1 回の送信で
2 回以上名指しした場合も含む——どちらを採るか決められないため)。
レビューはセッションの記録 → 送信用テキストの arf2_path → file_path(レビューを
作った .arf2)→ 既定の .arf2 の順に探すので、サーバ再起動の後でも貼った文で送れる。
記録の後、アラインメントの _tags.xml に反映する(wrong → Misannotation を付け Confirmed を外す、
confirmed → Confirmed を付け Misannotation を外す、suspect → Confirmed を外す、clear → 両方外す。
控えは curation/tags-backup/)。結果は tags_xml(added / removed は Misannotation、
confirmed は Confirmed の変化)。
反映に失敗しても記録は残る。MS-DIAL でプロジェクトを開いたままだと GUI の保存で
上書きされるので、tags_xml.note をユーザーに伝える。
| Name | Required | Description | Default |
|---|---|---|---|
| flags | No | ||
| source | No | user | |
| file_path | No | ||
| review_id | No | ||
| submission_text | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by explaining append-only recording, atomic validation, review lookup order, backup behavior, post-recording _tags.xml reflection, and failure semantics. It also warns that an open MS-DIAL project can overwrite changes and tells the caller to relay tags_xml.note to the user. This is fully consistent with destructiveHint=true and readOnlyHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and every section appears to earn its place. It is dense and long, but that length is largely justified by the tool's complexity; minor improvements in formatting could make it easier to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given five parameters, 0% schema descriptions, no output schema, and a destructive mutation, the description is complete: it covers input forms, validation, review lookup, persistence, tags_xml output fields, and the MS-DIAL overwrite caveat. An agent has enough information to call it correctly and warn the user appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the burden, and it does: it defines the flags structure, allowed flag values, candidate fields, source values ('user' vs 'llm'), and the roles of review_id, file_path, and submission_text. It adds substantial meaning well beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this tool records curation flags in an append-only manner, including the two submission modes (pasted text vs. direct flags). The purpose is highly specific, though it does not explicitly distinguish itself from sibling curation tools such as curation_flags or curation_suggest.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides strong usage context: pass the pasted 'CURATION_SUBMIT' text directly, use review_id and flags for direct submission, and use separate flag schemas for candidate assignment. It also explicitly says not to call without user consent and explains atomic error behavior, but it does not name alternative tools or explain when to prefer them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
curation_suggestA
キュレーションで「間違い」になったスポットと未注釈スポットに、注釈の候補を並べる (候補付けレビュー)。先に library_load と curation_review。
対象: wrong="flagged_or_likely"(既定)= wrong フラグ + 元レビューの likely_wrong、
"flagged" = wrong フラグだけ。unannotated=True で未注釈スポットも。判断済み
(assign / redundant)のスポットは include_decided=True のときだけ含める。
元レビューは review_id(省略時はこのアラインメントの最新のレビュー)。
候補: ① MS-DIAL の下位候補、② 閾値を緩めた再検索(スコアの足切りなし)、
④ 注釈付きの別スポットの同位体・アダクト・インソース断片としての説明。
スペクトル類似度で並べ、極性矛盾・|Δm/z| ≥ 10 mDa は削り、非典型アダクト・RT–m/z 傾向の外れ・
一致ピーク 0 は順位を下げる。MS-DIAL の脂質規則は評価していない(鎖組成は保証しない)ので、
既定では和組成で記録する。
戻り値は 1 スポット 1 行の TSV(強い説明のあるものが先、先頭 max_rows 行)・件数・html_path。
ユーザーには html_path をブラウザで開いてもらい、選んだ内容をビューアの 送信 で送ってもらう
(記録と _tags.xml の反映はビューアが直接行う。submit.via == "viewer")。送信用テキストを
貼るよう頼まない。Copy のテキストが貼られたとき(受け口の時間切れ・submit.via == "copy")は
curation_submit(submission_text=...) に渡す。
ユーザーの同意なしに curation_submit を呼ばない。
| Name | Required | Description | Default |
|---|---|---|---|
| top_n | No | ||
| wrong | No | flagged_or_likely | |
| max_rows | No | ||
| file_path | No | ||
| review_id | No | ||
| rt_window | No | ||
| thresholds | No | ||
| unannotated | No | ||
| relation_min_r | No | ||
| include_decided | No | ||
| relation_mz_tol | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
注釈は readOnlyHint=false 等を提供するが、説明はそれを超えて候補の生成元(MS-DIAL 下位候補・緩和再検索・同位体/アダクト説明)、極性矛盾や |Δm/z|≥10 mDa の除外、非典型アダクト等の順位低下、脂質規則未評価の注意、戻り値形式(TSV・件数・html_path)と送信フローまで開示している。
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
長めだが「対象」「候補」「戻り値」と段落が分かれ、前提条件が冒頭に置かれている。太字で重要制約(先に library_load と curation_review、同意なき submit 禁止)が目立つ。やや情報量は多いが無駄な文は少ない。
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
出力スキーマはないが、戻り値の形(1 スポット 1 行 TSV・件数・html_path)とビューア送信という後続フロー、脂質規則未評価の注意まで説明されており、複雑な 11 パラメータツールとして必要な情報はほぼ揃う。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
schema の description カバレッジが 0% で 11 パラメータあるうち、wrong・unannotated・include_decided・review_id・max_rows については説明が意味を補っている。一方 top_n・file_path・rt_window・thresholds・relation_min_r・relation_mz_tol は説明も schema も沈黙しており、補完は不十分。
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
「間違いになったスポットと未注釈スポットに注釈候補を並べる」と動詞+対象を具体的に述べ、curation_review や curation_submit との役割の違いも文脈から明確。何をするツールか一目で分かる。
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
「先に library_load と curation_review」という前提条件、wrong/unannotated の使い分け、判断済みスポットの扱い、ビューア送信と curation_submit への引き渡し条件、同意なき submit 禁止まで明示されており、いつ使うか・どう進めるかが具体的。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
curation_view_dataARead-only
ビューア(MCP Apps)専用。保存済みレビューのスポットをページ単位で返す。LLM は呼ばない。
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| review_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true is consistent with a return-only tool. Beyond the annotations, the description discloses two non-obvious behaviors: results are paginated ('ページ単位') and the tool is restricted to the MCP Apps viewer context. It doesn't describe the shape of the returned spots or paging limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, no waste. The viewer-only restriction is front-loaded before the functional description, so the most important constraint is seen first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a viewer-facing data feed with two simple parameters, no output schema, and a readOnly annotation, the description covers role, exclusion, and pagination. The one remaining gap is what a spot record contains and any page-size limits, which is minor given the tool isn't meant for LLM invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. 'ページ単位で返す' conveys the meaning of the page parameter, but review_id is only implied by '保存済みレビュー' with no format or scoping detail. Partial compensation, so it is only adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: it returns ('返す') saved review spots ('保存済みレビューのスポット') page by page. It clearly frames the tool as the data provider for the MCP Apps viewer. It stops short of naming a sibling, but the viewer-only framing already does the differentiating work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states an explicit exclusion: viewer-only, and 'LLM は呼ばない' (the LLM must not call this). That is a clear, actionable negative guideline far beyond what most definitions offer. It doesn't say what an agent should call instead for review data, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataset_build_matrixARead-only
v2 の解析行列(analysis-matrix.v1)を、セッションの DatasetState から1本作る。
recipe: profile の matrix_recipes の1要素と同じ形
(base / normalize / drift_correct / filter / impute の5キー。
過不足はそのまま拒否する)。検証は profile と同じ規則を共有しているので、
pipeline 経由より緩い recipe がここから入ることはない。
recipe_id: 行列の識別に使う名前。matrix_id は recipe 内容と dataset・
metadata から決まるので、同じ dataset に同じ recipe を与えれば同じ ID
になる(pipeline が作った行列と突き合わせられる)。
揃っていない前提を揃ったことにしない:
base="internal_standard_ratio"は対象feature↔内部標準の対応付けが要る。 この単体ツールは対応付けを作らないのでmissing_stateで止める (空の対応付けで「比」を名乗る行列を作らない)。検出状態が分からない dataset に
filter.min_detection_rateを指定しても feature は落ちない。historyにnot_evaluableが残る。
値そのものは戻り値に載せず session に保持する。dataset_statistic へは
戻り値の matrix_id を渡す。
| Name | Required | Description | Default |
|---|---|---|---|
| recipe | Yes | ||
| recipe_id | No | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply readOnlyHint, so the description carries most of the burden and does so well: it discloses that validation rules are shared with the pipeline, that a missing feature-to-internal-standard mapping aborts with `missing_state` rather than producing a fake ratio matrix, and that `filter.min_detection_rate` silently no-ops with `not_evaluable` recorded in `history`. It also states values are held in session rather than returned. Not a full 5 because repeat-call/overwrite behavior for an existing `recipe_id` is unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The artifact and its source are front-loaded in the first sentence, then parameters, then failure modes are grouped into labeled blocks, which reads efficiently. The bulleted caveats each carry distinct information, though the recipe paragraph is denser than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly covers the return contract (values stay in session, only `matrix_id` is handed off to `dataset_statistic`) and both known failure paths. What an agent needs to call it correctly is essentially present; only the shape of the returned object and idempotency of re-calling with the same `recipe_id` are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and `recipe` is an untyped object with additionalProperties, so the description must compensate, and it does: it enumerates the five recipe keys and states that under- or over-specified recipes are rejected outright. It also clarifies the subtle `recipe_id` versus derived `matrix_id` distinction. It does not document the value domains of the individual recipe keys, keeping it below 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first line gives a specific verb and resource: build exactly one v2 analysis matrix (analysis-matrix.v1) from the session's DatasetState. It also distinguishes the artifact from pipeline-produced matrices by noting the deterministic matrix_id allows cross-matching. It stops short of naming a sibling to use instead, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the recipe must match one element of the profile's `matrix_recipes` (five keys, extra/missing rejected), which implies the context of use, and it routes the agent onward by saying to pass `matrix_id` to `dataset_statistic`. However, it never says explicitly when to use this standalone tool versus `pipeline_run` or `dataset_preprocess`, leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataset_differentialARead-only
前処理済み DatasetState で 2 群の差次的解析(Welch t 検定 + BH-FDR)を実行する。
group_a / group_b: サンプル名のリスト。使える名前と役割は dataset_status の
samples(name/role の TSV)で確認する。前処理済み行列に無い
名前、QC/ブランクは除外し、caveat で名指しする。
q_threshold: BH-FDR 補正後の有意水準(既定 0.05)。
log2fc_threshold: この絶対値以上の log2FC を有意として数える(既定 1.0)。
log_transform: log2(x + 1) 空間で検定する(既定 True。MS 強度は対数正規に近い)。
log2FC は正なら group_b が高い(上昇)。 group_a が基準(対照)。 全特徴量の結果と volcano 点列は戻り値に載せず session.dataset.last_differential に保持する。エクスポートは dataset_export_differential を使う。
| Name | Required | Description | Default |
|---|---|---|---|
| group_a | Yes | ||
| group_b | Yes | ||
| q_threshold | No | ||
| group_a_label | No | group_a | |
| group_b_label | No | group_b | |
| log_transform | No | ||
| log2fc_threshold | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations only providing readOnlyHint=true, the description discloses critical non-obvious behavior: full results and volcano points are NOT returned but stored in session.dataset.last_differential, with export handled by dataset_export_differential. It also notes that samples missing from the preprocessed matrix or flagged as QC/blank are excluded and named in a caveat, which is essential behavioral context for interpreting results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, then follows with parameter meanings and a bolded directionality note. It is appropriately detailed for a 7-parameter tool but slightly dense; every sentence earns its place, though the structure could be marginally tighter by grouping the label parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, 0% schema coverage, and 7 parameters, the description does a strong job covering the essential execution context, parameter semantics, session storage behavior, and export routing. The only gap is the undocumented group_a_label/group_b_label parameters, which are minor but leave a small incompleteness for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It explains the defaults and semantics of q_threshold (BH-FDR significance level, default 0.05), log2fc_threshold (absolute value threshold for significance, default 1.0), and log_transform (log2(x+1) space, with rationale that MS intensities are near log-normal). It also critically clarifies the directionality: positive log2FC means group_b is higher, with group_a as baseline. However, group_a_label and group_b_label (2 of 7 parameters) are not mentioned at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Execute differential analysis (Welch t-test + BH-FDR) on 2 groups using a preprocessed DatasetState'. This clearly distinguishes the tool from siblings like dataset_export_differential (export) and dataset_status (inspection). An agent can immediately understand the purpose without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states a clear prerequisite (preprocessed DatasetState) and explicitly tells the agent how to find valid sample names ('check usable names and roles in dataset_status's `samples` TSV'). It also names the alternative for exporting results (dataset_export_differential). However, it does not explicitly state when NOT to use this tool versus siblings like arf_differential or dataset_statistic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataset_export_differentialAIdempotent
指定した差次的結果を InChIKey 付きの 1 ファイルへ書き出す。
先に dataset_preprocess → dataset_differential を実行しておくこと。 出力は arf_export_differential と同一の契約(15 列 + contract_version メタ行)なので、下流のパスウェイ解析にそのまま渡せる。
apply_curation(既定 true): curation_submit で wrong を付けたスポットを
同定なしとして扱い、出力から外す。フラグがあればメタ行 # curation = ... で
適用状況を宣言する。フラグが無ければ出力は変わらない。成功 payload の
curation は {state, wrong_excluded, suspect, orphaned}(arf_export_differential と
同じ形)。assign(curation_submit の候補付け)は同定を置き換え(name_source /
inchikey_source = curation)、redundant は除外する。どちらかがあれば curation に
assigned と redundant_excluded が足される。
フラグ記録に読めない行があれば書き出さずに CURATION_FLAGS_INVALID。
result_id: 書き出す結果を名指しする(省略時は直近の差次的結果)。
前処理をやり直した後の古い結果は書き出しません(STALE_ANALYSIS_RESULT)。
古い数字に現在の前処理条件のラベルが付いた TSV は、どちらも正しく見えて
ずれが分からなくなります。
InChIKey は DatasetState.feature_metadata から取る(mzTab-M の database_identifier / InChI / SMILES 由来。.arf2 との結合は不要)。 濃縮解析の背景を保つため、有意な行だけでなく InChIKey が付いた全行を出す。 ontology と msi_level は mzTab-M に対応物が無いため空欄で、その旨をメタ行に 書く(空欄を「該当なし」と読み違えさせない)。メタ行には result_id と preprocess_id も入るので、あとから「どの計算の出力か」を辿れる。
| Name | Required | Description | Default |
|---|---|---|---|
| result_id | No | ||
| output_path | Yes | ||
| apply_curation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the annotations: documents the 15-column + contract_version meta-row output contract, the exact `curation` payload shape, error codes (CURATION_FLAGS_INVALID, STALE_ANALYSIS_RESULT), that all InChIKey-bearing rows are emitted rather than only significant ones, and that ontology/msi_level are deliberately blank with a meta-row note. Annotations (readOnlyHint=false, idempotent=true) are consistent with this file-write behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then prerequisites, then output contract, then parameters — a sensible order. Most content earns its place, but the rationale sentence about mismatched TSVs and the parenthetical about mzTab-M field origins are wordier than needed for an agent to act.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description specifies the return contract and error paths in detail, plus the metadata provenance (result_id/preprocess_id in meta rows). For a three-parameter export tool with mutation behavior, nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load and largely does: result_id gets default behavior ('most recent') plus stale-result rejection, and apply_curation gets default true, exclusion semantics, and downstream payload effects. output_path is only implied by '書き出す...1 ファイルへ' and is never named as a parameter or described as a path format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: writing a specified differential result to a single file with InChIKeys. The prerequisite chain (dataset_preprocess → dataset_differential) and the reference to arf_export_differential's contract make the tool's role in the dataset_* family clear, though it never explicitly says 'use arf_export_differential instead when working with .arf input'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition (run dataset_preprocess then dataset_differential first) and an explicit exclusion (stale results after re-preprocessing are not exported, raising STALE_ANALYSIS_RESULT). It does not name an alternative tool with a routing rule, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataset_export_evidence_bundleCIdempotent
指定2群結果の全特徴量と候補をv2根拠バンドルへ出力する。名前だけの候補も保持する。
| Name | Required | Description | Default |
|---|---|---|---|
| result_id | Yes | ||
| output_dir | Yes | ||
| apply_curation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a non-read-only, idempotent, non-destructive write operation. The description adds useful behavior about retaining name-only candidates in the bundle, but it does not explain overwrite behavior, where files land, or how apply_curation affects the output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences with the main action front-loaded. It is appropriately terse, though that terseness contributes to missing operational details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter export tool with no output schema and no parameter descriptions, the definition is too sparse. It omits output structure, curation behavior, and how this export relates to sibling export tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only indirectly implies result_id via 'specified two-group results'. It says nothing about output_dir or apply_curation, leaving two of three parameters unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: exporting all features and candidates from specified two-group results into a v2 evidence bundle. It is clear what the tool does, but it does not explicitly distinguish itself from closely related siblings such as arf_export_evidence_bundle or dataset_export_differential.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It does not state when to use this tool instead of dataset_export_differential or the arf-prefixed evidence-bundle export. There are no exclusions, prerequisites, or alternative-selection guidance beyond the implied export context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataset_feature_searchARead-only
DatasetState の特徴を探し、目的の物質に当たる特徴を規則で判定する(読み取り専用)。
2 つの使い方があり、targets の有無で切り替わる(同時指定は DATASET_BAD_REQUEST)。
窓検索(targets なし): feature_ids(SMF_ID の完全一致)・min_mz/max_mz・
min_rt/max_rt(分)の AND。境界を含む。何も指定しなければ FEATURE_SEARCH_EMPTY_QUERY
(全件を返さない)。feature_ids=[] は「どの ID でもない」条件で 0 件。並びは m/z 昇順。
戻り値 features は TSV(feature_id mz rt evidence name inchikey adduct n_sme。
evidence は sme/sml/none)。注釈の無い特徴にも統計を付ける。
目標照合(targets あり、1 回 50 件まで): 各要素は target_id・inchikey(必須。
先頭 14 文字で照合)と、formula か(expected_mz と adduct)。任意で name ppm
(既定 10)rt_min rt_tol_min(既定 0.3)adduct_tiers polarity。付加体の層を上から、
証拠の水準 sme_match → sml_match → unannotated の順に見て、qualified がちょうど 1 つの
ときだけ resolved。2 つ以上なら needs_input(multiple_qualified_candidates)、無ければ
needs_input(no_qualified_candidate)。強度・ppm・RT の近さでは選ばない。
unannotated は rt_min があるときだけ qualified。SME(MS/MS 同定)が別物質なら落とす。
極性はジョブの宣言 → mzTab-M の付加体の多数決の順に決め、rule.polarity_source に書く。
目標の極性は polarity、省けば明示した付加体(adduct/adduct_tiers)の符号で、
データセットと違う目標は not_applicable(陽陰が混ざる付加体は FEATURE_TARGET_INVALID)。
戻り値 targets(目標ごとの判定と段ごとの件数)・candidates(TSV。目標ごとに
max_results 件まで)・rule(正規化した規則と rule_hash。result_id・表示名 name・
目標の並び順を含まないので、同じ目標・同じ極性なら別の session でも同じ hash)。hash は表示用の丸め(理論 m/z を
4 桁に)より前の値から作るので、返された rule.targets から計算し直すことはできない
——照合は rule_hash の値どうしで行う。
result_ids: 統計を付ける 2 群比較(dataset_differential)の結果。省略時は今も有効な
2 群比較の全部(古いものは使わず notes に挙げる)。名指しした ID が無い・古いときは
missing_state。差次的結果が 1 件も無ければ統計なしで返す。
max_results: 窓検索の行数・目標ごとの候補数の上限(既定 20)。打ち切りは notes に書く。
stats は TSV(feature_id result_id status log2fc p q mean_a mean_b detected_a detected_b)。
status は tested / not_in_matrix(前処理で落ちた)/ not_testable(p が無い)で、
後の 2 つは数値欄が空(「差が無かった」ではない)。detected_* は群ごとの実検出例数
(gap-fill を数えない。検出状態が無ければ空)。results に BH の母集団
(bh_population)と caveat。キュレーションのフラグは反映しない(あれば notes)。
欄の意味は lipidmix://docs/output-format/mztab。
| Name | Required | Description | Default |
|---|---|---|---|
| max_mz | No | ||
| max_rt | No | ||
| min_mz | No | ||
| min_rt | No | ||
| targets | No | ||
| result_ids | No | ||
| feature_ids | No | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint already covers the safety profile, but the description adds substantial behavioral detail beyond it: qualification ordering (adduct tiers, sme_match → sml_match → unannotated), the rule that exactly one qualified candidate is required and that intensity/ppm/RT proximity are NOT used for selection, polarity resolution order with rule.polarity_source, and the rule_hash normalization caveat. Recording these in the description rather than annotations means non-DB-reading agents cannot rely on them, and the two modes' error/omission behavior (notes, missing_state) is fully described, so 4 rather than higher.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is long, but the length buys real information: purpose first, then the two modes under bold headings, then parameter notes. A few clauses (recomputing rule_hash, display-rounding of theoretical m/z) are dense but justified because they prevent a specific misuse; nothing is pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description specifies return shapes in detail: features TSV columns with the evidence enum, targets/candidates/rule with rule_hash, and stats TSV columns with status semantics (not_in_matrix/not_testable are not 'no difference'), detected_* definition, and results containing bh_population plus caveat. It even points to a docs resource for field meanings, which is all an agent needs to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the whole burden and does: it defines feature_ids as SMF_ID exact match (with empty-list semantics), min/max mz and rt as inclusive AND bounds, max_results default 20 with truncation in notes, result_ids as differential groups with defaults and staleness handling, and the nested `targets` object field-by-field including required fields, inchikey 14-char prefix matching, ppm default 10 and rt_tol_min default 0.3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (search features in DatasetState, rule-based judgment against target compounds) and immediately declares the read-only nature. The two operating modes are named and separated, so an agent can tell it apart from siblings like dataset_statistic or library_match_feature without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states that mode selection is driven by the presence of `targets`, that combining modes yields DATASET_BAD_REQUEST, and describes each mode's own preconditions (empty query → FEATURE_SEARCH_EMPTY_QUERY, >50 targets, polarity conflicts → FEATURE_TARGET_INVALID). It also says what happens when result_ids are missing or stale (missing_state).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataset_loadAIdempotent
mzTab-M 2.0 ファイルを読み込んで正準状態(DatasetState)を作る。
呼び出し方:
mztab_path: .mzTab ファイルへの絶対パスを直接指定する場合。
job_path: analysis-job.json へのパスを指定する場合。ジョブの宣言 (polarity・measure)で正準エントリを一意に選ぶ。console_run 完了後は こちらを推奨。
pipeline_path:
pipeline_runが返した pipeline-run.json(またはその親 ディレクトリ)を指定する場合。その run の mzTab に加えて、解決済みの 試料対応表・feature binding・解析行列も同じ run からまとめて載せる。 行列だけを別に載せる入口は置いていない——別 run の行列を混ぜると群の 対応が黙ってずれるため。載せた行列はdataset_statisticへmatrix_idで渡す。run の差次的結果も、データと群の指紋が今の データセットと一致するものだけを戻す(result_id は run の TSV と同じ。 直近の結果にはしないので result_id で名指しして使う)。戻せなかった ものは理由つきで要約に並ぶ。
3つとも省略するとエラー、2つ以上指定するとエラー。
allow_incomplete: 完了していない実行(partial / failed / running)の出力を
読み込みます(既定 False)。中断時点の生成物なので、既定では拒否します
(INCOMPLETE_ANALYSIS_JOB)。True で読んだデータセットは探索専用になり、
2 群比較(dataset_differential)と差次的エクスポートは拒否されます——
欠けた検体を「その群には無い」と読み違えたまま結論が出てしまうためです。
成功すると session.dataset に DatasetState が格納され、 dataset_status で内容を確認できる。 既存の session.arf / .arf2 / .pai2 / .eic は変更しない。
| Name | Required | Description | Default |
|---|---|---|---|
| job_path | No | ||
| mztab_path | No | ||
| pipeline_path | No | ||
| allow_incomplete | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly=false, idempotent=true), it discloses the error on exclusive parameters, the `INCOMPLETE_ANALYSIS_JOB` rejection by default, and the downstream consequence that incomplete loads are exploration-only and block `dataset_differential` and differential export. It also documents state effects (DatasetState written to session.dataset, existing arf/arf2/pai2/eic untouched) and that pipeline results are returned only when data/group fingerprints match.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the parameter modes are formatted as a scannable list, so length is justified by density of real information. A few rationalizing asides (why no matrix-only entry point, why result_id is fingerprinted) could be trimmed without losing the operational instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter state-building tool with no output schema, the description closes the important gaps: return behavior is covered by naming session.dataset and pointing to `dataset_status` for inspection, and the side-effect footprint on other session objects is stated. An agent has what it needs to call this correctly and interpret the outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and every parameter has only a bare title, so the description must carry the load — and it does, defining what each path type points at, what `job_path` resolves via polarity/measure, and that `pipeline_path` accepts a file or its parent directory. `allow_incomplete` is given its default, the run states it accepts, and its downstream restriction.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line states a specific verb and resource: read an mzTab-M 2.0 file and build the canonical DatasetState. It does not, however, distinguish itself from the very similarly named sibling `load_dataset`, leaving the agent to guess which loader to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It spells out three mutually exclusive input modes, recommends `job_path` after `console_run`, and explains that `pipeline_path` is the only way to bring in matrices because mixing runs would silently misalign groups. It also states that omitting all three or passing two or more is an error, and gives explicit when-not guidance for `allow_incomplete`. The only missing routing advice is versus the `load_dataset` sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataset_pcaARead-only
前処理済み DatasetState に PCA を実行する。
dataset_preprocess を先に実行しておくこと。 n_components: 主成分数(既定 5。サンプル数・特徴量数の小さい方で上限が決まる)。 log_transform: 標準化の前に log10 変換を適用する(既定 False)。
ローディング全量は戻り値に載せず session.dataset.last_pca に保持する。
| Name | Required | Description | Default |
|---|---|---|---|
| n_components | No | ||
| log_transform | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint=true, the description discloses a real behavioral trait: full loadings are not returned but persisted in session.dataset.last_pca. It also bounds n_components by min(samples, features). The implicit session-state write alongside readOnlyHint is worth noting but is not a hard contradiction of the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then prerequisite, then per-parameter notes, then return-value caveat. Each line adds distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains that loadings live in session.dataset.last_pca, but it is ambiguous about what the return value itself actually contains (scores, explained variance, partial loadings). Everything needed to invoke the tool correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the full burden, and it does: n_components gets a default and an upper bound (min of samples/features), and log_transform is defined as a log10 transform applied before standardization, which is semantics the schema cannot express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: run PCA on the preprocessed DatasetState. The purpose is unambiguous and the prerequisite (dataset_preprocess) anchors it in the pipeline. It does not, however, distinguish itself from similar siblings such as arf_pca_preprocessed, arf_pca_species, or plot_pca_loadings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'dataset_preprocess を先に実行しておくこと' gives an explicit precondition, which is the key usage signal for this tool. There is no statement of when not to use it or which sibling PCA tool applies to which input format, so the guidance is clear but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataset_preprocessARead-only
DatasetState の定量行列に前処理レシピを適用する。
引数は arf_preprocess と同一。以降の dataset_pca / dataset_differential は ここで作った前処理済み行列を消費する。
normalize: "none"(既定)/ "tic"(行総和)/ "median"(行中央値)/ "pqn"。
blank_min_fold: 生体試料平均がブランク平均のこの倍数未満の特徴量を背景として
除去する(例 3.0)。None(既定)でブランク除去なし。
drift_correct: QC 注入順ドリフト補正。注入順は mzTab-M の
assay[N]-custom[...] の injection sequence label(MS:4000089)から読む。
それを持たない mzTab-M では実施できず、caveat で報告する。
max_qc_rsd: QC 群の RSD がこの値を超える特徴量を除去する(例 0.30)。
impute: "half_min"(既定)/ "knn" / "column_mean" / "none"。
min_detection_rate: 実検出率(gap-fill を除く)による特徴量の足切り 0.0-1.0
(既定 0.0=無効)。検出状態は mzTab-M 単体には無いので、隣接する .arf
から取り込めた場合にだけ使える。取り込めていない状態で 0 より大きい値を
渡すと引数エラーを返す(黙って未検出 0 件として通さない)。
取り込み状況は dataset_status の detection を見る。
成功すると session.dataset.pp_matrix に前処理済み行列が設定される。
| Name | Required | Description | Default |
|---|---|---|---|
| impute | No | half_min | |
| normalize | No | none | |
| max_qc_rsd | No | ||
| drift_correct | No | ||
| blank_min_fold | No | ||
| min_detection_rate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavior beyond the annotations: it discloses that success writes the matrix to session.dataset.pp_matrix, that drift_correct silently degrades to a reported caveat when the mzTab-M lacks injection-sequence labels, and that min_detection_rate > 0 without imported .arf detection data raises an argument error rather than silently passing. The only tension is that this documented session-state write sits awkwardly with readOnlyHint=true, though it is disclosed rather than hidden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in one sentence, followed by a compact per-parameter block and a closing statement of the side effect. Dense but every block earns its place; the parameter list is lengthy, which is justified by the 0% schema coverage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent where the result lands (session.dataset.pp_matrix) and which tools consume it, plus the error semantics of the riskiest parameter. It stops short of describing the tool's immediate return payload or the interplay with dataset_status's detection field beyond a pointer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the schema exposes no enums, yet the description documents every one of the six parameters with allowed values and defaults (normalize: none/tic/median/pqn; impute: half_min/knn/column_mean/none), the meaning of blank_min_fold, the 0.0-1.0 range of min_detection_rate, and the failure mode when its prerequisite is absent. It fully compensates for the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line names a specific verb and resource: applying a preprocessing recipe to the DatasetState quantitative matrix, which is clearly distinct from the ARF/ARF2 tool families. It also names the downstream consumers (dataset_pca / dataset_differential) that read the produced matrix. Sibling differentiation is present but partly implicit — it says the arguments are identical to arf_preprocess without stating the rule that selects one over the other.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the note that dataset_pca / dataset_differential consume the preprocessed matrix tells the agent this is an upstream step, and the drift_correct paragraph explains when that option is unavailable. There is no explicit 'use this instead of arf_preprocess when …' rule and no stated prerequisites such as needing dataset_load first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataset_set_sample_metadataAIdempotent
実験情報シート(sample-manifest.v1)を読み込み、検証してから DatasetState へ 一括適用する(spec §7.3)。
上流のConsole実行をやり直さずに、群・バッチ・注入順・qc_pool などの誤記入を
このツール単体で訂正できる。列の意味・拒否条件は sample-manifest.v1 の仕様
(docs/superpowers/specs/2026-09-05-raw-folder-pipeline-integrity-and-metadata-design.md
§7.2)を参照。
検証は全件そろってから一括反映する(一部だけ適用される状態は作らない)。
シートに不備があれば session.dataset を一切変更せずエラーを返すので、
そのまま再送してよい。
前処理入力(role/batch/injection_order/qc_pool/include/sample_id/source_file)が
変われば前処理済み行列ごと・PCA・差次的解析まで無効化する。group だけの変更なら
差次的解析だけを無効化し、PCA は生かしたまま返す(changed_fields で確認できる)。
dataset_differential を直接呼ぶ経路(比較する2群のサンプル名を都度自分で
組み立てる)とは別に、比較を明示するのは pipeline 側の役割になる——群名だけで
対照/処置の向きを決めない・QC/blank/unknown/include=false を混ぜない・完全交絡を
止める、という前提検証は resolve_comparison/run_comparison(内部関数)が持つ。
| Name | Required | Description | Default |
|---|---|---|---|
| manifest_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing all-or-nothing validation ('no partial application'), that errors leave session.dataset untouched and can be safely resent, and the precise invalidation cascade (preprocessing-input changes kill matrices/PCA/differential; group-only changes kill only differential and preserve PCA). This is exactly the mutation-safety context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded and each substantive sentence (validation atomicity, invalidation rules, changed_fields) adds new information. The closing paragraph on resolve_comparison/run_comparison is somewhat tangential but still connects to the sibling relationship.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation tool, the description covers validation behavior, failure semantics, invalidation consequences, and idempotency-relevant resend safety. The only gap is relying on an external spec for column meanings, which is acceptable given the tool's scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (manifest_path) with 0% schema coverage, so the description must carry the meaning. It does so by naming the manifest format (sample-manifest.v1) and the columns it expects (role/batch/injection_order/qc_pool/include/sample_id/source_file), though it defers exact type/format to an external spec doc.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb chain (read → validate → bulk-apply) on a specific resource (sample-manifest.v1 into DatasetState), and explicitly positions itself against the dataset_differential path. An agent can tell exactly what it does and what it is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the primary use case (correcting group/batch/injection_order/qc_pool mistakes without re-running the upstream Console) and contrasts it with calling dataset_differential directly. It gives clear context but does not enumerate explicit 'do not use when' exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataset_statisticARead-only
v2 の統計(welch / anova_tukey / pca)を、名指しした解析行列に実行する。
specification: analysis_recipe.statistics の1要素と同じ形
(statistic_id / kind / transform / feature_scope と、kind別の
reference_group+test_group、groups+alpha、scaling+n_components)。
matrix_result_id: analysis-matrix.v1 の ID。pipeline の preprocess /
qc_processed が作った行列を名指しする。直近の前処理を暗黙に使わない
——recipe 違いの行列が2本ある前提の設計で、どちらの数字かを結果に残す。
v1 の dataset_differential とは別物: 効果量は統計変換前の算術平均比の log2
(effect_size_definition)、log2 変換に pseudocount を足さない、BH の母集団は
検定できた feature だけ。v1 の既定値・数値契約は変更していない。
全量(feature ごとの結果)は戻り値に載せず session に保持する。
| Name | Required | Description | Default |
|---|---|---|---|
| specification | Yes | ||
| matrix_result_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true; the description adds the important trait beyond that: per-feature full results are not returned but retained in the session. It also discloses numeric-contract behavior (effect size = log2 of pre-transform arithmetic mean ratio, no pseudocount, BH population limited to testable features). It does not say how the session-held results are later retrieved, nor how long they persist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the two parameters, then the differentiators. Dense but every block earns its place; the v1 comparison paragraph is long but is the main disambiguation content. Minor redundancy with the indentation/line-break formatting that adds lines without adding meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, no-output-schema, two-parameter tool with an untyped nested object, this covers what an agent needs: what runs, which matrix it runs on, why the matrix must be explicit, how the numbers differ from v1, and where the full results go. The only residual gap is retrieval of the session-stored results, which is arguably another tool's concern.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the nested `specification` object is an open additionalProperties object, so the description carries the full burden — and it does: it names the shared keys (statistic_id / kind / transform / feature_scope) and the kind-specific keys (reference_group+test_group, groups+alpha, scaling+n_components), and ties `matrix_result_id` to `analysis-matrix.v1` artifacts produced by pipeline preprocess / qc_processed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with the exact statistic families enumerated (welch / anova_tukey / pca) and the scope constraint that it runs against an explicitly named analysis matrix. It also explicitly contrasts itself with the sibling dataset_differential, so an agent can pick between them without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete usage rule — never implicitly reuse the most recent preprocessing, always name the matrix_result_id, because two matrices from different recipes may coexist. It explains how this differs numerically from v1's dataset_differential, but stops short of an explicit 'use this when X, use dataset_differential when Y' routing statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataset_statusARead-only
現在の DatasetState の概要を返す。
samples に name/role の TSV が入る。dataset_differential の
group_a / group_b はここに出る名前をそのまま使う。
dataset_load を先に実行しておくこと。 未実行の場合は missing_state エンベロープを返す。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds non-obvious behavior beyond the annotation: the prerequisite ordering and the missing_state envelope returned on misuse, which is exactly the kind of context annotations can't convey. It stops short of describing the full DatasetState overview payload, so a 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short lines, each earning its place: purpose, output key, downstream consumer, and prerequisite. The prerequisite is placed where an agent will see it before calling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description bears return-value disclosure. It covers the `samples` field and the missing_state envelope, which is the operationally critical part, but leaves the rest of the 'overview' fields unnamed. Adequate for a zero-parameter status tool, with a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is nothing to disambiguate and baseline is 4. The description correctly spends no words on parameters and instead documents the output shape (`samples` TSV of name/role).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('現在の DatasetState の概要を返す') and links to a sibling (dataset_differential) that consumes its output. It doesn't explicitly negate other sibling tools like dataset_statistic or dataset_build_matrix, but the resource (DatasetState) is distinctive enough to separate it from the cluster.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit prerequisite: 'dataset_load を先に実行しておくこと', plus the failure mode (missing_state envelope) when the prerequisite is unmet. It also tells the agent exactly how to use the output in dataset_differential (group_a/group_b take names as-is). This is close to ideal when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dcl_find_msmsBRead-only
precursor m/z(任意で RT)に一致する MS/MS を .dcl から引く。
アノテーションの裏取り(期待フラグメントが実際に出ているか)に使う。RT を渡すと
同一 m/z の別溶出ピークを分離できる。該当なしは status="not_found"。
| Name | Required | Description | Default |
|---|---|---|---|
| rt | No | ||
| mz_tol | No | ||
| rt_tol | No | ||
| file_path | No | ||
| top_n_peaks | No | ||
| precursor_mz | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds one genuinely useful behavioral fact: no hits yield `status="not_found"`. It says nothing about which `.dcl` is used when file_path is null, nor about the shape of a successful result — and with no output schema that gap matters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences with the lookup target front-loaded, followed by use case, RT semantics, and the not-found sentinel. Little waste; the structure is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter tool with no schema descriptions and no output schema, the description leaves too much unspecified: tolerance parameters, the default file resolution behavior for file_path, and the successful return shape are all unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%: parameters carry only titles and defaults. The description explains precursor_mz and rt, but mz_tol, rt_tol, file_path, and top_n_peaks are undocumented in both schema and description — four of six parameters unexplained, so the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: look up MS/MS spectra matching a precursor m/z (optionally RT) from a `.dcl` file. This is clearly distinct from sibling dcl_parser (which parses the file) or library_match_feature, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case — verifying annotations by checking whether expected fragments actually appear — and explains that supplying RT disambiguates co-eluting peaks at the same m/z. It offers no when-not condition and never names an alternative tool such as verify_peak_annotation or pai2_inspect_peak.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dcl_parserARead-only
1つの .dcl(MSDecResult)を解析し、MS/MS 在庫の要約と先頭数件を返す。
.dcl は測定ファイル1つにつき1個で、dcl_index が同名 .pai2 のピーク順に
対応する。返すのは取得率・ピーク本数分布・precursor m/z / RT 範囲の要約と、
先頭 preview 件の主要フラグメント。個々のピークの同定確度に効かせるには
pai2_parser(同名 .dcl を自動で付与する)→ verify_peak_annotation を使う。
top_n_peaks: 各スペクトルを強度上位 N 本に間引く(既定 10。全件は 0 を指定)。preview: 要約に添える MSDecResult の件数。
| Name | Required | Description | Default |
|---|---|---|---|
| preview | No | ||
| file_path | No | ||
| top_n_peaks | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already covering safety, the description adds real context: one `.dcl` per measurement file, `dcl_index` matches peak order in the same-named `.pai2`, and what the summary contains (acquisition rate, peak-count distribution, precursor m/z and RT ranges). It doesn't discuss file-size limits or failure behavior, so it stops short of 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence states purpose and return value up front, then context, routing, and a bulleted parameter list. Dense and mostly waste-free, though the parameter bullets and the prose overlap slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description correctly describes the return shape (summary statistics + preview entries). The main omission is how `file_path` is resolved when it is null, which matters for a file-taking tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the parameters, and it explains two of them well: `top_n_peaks` (default 10, 0 = keep all) and `preview` (number of MSDecResults appended to the summary). `file_path`, which is nullable, is not explained at all, leaving one gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: parses a single `.dcl` (MSDecResult) and returns an MS/MS inventory summary plus the first few entries. It also names the sibling (`pai2_parser`) used for a different purpose, so an agent can tell the two apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: for per-peak identification confidence, use `pai2_parser` → `verify_peak_annotation`. That gives a clear alternative and condition. It lacks an explicit 'do not use this when…' statement, but the positive routing is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eic_parserBRead-only
.EIC.aef ファイルに対応する解析用関数 ファイルを解析し、テキスト要約を返します。
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, so the agent knows this is a safe read. The description adds that the output is a text summary, which matters because no output schema exists. However, it does not disclose file size limits, error behavior for malformed files, or what the summary contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, with the file-type scope stated first and no filler. The phrase 解析用関数 (parsing function) is slightly redundant with the tool name, but it costs little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only parser with no output schema, stating that the output is a text summary covers the main gap. The undefined semantics of an optional file_path defaulting to null, and the absence of any expectations about the file, remain unresolved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single file_path parameter, so the description must supply that meaning. It only implies that a file is involved; it does not say whether the path must be absolute or relative, or what happens when the optional, null-defaulting file_path is omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (parse) and a specific resource (.EIC.aef files), and adds that the result is a text summary. That separates it from sibling plotting tools such as eic_plot_chromatograms and eic_plot_compounds, although the description does not name those alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says nothing about when to call this tool rather than eic_plot_chromatograms, eic_search, or the other parsers (pai2_parser, dcl_parser, arf_parser). The intended use is only implied by the file extension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eic_plot_chromatogramsARead-only
Return client-neutral plot data for selected EIC chromatograms.
This read-only tool returns structured lipidmix.eic.v1 JSON only. It does
not render an image and does not write files: Use-LLLM may render the series
with Plotly, while Claude Desktop or another MCP client may use its own UI.
Call save_figure(kind="eic") only after the user explicitly requests PNG output.
spot_id is exact and should normally come from the existing m/z or RT
search tools. file_ids selects at most 12 sample traces; when omitted all
traces are returned only if the spot contains 12 samples or fewer.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| spot_id | Yes | ||
| file_ids | No | ||
| file_path | No | ||
| normalize | No | none |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavior beyond readOnlyHint=true: it returns only structured lipidmix.eic.v1 JSON, does not render images or write files, and is client-neutral. It also states a 12-trace limit for file_ids. It does not fully explain the returned JSON shape or several parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose and then adds constraints in a compact, readable way. Every sentence contributes useful routing or behavioral information without unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only plotting-data tool with no output schema and low parameter description coverage, the description does well to explain output format and file behavior. However, it omits meaning for title, file_path, and especially normalize, and does not describe the structured JSON content enough for an agent to fully anticipate the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It explains spot_id as exact and sourced from search tools, and file_ids as selecting at most 12 traces, but it does not explain title, file_path, or normalize, leaving three of five parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: return client-neutral plot data for selected EIC chromatograms. It clearly distinguishes this from image rendering and save_figure, but does not explicitly differentiate it from the sibling eic_plot_compounds tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage guidance: use for structured EIC plot data, do not use for rendering or writing files, and call save_figure(kind="eic") only after an explicit PNG request. It also says spot_id normally comes from existing m/z or RT search tools and explains file_ids selection behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eic_plot_compoundsARead-only
Overlay several identified compounds' EIC traces for ONE sample — as a PNG image by default.
Read-only; writes no file.
output="image" (the default) renders the overlay server-side and returns it
as an image block plus a one-line caption, so the figure appears directly in the
chat. output="payload" instead returns the client-neutral
lipidmix.eic.multi.v1 JSON for a client that draws its own interactive chart
(Use-LLLM's Plotly view); the deployment default can be flipped with the
LIPIDMIX_PLOT_OUTPUT environment variable. Prefer the image — one overlay's
coordinate payload costs tens of thousands of tokens and an LLM cannot read a
trace usefully.
One call plots one sample: file_id is required. To compare samples, call
this tool once per sample and show the figures side by side. top_n caps how
many compounds are overlaid (default 8: more than that is unreadable in one
figure and multiplies the payload).
Compounds are selected from the ARF2 annotation: names matches ARF2
Name as a case-insensitive substring and ontologies matches ARF2
Ontology exactly (case-insensitive); the two results are unioned. At
least one of them is required.
spot_id = AlignmentID is verified against the EIC spot RT and m/z, so a
compound whose identity cannot be confirmed is not drawn. EIC files written
by MS-DIAL before 2023-11-20 carry no spot m/z (-1); those spots borrow the
ARF2 MassCenter after an RT check, and a caveat says so. Everything that was
excluded — mismatch, missing trace, or falling outside top_n — is listed
with its reason in selection.dropped; read it before concluding that a
compound is absent from the sample.
| Name | Required | Description | Default |
|---|---|---|---|
| names | No | ||
| title | No | ||
| top_n | No | ||
| output | No | ||
| file_id | Yes | ||
| arf2_path | No | ||
| file_path | No | ||
| normalize | No | none | |
| ontologies | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnlyHint annotation by disclosing that no file is written, that output can be flipped deployment-wide via LIPIDMIX_PLOT_OUTPUT, and that the coordinate payload costs tens of thousands of tokens. It also exposes verification semantics (spot_id checked against RT and m/z), the pre-2023-11-20 m/z=-1 fallback with a caveat, and the dropped-with-reason list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the one-line what-it-does and the read-only guarantee, then grouped into output-format, per-sample, selection, and verification paragraphs. Dense but each paragraph carries distinct information; a few clauses (e.g. the token-cost justification) run longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does describe the return shape (image block plus one-line caption, or the lipidmix.eic.multi.v1 JSON) and the selection.dropped side channel. The remaining gap is the four undocumented optional parameters (title, normalize, arf2_path, file_path), which matter for an agent trying to steer the plot or point it at alternative inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage the description must carry all 9 parameters, and it explains only the load-bearing ones: file_id, names (ARF2 Name substring, case-insensitive), ontologies (exact match, unioned with names), top_n (default 8), and output (image vs payload). title, arf2_path, file_path, and normalize are left completely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Overlay several identified compounds' EIC traces') with a hard scope constraint ('for ONE sample'), and declares the default rendering explicitly. This distinguishes it from eic_plot_chromatograms and from cross-sample comparison work without the agent needing to open a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing rules: use output=image by default, use output=payload only for a client that draws its own chart, and call the tool once per sample to compare samples side by side. It also states the selection prerequisite ('At least one of them is required') and instructs the agent to read selection.dropped before concluding a compound is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eic_searchARead-only
EIC スポットを spot ID・m/z 範囲・RT 範囲で検索し、TSV で返す。
指定した条件はすべて AND で掛かる(何も指定しなければ全件)。境界値は含む。
spot_ids は MasterAlignmentID(ARF / ARF2 / .dcl と共通)の完全一致で、
範囲外の ID は注記に列挙する。sort="max_intensity" は各試料のクロマトグラム
最大強度の、そのまた最大値で降順に並べる(強度上位ランキング)。既定は spot_id 昇順。
各行は spot_id rt mz max_intensity num_samples name ontology adduct n_msms。
name / ontology / adduct は同じバッチの .arf2、n_msms は
アラインメント .dcl の代表試料 MS/MS のピーク数。- は未取得または
precursor 不一致で、0 本ではない。未注釈で n_msms がある行は
library_match_feature(spot_id=...) → library_plot_mirror で照合・確認できる。
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | spot_id | |
| max_mz | No | ||
| max_rt | No | ||
| min_mz | No | ||
| min_rt | No | ||
| spot_ids | No | ||
| file_path | No | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint is already declared; the description adds meaningful context beyond it — the TSV row layout, provenance of name/ontology/adduct (from .arf2) and n_msms (from .dcl), that '-' means missing or precursor mismatch rather than zero, and that out-of-range spot IDs are listed in notes. Silent on truncation behavior from max_results, which is a gap for a mutation-free but potentially large result set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and filter semantics before diving into output columns. The column list and provenance notes are dense but justified since no output schema exists; minor density is the only knock.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description thoroughly specifies the returned row shape and the meaning of sentinel values, and provides a follow-up workflow for unannotated rows. The unexplained file_path and max_results/truncation semantics keep it short of fully complete for an 8-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description carries the burden well: it defines broad scope and semantics for spot_ids, sort (max_intensity vs default spot_id ascending), min/max m/z, and min/max RT with boundary handling. However, file_path and max_results (a default of 20 implying truncation) are never explained, leaving 2 of 8 params undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search), resource (EIC spots), filtering dimensions (spot ID, m/z range, RT range) and output format (TSV). An agent can immediately distinguish it from eic_parser and eic_plot_chromatograms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains AND semantics, that no filters means all records, boundary-inclusive behavior, and exact-match semantics for spot_ids. Also routes unannotated but n_msms-bearing rows to library_match_feature → library_plot_mirror as a follow-up. No explicit exclusion of siblings, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_promoteADestructive
_inbox の保留ノートを knowledge/ へ昇格する(信頼知識化の唯一の経路)。
claim_strength は established / suggested / speculative のいずれか。links を渡すと 関連ノートへの [[link]] を本文末尾に追記する。
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| links | No | ||
| claim_strength | No | suggested |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
links 指定時に本文末尾へ [[link]] を追記するという副作用を開示しており、注釈を超えた付加価値がある。ただし destructiveHint=true にもかかわらず、元ノートが _inbox から削除されるのか、既存の knowledge/ ファイルを上書きするのか、操作が取り消せるのかが述べられていない。
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
核心的な目的を先頭に置き、続けて claim_strength と links の補足を続ける構成で、無駄な文がない。やや簡潔すぎて、破壊的挙動に関する情報が不足している。
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
出力スキーマがなく破壊的変更を伴うツールであり、スキーマ側のパラメータ説明も皆無である。パラメータの意味はかなり補えているが、昇格後の状態や戻り値、上書きや削除の挙動が不明なままで、破壊的ツールとしては説明が不足している。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
スキーマの説明カバレッジが 0% で enum も定義されていない中、claim_strength の取り得る値(established / suggested / speculative)と links の追記挙動を記述しており、スキーマ以上の意味を補っている。ただし必須の slug については説明がない。
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
「_inbox の保留ノートを knowledge/ へ昇格する」と具体的な動詞とリソースを明示し、「信頼知識化の唯一の経路」と述べて ingest_stage / ingest_reject との役割の違いを暗黙に区別している。エージェントはこの記述だけで他ツールと切り分けられる。
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
claim_strength の値や links を渡したときの挙動には触れているが、いつ使うべきか、代わりに ingest_stage や ingest_reject を使うのはどんな場合かは明示されていない。用途は推測できるが、除外条件や前提条件の記述はない。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_rejectCDestructive
_inbox の保留ノートを破棄する。
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known; the description adds which subset is affected (pending notes in _inbox). It does not say whether the note is deleted from disk or merely flagged as rejected, nor whether the action is recoverable, which matters for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. It is efficient rather than verbose, though the terseness leaves the under-specification problems noted in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, one-parameter tool with no output schema and no parameter documentation, the description omits outcome, irreversibility, and slug provenance. An agent could invoke it but cannot predict what it will do to the note.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required parameter 'slug', and the description never explains what the slug identifies or where it comes from (presumably an inbox note identifier). With the schema contributing nothing, the description should have compensated but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (破棄する / discard) and a specific resource (_inbox の保留ノート / pending notes in _inbox), so an agent knows exactly what operation it performs. It does not, however, differentiate itself from siblings like ingest_promote or ingest_review_queue, which address the same inbox objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to reject versus promote, stage, or send to the review queue, and no prerequisites or exclusions are stated. The agent must infer the workflow position entirely from the word 'reject'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_review_queueBRead-only
_inbox の保留中ノートを analysis_id×Qi でグルーピングして返す。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already conveys safety, so the description only needs to add context. It does say the result is pending notes grouped by analysis_id×Qi, but says nothing about ordering, pagination, whether all pending notes are included, or what a group contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with the resource and grouping key front-loaded; nothing is wasted. It is slightly too terse and jargon-dense ('_inbox', 'analysis_id×Qi') for an agent unfamiliar with the domain.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so explaining the return shape matters, yet the description only says 'grouped' without describing group structure or ordering. For a no-arg read tool this is minimally adequate but leaves the agent guessing at what it will receive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline of 4 applies. There are no parameter semantics to explain or compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('グルーピングして返す') on a specific resource ('_inbox の保留中ノート') and names the grouping key (analysis_id×Qi). An agent can tell this is a read-only pending-queue listing, distinct from mutation siblings like ingest_stage/ingest_promote/ingest_reject, though the term 'note' and composite key are not elaborated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus curation_review, ingest_stage, ingest_promote, or ingest_reject. The pending-inbox context implies it precedes staging/promotion, but that workflow is left for the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_stageB
関連と判断した候補を knowledge/_inbox に speculative 隔離する(出典必須)。
found_for は "<analysis_id>/" 形式。source は引用可能な書誌(出典なしは拒否)。
| Name | Required | Description | Default |
|---|---|---|---|
| doi | No | ||
| query | Yes | ||
| title | Yes | ||
| source | Yes | ||
| abstract | Yes | ||
| found_for | Yes | ||
| relevance_score | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and idempotentHint=false, so the write and non-idempotent nature is covered structurally. The description does add real behavioral context beyond them: everything lands in knowledge/_inbox as 'speculative' (i.e., isolated, not curated) and a call without a citable source is rejected. It stays silent on what happens to duplicates or whether the item then appears in ingest_review_queue.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded, with the core action in the first clause. The '出典必須' parenthetical is redundant with the later '出典なしは拒否' sentence, costing a little space for no added information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter write tool with zero schema coverage and no output schema, the description should say more: what staging produces, how it relates to ingest_promote/ingest_reject/ingest_review_queue, and how duplicate DOIs are handled (relevant given idempotentHint=false). Only the source-required rule and found_for format are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 7 parameters, so the description must carry the burden. It clarifies only two: found_for is documented as '<analysis_id>/<Qi>' format and source as a citable bibliography that is rejected when absent. The remaining five (title, abstract, query, doi, relevance_score) get no semantic help at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and destination: quarantine candidates judged relevant into knowledge/_inbox as speculative. That distinguishes it from a general write, though it never names its close siblings ingest_promote or ingest_reject to clarify the staging stage of the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'関連と判断した候補' implies the trigger (after a relevance decision), but there is no explicit when/when-not, no mention of the alternative exit paths (ingest_promote, ingest_reject), and no statement of prerequisites beyond the mandatory source.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_listBRead-only
dataset_root/runs/ 以下のジョブ一覧を新しい順に返します。
dataset_root: 生データフォルダのパス(console_plan で指定したものと同じ)。
| Name | Required | Description | Default |
|---|---|---|---|
| dataset_root | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds useful behavior beyond that: results are scoped to dataset_root/runs/ and sorted newest-first. It does not say what happens when no jobs exist or whether results are truncated, so the addition is real but partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short lines with the core behavior front-loaded and the parameter note second. No filler; the only quibble is that the parameter gloss could have been folded into the first sentence rather than a separate line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple one-parameter read tool with no output schema, so the agent needs some idea of what a job entry looks like (id, status, timestamp) and whether the list is bounded. Neither is covered, leaving a modest but real gap for a listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the parameter, and it does: dataset_root is defined as the raw-data folder path and tied to the value used in console_plan. That removes the main ambiguity for the single required parameter, though it gives no format example or path syntax.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns the list of jobs under dataset_root/runs/, in newest-first order. The scope and ordering are unambiguous, though it does not name a sibling (e.g. console_status) to distinguish when this list is the right source of job information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no mention of alternatives such as console_status or pipeline_status, which also expose job state. The only hint is that dataset_root matches what console_plan took, which implies the tool is used within a console workflow but doesn't state it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowledge_coverageBRead-only
objective の各小問 Qi を COVERED / WEAK / GAP に分類する(探索候補=GAP)。
決定論ベースライン(文字bigram+脂質クラス語彙)。COVERED は該当ノートを expand して 真偽を必ず検証すること。GAP かつ未探索の Qi だけが自動探索の対象(探索済みは注記される)。
| Name | Required | Description | Default |
|---|---|---|---|
| analysis_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnly annotation covers safety, and the description adds meaningful behavior beyond it: deterministic baseline using character bigrams plus lipid-class vocabulary, mandatory verification of COVERED notes, and automatic-search eligibility for GAPs only. It still does not describe the return payload in detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the core classification purpose, and each sentence adds operational information. The parenthetical method note is compact and does not distract from the main instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should explain the return shape more fully. It names the classification categories and mentions explored notes, but it does not state the structure of results or clarify the required analysis_id input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the sole parameter analysis_id is not mentioned in the description. The description contextually implies an analysis is being inspected, but it does not explain what analysis_id refers to or how it should be supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-resource pair: classify each sub-question Qi of an objective into COVERED/WEAK/GAP. It is clear and unambiguous, though it does not explicitly distinguish itself from any sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives operational conditions such as only unexplored GAPs being auto-search targets and requiring verification of COVERED items. However, it does not explicitly say when to call this tool versus alternatives or what prerequisites must exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
library_loadAIdempotent
参照ライブラリを読み込み、照合用の SQLite store を構築(または既存キャッシュを 再利用)する。
解決順: file_path の明示 → ion_mode("positive" / "negative")に対応する
設定(環境変数 MSDIAL_MSP_POS / MSDIAL_MSP_NEG → lipidmix.local.toml の
[library] msp_positive / msp_negative)→ データディレクトリの
*_Loaded.msp2.dbs → 設定済みの極性(両方あれば ion_mode を求める)→
データディレクトリの *.msp。候補が 1 つに決まらなければ code 付きの
エラー(MSP_AMBIGUOUS など)を返し、黙って選ばない。一度に保持する
ライブラリは 1 つだけ——測定の極性に合わせて ion_mode を指定する。
初回の構築は大きな .msp(1 GB 級)で数分かかる。MCP のタイムアウトに当たる
なら、手元で python -m metabolomix.library.store --ion-mode <極性> を 1 度
走らせておけば、以後はキャッシュを開くだけで済む。
library_match_feature の前提。別ライブラリへ切り替えると直近の照合結果
(library_plot_mirror が読む座標)は破棄する——古い照合を新ライブラリの
結果と取り違えないため。
rebuild=True はキャッシュを無視して構築し直す(元ファイルが壊れている
疑いがあるときなど)。通常は不要——store は元ファイルの sha256 をキーに
キャッシュされるため、内容が変わらない限り再構築しない。
| Name | Required | Description | Default |
|---|---|---|---|
| rebuild | No | ||
| ion_mode | No | ||
| file_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare `destructiveHint: false`, but the description explicitly says switching libraries discards the latest matching results (the coordinates read by `library_plot_mirror`) and that `rebuild=True` ignores and rebuilds the cache. Those are destructive state changes, contradicting the annotation that the tool performs additive updates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The length is justified by the tool's complex resolution logic and side effects, and the purpose is front-loaded. The resolution order and notes on timeout, caching, and `rebuild` are structured into useful, non-redundant blocks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers resolution behavior, ambiguity errors, timeout workarounds, cache keying, side effects, and its prerequisite relationship to `library_match_feature`. The only notable gap is that it does not describe the success return shape, though no output schema exists to define it either.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It defines `file_path` as an explicit override, `ion_mode` as selecting positive/negative polarity, and `rebuild` as bypassing the sha256-keyed cache to force reconstruction.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: load a reference library and build or reuse the SQLite store used for matching. It also distinguishes the tool's role as a prerequisite for `library_match_feature`, so an agent can tell what it does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit resolution order across `file_path`, `ion_mode`, environment variables, TOML settings, cached DBs, and `.msp` files. It also explains when ambiguity produces an error, that only one library is held at a time, and when `rebuild=True` is appropriate versus unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
library_match_featureARead-only
測定 MS/MS(.dcl)を参照ライブラリ(library_load 済みの store)と照合し、
上位候補を返す。
照合の対象は precursor_mz か spot_id のどちらか一方で指定する。
spot_id(MasterAlignmentID。eic_search 等で引ける)を渡すと、precursor m/z・
RT・極性を同じバッチの .arf2(arf2_path、省略時は現在のデータフォルダ)から取り、
測定スペクトルはアラインメント .dcl(dcl_file、省略時は .arf2 と同じバッチ)の
そのスポットの代表 MS/MS を使う。precursor が ARF2 と ±0.01 で合わなければ
照合せず status="dcl_precursor_mismatch"、ID が無ければ spot_not_found。
rt / ion_mode を明示すれば ARF2 の値より優先する。
ion_mode は "positive" / "negative"(大小は問わない——store.candidates()
が COLLATE NOCASE で比較するため、PAI2 由来の IonMode.Positive.name
のような "Positive" 表記もそのまま渡してよい)。
mz_tol / ms2_tol / rt_tol は明示指定が無ければ store の search_params
(.dbs 由来なら実値)を使い、それも無ければ既定値
(_DEFAULT_MZ_TOL / _DEFAULT_MS2_TOL / _DEFAULT_RT_TOL、現在の値は
0.01 / 0.025 / 0.2)を使う。これらは参照ライブラリの候補検索(store.candidates()
の precursor m/z 窓・RT 窓)にだけ効く。 .dcl から測定 MS/MS を引く窓は
_measured_spectrum 内部の固定既定(dcl/reader.py と同じ mz_tol=0.01/
rt_tol=0.2)を常に使い、ここの引数や store の search_params の影響を受けない
(最終レビュー Important 7: .dbs の RtTolerance 既定 100.0 のような
ライブラリ用の値を .dcl 側の RT 窓に流用すると、同じ precursor m/z の
別ピークの測定スペクトルを黙って拾ってしまうため、2 つの窓を分離した)。
足切り(relative_amp_cutoff / absolute_amp_cutoff)と質量範囲
(mass_range_begin / mass_range_end)も同じ search_params から採って
採点(match_spectrum)に渡す——検証 CLI(scripts/verify_spectral_match.py)
と同じ集合(最終レビュー Important 2)。
.dcl に MS/MS が無い(未取得)場合は status="not_found" を返す——
「候補と合わなかった」のではなく「照合する測定スペクトルがそもそも無い」ことを
区別するため、dcl_find_msms と同じ文言の方針に揃える。
候補は total_score の降順で返す(rank 列・ranked_by フィールドが
同じ基準を指す)。MS-DIAL の総合スコア(上流 GetTotalScore)で、
rt + precursor_mz + (weighted+simple+reverse)/3 + matched_peaks_percentage
の正規化しない和——1 を超える。組み立て方は戻り値の scoring が明示する
(RT 項が入ったかは .dbs の IsUseTimeForAnnotationScoring 次第で、
数値だけを見ても分からないため)。同点は候補順を温存する(安定ソート)。
上流の順位付けと完全に同じではない。 MsScanMatchResultContainer.ResultOrder
は (IsManuallyModified, IsReferenceMatched, IsAnnotationSuggested, Priority, TotalScore) の辞書順で、TotalScore は最後のタイブレークにすぎない。
支配項の IsReferenceMatched は脂質クラス固有の判定
(Lipidomics/、上流 66,932 行)に依存するため移植していない。実データでは
この判定が無いと全候補が True になってゲートとして働かないので、
total_score 単独比較が現実的な最良の近似という位置づけ。
帰結として、上位に化学的にありえない候補が残ることがある
(docs/output_format/library.md §14.9)。
top_n は上位何件を返すかの上限(既定 5)。負値を渡すと全件を返す
(明示的な仕様ではなく Python のスライス挙動に由来する副作用的な動作
——件数を絞りたくないだけなら大きな正の値を渡すこと)。
候補一覧は TSV(列名 1 回)で返す。スペクトル座標と alignment は戻り値に
含めない(LLM の文脈を食うため)。座標は session.library.last_match に
持ち、library_plot_mirror がそこから読む。
| Name | Required | Description | Default |
|---|---|---|---|
| rt | No | ||
| top_n | No | ||
| mz_tol | No | ||
| rt_tol | No | ||
| ms2_tol | No | ||
| spot_id | No | ||
| dcl_file | No | ||
| ion_mode | No | ||
| arf2_path | No | ||
| precursor_mz | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint available, the description carries the full burden and does far more than required: it enumerates the exact status codes (`dcl_precursor_mismatch`, `spot_not_found`, `not_found`) and their triggers, documents default tolerance values, discloses that tolerance arguments affect only library candidate search and not the fixed internal `.dcl` spectrum window, and warns that ranking is an approximation of upstream ordering with known false-positive risk.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and mutual-exclusivity rule are front-loaded, which is good, but the text balloons with internal artifacts that do not help an agent invoke the tool: review-ticket citations ('最終レビュー Important 7'), source file paths (`dcl/reader.py`), and upstream line counts ('上流 66,932 行'). The rationale for split tolerance windows is genuinely useful, but it is buried in an overlong aside.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and 10 optional parameters, so the description must describe returns — and it does: TSV with header, `total_score`-descending order, rank/ranked_by fields, explicit note that spectrum coordinates are excluded and live in `session.library.last_match`. Combined with the status-code taxonomy, nothing material is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate — and it does: it explains `spot_id` provenance, `arf2_path`/`dcl_file` fallback behavior, `ion_mode` case-insensitivity and accepted spellings, `rt`/`ion_mode` precedence over ARF2, the tolerance fallback chain with concrete defaults, and `top_n`'s default plus its undocumented negative-value behavior. Nearly every one of the 10 parameters is given meaning beyond its type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a precise verb and resource: match measured MS/MS from `.dcl` against a reference library loaded via `library_load`, returning top candidates. It also implicitly distinguishes itself from siblings by naming `library_load` as a prerequisite and `library_plot_mirror` as the downstream consumer of stored coordinates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the key usage constraint clearly — specify exactly one of `precursor_mz` or `spot_id` — and explains that `spot_id` can be obtained via `eic_search`, plus the `library_load` prerequisite. What it lacks is explicit routing against alternatives (e.g., when direct precursor-based matching is preferable to spot-based, or when to use `dcl_find_msms` instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
library_plot_mirrorARead-only
直近の library_match_feature 結果から対向プロット(mirror plot)を描く。
上段が測定、下段が参照(rank 位の候補)。output="image"(既定)は
サーバ側で描画した PNG を返し、output="payload" は座標を丸めた
lipidmix.mirror.v2 JSON を返す(Use-LLLM 等、自前で描くクライアント向け。
v2 で採点外ピーク unscored_mz の層を追加)。
測定側の一致色分けには許容幅(ms2_tol)が要る——library_match_feature
が使った値(store の search_params か既定値)を自動で引き継ぐ。
.dbs の強度足切りで採点に入らなかった測定ピークは灰色で薄く描く
(last_match["unscored_mz"] を引き継ぐ)。採点は normalize_measured が
足切りした後のスペクトルに対して行うのに、図は足切り前の生ピークを描くため、
区別が無いと「描かれているのに採点されていない」ピークが黙って混ざる。
消さずに描くのは、消すと「MS/MS が取れていない」と読めてしまうため。
この層はラベル枠を取らず、凡例と caption の件数は該当ピークがあるときだけ
出る(足切りが 0 の run では図も caption も従来と変わらない)。
scale は縦軸の写し方で "relative"(既定)/ "sqrt" / "log10"。
precursor がベースピークのスペクトル(脂質の [M-H]- など)は relative
だと診断イオンが相対数 % に潰れて読めない——そのときに "sqrt" を使う。
上流 MS-DIAL も同じ問題を軸の切り替えで解いている
(ObservableMsSpectrum.CreateAxisPropertySelectors2 の Relative / Absolute /
Log10 / Sqrt)。Absolute は用意しない——対向プロットは単位の違う 2 つの
スペクトルを上下に並べるので、生の強度で並べても比較にならない。
label_policy は m/z ラベルの衝突回避の方式。どちらも強度降順に走査して
既に置いたラベルと重なるものを飛ばす(上流 Annotator.OnRender と同じ
貪欲法)が、重なりの見方が違う:
"auto"(既定)— 水平と垂直の両方が近いときだけ飛ばす。箱は ラベル自身の文字列を実測する。対向プロットは同じ側でもピークの高さが 大きく違うので、2 次元で見るほうが読めるラベルを多く残せる。"msdial"— 上流に忠実。水平距離だけを見て、箱は代表文字列"1000.00000"1 つで全ラベル共通にする。上流の MS2 ビューはOverlap="Horizontal, Direct"だが、この合成は OR で、全ラベルが同じ箱を 使うためDirectはHorizontalの部分集合になり実質Horizontal単独に 縮退している。縦にどれだけ離れていても m/z が近ければ飛ばすので、"auto"よりラベルは少なくなる。
どちらも上下は別枠で数える(上流は上下で別々の Annotator を持つため、
側をまたぐ衝突は起きない)。
| Name | Required | Description | Default |
|---|---|---|---|
| rank | No | ||
| scale | No | relative | |
| output | No | ||
| label_policy | No | auto |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint already covering safety, the description adds substantial non-obvious behavior: unscored peaks below the `.dbs` intensity cutoff are drawn faint gray rather than dropped, that layer is excluded from label slotting, and legend/caption counts appear only when such peaks exist. It also documents the greedy descending-intensity collision scan and that the payload format is `lipidmix.mirror.v2` with an added `unscored_mz` layer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and bolded where it matters, but over-long for a four-parameter tool: the upstream MS-DIAL digressions (CreateAxisPropertySelectors2 selectors, the `Overlap="Horizontal, Direct"` OR-degeneracy argument) are rationale that does not change how the agent calls the tool. The behavior it explains is still correct, so it is verbose rather than wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so the description supplies the return contract itself (server-rendered PNG vs. rounded-coordinate `lipidmix.mirror.v2` JSON), and it discloses the `ms2_tol` inheritance from stored `search_params`. Everything needed to call it correctly and interpret the result is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the full burden and does: it gives the value set and default for `scale` (relative/sqrt/log10) and explains why `Absolute` is deliberately omitted, defines `label_policy` semantics ('auto' 2-D vs 'msdial' horizontal-only), and clarifies `rank` as selecting among ranked candidate references. This is meaning well beyond bare `type: integer/string`.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('対向プロット(mirror plot)を描く') plus the exact data source ('直近の library_match_feature 結果'), so an agent knows both the action and its input. No sibling in the list produces mirror plots, so there is no ambiguity to resolve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the two output modes: default PNG rendering on the server vs. `output="payload"` for clients that draw themselves (naming Use-LLM as the case). It also gives a concrete trigger for `scale="sqrt"` ('precursor がベースピークのスペクトル'). Missing only an explicit statement of when not to call it (e.g. no prior match result exists).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_data_filesARead-only
データフォルダにある解析対象ファイルを拡張子別に一覧します。
directory: 探索するフォルダ。省略時は既定のデータディレクトリ (環境変数 LIPIDMIX_DATA_DIR または /data)。
extension: 指定するとその拡張子だけに絞る(例 '.pai2', '.arf2', '.EIC.aef')。
all_files: 既定では解析できる拡張子 (.arf / .arf2 / .pai2 / .dcl / .EIC.aef / .mddata / .mdproject) だけを返す。 測定生データ(MS-DIAL が読む .abf / .ibf / .cdf / .mzml / .wiff / .raw / .d / .wiff2 / .qgd / .lcd / .lrp / .imzml)まで見たいときだけ True にする。 Agilent・Bruker の .d と Waters の .raw はフォルダが 1 検体なので、 末尾に
/を付けて示す。
返すのは絶対パスで、pai2_parser(file_path=...) 等へそのまま渡せる。
フォルダ全体をまず解析するなら load_dataset(directory) が入口。
| Name | Required | Description | Default |
|---|---|---|---|
| all_files | No | ||
| directory | No | ||
| extension | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations already declare readOnlyHint=true, the description adds substantial behavioral context: default extension filtering, the full raw-data extension list, the fact that some raw formats are folders indicated with a trailing slash, and that absolute paths are returned for direct downstream use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence states the purpose immediately, then structured bullets cover each parameter without redundancy. The raw extension lists are long but necessary for correct usage, and the final sentences give useful downstream context without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with three optional parameters and no output schema, the description is complete: it explains defaults, filtering, raw-file inclusion, folder-based formats, return format, and likely next steps. An agent has everything needed to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter semantics, and it does: directory has a defined default via LIPIDMIX_DATA_DIR or <project>/data, extension is explained with examples, and all_files is explained with its default filtering behavior and the exact raw extensions it unlocks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource pair: it lists analysis target files in the data folder by extension. It clearly distinguishes the default analyzable-file behavior from raw measurement data and points to sibling tools like pai2_parser and load_dataset for next steps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use all_files=True versus the default, provides examples for extension filtering, and directs agents to load_dataset when the intent is to analyze an entire folder. This gives clear when-to-use and alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_reportsARead-only
既存レポートの1行索引(analysis_id / date / status)を返す。
候補ディレクトリ横断で同一 analysis_id が重複する場合は mtime が最新の1件を採用する。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safety profile, so the description's real contribution is the non-obvious deduplication rule: when the same analysis_id appears across candidate directories, the newest mtime wins. That is a genuine behavioral disclosure an agent could not get from annotations or schema. It leaves ordering of the returned index and empty-result behavior unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste: the first front-loads what is returned, the second covers the one edge case that matters. Nothing is repeated from structured fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description carries the return-shape burden and does so by listing the three index fields, plus it resolves the duplicate-analysis_id ambiguity. Minor gaps remain around result ordering and what an empty index looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to explain and the baseline is 4. The description correctly spends no words on inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (returns) and resource (1-line index of existing reports) and enumerates the returned fields (analysis_id / date / status), which separates it from read_report's full-document retrieval. It stops short of explicitly naming the sibling pair write_report/read_report, so the differentiation is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to call this versus read_report or write_report, nor does it state any prerequisite or follow-up step. An agent must infer that this is a discovery/index step before reading a specific report.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_datasetARead-only
データフォルダを指定して、最初の標準解析(arf2 概観 → arf 詳細)を一括実行します。
MS-DIAL出力フォルダを解析する際の 入口 です。フォルダのパスを渡すと:
.arf2(データセット全体のカタログ=概観)を要約し、サンプル別強度を持つ
.arfで PCA を実行します。フォルダに DriftSpots.arf と PeakProperties.arf が併存する場合は、解析に使う PeakProperties.arf を自動選択 します。 以降のarf_list_classes/arf_parser等はこのセッション状態をそのまま利用できます。
複数日付(複数回のMS-DIAL処理=複数バッチ)のファイルが混在していても解析は
止まりません。ファイル名の AlignmentResult_<timestamp> を見て 最新バッチを
自動選択 し、選択結果を出力に明示します(旧バッチはスキップ)。
directory: MS-DIAL出力フォルダのパス。省略時は既定のデータディレクトリ (環境変数 LIPIDMIX_DATA_DIR または /data) を使用します。 明示した場合は以降のツールの既定探索先もこのフォルダに更新されます。
| Name | Required | Description | Default |
|---|---|---|---|
| directory | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint annotation: it discloses automatic selection of PeakProperties.arf when DriftSpots.arf coexists, automatic selection of the newest batch via the AlignmentResult_<timestamp> filename convention (old batches skipped), that mixed-date folders will not halt analysis, and that the selected directory becomes the default for later tools. These are exactly the non-obvious side effects an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then a numbered list of the two analysis steps, then edge-case behavior and parameter details. It is longer than most definitions but nearly every sentence carries operational information; only the closing restatement of the parameter is mildly redundant with the header text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description covers what is produced at a high level (arf2 summary, PCA result) and promises the auto-selection results are echoed in the output. That is sufficient for correct invocation, though the concrete shape of the returned summary/PCA payload is not described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter has 0% schema description coverage, but the description fully compensates: it defines the parameter as the MS-DIAL output folder path, gives the fallback chain (LIPIDMIX_DATA_DIR or <project>/data when omitted), and notes the side effect of updating subsequent tools' default search location. Nothing about the parameter is left ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('load_dataset' = load an MS-DIAL output folder) and enumerates the two concrete steps it performs (arf2 overview summary, then PCA on the arf with per-sample intensities). It explicitly positions itself as the entry point relative to sibling tools like arf_list_classes / arf_parser, so an agent can distinguish it from dataset_load or arf_parser without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames itself as the entry point for MS-DIAL output folders and states that '以降の arf_list_classes / arf_parser 等はこのセッション状態をそのまま利用できます', which gives clear sequencing guidance. It does not contrast against the similarly named dataset_load or dataset_status siblings, so there is no explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_searchB
探索結果を objective の探索ログに記録する(既探索 Qi の再探索を防ぐ)。
subquestion はラベル(例 "Q2")。paper_search を実行したら必ず記録すること。
| Name | Required | Description | Default |
|---|---|---|---|
| hits | Yes | ||
| query | Yes | ||
| promoted | No | ||
| analysis_id | Yes | ||
| subquestion | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, non-idempotent, non-destructive write. The description adds the deduplication purpose, which is genuinely useful context. However, it does not say what happens when an already-logged query is submitted again (rejected? appended?) — a meaningful gap given idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the purpose front-loaded, followed by the one non-obvious parameter hint and the mandatory usage rule. Little waste; the parenthetical example is compact and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five parameters at 0% schema coverage and no output schema, the description should explain the fields and the logging semantics. It covers only one parameter and omits what 'promoted' or 'analysis_id' mean and what the tool returns, leaving real gaps for a write tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, but it only explains subquestion as a label like 'Q2'. analysis_id, query, hits, and especially 'promoted' are left entirely unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: record search results into an objective's search log, with the stated rationale of preventing re-searching already-covered questions. It also implicitly distinguishes itself from paper_search as the logging companion, though the 'objective' concept is not tied to any visible field (the schema uses analysis_id).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger: 'always record after running paper_search' — a clear, actionable when-to-use rule with the relevant sibling named. It does not say what to do on failure or whether repeated logging of the same query is allowed, but the core guidance is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pai2_inspect_peakARead-only
特定のピークについて、強度・S/N・MS/MS相当の情報を返す。
返り値には signal_to_noise フィールドが含まれます。peak_id か peak_name の いずれかを指定する。
| Name | Required | Description | Default |
|---|---|---|---|
| peak_id | No | ||
| peak_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes the safe read-only nature. The description adds useful behavioral detail by naming the returned signal_to_noise field and the classes of returned information, but it does not describe the full return shape or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short, front-loaded with the purpose, and contains no wasted language. The parameter selection rule and return field note are delivered efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only inspection tool with no output schema, the description covers the basic purpose and one return field. It is still incomplete because it does not clarify identifier precedence or fully characterize the returned data, which matters given the absent output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It does specify that peak_id or peak_name should be given, adding important selection semantics absent from the schema, but it does not define formats, precedence, or behavior when both or neither are supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: return intensity, S/N, and MS/MS-equivalent information for a specific peak. It is distinguishable from most siblings by centering on a single peak inspection, though it does not explicitly contrast itself with nearby tools like verify_peak_annotation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It indicates that either peak_id or peak_name should be supplied, which gives basic invocation guidance. However, it does not explain when to choose this tool over verify_peak_annotation or dcl_find_msms, nor what to do if both or neither identifier are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pai2_parserARead-only
1つの .pai2(単一測定ファイル)を解析し、ピーク在庫の要約を返します。
返すのは注釈状況・m/z・RT・強度・S/N の分布と、強度上位ピーク(生化学的に意味のある ランキング)です。PAI2 は単一サンプルなので、サンプル間比較(オミクス PCA)はこの単位 では行えません(複数サンプルの多変量比較は ARF/ARF2 を使う)。個々のピークは pai2_inspect_peak / verify_peak_annotation で深掘りできます。MS/MS は 同名 .dcl(dcl_index がリスト順に対応)を参照します。
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| filter_threshold | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safety profile, and the description adds substantive behavior beyond it: the exact summary payload returned, the constraint that PAI2 is a single-sample unit, and the implicit requirement that a same-named .dcl exist for MS/MS (with dcl_index matching list order). It does not mention failure modes for missing/malformed files or the effect of filter_threshold, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and return contents are front-loaded in the first two sentences, followed by scope exclusions and follow-up routing. Every sentence carries information, though the .dcl sidecar note is slightly buried at the end rather than flagged as a precondition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates well by enumerating the returned distributions and top-peak ranking, plus the single-sample limitation and sidecar dependency. The remaining gap is parameter-level guidance for filter_threshold, which is not covered anywhere else in the structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters, so the description carries the full burden — but it never mentions file_path or filter_threshold. The optional numeric filter_threshold in particular has no stated semantics (units, whether it applies to intensity or S/N, default behavior when null), leaving an agent to guess its meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('1つの .pai2 を解析し、ピーク在庫の要約を返します') and immediately enumerates what the summary contains (annotation status, m/z, RT, intensity, S/N distributions, top-intensity ranking). It also differentiates itself from arf_parser/arf2_parser and from pai2_inspect_peak, so an agent can place it in the family without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states a when-not condition — PAI2 is single-sample so cross-sample/multivariate comparison (omics PCA) is out of scope — and names the alternatives (ARF/ARF2) for that case. It further routes follow-up work to pai2_inspect_peak / verify_peak_annotation and MS/MS to the .dcl sidecar, covering both escalation and data dependencies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paper_searchARead-only
Europe PMC を検索し、撤回除外・重複除外した候補を返す(ユーザー確認済みクエリ前提)。
返した各候補は LLM が当該 Qi への関連度で採点し、関連するものだけ ingest_stage で _inbox へ隔離すること。生ファイル名・サンプル名をクエリに含めないこと。
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, it discloses meaningful behavior: retraction exclusion, de-duplication, an external service dependency, and a query-hygiene constraint (no raw filenames/sample names). It does not describe the shape of each candidate or what happens with large result sets, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first sentence, and the remaining lines are pure operational guidance with no filler. Every sentence either states a constraint or directs a downstream action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only search with no output schema, the description supplies the external source, the filtering behavior, the query constraint, and the downstream pipeline, which is enough to call it correctly. The main residual gap is that the returned candidate fields and result-limit behavior are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter burden. It does add a real constraint on the content of `query` (exclude raw filenames/sample names), but `max_results` is never mentioned and no format hints are given for the query string.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific verb and resource ('Europe PMC を検索し') plus result shaping ('撤回除外・重複除外した候補を返す'), which clearly separates it from the dataset/sample search siblings. It stops short of explicitly naming an alternative search tool, so sibling differentiation is inferred from the Europe PMC domain rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a prerequisite ('ユーザー確認済みクエリ前提') and a follow-on workflow (LLM scoring of candidates, then isolating relevant ones into _inbox via ingest_stage), which is real routing guidance. However, it never explicitly says when NOT to use this tool or names a competing tool as the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathway_plotAIdempotent
pathway_project の run をパスウェイ図(PDF)に描き、チャットに PNG で表示する。
run_id: 省略時は直近の run。
pathways: その run に含まれるものから選ぶ(既定は全部)。1 枚約 2,400 画像トークン。
plot_type: dot | box | violin(ノード内のグラフ)。横軸の群は group_a, group_b, その他の群の順 (上流は config の plot.x_order を軸順と配色の両方に使う)。 [mslipidmapper] mslipidmapper_api_url の研究室サーバを先に使い(サーバは 3 パスウェイ全部を描く)、 使えなければローカルの R で描く。ローカルではヘッドレス Chromium([mslipidmapper] browser)と unpkg.com への接続が要る。
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | No | ||
| pathways | No | ||
| plot_type | No | dot |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, it discloses important behavior: output is a PDF plus a PNG shown in chat, each image costs about 2,400 image tokens, and execution tries a lab server first before falling back to local R with headless Chromium and unpkg access. It does not describe error behavior or authentication, but it adds substantial context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and uses bullets to make parameter guidance scannable. The dependency note is relevant, though the entry is denser than ideal and mixes several operational facts into one block.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and 0% schema description coverage, the description provides purpose, parameter semantics, output format, token cost, and runtime dependencies. It could be more complete about where the PDF is saved or what errors look like, but it is adequate for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, and it does: run_id defaults to the latest run, pathways are chosen from the run and default to all, and plot_type is one of dot, box, or violin with group ordering noted. It does not describe run_id format or valid pathway naming conventions, but it covers all three parameters well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it draws a pathway_project run as a pathway diagram (PDF) and displays it as a PNG in chat. This is clear enough to distinguish it from the project-management sibling pathway_project, but it does not explicitly contrast itself with other plotting tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful operational guidance such as run_id defaulting to the latest run and pathways defaulting to all pathways in that run. However, it does not explicitly say when to choose this tool over alternatives such as save_figure or other plot tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pathway_projectA
前処理済みの脂質データを MSLipidMapper のパスウェイへ投影し、2 群を比べる。
返すのは小さな表だけ(ノード表と、逆向きに動く隣接ペア)。JSON-LD・中間 mzTab-M は 解析フォルダの reports/pathway/<run_id>/ に残る。図は pathway_plot。
source: auto | arf | dataset。arf は arf_preprocess 後、dataset は dataset_preprocess 後。 auto は「前処理済み ARF があれば arf、無ければ dataset_load 済みなら dataset、 どちらも無ければ arf(→ arf_preprocess を求める missing_state)」の順で選ぶ。
group_a / group_b: arf は Class ID か因子トークン(arf_differential と同じ)、 dataset はサンプル名のリスト(group_a_label / group_b_label が群名になる)。
pathways: remodeling / ceramide / global(既定は 3 つ全部)。
acyl_chains: 例 ["18:0","20:4"]。指定すると鎖サブセットのスコープも比べる。
aggregation: sum | mean | median(サブクラス内の分子種の集計)。 検定は log2(x+1) の Welch、BH はパスウェイ×スコープ種別ごと。log2fc は正なら group_b が高い。 脂質アッセイ(record_objective の assay_kind=lipid)でだけ使える。 MSLipidMapper は [mslipidmapper] mslipidmapper_api_url の研究室サーバを先に使い、使えなければローカルの R ([mslipidmapper] rscript)で動かす。どちらで動いたかは戻り値の backend。
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | auto | |
| group_a | No | ||
| group_b | No | ||
| pathways | No | ||
| acyl_chains | No | ||
| aggregation | No | sum | |
| q_threshold | No | ||
| group_a_label | No | group_a | |
| group_b_label | No | group_b |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations: discloses the return payload (node table plus reversely-moving adjacent pairs), writes JSON-LD and intermediate mzTab-M to reports/pathway/<run_id>/, the backend selection order (remote mslipidmapper_api_url server first, local RScript fallback, reported in the 'backend' return field), and the statistics used (Welch on log2(x+1), BH per pathway×scope type, log2fc sign convention). This is unusually rich behavioral context for a mutating, open-world tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded statement of action, then a return-value sentence, then a structured parameter bullet list where each bullet earns its place. Dense but well organized; the statistics paragraph could be trimmed slightly but is not filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, no-output-schema, mutating tool this is nearly complete: return shape, side-effect files, backend behavior, and significance methodology are all covered. Only q_threshold's meaning and the exact effect of labels on output naming are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage the description carries the load and does well: it defines source semantics, the differing form of group_a/group_b per source (Class ID/factor token vs sample-name list), the pathways values (remodeling/ceramide/global), acyl_chains format example, and aggregation options plus its meaning. q_threshold is never explained in the description (the BH note implies it but does not define it), which is the one clear gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb + resource: projects preprocessed lipid data onto MSLipidMapper pathways and compares two groups. It also names pathway_plot as the sibling that produces figures, so the agent can distinguish the two without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the prerequisite chain (source=arf requires arf_preprocess, source=dataset requires dataset_preprocess), the auto-resolution order with the missing_state fallback, and the eligibility constraint (only for lipid assays with record_objective assay_kind=lipid). Alternatives for plotting are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipeline_cancelAIdempotent
取消要求を保存する。二重取消は冪等。
rawデータを削除しない。 ここで保存するのは協調的な取消フラグだけで、
上流Consoleの停止は監視経路が、下流の停止はstage境界が行う。受理
(このツール呼び出しが成功したこと)と、実際にworkerが停止を確認した
こと(cancelled への確定)は別状態——確定は pipeline_status で確認する。
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only cover general safety hints, while the description adds substantive behavior: raw data is not deleted, only a cooperative cancel flag is stored, upstream Console stopping is handled by the monitoring path, downstream stopping is handled at stage boundaries, and acceptance of the request is explicitly separate from actual worker shutdown. This goes well beyond what the annotations provide and gives an accurate model of this asynchronous, non-destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action and idempotency are stated first, followed by the important non-destructive guarantee in bold, and then the async semantics. Each sentence earns its place, though the upstream/downstream split is slightly more detail than an agent strictly needs to invoke the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers the semantics an agent needs: what happens, what does not happen, how idempotency works, and how to verify the final state via `pipeline_status`. Only the parameter format is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter, `pipeline_path`, with 0% description coverage, so the description must provide that meaning. It does not mention the parameter at all: neither what a valid pipeline path looks like nor how to obtain one. The gap is real despite the small parameter count.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it saves a cancel request for a pipeline, and nothing else. It also clearly distinguishes this from the sibling `pipeline_status`, which is the tool that confirms cancellation, so an agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use this tool (to request cancellation) and sends the agent to `pipeline_status` to confirm the request has actually taken effect. Idempotency is also stated explicitly. It never states when not to use this tool, for example when the pipeline is already complete or rejected, so the score is 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipeline_planAIdempotent
入力検査・不足情報・固定要求の保存のみを行う。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 を使う。
| Name | Required | Description | Default |
|---|---|---|---|
| request | No | ||
| request_id | No | ||
| dataset_root | Yes |
TDQS
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.
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.
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.
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.
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.
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.
pipeline_resumeAIdempotent
入力訂正・下流revision作成・停止工程からの再開。
Parameters
pipeline_path:
対象runの pipeline_path(pipeline_status と同じく、pipeline-run.json
そのもの、またはその親ディレクトリ=pipeline_rootのどちらでもよい)。
updates:
変更したい項目のみ(target / sample_manifest / preprocess /
comparisons に限定。spec §10.1「resumeで変更可能なのは...に限定する」)。
request_id:
冪等性キー。同一内容の再送は新しいrevisionを作らず直前の結果を返す。
rerun_upstream:
True を明示しない限り、Console実行はやり直さない(自動再試行はしない)。
監視を失ったまま稼働中のConsoleがある場合は EXECUTION_UNRESOLVED で
待つ(終了を確認できないものを勝手に完了扱いしない)。
| Name | Required | Description | Default |
|---|---|---|---|
| updates | No | ||
| request_id | No | ||
| pipeline_path | Yes | ||
| rerun_upstream | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, idempotent, non-destructive operation, and the description reinforces the idempotency contract with concrete semantics: a resend of identical content does not create a new revision and returns the prior result. It further discloses that Console runs are not automatically retried unless rerun_upstream is explicitly set, and that an unmonitored running Console yields EXECUTION_UNRESOLVED rather than a false completion — meaningful behavior an agent could not derive from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The terse purpose line is front-loaded and the per-parameter block is well organized, with zero filler sentences. It is somewhat long and docstring-shaped, but every paragraph carries operational information rather than restating the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation-style tool with four parameters, no output schema, and no schema descriptions, the definition covers inputs, idempotency, the no-auto-retry rule, and a specific unresolved-execution failure mode. It stops short of saying what a successful return contains (e.g. the new revision identifier) or what prerequisites the target run must satisfy, which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the full load and it does: pipeline_path accepts either pipeline-run.json or its parent pipeline_root; updates is restricted to the four named keys per spec §10.1; request_id is the idempotency key; rerun_upstream gates re-execution of Console steps. Every parameter gains meaning beyond the bare JSON types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line names a specific verb and resource — resume a pipeline from a stopped stage, with input correction and creation of downstream revisions. It is clear what the tool does, but it never distinguishes itself from the sibling pair pipeline_run and pipeline_status, so an agent must infer the boundary on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use is implied (a run that stopped at some stage and needs corrected inputs), and the rerun_upstream note hints that this resumes rather than re-executes. However, no sibling is named and there is no explicit when-not or comparison against pipeline_run for a fresh run or pipeline_cancel for abandonment, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipeline_runAIdempotent
計画と起動を一括実行する。生データから MS-DIAL Console を回す補助経路の入口。
先にフォルダに MS-DIAL を動かした形跡(.arf 等の出力)があるかを確かめ、
あれば load_dataset で下流へ進む(主経路)。形跡が無いときだけ、ユーザーに
Console を回してよいか許可を取り、同意を得てからこのツールを呼ぶ。起動前に
解決結果(method file・LBM・極性)を見たいときは pipeline_plan。引数は
pipeline_plan と同じ。
短時間で pipeline_path を返す——起動受理は、workerのidentity保存と
起動handshakeを確認した後に返すが、応答待ちには短い上限があり、上限に
達しても起動失敗と決め付けず再起動もしない(launch.handshake が
"not_confirmed" になるだけで、pipeline_status で追跡できる)。
launch キーは実際にworkerを起動した(launched=true)ときだけ含まれる。
不正なsample_manifest等を検出した場合や、find_or_create_run が既存run
(活動中/completed/失敗・取消・部分完了済み)を再利用した場合は
launched=false のみを返し、launch キー自体を持たない(起動していない
以上、handshake結果も存在しない)。既存runを本当に進めたい場合は
pipeline_resume を使う。
| Name | Required | Description | Default |
|---|---|---|---|
| request | No | ||
| request_id | No | ||
| dataset_root | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing that the response is fast with a short handshake wait limit, that a timeout must not be treated as failure and must not trigger a restart, that launch.handshake can be "not_confirmed" and is trackable via pipeline_status, and that the launch key is present only when launched=true. These are exactly the operational behaviors an agent cannot infer from readOnlyHint/idempotentHint alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then the usage decision path, then return/behavioral details; each block earns its place. It is dense but somewhat long, and the argument-equivalence note is buried at the end of the second paragraph rather than near the parameter discussion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of explaining pipeline_path, launched, launch, and launch.handshake outcomes, including the reuse-existing-run case. The remaining gap is the input contract (request/request_id), which is left to a cross-reference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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, but it only says the arguments are the same as pipeline_plan. It never explains dataset_root, request, or request_id semantics, nor what shape `request` should take or how request_id affects behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific compound action (計画と起動を一括実行) and frames itself as the entry point of the auxiliary path for running MS-DIAL Console from raw data. It immediately distinguishes itself from the main path (load_dataset), the preview tool (pipeline_plan), and the continue-existing-run tool (pipeline_resume).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition sequence: first check for .arf traces, and if found use load_dataset instead; only when no traces exist, obtain user consent and then call this tool. It also names pipeline_plan for pre-launch inspection and pipeline_resume for advancing an existing run, so both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipeline_statusARead-only
状態・不足情報・成果物参照を読む。最終化や起動は一切しない(読取専用)。
Parameters
pipeline_path:
pipeline_run / pipeline_plan が返した pipeline_path(pipeline-run.json
そのもの、またはその親ディレクトリのどちらでもよい)。
include_details:
True なら永続レコード全体(record)も返す(既定False。通常は
status / stage_statuses / needs_input / warnings で足りる)。
status="running" のときだけ、記録済みworkerの生存確認 observed_health
を追加で行う。workerが消えていれば observed_health="worker_missing" と
recovery_hint(pipeline_resume を促す)を返すが、statusフィールド自体は
書き換えない——監視・成果物確定をポーリング呼出しに依存させない(spec)。
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline_path | Yes | ||
| include_details | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint is consistent and the description goes well beyond it: it discloses the conditional liveness probe that only runs when status="running", the observed_health="worker_missing" outcome, the recovery_hint pointing at pipeline_resume, and the deliberate guarantee that the status field is never rewritten. This is exactly the behavioral context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, then a Parameters block, then the conditional behavior — a sensible order with no filler. The closing parenthetical justifying the design against the spec is slightly verbose for a tool definition, though it does add trust context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry the return shape — and it names the fields (status, stage_statuses, needs_input, warnings, record, observed_health, recovery_hint) plus the condition under which the extra fields appear. Nothing an agent needs to call or interpret this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description has to compensate and it does: pipeline_path accepts either pipeline-run.json itself or its parent directory, and include_details defaults to False and returns the full persisted record, which is normally unnecessary because status/stage_statuses/needs_input/warnings suffice. Both parameters gain meaning not present in the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (reads status, missing-info, artifact references of a pipeline run) and explicitly negates the neighbouring actions ('最終化や起動は一切しない'), which separates it from pipeline_run, pipeline_resume and pipeline_cancel. An agent can identify the tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: call it with the pipeline_path returned by pipeline_run/pipeline_plan, and it is read-only so it never starts or finalizes anything. It also names pipeline_resume as the follow-up when a worker is missing, but does not spell out a full when-to-use/when-not matrix against pipeline_plan or pipeline_run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plot_pca_loadingsARead-only
保存済みの PCA(arf_parser / arf_pca_preprocessed / arf_pca_species / dataset_pca)のローディングを横棒で描く。
source: "auto"(既定)/ "arf" / "species" / "mztab"。auto はどれも優先せず、候補が 2 つ以上あると AMBIGUOUS_RESULT_SOURCE で止まる。result_id で特定の結果を名指しできる。
pcs: 描く主成分(既定 [1, 2]、1〜3 個)。
top_n: 主成分ごとに正の上位 N と負の上位 N(既定 15)。None は全件(60 特徴量まで)で、 全パネルの行を最初の主成分の順にそろえる。
value: "r"(既定。各特徴量と主成分スコアの相関、−1〜1)/ "coefficient"(固有ベクトルの成分)。 r は autoscale した PCA でだけ出せ、出せないときは coefficient で描いて説明文に書く。
棒の色はクラス(ARF・分子種 PCA は .arf2 の Ontology)。
output: "image"(既定)/ "payload"(lipidmix.pca_loadings.v1)。ファイルは save_figure(kind="pca_loadings")。
| Name | Required | Description | Default |
|---|---|---|---|
| pcs | No | ||
| title | No | ||
| top_n | No | ||
| value | No | r | |
| output | No | ||
| source | No | auto | |
| result_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=true declared, the description carries substantial extra context: the AMBIGUOUS_RESULT_SOURCE failure mode, the constraint that correlation values are only available for autoscaled PCA with an automatic fallback plus an explanatory note, the coloring rule derived from .arf2 Ontology, and the fact that files are written through save_figure(kind="pca_loadings"). This is behavior an agent could not infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded in one sentence, followed by one dense bullet per parameter. Each bullet adds a default, a range, or a failure mode rather than restating the schema, so no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, no-output-schema plotting tool the coverage is strong: return modes, payload schema id, file-save path, and fallback behavior are all described. Minor gaps remain — the 'mztab' source option is listed without saying what it refers to, and the 'title' parameter is never mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description explains nearly every parameter with defaults and non-obvious semantics: pcs (default [1,2], 1-3 components), top_n (top N positive and top N negative, default 15, None means all up to 60 features with panel rows aligned to the first component), value ('r' vs 'coefficient' with value range and availability), output ('image' vs payload schema id), source and result_id. Only the trivial 'title' parameter is left undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource (draws loadings of saved PCA results as horizontal bars) and enumerates the four result types it consumes (arf_parser / arf_pca_preprocessed / arf_pca_species / dataset_pca). This distinguishes it cleanly from the sibling PCA producers and from other plot tools such as arf_plot_volcano or pathway_plot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit selection guidance for the source parameter: 'auto' is the default, does not prioritize, and halts with AMBIGUOUS_RESULT_SOURCE when two or more candidates exist, in which case result_id should be used to name a specific result. It also states when 'r' cannot be produced and coefficient must be used instead. It does not, however, route the agent away from any sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_reportBRead-only
過去レポートを読み戻す(候補ディレクトリ横断で最新更新のものを返す)。セッション継続用。
解析フォルダ配下と退避先の両方に同名レポートが残る場合(書き込み可否が途中で変化した等)、 古い方を返さないよう mtime が最新のファイルを採用する。
| Name | Required | Description | Default |
|---|---|---|---|
| analysis_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description is consistent with that while adding genuinely non-obvious behavior: it searches multiple candidate directories (analysis folder plus fallback) and resolves same-name collisions by newest mtime to avoid returning a stale copy. It omits what happens when no report exists (error vs empty) and what the returned report looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action and its scoping rule are front-loaded in the first sentence, with the mtime rationale following as supporting detail. Slightly verbose in the parenthetical explanation but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should convey what a returned report contains and what happens on a miss; neither is covered. The directory-collision behavior is well explained, but the missing-parameter documentation and absent return/failure semantics leave real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required parameter analysis_id, so the schema contributes nothing. The description never mentions analysis_id, its format, or how to obtain it, leaving the only input entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: reads back a past report and returns the most recently updated copy across candidate directories. It is distinguishable from write_report and list_reports by name and verb. It stops short of explicitly naming those siblings or clarifying the read-vs-list distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'セッション継続用' (for session continuation) implies the context of use but gives no explicit when-not condition or alternative routing. The duplicate-resolution note explains internal selection logic, not when an agent should call this versus list_reports or write_report.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_objectiveAIdempotent
確定した実験目的を解析フォルダ配下 reports/<analysis_id>.objective.md に記録する(gap駆動探索の前提)。
GATEWAY 手順1で、データから推測した目的をユーザー確認したあとに呼ぶ。biological_context (対象系: 生物種/細胞/処理)も確認のうえ渡す。sub_questions は Q1..Qn の本文。 assay_kind は lipid / metabolite / unknown。確定した種別を渡すと、以後のツール出力の 解釈規則(脂質名文法か候補集合か)がサーバ側で切り替わる。
| Name | Required | Description | Default |
|---|---|---|---|
| groups | Yes | ||
| dataset | Yes | ||
| polarity | Yes | ||
| assay_kind | No | unknown | |
| comparison | Yes | ||
| analysis_id | Yes | ||
| sub_questions | Yes | ||
| expected_biology | No | ||
| biological_context | No | ||
| inferred_objective | No | ||
| confirmed_objective | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=false and idempotentHint=true already declaring the safety profile, the description adds genuinely useful context: the write target file and, critically, that supplying assay_kind switches server-side interpretation rules (lipid-name grammar vs candidate set) for later tool outputs. It omits what happens if the file already exists or what the call returns, but the side-effect disclosure is the high-value piece.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the destination and the purpose, then layers the GATEWAY precondition and per-parameter notes in a logical order with no filler. Slightly dense but every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation tool with no output schema and no schema descriptions, the description covers the workflow position and the most consequential parameter (assay_kind) but leaves half the inputs unexplained. Adequate, not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 11 parameters, so the description must carry the load. It explains assay_kind's allowed values and downstream effect, sub_questions' format, and biological_context's contents, but leaves dataset, polarity, groups, comparison, and expected_biology entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource and even the exact write destination (reports/<analysis_id>.objective.md), plus the framing '(gap駆動探索の前提)'. It does not distinguish itself from the sibling update_objective, so the agent cannot fully tell record- vs update- apart from text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear trigger: GATEWAY 手順1, after the user confirms the objective inferred from data. However it never names the alternative update_objective or states when NOT to use this tool, leaving the sibling relationship to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sample_searchARead-only
因子トークンでサンプルを検索し、FileID と実ファイルパスを返す。
MS-DIAL の Class ID には実験デザインの全因子が入らない(時点・複製・測定日は サンプル名にしか無いことがある)。本ツールは Class ID とサンプル名を統合した トークン空間で検索し、pai2 / dcl / EIC が直接使える形で結果を返す。
specs:
_区切りの因子トークン指定のリスト(要素内 AND・順不同、要素間 OR)。 例["ILG_6h"],["ILG_6h","control_6h"]。省略すると全サンプルとtoken_vocabulary(何で絞れるかの語彙一覧)を返す。directory: 探索先。省略時は既定のデータディレクトリ。ロード済み ARF があれば そのサンプル名を優先して使う。
extensions: 実パスを引く拡張子(既定
[".pai2", ".dcl"])。複数バッチが 混在していても最新バッチを自動選択する。include_roles: 結果に含める role。省略時は全 role を返す(
roleフィールドで 判断できるため検索側では絞らない)。["sample"]で QC/blank を落とせる。
返り値の各サンプルは name / file_id / class_id / role / tokens /
files{拡張子: 実パス}。file_id は eic_plot_chromatograms(file_ids=[...])、
files[".pai2"] は pai2_parser(file_path=...) にそのまま渡せる。
| Name | Required | Description | Default |
|---|---|---|---|
| specs | No | ||
| directory | No | ||
| extensions | No | ||
| include_roles | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, and the description adds substantial behavior beyond that: the default-everything semantics of omitted arguments, automatic latest-batch selection when multiple batches are mixed, preference for sample names from a loaded ARF, and default extensions. It also documents the exact return fields and how they feed other tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in one sentence, followed by a rationale paragraph and tight per-parameter bullets with zero filler. It is longer than strictly necessary and repeats default behavior for both `specs` and `include_roles`, but every section is load-bearing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and zero schema description coverage, the description fully compensates: it enumerates the returned fields (name, file_id, class_id, role, tokens, files) and names the downstream consumers that accept them. An agent has everything needed to call it and use the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 load, and it does: each of the four parameters gets meaning, default, and semantics — including the AND-within-element / OR-across-elements rule for `specs` with concrete examples, which the schema cannot express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line names a specific verb and resource (searching samples by factor tokens, returning FileID and real file paths) and immediately explains why the tool exists: MS-DIAL Class IDs do not contain all experimental design factors, so a unified Class ID + sample name token space is searched. This makes it distinguishable from a plain file lister like list_data_files or from eic_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear conditional behavior: omitting `specs` returns all samples plus `token_vocabulary` (a discovery path), and `include_roles: ["sample"]` drops QC/blank. It frames the tool relative to Class-ID-based approaches rather than naming a specific sibling tool as an alternative, so it stops just short of explicit when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_figureAIdempotent
明示的なユーザー要求時だけ、直近の図を reports/figures/<analysis_id>_.png に保存する。
kind: "pca"(arf_parser / arf_pca_preprocessed / arf_pca_species / dataset_pca のスコア。
arf_pca_species の結果は source="species")/ "volcano"
(arf_differential / dataset_differential。間引き前の全点)/ "eic"(eic_plot_chromatograms /
eic_plot_compounds)/ "group_intensity"(arf_plot_group_intensity。dpi 300 の PNG と同名 .svg)/
"species"(arf_plot_species。dpi 300 の PNG と同名 .svg)/
"pca_loadings"(plot_pca_loadings。dpi 300 の PNG と同名 .svg)。
source / result_id: kind が pca / volcano のときだけ使う。"auto"(既定)はどちらも優先せず、
有効な結果が 2 つ以上あると AMBIGUOUS_RESULT_SOURCE で止まる("arf" / "mztab"、kind="pca" のときだけ
"species"(arf_pca_species)でも指定できる)。
通常の対話描画では呼ばない(各描画ツールが画像を返す)。返り値の相対パスは write_report の
本文に  として埋め込める。
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| title | No | ||
| source | No | auto | |
| result_id | No | ||
| analysis_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it explains the fixed output path, the PNG/SVG behavior for certain kinds, and the AMBIGUOUS_RESULT_SOURCE failure when source selection is ambiguous. It does not explicitly state overwrite behavior, though idempotentHint and the fixed filename make that largely inferable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The leading sentence front-loads the core rule, and the kind mapping is lengthy but necessary because the schema has no enum descriptions. The structure is dense but largely earns its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter write tool with no output schema, the definition covers the key invocation rules, kind semantics, ambiguity handling, and return-path usage. Minor gaps remain around title and the origin/meaning of analysis_id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry all meaning. It does a good job explaining kind values and the conditional source/result_id behavior, but title is entirely unmentioned and analysis_id is only implied through the path template.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a precise verb and resource: save the most recent figure to a specific reports/figures path. It also distinguishes this tool from sibling plotting tools by stating that normal interactive rendering should not call it because each plotting tool already returns an image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly limits use to explicit user requests and explicitly says not to call it during ordinary plotting. It also names the alternative behavior: each plotting tool returns the image directly, so this tool is only for deliberate persistence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server_updateAIdempotent
このMCPサーバ自身を origin/main へ更新する(git 早送り+必要なら依存の再導入)。
更新通知(load_dataset の冒頭行、dataset_status / console_status の
update_available)が出たときに呼ぶ。プロセスは触らないので、適用後は
利用者が Claude Desktop を再起動する必要がある——戻り値の message を
そのまま利用者へ伝えること。
手元の未コミット変更がある・main 以外にいる・早送りできない・オフラインの
いずれでも何もせずに status="refused" と reason を返す(例外は投げない)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly=false, destructive=false, idempotent=true, openWorld=true), and the description adds substantially beyond them: it does not touch the running process, it refuses with `status="refused"` plus `reason` on any of four preconditions (dirty tree, non-main branch, non-fast-forward, offline), and it never throws exceptions. These are exactly the failure modes an agent needs to plan around.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short paragraphs, front-loaded with the action, then the trigger, then the refusal contract — each sentence carries distinct information. Slightly dense in the second paragraph, where the restart warning and the relay instruction are packed together, but nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by naming the fields the agent will see (`status`, `reason`, `message`) and what to do with them. For a zero-parameter, state-dependent mutation tool, the trigger, refusal semantics, and required follow-up are all covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the schema baseline of 4 applies. The description correctly conveys that invocation is argument-free and behavior is determined entirely by repository state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: updates the MCP server itself to origin/main via git fast-forward plus dependency reinstall. Nothing in the large sibling list (pipeline_run, dataset_load, console_run) could be confused with this; the scope 'this MCP server itself' is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the trigger conditions and their sources (the header line of `load_dataset`, the `update_available` field of `dataset_status` / `console_status`). It also states the post-condition action — the user must restart Claude Desktop — and instructs the agent to relay the returned `message` verbatim.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_objectiveB
objective の確定目的/文脈/状態を更新し、創発的な小問を追記する。
assay_kind(lipid / metabolite / unknown)を渡すと解釈規則も切り替わる。
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| assay_kind | No | ||
| analysis_id | Yes | ||
| add_subquestions | No | ||
| biological_context | No | ||
| confirmed_objective | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false; the description usefully explains two traits beyond them — that sub-questions are appended rather than replaced (consistent with non-idempotent) and that assay_kind switches interpretation rules. It omits what happens to fields left null, whether partial updates are possible, and any precondition on analysis_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the mutation, with the assay_kind caveat second where it belongs. Little waste, though the second sentence is terse enough to be ambiguous about what 'interpretation rules' actually changes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-idempotent mutation with six undocumented parameters and no output schema, the description covers the core intent but leaves failure modes, partial-update semantics and the required analysis_id unexplained. Adequate to attempt a call, not adequate to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It implicitly covers five of six parameters (confirmed_objective, biological_context, status, add_subquestions, assay_kind) and adds the key semantic that assay_kind's allowed values change interpretation, but the required analysis_id and the accepted format/values for status remain undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (updates the objective's confirmed objective / context / status) plus a distinct second capability (appending emergent sub-questions), which maps onto real schema fields. It lacks any contrast with the sibling record_objective, so an agent cannot tell from the text alone which of the two to call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use / when-not-to-use guidance and no mention of the obvious alternative record_objective. The only usage-adjacent statement is that supplying assay_kind switches interpretation rules, which is a behavioral note rather than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_peak_annotationARead-only
指定した1ピークのアノテーションが生化学的に妥当かを検証するドシエを返す。
分析化学的な同定確度(精密質量誤差ppm・アダクト/イオンモード整合)を決定的に 判定し、生物学的妥当性は関連 knowledge slug を添えて LLM の判断に委ねる。 先に pai2_parser でデータを読み込むこと。peak_id か peak_name の いずれかを指定する。
| Name | Required | Description | Default |
|---|---|---|---|
| peak_id | No | ||
| peak_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered, yet the description still adds real behavioral context: which judgments are deterministic versus which are deferred to the LLM with supporting knowledge slugs. That division of labor is the key thing an agent needs to interpret the result and is not derivable from the annotation. No mention of cost, latency, or behavior when neither parameter is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short lines with zero filler: purpose first, the analytical/biological split second, the prerequisite third, and the parameter constraint last. Every sentence contributes information an agent would otherwise have to guess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is responsible for conveying the return shape, and it does so at a conceptual level (a dossier containing a deterministic verdict plus knowledge slugs). The internal structure of the dossier and the failure mode when neither identifier is supplied remain unstated, which is a modest gap for a read-only inspection tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and both parameters are nullable with no required field, so the description carries the burden. It does so by stating that exactly one of peak_id or peak_name must be specified, a mutual-exclusivity rule the flat anyOf schema does not express. It does not explain format (ID syntax) or the precedence behavior if both are passed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific verb and resource: it validates the biochemical plausibility of a single peak's annotation and returns a dossier. It further splits the deliverable into a deterministic analytical-chemistry verdict (ppm error, adduct/ion-mode consistency) and a biological verdict delegated to the LLM, which tells an agent exactly what kind of answer to expect. It does not contrast itself with any sibling besides naming the prerequisite loader.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states a clear prerequisite ("run pai2_parser first to load the data") and imposes an invocation constraint that peak_id or peak_name must be supplied. There is no explicit when-not guidance or comparison against adjacent tools such as pai2_inspect_peak or library_match_feature, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_reportAIdempotent
解析・解釈レポートを reports/<analysis_id>.md に上書き保存する(成果物+記録)。
body は frontmatter を含まない Markdown 本文。推奨セクション見出し:
## 目的 / ## 実施した解析 / ## 主要な所見 / ## 解釈 /
## 注意点・コンフリクト / ## 結論。所見が増えたら本文を作り直して再度呼ぶ
(ファイルは毎回上書き)。引用した knowledge/playbook の slug を knowledge_refs に渡す。
LIPIDMIX_REPORTS_DIRの明示先を優先し、書込不可なら解析フォルダ配下reports/。
未指定時は解析フォルダ配下reports/だけを使う(リポジトリ側へは退避しない)。
analysis_id はファイル名 slug の元になるため ASCII で一意に。別IDが同一slugに潰れて既存 レポートを上書きしそうな場合は保存を中止して通知する(objectiveレコードと同じIDを推奨)。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| status | No | draft | |
| dataset | Yes | ||
| analysis_id | Yes | ||
| knowledge_refs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare destructiveHint=false, but the description explicitly says the report is overwritten every time and warns that a different analysis_id collapsing to the same slug could overwrite an existing report. Overwriting an existing file is a destructive update, so the description contradicts the annotation despite otherwise useful details about directory fallback and collision abort.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the core action, then adds body format, section guidance, overwrite behavior, reference slugs, directory rules, and ID collision handling. It is dense but appropriately sized for a 5-parameter write tool with no schema descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with no output schema, it covers the essential operational context: destination path, overwrite behavior, body format, knowledge refs, directory fallback, and collision abort. It still leaves dataset/status semantics and normal return/notification behavior unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It explains body (Markdown without frontmatter and recommended section headings), knowledge_refs (cited knowledge/playbook slugs), and analysis_id (ASCII uniqueness and slug collision risk), but does not explain the required dataset or optional status parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: write/overwrite an analysis/interpretation report to reports/<analysis_id>.md, explicitly as both artifact and record. This clearly distinguishes it from sibling tools such as read_report, list_reports, and save_figure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains when to call again after findings increase, that the file is overwritten each time, and how to choose the reports directory including fallback behavior. It does not explicitly name read_report/list_reports/save_figure as alternatives or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
77 tool updates
v0.1.0- First observed
arf_differential - First observed
arf_exclude - First observed
arf_export_differential - First observed
arf_export_evidence_bundle - First observed
arf_list_classes - First observed
arf_list_sample_roles - First observed
arf_list_tags - First observed
arf_parser - First observed
arf_pca_preprocessed - First observed
arf_pca_species - First observed
arf_plot_group_intensity - First observed
arf_plot_species - First observed
arf_plot_volcano - First observed
arf_preprocess - First observed
arf2_annotate_identities - First observed
arf2_parser - First observed
console_cleanup - First observed
console_method_candidates - First observed
console_method_template - First observed
console_plan - First observed
console_prepare_input - First observed
console_run - First observed
console_status - First observed
curation_flags - First observed
curation_review - First observed
curation_submit - First observed
curation_suggest - First observed
curation_view_data - First observed
dataset_build_matrix - First observed
dataset_differential - First observed
dataset_export_differential - First observed
dataset_export_evidence_bundle - First observed
dataset_feature_search - First observed
dataset_load - First observed
dataset_pca - First observed
dataset_preprocess - First observed
dataset_set_sample_metadata - First observed
dataset_statistic - First observed
dataset_status - First observed
dcl_find_msms - First observed
dcl_parser - First observed
eic_parser - First observed
eic_plot_chromatograms - First observed
eic_plot_compounds - First observed
eic_search - First observed
ingest_promote - First observed
ingest_reject - First observed
ingest_review_queue - First observed
ingest_stage - First observed
job_list - First observed
knowledge_coverage - First observed
library_load - First observed
library_match_feature - First observed
library_plot_mirror - First observed
list_data_files - First observed
list_reports - First observed
load_dataset - First observed
log_search - First observed
pai2_inspect_peak - First observed
pai2_parser - First observed
paper_search - First observed
pathway_plot - First observed
pathway_project - First observed
pipeline_cancel - First observed
pipeline_plan - First observed
pipeline_resume - First observed
pipeline_run - First observed
pipeline_status - First observed
plot_pca_loadings - First observed
read_report - First observed
record_objective - First observed
sample_search - First observed
save_figure - First observed
server_update - First observed
update_objective - First observed
verify_peak_annotation - First observed
write_report
TDQS
Scored across 77 tools
The tool set has several dangerously similar entry points and overlapping workflows: load_dataset vs dataset_load, arf_parser vs arf2_parser vs load_dataset, and the parallel console_* and pipeline_* lifecycle tools. Descriptions often explain the differences, but with 77 tools the boundaries remain easy to misselect.
Almost all names are snake_case and many use domain prefixes, but verb placement is inconsistent: load_dataset/list_reports/list_data_files are verb_noun, while dataset_load/library_load/job_list are noun_verb or noun-first. Synonyms such as parser, load, ingest, and plan are also used across related concepts.
Seventy-seven tools is far beyond a reasonable MCP surface and mixes data parsing, analysis, plotting, curation, knowledge management, pipeline lifecycle, and server maintenance in one server. Even for a broad lipidomics platform, this is an extreme mismatch in scope.
Coverage is very broad: ARF/ARF2/PAI2/DCL/EIC/mzTab-M loading, preprocessing, PCA, differential analysis, plotting, export, library matching, curation, reports, knowledge ingestion, and pipeline control. Minor gaps may exist around knowledge retrieval or cleanup ergonomics, but core workflows appear well covered.
Maintenance
Related MCP Connectors
Turn any LLM into your lab assistant: search samples, track experiments, analyze data with AI.
A statistical analyst in your AI chat: bring data and a question, get a citable, re-runnable report.
Upload spreadsheets, get plain-English analysis with real computed charts and quality scores.
AI data analyst: ask about your Excel, CSV, GA4 or database data and get charts and dashboards back
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables conversational analysis of CSV and Parquet files through natural language, providing statistics, summaries, data type information, and comprehensive multi-step data analysis.-
- AlicenseCqualityBmaintenanceEnables conversational data analysis of Excel/CSV files through natural language queries, powered by 395 Excel functions via HyperFormula and multi-provider AI. Supports advanced analytics, bulk operations, financial modeling, and large file processing with intelligent chunking.3545 npm38MIT
- AlicenseNot gradedqualityDmaintenanceEnables data analysis and visualization operations such as loading CSV/Excel/JSON files, computing summary statistics, generating charts, and exploring datasets via SSE/HTTP.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to generate publication-quality bioinformatics visualizations (volcano plots, PCA, heatmaps, etc.) directly from raw biological data.MIT